- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
陈爱萍基于单片机的LCD点阵显示器设计正文.doc
目 录 第1章 系统概述 4 1.1总体思路 4 1.2设计内容及设计要求 4 1.2.1设计内容 4 1.2.2.设计要求 4 第2章 总体设计方案 5 2.1设计电路图 5 2.2设计流程图 6 第3章 主体硬件设计 7 3.1复位电路 7 3.2时钟电路 7 3.3显示电路 8 第4章 软件设计 9 4.1忙检查模块 9 4.2写指令/数据模块 9 4.3左/右屏显示模块 10 第5章 实物结果 11 总结 12 参考文献 13 附录 14 第1章 系统概述 1.1总体思路 本次课程设计主要是设计一个基于单片机的LCD点阵显示器,可以显示字符,汉字,图片。 图1 总体框图 1.2设计内容及设计要求 1.2.1设计内容 本次课程设计是以AT89C51(51单片机芯片)为控制芯片,显示芯片为AMPIRE12864(LCD12864芯片系列);程序输入AT89C51芯片,通过控制PO口的高低电平来控制LCD12864显示芯片的一些功能(左右屏显示,串并联及LCD点阵上方块的填充黑白等等),显示芯片收到AT89C51芯片的信号后在16*16方块上显示的是字符还是汉字还是图片。 1.2.2.设计要求 (1)画出硬件电路图,编写汇编语言源程序,并用伟福软件编译调试程序,用Proteus软件设计硬件电路,完成软硬件仿真调试; (2)以8051单片机开发板为基础,完成硬件制作; 第2章 总体设计方案 2.1设计电路图 图2-1 总体电路图 2.2设计流程图 图2-2 总体流程图 第3章 主体硬件设计 整个系统基于AT89C51芯片,显示模块接排阻接P0口。 3.1复位电路 图3-1 复位电路 复位电路主要是通过按键使得芯片的RST端口置0,运用芯片自身的复位功能实现。 3.2时钟电路 图3-2 时钟电路 时钟电路是由晶体振荡器或陶瓷谐振器与两个匹配电容一起构成一个自激振荡器,主要是为单片提供时钟源(内部时钟)。 3.3显示电路 显示电路主要是AMPIRE12864芯片的引脚接线: 引脚号 引脚名称 级 别 引脚功能描述 3 GND 0V 电源地 4 VCC +5V 电源电压 5 V0 0~-10V LCD驱动负电压,要求VDD-VLCD=13V 6 RS H/L 寄存器选择信号 7 R/W H/L 读/写操作选择信号 8 E H/L 使能信号 H/L 八位三态并行数据总线 1 CS1 H/L 片选信号,当CS1=H时,液晶左半屏显示 2 CS2 H/L 片选信号,当CS2=H时,液晶右半屏显示 17 /RST H/L 复位信号,低电平有效 18 Vout -10V 输出-10V的负电压(单电源供电) void CheckState() { unsigned char dat,DATA;//状态信息(判断是否忙) LCDDi=0; // 数据\指令选择,D/I(RS)=L ,表示 DB7∽DB0 为显示指令数据 LCDRW=1; //R/W=H ,E=H数据被读到DB7∽DB0 do { DATA=0x00; LCDEnable=1; //EN下降源 LCDdelay(2);//延时 dat=DATA; LCDEnable=0; dat=0x80 dat; //仅当第7位为0时才可操作(判别busy信号) } while(!(dat==0x00)); } 此模块主要是通过标志变量dat第七位的值来判断LCD是否忙碌:第七位为0时空闲,可以进行写数据/指令操作。 4.2写指令/数据模块 以写指令为例 void write_com(unsigned char cmdcode) { CheckState();//检测LCD是否忙 LCDDi=0; LCDRW=0; P0=cmdcode; LCDdelay(2); LCDEnable=1; LCDdelay(2); LCDEnable=0; } 函数功能:写指令到LCD程序,RS(DI)=L,RW=L,EN=H,即来一个脉冲写一次(数据:RS(DI)=H,RW=L,EN=H)。 4.3左/右屏显示模块 以左屏为例 void Bmp_Left_Disp(unsigned char page,unsigned char column, unsigned char code *Bmp) { unsigned char j=0,i=0; for(j=0;j2;j++) { write_com(Page_Add+page+j); write_com(LCDCol_Add+co
文档评论(0)