请教OLED的程序

请教OLED的程序,第1张

取模是高位在前的形式 temp&0x80 用于判断当前temp 最高位是0还是1 是1就点亮 0就清除

正常显示 点亮OLED是蓝色点 清除是黑屏 反白显示就是反过来 点亮的部分清黑屏 不亮的部分显示蓝色

1.keil5

2.(2)PC,STM32开发板(这里使用野火stm32mini)、0.96存OLED显示屏、烧录装置(下载器)

参考厂家的用户手册完成引脚连接:

二、基于SPI修改程序实现数据显示

1.中文数据显示

文本内容为中文在点阵中为16*16,故都为16进制,我们通过软件进行生成

使用该软件生成十六进制字模

选择模式中的字符模式,在选择中调整字体大小为16及16进制

2.代码

云(0) 开(1) 处(2)

DB 40H 40H 42H 42H 42H 42H C2H 42H 42H 42H 42H 42H 42H 40H 40H 00H

DB 00H 20H 70H 28H 24H 23H 20H 20H 20H 24H 28H 30H E0H 00H 00H 00H"云",0

DB 80H 82H 82H 82H FEH 82H 82H 82H 82H 82H FEH 82H 82H 82H 80H 00H

DB 00H 80H 40H 30H 0FH 00H 00H 00H 00H 00H FFH 00H 00H 00H 00H 00H"开",1

DB 00H 80H 60H 9FH 08H 08H F8H 00H 00H FFH 10H 20H 40H 80H 00H 00H

DB 81H 40H 20H 13H 0CH 13H 20H 20H 40H 5FH 40H 40H 40H 41H 40H 00H"处",2

2 代码显示部分:

void TEST_MainPage(void)

{

GUI_ShowString(28,0,"MR liao",16,1)

GUI_ShowCHinese(28,20,16,"云开处",1)

GUI_ShowString(4,48,"631807060611",16,1)

delay_ms(1500)

delay_ms(1500)

}

main函数:

int main(void)

{

delay_init() //延时函数初始化

NVIC_Configuration() //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

OLED_Init()//初始化OLED

OLED_Clear(0)//清屏(全黑)

while(1)

{

TEST_MainPage()//主界面显示测试

}

}

三、使用STM32在0.96寸OLED显示屏上实现字符滚动

1.初识OLED屏滚动命令

本OLED屏的芯片类型为:SSD1306

设置水平左右移步骤:

OLED_WR_Byte(0x2E,OLED_CMD)//关闭滚动

OLED_WR_Byte(0x26,OLED_CMD)//水平向左或者右滚动 26/27

OLED_WR_Byte(0x00,OLED_CMD)//虚拟字节

OLED_WR_Byte(0x00,OLED_CMD)//起始页 0

OLED_WR_Byte(0x07,OLED_CMD)//滚动时间间隔

OLED_WR_Byte(0x07,OLED_CMD)//终止页 7

OLED_WR_Byte(0x00,OLED_CMD)//虚拟字节

OLED_WR_Byte(0xFF,OLED_CMD)//虚拟字节

OLED_WR_Byte(0x2F,OLED_CMD)//开启滚动

设置垂直和水平滚动的(没有可用连续垂直滚动)步骤:

OLED_WR_Byte(0x2e,OLED_CMD)//关闭滚动

OLED_WR_Byte(0x29,OLED_CMD)//水平垂直和水平滚动左右 29/2a

OLED_WR_Byte(0x00,OLED_CMD)//虚拟字节

OLED_WR_Byte(0x00,OLED_CMD)//起始页 0

OLED_WR_Byte(0x07,OLED_CMD)//滚动时间间隔

OLED_WR_Byte(0x07,OLED_CMD)//终止页 1

OLED_WR_Byte(0x01,OLED_CMD)//垂直滚动偏移量

OLED_WR_Byte(0x2F,OLED_CMD)//开启滚动

2.文本取模

参考上面取模

3.代码

main函数:

int main(void)

{

delay_init() //延时函数初始化

NVIC_Configuration() //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

OLED_Init()//初始化OLED

OLED_Clear(0)//清屏(全黑)

OLED_WR_Byte(0x2E,OLED_CMD) //关闭滚动

OLED_WR_Byte(0x26,OLED_CMD) //水平向左或者右滚动 26/27

OLED_WR_Byte(0x00,OLED_CMD) //虚拟字节

OLED_WR_Byte(0x00,OLED_CMD) //起始页 0

OLED_WR_Byte(0x07,OLED_CMD) //滚动时间间隔

OLED_WR_Byte(0x07,OLED_CMD) //终止页 7

OLED_WR_Byte(0x00,OLED_CMD) //虚拟字节

OLED_WR_Byte(0xFF,OLED_CMD) //虚拟字节

TEST_MainPage()//主界面显示测试

OLED_WR_Byte(0x2F,OLED_CMD) //开启滚动

}

显示部分代码

void TEST_MainPage(void)

{

GUI_ShowString(28,0,"HELLO",16,1)

GUI_ShowCHinese(12,16,16,"欢迎来到重庆交通大学",1)

delay_ms(1500)

delay_ms(1500)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11781346.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存