本想为CH554配上应该TFT串口屏,无奈板上提供的3.3V引脚过少,在测试时把串口屏给毁了!只能改以LCD12864液晶屏用串行方式来替换TFT的实验。由于该显示屏自带中文字库,所以在显示字符和中文信息方面会十分方便,图1 是它的显示效果。
图1 唐诗显示效果
LCD12864液晶屏与CH554开发板的连接情况如图2所示,仅需要使用4条连接线。
图2 硬件连接情况
在这款屏的显示方式中,只需占用2个I/O口,所以用它还是比较实惠的,它与CH554的连接关系如下:
1. Vss 接电源地
2. Vcc 接5V电源
3. Vo 接5V电源
4. E 接5V电源
5. SID 接P1.0
6. SCL 接P1.1
LCD12864的初始化函数为:
- void LCD_Init(void)
- {
- uchar cmd;
- cmd=0x30;
- W_1byte(0,0,cmd);
- mDelaymS(2);
- cmd=0x0C;
- W_1byte(0,0,cmd);
- mDelaymS(2);
- cmd=0x01;
- W_1byte(0,0,cmd);
- mDelaymS(2);
- cmd=0x02;
- W_1byte(0,0,cmd);
- mDelaymS(2);
- cmd=0x80;
- W_1byte(0,0,cmd);
- mDelaymS(2);
- }
复制代码
相应的定位显示函数为:
- void Char_Set_XY(uchar x, uchar y,const uchar *p)
- {
- if(y == 0)
- {
- W_1byte(0,0,(0x80+x));
- }
- if(y == 1)
- {
- W_1byte(0,0,(0x90+x));
- }
- if(y == 2)
- {
- W_1byte(0,0,(0x88+x));
- }
- if(y == 3)
- {
- W_1byte(0,0,(0x98+x));
- }
- while(*p != 0)
- {
- W_1byte(0,1,*p++);
- }
- }
复制代码
实现显示效果的主函数为:
- void main( )
- {
- CfgFsys( ); //CH554时钟选择配置
- mDelaymS(20);
- mInitSTDIO( ); //串口0初始化
- Clr_CS();
- Clr_SID();
- Clr_SCLK();
- LCD_Init();
- mDelaymS(500);
- Char_Set_XY(0,0,"春眠不觉晓,");
- Char_Set_XY(0,1,"处处闻啼鸟。");
- Char_Set_XY(0,2,"夜来风雨声,");
- Char_Set_XY(0,3,"花落知多少。");
- while(1);
- }
复制代码
此内容由EEWORLD论坛网友jennyzhaojie原创,如需转载或用于商业用途需征得作者同意并注明出处