前面3篇说完CH554的开发环境,下面我们来说说CH554的应用。
说到软件评估,一般都会来个“Hello World!”C、JAVA等等高级语言在电脑屏幕上显示,简单的MCU用点灯(LED)代替,带串口的用串口输出。这次,手头上正好有个OLED的小液晶屏,所以这次CH554MCU的“Hello World!”就尝试用这个OLED的小液晶屏输出。
手上的这个OLED的小液晶屏接口是I2C总线的,CH554本身没有I2C总线接口。不过也没关系,我们用GPIO来模拟I2C接口。I2C总线的好处在于占用端口少,加上VCC、GND、一根数据线SDA、一根时钟线SCL,总共4根线就可以了,而且只占用两个端口,还有一个更大的好处在于:可以在两个端口上挂更多外设(当然,GPIO模拟的就算了,真要模拟完整总线协议,太麻烦了)。所以建议沁恒在新的MCU中增加I2C总线的硬件接口,可以类似TI或其他厂家一样,和其他串行接口(比如UART或SPI)复用。
言归正传,OLED小液晶屏厂家提供了测试程序,只要在这个基础上移植到CH554上就可以了。
- //////////////////////////////////////////////////////////////////////////////////
- // 文 件 名 : main.c
- // 功能描述 : OLED I2C接口演示例程(51系列)
- // 说明:
- // ----------------------------------------------------------------
- // GND 电源地
- // VCC 接5V或3.3v电源
- // D0 P1^0(SCL)
- // D1 P1^1(SDA)
- // ----------------------------------------------------------------
-
- //******************************************************************************/
- #include "..\Public\CH554.H"
- #include "..\Public\Debug.H"
- #include "stdio.h"
- #include <string.h>
- #include ".\SRC\oled.h"
- #include ".\SRC\bmp.h"
-
- int main(void)
- { UINT8 t;
- OLED_Init(); //初始化OLED
- OLED_Clear() ;
-
- t=' ';
- OLED_ShowString(0,0,"Hello EEworld!",16);
- while(1)
- {
- OLED_Clear();
-
- OLED_ShowCHinese(0,6,0);//电
- OLED_ShowCHinese(18,6,1);//子
- OLED_ShowCHinese(36,6,2);//工
- OLED_ShowCHinese(54,6,3);//程
- OLED_ShowCHinese(72,6,4);//世
- OLED_ShowCHinese(90,6,5);//界
-
- OLED_ShowString(0,0,"Hello EEworld!",16);
-
- OLED_ShowString(6,3,"0.96' OLED TEST",16);
-
- t++;
- if(t>'~')t=' ';
-
-
- delay_ms(8000);
- delay_ms(8000);
- delay_ms(8000);
- delay_ms(8000);
- }
-
- }
oled.c oled.h OLED液晶屏驱动文件,包含了OLED液晶屏初始化、画点、写字、写字符串、画图、清屏、开关显示等函数。在我们自己程序中调用这些函数就好。
oledfont.h 字库文件,存有字符的阵数据数组,你可以用图形取模软件自己生成自己的字库,然后在自己程序中通过调用OLED液晶屏驱动文件中的函数使用这些阵数据数组在液晶屏幕上显示数字、文字或图标。
bmp.h 放BMP图片数据,你可以用图形取模软件把你选定的BMP图片转成点阵数据数组,然后在自己程序中通过调用OLED液晶屏驱动文件中的函数使用这些阵数据数组在液晶屏幕上显示图片了。
此内容由EEWORLD论坛网友yang_alex原创,如需转载或用于商业用途需征得作者同意并注明出处
本帖最后由 yang_alex 于 2017-11-6 13:21 编辑