77范文网 - 专业文章范例文档资料分享平台

基于单片机的LCD液晶显示系统设计(5)

来源:网络收集 时间:2018-12-02 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

图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)在线全文阅读。

基于单片机的LCD液晶显示系统设计(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/332628.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: