打印
[通用8051核FLASH系列]

基于HC89F003的双色OLED屏显示

[复制链接]
1383|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 芯圣电子官方QQ 于 2023-7-20 11:14 编辑

由于HC89F003仅有20个引脚,加上板载资源的占用,再要为开发板配置一个供人机交互的显示器就需要花些心思了,要求它不能占用过多的I/O引脚,且显示的信息要尽可能地多一些。
一款采用I2C接口的双色OLED屏就较符合这个要求,除电源外,它只需占用2个I/O口,且能显示多行信息,详细效果如图所示。

OLED屏显示效果

通过对HC89F003开发板原理图的观察,使用P07和P06与OLED屏连接比较好,其中由
P07来提供SCL时钟信号,P06来提供SDA数据信号。
为了便于高低电平信号的输出,所定义的输出引脚如下:
#define OLED_SCLK_Clr() GPIO_WriteLow(GPIOT0,GPIO_PIN_7);  //SCL  P07
#define OLED_SCLK_Set() GPIO_WriteHigh(GPIOT0,GPIO_PIN_7);
#define OLED_SDIN_Clr() GPIO_WriteLow(GPIOT0,GPIO_PIN_6)  //SDA  P06
#define OLED_SDIN_Set() GPIO_WriteHigh(GPIOT0,GPIO_PIN_6);

对应的OLED屏初始化函数为:
void OLED_Init(void)
{         
        mDelaymS(800);   
        OLED_WR_Byte(0xAE,OLED_CMD);
        OLED_WR_Byte(0x00,OLED_CMD);
        OLED_WR_Byte(0x10,OLED_CMD);
        OLED_WR_Byte(0x40,OLED_CMD);  
        OLED_WR_Byte(0xB0,OLED_CMD);
        OLED_WR_Byte(0x81,OLED_CMD);
        OLED_WR_Byte(0xFF,OLED_CMD);  
        OLED_WR_Byte(0xA1,OLED_CMD);
        OLED_WR_Byte(0xA6,OLED_CMD);
        OLED_WR_Byte(0xA8,OLED_CMD);
        OLED_WR_Byte(0x3F,OLED_CMD);
        OLED_WR_Byte(0xC8,OLED_CMD);
        OLED_WR_Byte(0xD3,OLED_CMD);
        OLED_WR_Byte(0x00,OLED_CMD);
        OLED_WR_Byte(0xD5,OLED_CMD);
        OLED_WR_Byte(0x80,OLED_CMD);
        OLED_WR_Byte(0xD8,OLED_CMD);
        OLED_WR_Byte(0x05,OLED_CMD);
        OLED_WR_Byte(0xD9,OLED_CMD);
        OLED_WR_Byte(0xF1,OLED_CMD);
        OLED_WR_Byte(0xDA,OLED_CMD);
        OLED_WR_Byte(0x12,OLED_CMD);
        OLED_WR_Byte(0xDB,OLED_CMD);
        OLED_WR_Byte(0x30,OLED_CMD);
        OLED_WR_Byte(0x8D,OLED_CMD);
        OLED_WR_Byte(0x14,OLED_CMD);
        OLED_WR_Byte(0xAF,OLED_CMD);
}
实现显示效果主函数如下:
实现显示效果主函数如下:void main(void)
{
        System_init();                                                                        
        GPIO_Init(GPIOT0,GPIO_PIN_6, GPIO_MODE_OUT_PP);
        GPIO_Init(GPIOT0,GPIO_PIN_7, GPIO_MODE_OUT_PP);
        OLED_Init();                        
        OLED_Clear();
        OLED_ShowString(2,0,"holychip",16);
        OLED_ShowString(2,2,"HC89F003",16);
        OLED_ShowString(2,4,"0.96' OLED TEST",16);        
        OLED_ShowString(2,6,"2017-11-26",16);
        while(1);
}





沙发
caijie001| | 2017-11-26 09:31 | 只看该作者
我喜欢这样的代码,简洁

使用特权

评论回复
板凳
jinglixixi|  楼主 | 2017-11-26 10:27 | 只看该作者
caijie001 发表于 2017-11-26 09:31
我喜欢这样的代码,简洁

谢谢!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

446

主题

2675

帖子

37

粉丝