图4.7 主程序流程图
开始 实现位图左右移动 静态显示文字 字符从上到下移动 实现位图上下滚动 静态显示位图 字符从右向左移动 图4.8 LCD测试流程图
4.5 功能实现
LCD初始化:
void InitLCD(void) //初始化LCD { char i,j; LCD_RST=0; Delay1ms(1); LCD_RST=1;
LCD_WriteCommand1(0xc0); LCD_WriteCommand2(0xc0);
LCD_WriteCommand1(0x3f); //开显示 LCD_WriteCommand2(0x3f); for (j=0;j<8;j++) {
LCD_WriteCommand1(0xB8+j); //清左半屏 LCD_WriteCommand1(0x40); for (i=0;i<64;i++)
LCD_WriteData1(0x00);
LCD_WriteCommand2(0xB8+j); //清右半屏
21
//清屏
} }
LCD_WriteCommand2(0x40); for (i=0;i<64;i++)
LCD_WriteData2(0x00);
单个汉字显示:
void LCD_Write_A_HZ(char x,char y,char *Dot) //显示16*16点阵汉字 { char i;
for (i=0;i<32;i++) { if ((x+i)<64) } }
静态显示一幅位图:
void DispBmp(char *buf) //显示一幅位图 { int i,j;
for (j=0;j<8;j++)
//显示位图
{ LCD_WriteCommand1(0xB8+j); LCD_WriteCommand1(0x40); } }
22
for (i=0;i<64;i++)
LCD_WriteCommand2(0xB8+j); LCD_WriteCommand2(0x40); for (i=0;i<64;i++)
LCD_WriteData2(buf[(j*2+1)*64+i]); { LCD_WriteCommand1(0xB8+y+i/16); } else
{ LCD_WriteCommand2(0xB8+y+i/16); }
LCD_WriteCommand2(0x40+x-64+i); LCD_WriteData2(Dot[i]); LCD_WriteCommand1(0x40+x+i); LCD_WriteData1(Dot[i]);
LCD_WriteData1(buf[(j*2)*64+i]);
位图上下滚动实现:
Void DispBmp_Roll(char *buf) { char *Buffer; int i; Buffer=buf; DispBmp(Buffer);
for (i=0;i<64;i++) { Delay1ms(50);
LCD_WriteCommand1(0xc0+id); //设置起始行,实现向上滚动 LCD_WriteCommand2(0xc0+id); } }
位图从左到右移动实现:
void DispBmp_Move(char *buf) for (row=0;row<128;row++) { Delay1ms(50);
for (eight=0;eight<8;eight++) { if (row<64)
LCD_WriteCommand1(0x40+row);
for (line=0;line+row<64;line++) LCD_WriteCommand2(0xB8+eight);
LCD_WriteCommand2(0x40);
LCD_WriteData2(buf[(eight*2)*64+line+line0]);
for (line0=0;line0+row<64;line0++) } else
{ LCD_WriteCommand2(0xB8+eight);
LCD_WriteCommand2(0x40+row-64);
LCD_WriteData2(buf[(eight*2)*64+line0]);
for (line0=0;line0+row-64<64;line0++) }
23
LCD_WriteData1(buf[(eight*2)*64+line]);
//左右移动一幅位图
{ int line,line0,row,eight; //显示位图
{ LCD_WriteCommand1(0xB8+eight);
} } }
关于汉字的上下、左右移动较简单,请参照附录:程序代码。
5 系统实验仿真
我们在许多地方可以看到LCD显示屏的应用。例如空调,车内广告,可视电话,显示仪表盘等等,它们都是一个小型的单片机控制液晶显示系统。在日常生活中,我们也可以看到一些类似的由单片机控制的显示系统,如火车站售票大厅的候车信息显示屏,在这些屏幕上,可以显示各种不同的图形、汉字等,并且可以实现上下滚屏与左右移动等。
5.1 平台及操作
平台准备:在确认连线已接好时,将拨码开关S1和S2置于ON位置
操作流程:建立一个新的项目文件,将程序加到这个项目文件中,编译连接后,将程序下载到 C8051F020 中。打开 RAM 观察窗口,运行程序。运行程序时,可单步执行或在送数指令后加断点观察RAM存储单元的变化,观察加法结果是否正确。
5.2 仿真及结果
在C8051F020系统实验箱上的液晶显示屏上,我实现了这些动态显示功能,特设计了以下几个显示场景:
(1)场景一:
第一个场景是在液晶显示屏上静态显示位图,如图5.1所示:
图5.1 位图上下滚动
在这个场景中,是对位图128*64的模仿上下滚动。 (2)场景二:
24
第二个场景显示的内容较少,只有几个字——“湖南理工学院计算机与信息工程系单片机液晶显示系统设计---图形动态显示研究”,是静态的显示效果如图5.2所示:号
图 5.2 汉字
(3)场景三
第三个场景是图形动态显示模拟,它们是从左向右推出的,一直移动到显示屏最右端。具体如图5.3所示:
图5.3 位图右移
(4)场景四
第四个场景是静态显示一幅位图如图5.4
图5.4 位图显示
(5)场景五
这个场景是实现对字符的动态显示如图5.5。我用的是“湖南”与“湘”这三个汉字来模仿的。让“湖南”两个字纵向排列,从右向左移动;“湘”字从上下落到液晶屏的底部。在这些场景中,液晶显示屏上显示的汉字,我是把它当作图形来显示的,汉字和图形的字模我是借助字模软件取模的,并没有自己去设计汉字和图形的字模。当然这样做省了不少的事,就我个人来看,把大量的时间分配在接口的编程上和如何利用C语言实现接口是更有价值的。
25
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机的LCD液晶显示系统设计(5)在线全文阅读。
相关推荐: