3439|8

92

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

使用、评测STM32 Nucleo&X-NUCLEO-IDB04A1 [复制链接]

一直在拿深度使用、STM32 Nucleo加X-NUCLEO-IDB04A1板子做应用,效果不错,这两天才有空闲下来,整理材料,发点心得。
此帖出自stm32/stm8论坛

最新回复

期待楼主大作!关注中……  详情 回复 发表于 2015-1-19 13:56
点赞 关注
 

回复
举报

92

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
代码写久了,话都说不顺了
此帖出自stm32/stm8论坛
 
 

回复

9185

帖子

6

TA的资源

管理员

板凳
 
等楼主上内容啊
此帖出自stm32/stm8论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

4
 
正在看帖子,期待有好东西@@
此帖出自stm32/stm8论坛
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(初级)

5
 
期待楼主的评测
此帖出自stm32/stm8论坛
 
 
 

回复

27

帖子

0

TA的资源

一粒金砂(初级)

6
 
此帖出自stm32/stm8论坛
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

7
 
期待楼主大作!关注中……
此帖出自stm32/stm8论坛
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(中级)

8
 
本帖最后由 gxliu08 于 2015-1-19 21:02 编辑

0.96寸,串口OLED屏,分辨率12864,就是好小啊,控制器SSD1306。
void OLED_WrDat(unsigned char dat)//写数据
{
        unsigned char i;
        OLED_DC_Set();
        for(i=0;i<8;i++)
        {
                if((dat << i) & 0x80)
                {
                        OLED_SDA_Set();
                }
                else
                        OLED_SDA_Clr();
                OLED_SCL_Clr();
                OLED_SCL_Set();
        }
}

void OLED_WrCmd(unsigned char cmd)//写命令
{
        unsigned char i;
        OLED_DC_Clr();
        for(i=0;i<8;i++) //发送一个八位数据
        {
                if((cmd << i) & 0x80)
                {
                        OLED_SDA_Set();
                }
                else
                {
                        OLED_SDA_Clr();
                }
                OLED_SCL_Clr();
                OLED_SCL_Set();
        }
}

void OLED_SetPos(unsigned char x, unsigned char y)//设置起始点坐标
{
        OLED_WrCmd(0xb0 + y);
        OLED_WrCmd(((x&0xf0)>>4)|0x10);
        OLED_WrCmd((x&0x0f)|0x01);
}

void OLED_Fill(unsigned char bmp_dat)//全屏填充
{
        unsigned char y,x;
        for(y=0;y<8;y++)
        {
                OLED_WrCmd(0xb0+y);
                OLED_WrCmd(0x01);
                OLED_WrCmd(0x10);
                for(x=0;x                 {
                        OLED_WrDat(bmp_dat);
                }
        }
}

void OLED_CLS(void)//清屏
{
        OLED_Fill(0x00);
}

void OLED_Init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
         
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);         //使能PC,D,G端口时钟

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;         //PD3,PD6推挽输出  
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//GPIO_PuPd_NOPULL;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);                 GPIO_SetBits(GPIOA,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);        //PD3,PD6 输出高
        
        DelayInit();//延时初始化
        
        DelayMs(500);
        OLED_CS_Clr();
        
        OLED_WrCmd(0xae);
        OLED_WrCmd(0xae);//--turn off oled panel
        OLED_WrCmd(0x00);//---set low column address
        OLED_WrCmd(0x10);//---set high column address
        OLED_WrCmd(0x40);//--set start line address  Set Mapping RAM Display Start Line (0x00~0x3F)
        OLED_WrCmd(0x81);//--set contrast control register
        OLED_WrCmd(0xcf); // Set SEG Output Current Brightness
        OLED_WrCmd(0xa1);//--Set SEG/Column Mapping     0xa0,0xa1
        OLED_WrCmd(0xc8);//Set COM/Row Scan Direction   0xc0,0xc8
        OLED_WrCmd(0xa6);//--set normal display
        OLED_WrCmd(0xa8);//--set multiplex ratio(1 to 64)
        OLED_WrCmd(0x3f);//--1/64 duty
        OLED_WrCmd(0xd3);//-set display offset        Shift Mapping RAM Counter (0x00~0x3F)
        OLED_WrCmd(0x00);//-not offset
        OLED_WrCmd(0xd5);//--set display clock divide ratio/oscillator frequency
        OLED_WrCmd(0x80);//--set divide ratio, Set Clock as 100 Frames/Sec
        OLED_WrCmd(0xd9);//--set pre-charge period
        OLED_WrCmd(0xf1);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
        OLED_WrCmd(0xda);//--set com pins hardware configuration
        OLED_WrCmd(0x12);
        OLED_WrCmd(0xdb);//--set vcomh
        OLED_WrCmd(0x40);//Set VCOM Deselect Level
        OLED_WrCmd(0x20);//-Set Page Addressing Mode (0x00/0x01/0x02)
        OLED_WrCmd(0x02);//
        OLED_WrCmd(0x8d);//--set Charge Pump enable/disable
        OLED_WrCmd(0x14);//--set(0x10) disable
        OLED_WrCmd(0xa4);// Disable Entire Display On (0xa4/0xa5)
        OLED_WrCmd(0xa6);// Disable Inverse Display On (0xa6/a7)
        OLED_WrCmd(0xaf);//--turn on oled panel
        OLED_Fill(0x00);
        OLED_SetPos(0,0);
}

void OLED_6x8Str(unsigned char x, unsigned char y, unsigned char ch[])
{
        unsigned char c=0,i=0,j=0;
        while (ch[j]!='\0')
        {
                c = ch[j]-32;
                if(x>126)
                {
                        x=0;y++;
                }
                OLED_SetPos(x,y);
                for(i=0;i<6;i++)
                {
                        OLED_WrDat(F6x8[c]);
                }
                x+=6;
                j++;
        }
}

void OLED_8x16Str(unsigned char x, unsigned char y, unsigned char ch[])
{
        unsigned char c=0,i=0,j=0;
        while (ch[j]!='\0')
        {
                c =ch[j]-32;
                if(x>120)
                {
                        x=0;y++;
                }
                OLED_SetPos(x,y);
                for(i=0;i<8;i++)
                {
                        OLED_WrDat(F8X16[c*16+i]);
                }
                OLED_SetPos(x,y+1);
                for(i=0;i<8;i++)
                {
                        OLED_WrDat(F8X16[c*16+i+8]);
                }
                x+=8;
                j++;
        }
}

void OLED_16x16CN(unsigned char x, unsigned char y, unsigned char N)
{
        unsigned char wm=0;
        unsigned int adder=32*N;
        OLED_SetPos(x , y);
        for(wm = 0;wm < 16;wm++)
        {
                OLED_WrDat(F16x16[adder]);
                adder += 1;
        }
        OLED_SetPos(x,y + 1);
        for(wm = 0;wm < 16;wm++)
        {
                OLED_WrDat(F16x16[adder]);
                adder += 1;
        }
}

此帖出自stm32/stm8论坛
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(中级)

9
 
下一贴,FM1702
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表