基于单片机的液晶显示设计毕业设计(编辑修改稿)内容摘要:
l_wcode(0x40)。 for(j=64。 j0。 j) { l_wdata(0x00)。 } } for(i=0xb8。 i0xc0。 i++) { r_wcode(i)。 r_wcode(0x40)。 for(j=64。 j0。 j) { r_wdata(0x00)。 } } } 程序清单 及注释 见 附录 苏州经贸职业技术学院 11 第四 章 仿真调试和结果 分析 仿真 步骤 第一步 在 Proteus 中画好电路图 在 Proteus 中新建空白文件保存,从元件库中 选取并放置元器件和电源、地终端 ,按原理图连好线。 第二步 电气检测 电路设计完成后,单击工具栏中电气检查按钮“ ”,会跳出检查结果窗口,如图 41 所示。 窗口前面是一些文本信息,完成接着是电气检查结果列表。 若有错,会有详细说明。 当规则检查出现: NETLIST GENERATED OK NO ERC ERRORD FOUND ,表示通过检查。 图 41 电气检测窗口 第三步 加载目标代码文件 和设置时钟频率 将两种方法得到的目标代码文件 心梦 .hex 加载到单片机中。 在 ISIS 编辑区中双击单片机,则弹出如图 42所示的加载目标代码文件和设置时钟频率的窗口。 单击在 Program File 栏右则“ ”的按钮,弹出文件列表 ,将 心梦 .hex 文件加载到 AT89S52 芯片中。 图 42 加载目标代码文件和设置时钟频率 苏州经贸职业技术学院 12 第四步 仿真 点击仿真按钮中的运行按钮 ,启动系统仿真。 此程序是自己找的一个关于 12864 液晶显示 的程序。 我在 调试的过程中发现这个程序还有些不完善的地方,离我的设计目标还是有一定的差距。 因此我开始对此程序进行修改,尽量的使其适合我的设计目标。 在程序编译部分,我使用的是 KEIL 软件, 对程序进行编译调试最 后 生成 HEX文件,以便把其下载在芯片之中, 最后 成功的生成 HEX 文件。 KEIL 软件的使用课件可以见附件。 仿真 结果 及 分析 1) 仿真运行后,清屏,首先显示宽为 16,高位 32的字符 3,2,1 以及小图片。 图 动态字符图 2)分别显示下面三幅 128*64 的图片。 图 显示图片 图 3)显示从四个角落回到中间的四个 16*16 的图像。 图 动态 图形 图 图像由 16 点阵所得,分别通过左 /右旋转 90 度得到程序。 图 单个图形图 4) 显示由 12 幅图片构成的简单动画,其实就是将延时时间缩 成很 短 ,造成视觉上的效果就成了连续的动作,形成了动画。 苏州经贸职业技术学院 13 图 简单动画 图 5) 显示一个一个的出现汉字,控制想要的字数,最终形成完整的句子。 图 动态字符图 6) 显示延时时间较长的两幅图片。 图 显示图片 图 7) 先显示静态的汉字,然后 上半部分变换,最后 显示移动的结束语 over 图 静 态 汉字 图 苏州经贸职业技术学院 14 第五 章 取模软 件 的使用方法 PCtoLCD20xx 取模软件的使用方法 1) 参数设置 本次课程设计的点阵格式是阴码,取模方式为列行式,取模走向是逆向(地位在前),自定义格式为 C51 格式,最好将行前缀与行后缀的 “ {}” 去掉,像素大小为 8。 图 PCtoLCD20xx 取模软件的参数设置图 苏州经贸职业技术学院 15 2) 汉字及字符的取模图如下: 本次的课程设计,需要将字模的上下行分开输入,否则汉字的上下部分将会分开, 排列 成左右形式。 图 PCtoLCD20xx 取模软 件的 汉字取模 图 图 字模 显示效果图 苏州经贸职业技术学院 16 3)图形的取模图如下: 切记打开的图片,保存格式为单色位图 .bmp,尺寸大小不可超过 128*64。 否则取模软件中打开的图片将会显示不出来。 图 PCtoLCD20xx 取模软件的 图片取模 图 图 图片显示效果 图 苏州经贸职业技术学院 17 畔畔 字模 提取 软件的使用方法 将所想要显示的 16*16 的图形在点阵中点出来,可左右旋转 90 度得出另外四个方向的图形,当从四个角落汇合至中间时,能拼凑出不同效果。 方法如图所示: 图 16 点阵 图 形取模图 图 16 点阵 图 形 显示效果 图 苏州经贸职业技术学院 18 总 结 本次 设计虽然没有特别的复杂,但是由于初次涉及这样的设计,没有任何的经验,过程还是倍感吃力的。 首先就是 LCD 的选择,因 为之前没有学习过这样的器件,算是一个新的概念,所以认识不全,有些不知所措。 其次就是软件的编写,要得到正确的汉字以及图片的地址信息,花费了较长时间才找到相匹配的取模软件。 然后研究如何获取正确的参数,其中 图片的取模就很令我苦恼,最后在老师的辅导下才 得以 提取正确。 程序有了之后,再进行相关的变换,最终得到新颖的效果。 在这次的设计过程中虽然尝到了设计的困难,但是更重要的是让我感受到了它的魅力 ,不知不觉的就想要做出更多的花样,特别是成功仿真后,着实有一种成就感。 在此次过程中不仅巩固了我对 Word 及单片机的使用,同时也 让我对 LCD显示以及取模软件有了一个较为清晰的了解,弥补了我的一个盲区,使我有了知识和精神双方面的收获,相信这将是一次有意义的设计。 苏州经贸职业技术学院 19 致 谢 毕业论文 ,谈不上多深研究,攀不上多少学术,写一点略懂的事情,尽一点微薄的力气。 在此论文最终完成之际,向所有关心和帮助过我的 同学和朋友表示深深感谢。 感谢他们为我提供 的帮助 ,使我的毕业设计能顺利完成。 每一位老师的悉心教导都是我完成这篇论文的基础。 衷心感 谢我的指导老师吴振磊 老师,从毕业设计的开始到毕业论文的最终定稿,给了我细心的指导和帮助。 您严谨的治学态度,开阔的思维, 渊博的知识 深深感染了我,让我终生受用。 在此,我向我的指导老师致以诚挚的谢意和深深的敬意。 从 他 那里 我 不仅仅是 收获了 学术方面的知识,更重要的是 学会了治学严谨的 态度。 以后我一定会更加努力的完善。 苏州经贸职业技术学院 20 参 考 文 献 [1]俞锡存,曹国华 , 单片机原理及接口技术 [M].西安电子科技大 学出版社,20xx 年 [2]张志良,《单片机原理及控制技术》(第 2 版 ) .北京:机械工业出版社,20xx 年 [3]陈堂敏、黄英 , 《单片机工程项目应用技术》 [4]余永权, MCS51系列单片机实用接口技术 [M].北京:北京航空航天大学出版, 1993 年 [5]王守中 ,51 单片机开发入门与典型实例 .北京:人民邮电出版社, 20xx 年 8月 [6] 薛小铃,刘志群,贾俊荣,单片机接口模块应用与开发实例详解,北京航空航天大学出版社, 20xx 年 1 月 [7ra=page%3D3%26filter%3Dtypeid%26typeid%3D3%26typeid%3D3Proteus 仿真社区 苏州经贸职业技术学院 21 附录 A 程序清单与解释 主程序: 本程序汉字取模即扫描方式是从左到右、从上到下的原则、纵向八点下高位。 * include include define uchar unsigned char define uint unsigned int sbit E=P2^4。 sbit RW=P2^3。 //RW 为 1 写; 0 读 sbit RS=P2^2。 //RS 为 0 命令; 1 数据 sbit CS2=P2^1。 // 片选 1 低电平有效,控 制右半屏 sbit CS1=P2^0。 // 片选 1 低电平有效,控制左半屏 sbit busy=P0^7。 uchar i,j,lshu=0x40,you=0x40,ywei,end,over,fan。 uint k=0,h,m,y。 void init(void)。 //函数声明 void checkbusy(void)。 void l_wcode(char l_code)。 //左写命令 void l_wdata(char l_data)。 //左写数据 void r_wcode(char r_code)。 //右写命令 void r_wdata(char r_data)。 //右写数据 void clean()。 //清屏 void delay(int ms)。 //延时 void init(void) //**左边屏初始化 { l_wcode(0x3f)。 //***屏幕开 显示 l_wcode(0xc0)。 l_wcode(0xb8)。 //***第一页开始 l_wcode(0x40)。 //***第一列开始 r_wcode(0x3f)。 //**右边屏初始化 r_wcode(0xc0)。 r_wcode(0xb8)。 r_wcode(0x40)。 } void checkbusy(void) //***忙检测函 数 ***** { E=1。 RS=0。 //命令 RW=1。 //写 苏州经贸职业技术学院 22 P0=0xff。 ACC=P0。 while(!busy)。 } void l_wcode(char l_code) //**左写命令函数 { checkbusy()。 P2=0xf2。 //1111 0010。 E=1,RW=0,RS=0,CS2=1,CS1=0 P0=l_code。 E=1。 E=0。 } void l_wdata(char l_data) //**左写数据显示 { checkbusy()。 P2=0xf6。 //1111 0110。 E=1,RW=0,RS=1,CS2=1,CS1=0 P0=l_data。 E=1。 E=0。 } void r_wcode(char r_code) //**右命令函数 { checkbusy()。 P2=0xf1。 //1111 0001。 E=1,RW=0,RS=0,CS2=0,CS1=1 P0=r_code。 E=1。 E=0。 } void r_wdata(char r_data) //**右数据函数 { checkbusy()。 P2=0xf5。 //1111。基于单片机的液晶显示设计毕业设计(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。