版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章MCS-51与键盘、显示器、拨盘、打印机的接口设计输入外设:键盘、BCD码拨盘等;输出外设:LED显示器、LCD显示器、打印机等。10.1LED显示器接口原理LED(LightEmittingDiode):发光二极管的缩写。显示器前面冠以“LED”。10.1.1LED显示器的结构LED显示器为8段(或7段,8段比7段多了一个小数点“dp”有共阳极和共阴极两种。12为使LED显示不同的符号或数字,要为LED提供段码(或称字型码)。提供给LED显示器的段码(字型码)正好是一个字节(8段)。各段与字节中各位对应关系如下:按上述格式,8段LED的段码如表10-1所示。3段码是相对的,它由各字段在字节中所处的位决定。例如表10-1中8段LED段码是按格式:而形成的,“0”的段码为3FH(共阴)。反之,如将格式改为下列格式:则“0”的段码为7EH(共阴)。字型及段码由设计者自行设定,习惯上还是以“a”段对应段码的最低位。5N个LED显示块有N位位选线和8×N根段码线。10.1.2LED显示器工作原理图10-2是4位LED显示器的结构原理图。段码线控制显示的字型,位选线控制该显示位的亮或暗。6静态显示和动态显示两种显示方式。1.静态显示方式各位的公共端连接在一起(接地或+5V)。每位的段码线(a~dp)分别与一个8位的锁存器输出相连。显示字符一确定,相应锁存器的段码输出将维持不变,直到送入另一个段码为止。显示的亮度高。7图10-4:4位8段LED动态显示电路。其中段码线占用一个8位I/O口,而位选线占用一个4位I/O口。9图10-5为8位LED动态显示2003.10.10的过程。图(a)是显示过程,某一时刻,只有一位LED被选通显示,其余位则是熄灭的;图(b)是实际显示结果,人眼看到的是8位稳定的同时显示的字符。1010.2键盘接口原理1.键盘输入的特点键盘:一组按键开关的集合。行线电压信号通过键盘开关机械触点的断开、闭合,输出波形如图10-6。1110.2.2键盘接口的工作原理独立式按键接口和行列式键盘接口。1.独立式键盘接口各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可很容易判断那个键被按下。此种接口适于键数较少或操作速度较高的场合。图10-7(a)为中断方式的独立式键盘工作电路图10-7(b)为查询方式的独立式键盘工作电路。1314图10-8为8255A扩展I/O口的独立式按键接口电路。15对图10-9独立式键盘编程,软件消抖,查询方式检测键的状态。仅有一键按下时才有效才处理。KEYIN:MOVDPTR,#0BFFFH;键盘端口地址 MOVXA,@DPTR ;读键盘状态 ANLA,#1FH ;屏蔽高三位MOVR3,A ;保存键盘状态值LCALLDELAY10 ;延时10ms去键盘抖动MOVXA,@DPTR ;再读键盘状态ANLA,#1FH ;屏蔽高三位CJNEA,R3,RETURN;两次不同,抖动RETURN CJNEA,#1EH,KEY2;不等转KEY217 LJMPPKEY1 ;是K1键按下,转K1键处理 ;子程序PKEY1KEY2:CJNEA,#1DH,KEY3;S2键未按下,转KEY3 LJMPPKEY2 ;S2键按下,转PKEY2处理KEY3: CJNEA,#1BH,KEY4 ;S3未按下,转KEY4 LJMPPKEY3;S3按下,转PKEY3处理KEY4:CJNEA,#17H,KEY5;S4键未按下,转KEY5
LJMPPKEY4;S4按下,转PKEY4处理KEY5: CJNEA,#0FH,PASS;S5未按下,转RETURN LJMPPKEY5;S5按下,转PKEY5处理RETURN:RET;重键或无键按下,从子程序返回识别和编程简单,用在按键数较少的场合。182.行列式(矩阵式)键盘接口用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上。如图10-10所示。按键数目较多的场合,行列式键盘与独立式键盘相比,要节省很多的I/O口线。19(2)按键的识别方法a.扫描法图10-10(b)中3号键被按下为例,来说明此键时如何被识别出来的。第1步:识别键盘有无键按下;第2步:如有键被按下,识别出具体的按键。把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。 先把(扫描)某一列置低电平,其余各列为高电平,检查各行线电平的变化,如果某行线电平为低,可确定此行列交叉点处的按键被按下。21b.线反转法
只需两步便能获得此按键所在的行列值,线反转法的原理如图10-11。(2)按键的识别方法22第1步:列线输出为全低电平,则行线中电平由高变低的所在行为按键所在行。第2步:行线输出为全低电平,则列线中电平由高变低所在列为按键所在列。结合上述两步,可确定按键所在行和列。b.线反转法
(2)按键的识别方法2310.2.3键盘的工作方式单片机在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式。原则:即要保证能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘工作方式有3种:编程扫描、定时扫描和中断扫描。251.编程扫描方式只有当单片机空闲时,才调用键盘扫描子程序,扫描键盘。工作过程:(1)在键盘扫描子程序中,先判断有无键按下。(2)用软件来消除按键抖动的影响。如有键按下,则进行下一步。(3)求按下键的键号。(4)等待按键释放后,再进行按键功能的处理操作。262.定时扫描工作方式利用单片机内的定时器,产生10ms的定时中断,对键盘进行扫描。3.中断工作方式只有在键盘有键按下时,才执行键盘扫描程序,如无键按下,单片机将不理睬键盘。27第1层:单片机如何来监视键盘的输入。三种工作方式:①编程扫描②定时扫描③中断扫描。第2层:确定具体按键的键号。体现在按键的识别方法上就是:①扫描法;②线反转法。第3层:执行键处理程序。2910.3键盘/显示器接口设计实例一般把键盘和显示器放在一起考虑。10.3.1利用并行I/O芯片实现键盘/显示器接口图10-14:8031用扩展I/O接口芯片8155H实现的6位LED显示和32键的键盘/显示器接口电路。图中8155H也可用8255A来替代。30318031外扩一片8155H。
RAM地址:7E00H~7EFFH。 I/O口地址:7F00H~7F05H。
PA口为输出口,控制键盘列线的扫描,同时又是6位共阴极显示器的位扫描口。
PB口作为显示器段码输出口,PC口作为键盘的行线状态的输入口。75452:反相驱动器,7407:同相驱动器。321.动态显示程序设计8031内部RAM6个显示缓冲单元:79H~7EH,存放要显示的6位数据。 ①8155H的PB口输出相应位的段码, ②依次改变PA口输出为高的位使某一位显示某一字符,其它位为暗。动态地显示出由缓冲区中显示数据所确定的字符。33硬件资源:A口:位选线(输出)B口:段码线(输出)8155地址分配7F00:命令、状态7F01:A7F02:B7F03:C7F04:定时初值7F05:定时初值34软件变量、资源:显示段码数据@R0→B口段码表显示位选数据R3→A口软件延时程序35参考程序:DIR:MOVR0,#79H ;置缓冲器指针初值MOVR3,#01H ;位选码的初值送R3MOVA,R3LD0:MOVDPTR,#7F01H;位选码→PA口(PA.0位);最左边LED亮MOVX@DPTR,AINCDPTR ;数据指针指向PB口MOVA,@R0;显示数据→AADDA,#0DH;加偏移量(到表首间;所有指令占的单元数)MOVCA,@A+PC;根据显示数据查表段码36DIR1:MOVX@DPTR,A ;段码→8155HPB口ACALLDL1ms;该位显示1msINCR0 ;指针指向下一个数据单元MOVA,R3 ;位选码送入A中JBAcc.5,LD1;判断是否扫描到最右边的;LED,如到最右边则返回RLA;位选码向左移一位;右边的下一位LED亮MOVR3,A ;位选码送R3中保存AJMPLD0;LD1:RET;DSEG:DB3FH,06H,5BH,4FH,66H,6DH;共阴段码 DB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H,73H,3EH37DB31H,6EH,1CH,23H,40H,03HDB18H,00HDL1ms: MOVR7,#02H ;延时1ms子程序DL: MOVR6,#0FFHDL6: DJNZR6,DL6DJNZR7,DLRET382.键盘程序设计(1)判别键盘上有无键闭合(2)去除键的机械抖动(3)判别闭合键的键号(4)使CPU对键的一次闭合仅作一次处理39硬件资源:A口:列线(输出)C口:行线(输入)8155地址分配7F00:命令、状态7F01:A7F02:B7F03:C
软件变量、资源:列选码R2→A口列计数R440键盘子程序如下:KEYI:ACALLKS1;调用判有无键闭合子程序JNZLK1;有键闭合,跳LK1NI:ACALLDIR;无键闭合,调用显示子程序,延;迟6ms后,跳KEYIAJMPKEYILK1:ACALLDIR;可能有键闭合,软件延迟12ms去抖ACALLDIRACALLKS1;调用判有无键闭合子程序JNZLK2;经去抖,判键确实闭合,跳LK2ACALLDIR;调用显示子程序延迟6msAJMPKEYI;抖动引起,跳KEYILK2:MOVR2,#0FEH ;列选码→R2MOVR4,#00H ;R4为列号计数器41LK4:MOVDPTR,#7F01H;列选码→8155H的PA口MOVA,R2MOVX@DPTR,AINCDPTR ;数据指针增2,指向PC口INCDPTRMOVXA,@DPTR;读8155HPC口JBAcc.0,LONE;0行线为高,无键闭合,跳LONE,转判1行MOVA,#00H ;0行有键闭合,首键号0→AAJMPLKP ;跳LKP,计算键号LONE:JBAcc.1,LTW0;1行线为高,无键闭合;跳LTW0转判2行MOVA,#08H;1行有键闭合,首键号8→AAJMPLKP 42LTW0:JBA.2,LTHR;2行线为高,无键闭合, ;跳LTHR,转判3行 MOVA,#10H;2行有键闭合,首键号10H→AAJMPLKP ;跳LKP,计算键号LTHR:JBAcc.3,NEXT;3行线为高,无键闭合;跳NEXT,准备下一列扫描MOVA,#18H ;3行有键闭合,首键号18H→ALKP:ADDA,R4;计算键号:首键号+列号=键号PUSHA ;键号进栈保护LK3:ACALLDIR ;调用显示子程序,延时6msACALLKS1 ;调用判有无键闭合子程序 ;延时6ms JNZLK3 ;判键释放否,未释放,则循环
POPA;键已释放,键号出栈→ARET43NEXT:INCR4;列计数器加1,为下一列扫描作准备MOVA,R2;判是否已扫到最后一列(最右一列)JNBAcc.7,KND;键扫描到最后一列,跳KND, ;重新进行整个键盘扫描RLA ;键扫描未扫到最后一列, ;位选码左移一位MOVR2,A;位选码→R2AJMPLK4KND:AJMPKEYIKS1:MOVDPTR,#7F01H;判有无键闭合,全“0”→ ;扫描口(PA口)MOVA,#00H ;即列线全为低电平MOVX@DPTR,AINCDPTR ;DPTR增2,指向PC口44INCDPTR ;指针增1,指向PC口MOVXA,@DPTR;从PC口读行线的状态CPLA ;行线取反,如无键按下,则A为0;ANLA,#0FH;屏蔽无用的高4位RET4510.3.2利用8031的串行口实现键盘/显示器接口串口未作它用,可用来外扩键盘/显示器。串口为方式0输出,串口外接移位寄存器74LS164。接口电路如图10-17。74LS164(0)~74LS164(7):作为8位LED的段码输出,8031的P3.4、P3.5:两行键的行状态输入P3.3(TXD):同步移位脉冲输出控制线,4647显示硬件资源串行口0P3.3软件变量、资源:字段表串口初始化SCON.SM0、1、2=0IE=0SCON.TICLRSM0CLRSM1CLRSM2CLREA48优点:亮度大,容易做到显示不闪烁,且CPU不必频繁的为显示服务,从而使单片机有更多的时间处理其它事务。显示子程序:DIR:SETBP3.3 ;P3.3=1允许TXD脚同步移位 ;脉冲输出MOVR7,#08H;送出的段码个数,R7为段 ;码个数计数器MOVR0,#7FH;7FH~78H为显示数据缓冲区DL0: MOVA,@R0;取出要显示的数送AADDA,#0DH;加上偏移量MOVCA,@A+PC;查段码表SEGTAG,取出段码MOVSBUF,A;将段码送SBUF
49DL1:JNBTI,DL1 ;输出段码,查询TI状态CLRTI ;1个字节的段码输出完,清TI标志DECR0 ;指向下一个显示数据单元
DJNZR7,DL0 ;段码个数计数器R7是否为0, ;如不为0,继续送段码CLRP3.3 ;8个段码输出完毕,关输出RET ;返回SEGTAB:DB0C0H,0F9H,0A4H,0B0H,99H ;共阳极段码表,0,1,2,3,4DB92H,82H,0F8H,90H ;5,6,7,8,9DB88H,83H,0C6H,0A1H,86H ;A,B,C,D,EDB8FH,0BFH,8CH,0FFH,0FFH ;F,-,P,暗5051键盘硬件资源:P3.3列线:串行口0行线P3.4P3.5
软件变量、资源:串口初始化SCON.SM0、1、2=0IE=0SCON.TI5253键盘扫描子程序:KEYI:MOVA,#00H ;判有无键按下,使所有列线为0 ;的编码送AMOVSBUF,A ;扫描键盘的(8)号74LS164输 ;出为00H,使所有列线为0KL0:JNBTI,KL0 ;串行输出完否?CLRTI ;串行输出完毕,清TIKL1:JNBP3.4,PK1 ;第1行有闭合键吗?如有,跳 ;PK1进行处理JBP3.5,KL1 ;在第2行键中有闭合键吗?无闭 ;合键跳KL1PK1:ACALLDL10 ;调用延时10ms子程序DL10,软 ;件消除抖动JNBP3.4,PK2 ;判是否抖动引起的?54JBP3.5,KL1PK2: MOVR7,#08H;不是抖动引起的MOVR6,#0FEH ;判别是哪一个键按下,FEH为最 ;左一列为低MOVR3,#00H ;R3为列号寄存器MOVA,R6 ;KL5:MOVSBUF,A ;列扫描码从串行口输出KL2:JNBTI,KL2 ;等待串行口发送完CLRTI ;串行口发送完毕,清TI标志JNBP3.4,PKONE ;读第1行线状态,第1行有键;闭合,跳PKONE处理JBP3.5,NEXT;读第2行状态,是第2行某键?MOVR4,#08H ;第2行键中有键被按下, ;行首键号08H送R4AJMPPK3;55PKONE:MOVR4,#00H;第1行按下,行首键号00H送R4PK3: MOVSBUF,#00H;等待键释放,发送00H ;使所有列线为低KL3:JNBTI,KL3CLRTI ;发送完毕,清标志KL4:JNBP3.4,KL4;判行线状态JNBP3.5,KL4MOVA,R4 ;两行线均为高,说明键已释放ADDA,R3 ;计算得到键码→ARETNEXT:MOVA,R6 ;列扫描码左移一位,判下列键RLAMOVR6,A ;记住列扫描码于R6中INCR3 ;列号增1DJNZR7,KL5;列计数器R7减1,8列键都检查完?56AJMPKEYI;8列键扫描完毕;开始下一个键盘扫描周期DL10:MOVR7,#0AH ;延时10ms子程序DL:MOVR6,#0FFHDL6:DJNZR6,DL6DJNZR7,DLRET5710.3.3利用通用键盘/显示器接口芯片8279实现键盘/ 显示器接口Intel8279芯片:通用可编程键盘/显示器接口芯片。对键盘部分提供扫描工作方式,能对64个键键盘阵列不断扫描,自动消抖,自动识别出闭合的键并得到键号,能对双键或N键同时按下进行处理。58扫描方式的显示接口,可显示多达16位的字符。1.8279的引脚及内部结构59602.引脚功能介绍(1)与CPU的接口引脚DB0~DB7:数据总线、双向、三态,与单片机数据总线相连,在CPU和8279之间传送命令或数据。CLK:系统时钟,用于8279内部定时,以产生其工作所需的时序。RESET:高电平时,8279被复位,复位后的状态如下:*16个字符左边输入显示方式*编码扫描键盘、双键锁定方式CS*:片选61A0:=1,写入的是命令字节;读出的是状态字节。=0,写入或读出的字节均为数据。RD*、WR*:读、写控制引脚IRQ:中断请求线。在键盘方式中,当键盘RAM(先进先出)中存有按下键的数据时,IRQ为高电平,向CPU提出中断申请。
CPU每次从键盘RAM中读出一个字节数据时,IRQ就变为低电平。如果键盘RAM中还有未读完的数据,IRQ将再次变为高电平,再次提出中断请求。62SL0~SL3
扫描输出。用来扫描键盘和显示器。可编程设定为编码输出,即SL0~SL3需外接4-16译码器,输出16取1的扫描信号,也可编程设定为译码输出,即由SL0~SL3直接输出4取1的扫描信号。(2)扫描信号输出引脚63(3)与键盘连接的引脚RL0~RL7键盘矩阵的行信号输入线。SHIFT输入线,通常用作键盘上、下档功能的控制键。CNTL/STB输入线,高电平有效。在键盘方式时,通常用来作为键盘控制功能键使用。64(4)与显示器连接的引脚OUTA0~OUTA3(A组显示数据)、OUTB0~OUTB3(B组显示数据):向LED显示器输出的段码,与扫描信号线SL0~SL3同步。两组可独立使用,也可合并使用。BD*:消隐显示控制。653.8279的基本功能部件(1)扫描计数器编码方式:扫描线SL0~SL3输出,经外部4-16译码器译码后,为键盘和显示器提供16取1的扫描线。译码方式:计数器的最低二位在8279内部译码后,从SL0~SL3输出,为键盘和显示器提供4取1扫描线。66D7D6D5D4D3D2D1D0CNTLSHIFT扫描回复(2)键盘去抖动及回复缓冲器RL0~RL7被接到键盘的行线。在逐列扫描时,当某一键闭合,消抖电路延时等待10ms之后,再检验该键是否仍闭合。若闭合,则该键的行、列地址和附加的移位、控制状态一起形成键盘数据,送入8279内部的键盘RAM存储器。格式为:
控制(CNTL)和移位(SHIFT)的状态由两个独立的附加开关决定,而扫描(D5、D4、D3)是被按键的列编码,而回复(D2、D1、D0)则是被按键的行位置数据。67(3)键盘RAM及其状态寄存器键盘RAM:8字节先进先出(FIFO)存储器。内部的FIFO状态寄存器存放FIFO的工作状态,如FIFO是空还是满,其中存有多少字符,是否操作出错等等。当FIFO存储器空间不足时,状态逻辑将产生IRQ=1信号,向CPU发出中断申请。(4)显示RAM和显示地址寄存器显示RAM:存显示数据。16个字节,可存放16位显示信息。显示RAM的输出与显示扫描配合,同时轮流驱动被选中的显示位,使显示器呈现稳定的显示(动态扫描)。68状态字:主要用于键盘工作方式,以指示键盘RAM中的字符数和有无错误发生。4.8279的命令字和状态字命令字:D7、D6、D5为命令特征位,来区分8条不同的命令字。695.8279与键盘/显示器的接口图10-20为8279与8位显示器,4×8键盘的接口电路。行线接8279的RL0~RL3,8279选用外部译码方式,SL0~SL2经74LS138(1)译码输出,接列线,实现键盘逐列扫描。SL0~SL2又由74LS138(2)译码输出到显示器各位的公共阴极,进行逐位扫描显示。OUTB0~3、OUTA0~3输出8位段码。当位切换时,BD*输出为低电平,使74LS138(2)输出全为高电平,显示消隐。当键盘上出现有效的闭合键时,键输入数据自动进入7071中断读取键盘RAM中的键输入数据。若要更新显示器输出,仅需改变8279中显示RAM中的内容。8279的命令/状态口地址为7FFFH,数据口地址为7FFEH。8279初始化程序:INITI:SETBEX1 ;允许外部中断1中断MOV DPTR,#7FFFH;命令/状态口地址写入DPTRMOV A,#0D1H ;控制字D1H送AMOVX@DPTR,A ;向命令/状态口写入控制字LP:MOVXA,@DPTR ;读8279的状态JB Acc.7,LPMOV A,#00HMOVX@DPTR,A8279的键盘RAM存储器,并向8031请求中断,8031响应72MOVA,#2AHMOVX@DPTR,ASETBEA……键输入中断服务程序:PINT1:PUSHPSWPUSHDPHPUSHDPLPUSHAccMOVDPTR,#7FFFH;写入读键盘RAM命令MOVA,#40HMOVX@DPTR,AMOVDPTR,#7FFEH;读键输入值MOVXA,@DPTRCJNEA,#37H,PRI1;判输入停机命令否73SETB20HPRI1:POPAccPOPDPLPOPDPHPOPPSWRETI显示子程序:DIR:MOVDPTR,#7FFFH;输出写显示RAM命令MOVA,#90HMOVX@DPTR,AMOVR0,#70HMOVR7,#08H ;送显示RAM数据的个数MOVDPTR,#7FFEHDL0:MOVA,@R074ADDA,#05H ;05H为查表偏移量MOVCA,@A+PC ;查表得到段码MOVX@DPTR,A ;写入显示RAMINCR0 ;显示数据单元地址增1DJNZR7,DL0 ;8个显示数据是否输出完毕RETADSEG:DB3FH,06H,5BH,4FH,66H,6DH;段码表(共阴极)
DB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H,73H,3EHDB31H,6EH,1CH,23H,40H,03H DB18H,38H,00H7510.4MCS-51与液晶显示器(LCD)的接口LCD(LiquidCrystalDisplay):液晶显示器的缩写,一种被动式的显示器,即液晶本身并不发光,而是经液晶经过处理后能改变光线通过方向的特性,而达到白底黑字或黑底白字显示的目的。液晶显示器具有功耗低、抗干扰能力强等优点,广泛用在仪器仪表和控制系统中。10.4.1LCD显示器的分类按排列形状分:字段型、点阵字符型和点阵图形。(1)字段型广泛用于电子表、数字仪表、计算器中。76(2)点阵字符型显示字母、数字、符号。它是由5×7或5×10点阵组成,广泛应用在单片机应用系统中。(3)点阵图形型笔记本电脑和彩色电视等设备中。10.4.2点阵字符型液晶显示模块介绍点阵字符型LCD显示器,需相应的LCD控制器、驱动器,来对LCD显示器进行扫描、驱动,以及一定空间的RAM和ROM来存储写入的命令和显示字符的点阵。现在已将LCD控制器、驱动器、RAM、ROM和LCD显示器用PCB连接到一起,称为液晶显示模块LCM(LCdModule)。77用户只向LCM送入相应的命令和数据就可实现所需要的显示内容,与单片机接口简单,使用灵活方便。产品分为字符和图形两种。1.基本结构(1)液晶板在液晶板上排列着若干5×7或5×10点阵的字符显示位,从规格上分为每行8、16、20、24、32、40位,有一行、两行及四行三类,用户可根据需要,来选择购买。(2)模块电路框图由控制器HD44780、驱动器HD44100及几个电阻电容组成。HD44100是扩展显示字符位用的(例如:16字符×1行模块就可不用HD44100,16字符×2行模块就要用一片HD44100)。7879引线号符号名称功能1VSS地0V2VDD电源5V±5%3VEE液晶驱动电压4RS寄存器选择1:数据寄存器;0:命令寄存器5R/W*读/写1:读;0:写6E使能下降沿触发7~14DB0~DB78位数据线数据传输液晶显示模块的引脚模块14个引脚,其中有8条数据线,3条控制线,3条电源线,见表10-2。通过单片机写入模块的数据和指令,就可对显示方式和显示内容作出选择。80RSR/W*操作00命令寄存器写入01忙标志和地址计数器读出10数据寄存器写入11数据寄存器读出寄存器的选择命令格式及命令功能说明
(1)命令格式控制器HD44780内有多个寄存器,如表10-3所示。81RS位和R/W*引脚上的电平来选择寄存器,而DB7~DB0则决定命令功能。命令共11种:清除,返回,输入方式设置,显示开关控制,移位控制,功能设置,CGRAM(字符生成RAM)地址设置,DDRAM(显示数据RAM)地址设置,读忙标志和地址,写数据到CGRAM或DDRAM,从CGRAM或DDRAM读数据。这些命令功能强:可组合成各种输入、显示、移位方式以满足不同的要求。82838485(2)标准字符库字符库的内容、字符码和字型的对应关系。例如“A”的字符码为41H,“B”的字符码为42H。868710.4.38031与LCD的接口及软件编程1.8031与LCD模块的接口接口电路见图10-24。将LCM挂接在8031的总线上,通过对数据总线的读写实现对LCM的控制。881.软件编程初始化用户所编的显示程序,开始必须进行初始化,否则模块无法正常显示。显示程序编写8910.5MCS-51与微型打印机的接口内部有一个控制用单片机,固化有控打程序,智能化程度高。常用的微型打印机:TPμP-40A/16A、GP16以及XLF嵌入仪器面板上的汉字微型打印机。10.5.1MCS-51与TPμP-40A/16A微型打印机的接口1.TPμP-40A/16A微型打印机单片机控制的微型智能打印机。TPμP-40A与TPμP-16A的接口信号与时序完全相同,操作方式相近,硬件电路及插脚完全兼容,只是指令代码不完全相同。TPμP-40A每行打印40个字符,TPμP-16A则每行打印16个字符。902.主要性能、接口要求及时序(1)TPμP-40A主要技术性能单片机控制,2KB控打程序及标准的Centronics并行接口。可打印全部ASCII代码字符及128个非标准字符和图符。16个代码字符(6×7点阵)由用户定义。可打印出8×240点阵的图样(汉字或图案点阵)。字符、图符和点阵图可在宽和高的方向放大为×2、×3、×4倍。每行字符的点行数(包括字符的行间距)可用命令更换。即字符行间距空点行在0~256间任选。912.接口信号采用国际上流行的Centronics打印机并行接口,与单片机间是通过一条20芯扁平电缆及接插件相连。打印机有一个20线扁平插座,信号引脚排列如图10-26所示。引脚介绍:DB0~DB7:数据线,单向传输,由单片机输入给打印机。STB*:数据选通信号。在该信号的上升沿时,数据线上的8位并行数据被打印机读入机内锁存。9293BUSY:打印机“忙”状态信号。当该信号有效(高电平)时,表示打印机正忙。此时,单片机不得向打印机送入新的数据。ACK*:打印机的应答信号。低电平有效,表明打印机已取走数据线上的数据。ERR*:“出错”信号。当送入打印机的命令格式出错时,打印机立即打印一行出错信息,提示出错。在打印出错信息之前,该信号线出现一个负脉冲,脉冲宽度为30μs。3.接口信号时序接口信号时序如图10-27所示。9495选通信号STB*宽度需大于0.5μs。应答信号ACK*可与STB*信号作为一对应答联络信号,也可与BUSY作为一对应答联络信号。2.字符代码及打印命令写入的全部代码共256个,其中00H无效。代码:01H~0FH为打印命令;代码:10H~1FH为用户自定义代码;代码:20H~7FH为标准ASCII代码;代码:80H~FFH为非ASCII代码,如图10-28所示。其中包括少量汉字、希腊字母、块图图符和一些特殊字符。96973.TPμP-40A/16A与MCS-51单片机接口设计TPμP-40A/16A内部控制电路由单片机构成,在输入电路中有锁存器,在输出电路中有三态门控制。因此可直接与单片机相接。TPμP-40A/16A只有握手线STB*、BUSY(或ACK*),接口电路如图10-29所示。图10-30:并行I/O口连接的打印机接口电路。图中的扩展I/O口为8255A的PA口,采用查询法,即通过读8255A的PC0脚的状态来判断送给打印机的一个字节的数据是否处理完毕。也可用中断法(BUSY直接与单片机的P3.3脚相连)。9899100例把MCS-51单片机内部RAM3FH~4FH单元中的ASCII码数据送到打印机。8255A设置为方式0,即端口A与端口C的上半部为输出方式。端口C的下半部为输入方式。打印程序如下:PRINT: MOVR0,#7FH ;控制口地址→R0MOVA,#81H ;8255A控制字→AMOVX@R0,A ;控制字→控制口MOVR1,#3FH ;数据区首地址→R1MOVR2,#0FH;打印数据个数的计数LOOP: MOVA,@R1 ;打印数据单元内容→AINCR1 ;指向下一个数据单元MOVR0,#7CH;8255A的端口A地址→R0
MOVX@R0,A;打印数据送8255A的口A并锁存101MOVR0,#7FH ;8255A的控制口地址→R0MOVA,#0EH ;PC7的复位控制字→AMOVX@R0,A ;PC7=0MOVA,#0FH ;PC7的置位控制字→AMOVX@R0,A ;PC7由0变1LOOP1:MOVR0,#7EH ;口C地址→R0MOVXA,@R0 ;读入C口的值ANLA,#01H ;屏蔽C口的高7位,只留PC0位JNZLOOP1 ;查询BUSY的状态,如为1跳LOOP1DJNZR2,LOOP ;未打完,循环102IO0~IO7:双向三态数据总线,是CPU与GP16打印机之间命令、状态和数据信息传输线。CS*:设备选择线。RD*、WR*:读、写信号线。BUSY:打印机状态输出,高电平表示GP16处于忙状态,可供CPU查询或作中断请求线。GP16控制器具有数据锁存器,与单片机接口十分方便。10.5.2MCS-51与GP16微型打印机的接口1.GP16微型打印机的接口信号控制器为8031单片机。接口信号如下:1031.打印命令及打印方式GP16的打印命令占两个字节,其格式如下:第一个字节
D7-----D4D3-----D0操作码点行数n第二个字节
D7------------------D0打印行数NNGP16为微型针打,字符本身占据7个点行。命令字中的点行数n是选择字符行之间的行距的参数,若n=10,则行距为3个点行数,应大于或等于8。打印行数是执行本条命令时打印(或空走纸)的字符行数。104D7D6D5D4 命令功能1000 空走纸1001 打印字符串1010 十六进制数据打印1011 图形打印3.MCS-51单片机和GP16的接口GP16内部有三态锁存器,能锁存数据总线上的数据,,故GP16可以直接与MCS-51数据总线相连而不须外加锁存器。图10-32为GP16与8031数据总线口相连的接口电路。GP16的命令编码如下表。105106图中BUSY接(P3.3),直接可用于中断方式。如要以查询方式工作时,BUSY可以不连接,通过查询状态字来获取BUSY的状态。如果使用其它I/O或扩展I/O口,只须将P0口线换成其他I/O或扩展I/O口即可。按照图10-32的连接,GP16的打印机地址为7FFFH,读取GP16状态字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新疆省直辖行政单位(2024年-2025年小学五年级语文)人教版期末考试(上学期)试卷及答案
- 生长因子表达调控
- 2024年度边境巡逻保安合作合同
- 并购重组效应评估
- 04年北京车牌租赁合同实例
- 2024年度金融科技与众筹平台服务合同
- 2024年度版权许可使用合同标的及保密义务
- 2024年度深海油气钻探平台施工合同
- 2024版标的质量检测廉政承诺合同
- 2024年度房地产经纪服务与合作合同
- 2024年北京京能清洁能源电力股份有限公司招聘笔试参考题库含答案解析
- 血常规指标与临床意义
- VNX5300存储安装文档
- 初中英语以读促写教学研究
- 职工食堂承包投标书范本
- 电气设备防潮技术措施规程范本
- 专利技术转让合同书
- 不动产登记表.doc
- 个人独资企业章程(范本)
- Agency Costs of Free Cash Flow,Corporate Finance,Takeovers
- 外汇与汇率教学课件PPT
评论
0/150
提交评论