您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > [转载]基于8255的LCD动态显示器设计
1基于8255的LCD动态显示器设计一、设计要求能够学会利用Proteus软件的MCS51单片机仿真学习,根据提供的参考工程,在proteus平台自己重新设计实验电路所需要的电气原理图,并在此基础上编写相对应的程序,实现其功能,学习proteus软件的使用,其中包括原理图器件的选取、原理图的电气连接、程序的编写编译以及运行,并能查出其错误等。二、实验内容设计一基于8255的LCD动态显示器三、实验要求1.用数码管或LCD正常显示数字“12345678”。2.通过按键可改变显示方式。3.设计显示屏的动态效果,用10个按键,每键对应一种滚动技术。另注,实验发挥部分:1.设计所有动作的联合效果。2.设计二个变速按键,可多级改变滚动速度。3.设计一台魔术电子种,采用自动变换,随机组合,数据每10秒变换一次。动态显示格式:1.静止2.整体闪烁3.单字闪烁4.整体向前、向后滚动5.单字移动6.两边向中间压缩7.中间向两边扩张8.上下压缩9.文字上下滚动10.组合动作(每一字符执行上述一个动作,并同时运动)四、实验过程本次课程设计是在理论课程的基础上,目的在于培养我们的动手能力,通过电路设计、理论计算、实际编程、调试、测试、分析查找故障,解决在实际设计中的问题,使设计好的电路能正常工作,并可能结合实际的实验板进行下载测试。在此基础上根据实验大纲的要求,我们以两人一组的形式在“51单片机课程设计选题表”中任选一空(各组间不能重题),实现其功能。鉴于我们组对于8255通用可编程器件的了解,我们选择基于8255的LCD显示的动态显示器设计这一课题。2在考虑本次设计过程中,依据设计基本要求,并且基于8255通用可编程器件等条件,我们把8255器件用来扩展I/O口,以备外接一4X4键盘,以满足通过10个按键来控制10种动态显示,以及通过该I/O口外接一LCD显示器(当然,实验中我们发现不用8255扩展I/O口,单片机AT89C51的四个I/O端口已能满足该实验需要)。但在实验过程中,由于我们所采用的Proteus软件的版本较低,发现该版本中8255所接的键盘不允许接上拉电阻,为此我们改变设计,将键盘接到单片机AT89C51的P1口,并去掉键盘的上拉电阻(这点是键盘设计的不足,虽其能运行正常,经多方面询问这应该就是版本较低原因)。为了能让各器件间联系起来我们又添加了一些逻辑器件,如:与非门等以及74LS373地址锁存器等。最终设计的电路图如图(1):图(1)图中所用器件如表(a):A[8..15]AD[0..7]AD0AD1AD2AD3AD4AD5AD7AD6AD7AD2AD3AD4AD5AD6A15A15AD1AD0P1.0P1.1P1.3P1.2P1.4P1.5P1.6P1.7048C159D26AE37BFP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7C133pC233pX1CRYSTALD03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE11U374LS373GNDVDDD714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM020L123U4:A74S00456U4:B74S001098U4:C74S00121311U4:D7408XTAL218XTAL119RST9P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115AD[0..7]A[8..15]ALE30EA31PSEN29P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78U1AT89C51D034D133D232D331D430D529D628D727RD5WR36A09A18RESET35CS6PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC710U28255A3器件名称器件型号单片机AT89C51可编程I/O接口芯片8255地址锁存器74LS373LCD显示器LM020L表(a)图中还有CRYSTAL晶振器,RES电阻,CAP电容,BUTTON按钮,与非门,与门等等。其中主要部分器件使用说明如下:I.4X4矩阵式键盘识别技术a)键盘键号图用AT89C51的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;对应的按键的序号排列如图(2)。048C159D26AE37BFP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7图(2)b)4×4矩阵键盘识别处理每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(行线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键。c)键盘扫描程序框图4WAIT没有没有有有没有没有有有没有没有有有没有没有有有WAITP1=0FFH,P1.4=0延时10ms根据当前状态识别按键有键按下吗?真的有键按下吗?P1=0FFH,P1.5=0P1=0FFH,P1.6=0P1=0FFH,P1.7=0有键按下吗?有键按下吗?有键按下吗?延时10ms延时10ms延时10ms真的有键按下吗?真的有键按下吗?真的有键按下吗?根据当前状态识别按键根据当前状态识别按键根据当前状态识别按键5注:在上图中调用相应按键识别子程序转入显示子程序d)部分汇编程序如下键盘子程序:KEYBOARD:WAIT:MOVP1,#0FFHCLRP1.4;置P1.4=0MOVA,P1ANLA,#0FHXRLA,#0FHJZNOKEY1;没有按键跳转到第二列LCALLDELY10MS;延时子程序MOVA,P1ANLA,#0FHXRLA,#0FHJZNOKEY1MOVA,P1ANLA,#0FHCJNEA,#0EH,NK1MOVKEYBUF,#0LJMPVALUE;跳转到按键识别子程序NK1:CJNEA,#0DH,NK2MOVKEYBUF,#1ACALLDELAYLJMPVALUENK2:CJNEA,#0BH,NK3MOVKEYBUF,#2LJMPVALUENK3:CJNEA,#07H,NK4MOVKEYBUF,#3LJMPVALUENK4:NOP-------同样的方法使P1.5,P1.6,P1.7循环置“0”进行键盘扫描,直至有键按下。DELY10MS:;延时子程序MOVR4,#20D1:MOVR5,#248DJNZR5,$DJNZR4,D1RET根据当前状态识别按键6按键识别及调用相对应键的显示子程序:MAIN:MOVDPTR,#7FFFH;向8255控制口写控制字MOVA,#80HMOVX@DPTR,AMOVSP,#60H;设置堆栈ACALLDELAY;设置延时子程序ACALLINIT_LCD;初始化程?MOVA,#84H;从第一行第一列?ACALLWRCOMACALLKEYBOARDMOVR3,ADJNZR3,KEY2;根据键盘值选显示方式ACALLDISPMOD1;调用显示子程序AJMPLAST;循环末端程序KEY2:DJNZR3,KEY3ACALLDISPMOD2AJMPLASTKEY3:DJNZR3,KEY4ACALLDISPMOD3AJMPLASTKEY4:DJNZR3,KEY5ACALLDISPMOD4AJMPLAST………II.LCD显示技术1.本次设计选用字符型LCD,型号为LM020L,如下图所示,其基本特点如下:D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM020L液晶显示器所显示的内容实际上是由若干5X8或5X11点阵块组成的显示字符群。每一点阵块为一个字符位,字符间距和行距都为一个点的宽度。主控制驱动电路为HD44780及其兼容芯片。内置字符发生器ROM存储器(CGROM),可显示192种字符具有64个字节自定义字符RAM存储器(CGRAM),可自定义8个5X8点阵字符或4个5X11点阵字符。具有80个字节的显示数据RAM存储器(DDRAM),用以存放待显示的字符码。等等7LM020L显示模块的引脚功能定义引脚号符号输入/输出电平功能说明1Vss电源地:0V2VDD电源:+5V3VEELCD驱动电源:0-5V4RS输入1/0寄存器选择。1:数据;0:指令5RW输入1/0读写操作选择:1:读;0:写6E输入1/0或下降沿使能信号。写E下降沿有效;读E高电平有效7DB0输入/输出1/0或三态数据总线(LSB)8-13DB1-DB6输入/输出1/0或三态数据总线14DB7输入/输出1/0或三态数据总线(MSB)2.HD44780的内部结构控制电路主要由指令寄存器(IR),数据寄存器(DR),忙标志(BF),地址计数器(AC),显示数据寄存器(DDRAM),字符发生器ROM(CGROM),字符发生器RAM(CGRAM)和时序发生器构成。3.HD44780的指令集1)清屏RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000000001功能:清显示指令,使DDRAM的内容全部被清除;光标回原位,地址计数器AC=02)输入方式设置RSR/WDB7DB6DB5DB4DB3DB2DB1DB000000001I/DS功能:设置光标、画面移动方式。其中,I/D=1,当从DDRAM(CGRAM)读出数据或把数据写入DDRAM(CGRAM)后,AC自动加1;I/D=0,当从DDRAM(CGRAM)读出数据或把数据写入DDRAM(CGRAM)后,AC自动减1;S=1,当进行数据读写后,画面左右移动。当I/D=1时,画面向左移动,反之向右移动;S=0,当进行数据读写后,画面不动。3)显示开关控制RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000001DCB功能:对显示的开关进行控制;其中,D为显示控制,D=1,开显示;D=0,关显示,此时DDRAM的内容保持不变;C为光标控制,C=1,开光标显示;C=0,关光标显示;B为闪烁控制,B=1,光标所指的字符与光标一起以0.4s交变闪烁;B=0,不闪烁;84)光标画面移位RSR/WDB7DB6DB5DB4DB3DB2DB1DB0000001S/CR/L**功能:此指令使光标或显示画面在没有对DDRAM进行读写操作时被左移或右移。其中,S/C为选择画面还是光标进行平移,S/C=1,选择画面平移;S/C=0,选择光标平移;R/L=1,左移一个字符位;R/L=0,右移一个字符位。5)功能设置RSR/WDB7DB6DB5DB4DB3DB2DB1DB000001DLNF**功能:工作方式设置(初始化指令)其中,DL=1,8位数据总线DB7-DB0接口;DL=0,4位数据总线DB7-DB4接口,DB3-DB0不用;N为对显示的行数进行控制,N=1,二行显示;N=0,一行显示;F为对点阵的规格进行控制,F=1,5X10点阵;F=0,5X8点阵;6)CGRAM地址设置RSR/WDB7DB6DB5DB4DB3DB2DB1DB00001A5A4A3A2A1A0功能:工作方式设置(初始化指令),这条指令设置CGRAM的地址指针。地址码C5-C0被送入AC。在此后,就可以将用户自定义的显示字符数据写入CGRAM或从CGRAM中读出。其中,CGRAM地址范围为:A5-A0=0-3FH。7)DDRAM地址设置RSR/WDB7DB6D
本文标题:[转载]基于8255的LCD动态显示器设计
链接地址:https://www.777doc.com/doc-4813742 .html