[信息与通信]第10章 MCS-51与键盘、显示器、拨盘、打印机的接口设计.ppt

上传人:音乐台 文档编号:2001045 上传时间:2019-01-30 格式:PPT 页数:94 大小:6.32MB
返回 下载 相关 举报
[信息与通信]第10章 MCS-51与键盘、显示器、拨盘、打印机的接口设计.ppt_第1页
第1页 / 共94页
[信息与通信]第10章 MCS-51与键盘、显示器、拨盘、打印机的接口设计.ppt_第2页
第2页 / 共94页
[信息与通信]第10章 MCS-51与键盘、显示器、拨盘、打印机的接口设计.ppt_第3页
第3页 / 共94页
亲,该文档总共94页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[信息与通信]第10章 MCS-51与键盘、显示器、拨盘、打印机的接口设计.ppt》由会员分享,可在线阅读,更多相关《[信息与通信]第10章 MCS-51与键盘、显示器、拨盘、打印机的接口设计.ppt(94页珍藏版)》请在三一文库上搜索。

1、第10章 MCS-51与键盘、显示器、拨盘、打印机的接 口设计,输入外设:键盘、BCD码拨盘等;,输出外设:LED显示器、LCD显示器、打印机等。,10.1 LED显示器接口原理,LED(Light Emitting Diode):发光二极管的缩写。 显示器前面冠以“LED”。,10.1.1 LED显示器的结构,常用的LED显示器为8段(或7段,8段比7段多了一 个小数点“dp”段)。,有共阳极和共阴极两种。如图10-1所示。,LED数码显示器是由若干个发光二极管组成的,当发光二极管导通时,相应的点或线段发光,将这些二极管排成一定图形,控制不同组合的二极管导通,就可以显示出不同的字形。,显示0

2、?,数码管段码的编码: 8段正好是一个字节,通常采用如下编码方式。(这种编码需单片机数据总线的D0D7分别和数码管的a、b、c、dp对应相连。如图所示,最高位,最低位,共阴极接法,共阳极接法,表10-1 LED段码(8段),N个LED显示块有N位位选线和8N根段码线。,10.1.2 LED显示器工作原理,图10-2是4位 LED显示器的结构原理图。,段码线控制显示的字型,,位选线控制该显示位的亮或暗。,静态显示和动态显示两种显示方式。,1. 静态显示方式,各位的公共端连接在一起(接地或+5V)。,每位的段码线(adp)分别与一个8位的锁存器 输出相连。,显示字符一确定,相应锁存器的段码输出将维

3、持 不变,直到送入另一个段码为止。显示的亮度高。,图10-3: 4位静态LED显示器电路。该电路各位可独立显示。,静态显示和动态显示两种显示方式。,1. 静态显示方式,各位的公共端连接在一起(接地或+5V)。,每位的段码线(adp)分别与一个8位的锁存器输出相连。,显示字符一确定,相应锁存器的段码输出将维持不变,直到送入另一个段码为止。显示的亮度高。,2. 动态显示方式,所有位的段码线相应段并在一起,由一个8位I/O 口控制,形成段码线的多路复用,各位的公共端分别由 相应的I/O线控制,形成各位的分时选通。,图 4位8段LED动态显示电路。其中段码线占用一个8位I/O口,而位选线占用一个4位I

4、/O口。,必须注意:扫描周期必须控制在视觉停顿时间内,一般在20ms以内,否则会出现闪烁或跳动现象。,例子:显示1、2、3、4,首先扫描,最后扫描,图10-5为8位LED动态显示2003.10.10的过程。,图(a)是显示过程,某一时刻,只有一位LED被选通 显示,其余位则是熄灭的;,图(b)是实际显示结果,人眼看到的是8位稳定的 同时显示的字符。,复 习,9.5 用MCS-51的串行口扩展并行口,9.5.1 用74LS165扩展并行输入口(实现的功能?),一:(1)74ls165 的引脚;(2)74ls165并行置入数据;(3)允许串行移位;二:单片机如何接收74ls165的数据?,why,

5、静态显示和动态显示两种显示方式。,1. 静态显示方式,各位的公共端连接在一起(接地或+5V)。,每位的段码线(adp)分别与一个8位的锁存器输出相连。,显示字符一确定,相应锁存器的段码输出将维持不变,直到送入另一个段码为止。显示的亮度高。,必须注意:扫描周期必须控制在视觉停顿时间内,一般在20ms以内,否则会出现闪烁或跳动现象。,例子:显示1、2、3、4,首先扫描,最后扫描,第九章,键盘是十分重要的人机对话的组成部分,是人向机器发出指令、输入信息的必需设备。 键的特性 键盘是由若干独立的键组成,键的按下与释放是通过机械触点的闭合与断开来实现的,因机械触点的弹性作用,在闭合与断开的瞬间均有一个抖

6、动过程 。,10.2 键盘接口原理,1. 键盘输入的特点,键盘:一组按键开关的集合。,2. 按键的确认,检测行线电平 高电平:断开;低电平:闭合,,常用软件来消除按键抖动。,基本思想:检测到有键按下,键对应的行线为低,软 件延时10ms后,行线如仍为低,则确认该行有键按下。,3.如何消除按键的抖动,当键松开时,行线变高,软件延时10ms后,行线仍为 高,说明按键已松开。,采取以上措施,躲开了两个抖动期t1和t3的影响。,10.2.2 键盘接口的工作原理,独立式按键接口和行列式键盘接口。,1.独立式键盘接口,各键相互独立,每个按键各接一根输入线,通过检 测输入线的电平状态可很容易判断那个键被按下

7、。,此种接口适于键数较少或操作速度较高的场合。,图10-7(a)为中断方式的独立式键盘工作电路。,图10-7(b)为查询方式的独立式键盘工作电路。,图10-8为8255A扩展I/O口的独立式按键接口电路。,图10-9用三态缓冲器扩展的I/O口的按键接口电路。,如何读取键盘的状态? (1)读键盘端口的状态;(2)调用延时再次读键盘端 口的状态;(3) 如何区分S1、S2、S3 、S4、S5。,读键盘端口的状态 MOV DPTR,#0BFFFH;键盘端口地址BFFFH MOVX A,DPTR ;读键盘状态,读键盘端口的状态 LCALL DELAY10 ;延时10ms去键盘抖动 MOVX A,DPT

8、R ;再读键盘状态 CJNE A,R3,RETURN ;两次不同,抖动引起转RETURN,如何区分S1、S2、S3 、S4、S5,ANL A,#1FH ;屏蔽高三位?,CJNE A,#1EH,KEY2 ;相等,有键按下,不等转KEY2,对图10-9独立式键盘编程,软件消抖,查询方式检测键的状态。仅有一键按下时才有效才处理。,KEYIN:MOV DPTR,#0BFFFH;键盘端口地址BFFFH MOVX A,DPTR ;读键盘状态 ANL A,#1FH ;屏蔽高三位,MOV R3,A ;保存键盘状态值 LCALL DELAY10 ;延时10ms去键盘抖动 MOVX A,DPTR ;再读键盘状态,

9、ANL A,#1FH ;屏蔽高三位,CJNE A,R3,RETURN ;两次不同,抖动引起转RETURN,CJNE A,#1EH,KEY2 ;相等,有键按下,不等转KEY2,LJMP PKEY1 ;是K1键按下,转K1键处理 ;子程序PKEY1 KEY2: CJNE A,#1DH,KEY3 ;S2键未按下,转KEY3 LJMP PKEY2 ;S2键按下,转PKEY2处理 KEY3: CJNE A,#1BH,KEY4 ;S3未按下,转KEY4 LJMP PKEY3 ;S3按下,转PKEY3处理 KEY4: CJNE A,#17H,KEY5 ;S4键未按下,转KEY5 LJMP PKEY4 ;S4

10、按下,转PKEY4处理 KEY5: CJNE A,#0FH,PASS ;S5未按下,转RETURN LJMP PKEY5 ;S5按下,转PKEY5处理 RETURN:RET ;重键或无键按下,从子程序返回,识别和编程简单,用在按键数较少的场合。,2. 行列式(矩阵式)键盘接口,用于按键数目较多的场合,由行线和列线组成, 按键位于行、列的交叉点上。如图10-10所示。,按键数目较多的场合,行列式键盘与独立式键盘 相比,要节省很多的I/O口线。,(1)行列式键盘工作原 理,无键按下,该行线为高电平,当有键按下时,行线电平由列线的电平来决定。,由于行、列线为多键共用,各按键彼此将相互发 生影响,必须

11、将行、列线信号配合起来并作适当的处 理,才能确定闭合键的位置。,(2)按键的识别方法,识别键盘有无键被按下的方法,分两步进行:,第1步:识别键盘有无键按下;,第2步:如有键被按下,识别出具体的按键。,把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。,上述方法称为扫描法,即先把某一列置低电平,其余各列为高电平,检查各行线电平的变化,如果某行线电平为低,可确定此行列交叉点处的按键被按下。,b. 线反转法,只需两步便能获得此按键所在的行列值,线反转 法的原理如图10-11。,第1步:列线输出为全低电平,则行线中电平由高变低的所在行为按键所在行。,第2步:行线输

12、出为全低电平,则列线中电平由高变低所在列为按键所在列。,结合上述两步,可确定按键所在行和列。,(3)键盘的编 码,根据实际需要灵活编码。,10.2.3 键盘的工作方式,单片机在忙于各项工作任务时,如何兼顾键盘的输 入,取决于键盘的工作方式。,原则:即要保证能及时响应按键操作,又不要过多占 用CPU的工作时间。,通常,键盘工作方式有3种,即编程扫描、定时扫 描和中断扫描。,1. 编程扫描方式,只有当单片机空闲时,才调用键盘扫描子程序, 扫描键盘。,工作过程:,(1)在键盘扫描子程序中,先判断有无键按下。,方法:PA口8位输出全0,读PC口低4位状态,若PC0 PC3为全1,则说明键盘无键按下;若

13、不全为1,则说明 键盘可能有键按下。,(2)用软件来消除按键抖动的影响。如有键按下,则 进行下一步。,(3)求按下键的键号。,(4)等待按键释放后,再进行按键功能的处理操作。,2. 定时扫描工作方式,利用单片机内的定时器,产生10ms的定时中断,对 键盘进行扫描。,3.中断工作方式,只有在键盘有键按下时,才执行键盘扫描程序,如 无键按下,单片机将不理睬键盘。,键盘所做的工作分为三个层次,如图10-13。,第1层:单片机如何来监视键盘的输入。三种工作方 式:编程扫描定时扫描中断扫描。,第2层:确定具体按键的键号。体现在按键的识别方 法上就是:扫描法;线反转法。,第3层:执行键处理程序。,10.3

14、 键盘/显示器接口设计实例,一般把键盘和显示器放在一起考虑。,10.3.1 利用并行I/O芯片实现键盘/显示器接口,图10-14:8031用扩展I/O接口芯片8155H实现的 6位LED显示和32键的键盘/显示器接口电路。图中 8155H也可用8255A来替代。,8031外扩一片8155H。RAM地址:7E00H7EFFH。 I/O口地址:7F00H7F05H。,PA口为输出口,控制键盘列线的扫描,同时又是6位共阴极显示器的位扫描口。,PB口作为显示器段码输出口,PC口作为键盘的行线状态的输入口。,75452:反相驱动器,7407:同相驱动器。,1动态显示程序设计,内部RAM 6个显示缓冲单元

15、:79H7EH,存放要显示的 6位数据。,8155H的PB口输出相应位的段码,依次改变PA口输出为 高的位使某一位显示某一字符,其它位为暗。 动态地显示出由缓冲区中显示数据所确定的字符。程 序流程如图10-15 。,内部RAM 6个显示缓冲单元:79H7EH,存放要显示的6位数据。,参考程序:,DIR: MOV R0,79H ;置缓冲器指针初值,MOV R3,01H ;位选码的初值送R3,MOV A,R3,LD0: MOV DPTR,7F01H ;位选码PA口(PA.0位),;最左边LED亮,MOVX DPTR,A,INC DPTR ;数据指针指向PB口,MOV A,R0 ;显示数据A MOV

16、X DPTR,A ;数据8155H PB口 直接这样行吗?,ADD A,0DH ;加偏移量(下条指令到表首间 ;所有指令占的单元数),MOVC A,APC ;根据显示数据来查表取段码,DIR1: MOVX DPTR,A ;段码8155H PB口,ACALL DL1ms ;该位显示1ms,INC R0 ;指针指向下一个数据单元,MOV A,R3 ;位选码送入A中,JB Acc.5,LD1 ;判断是否扫描到最右边的 ; LED,如到最右边则返回,RL A ;位选码向左移一位,准备让 ; 右边的下一位LED亮,MOV R3,A ;位选码送R3中保存,AJMP LD0 ;,LD1: RET ;,DSE

17、G: DB 3FH,06H,5BH,4FH,66H,6DH ;共阴极段码表 DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,73H,3EH,DB 31H,6EH,1CH,23H,40H,03H,DB 18H,00H,DL1ms: MOV R7,02H ;延时1ms子程序,DL: MOV R6,0FFH,DL6: DJNZ R6,DL6,DJNZ R7,DL,RET,2键盘程序设计,(1)判别键盘上有无键闭合,(2)去除键的机械抖动,(3)判别闭合键的键号,(4)使CPU对键的一次闭合仅作一次处理,键盘程序的流程如图10-16。,键盘子程序如下:,KE

18、YI:ACALL KS1 ;调用判有无键闭合子程序,JNZ LK1 ;有键闭合,跳LK1,NI: ACALL DIR ;无键闭合,调用显示子程序,延,;迟6ms后,跳KEYI,AJMP KEYI,LK1: ACALL DIR ;可能有键闭合,软件延迟12ms去抖,ACALL DIR,ACALL KS1 ;调用判有无键闭合子程序,JNZ LK2 ;经去抖,判键确实闭合,跳LK2,ACALL DIR ;调用显示子程序延迟6ms,AJMP KEYI ;抖动引起,跳KEYI,LK2: MOV R2,0FEH ;列选码R2,MOV R4,00H ;R4为列号计数器,LK4: MOV DPTR,7F01H

19、 ;列选码8155H的PA口,MOV A,R2 ;,MOVX DPTR,A ;,INC DPTR ;数据指针增2,指向PC口,INC DPTR ;,MOVX A,DPTR ;读8155H PC口,JB Acc.0,LONE ;0行线为高,无键闭合,跳 LONE,转判1行,MOV A,00H ;0行有键闭合,首键号0A,AJMP LKP ;跳LKP,计算键号,LONE:JB Acc.1,LTW0 ;1行线为高,无键闭合,跳LTW0, ;转判2行,MOV A,08H ;1行有键闭合,首键号8A,AJMP LKP,LTW0:JB A.2,LTHR ;2行线为高,无键闭合,跳 ;LTHR,转判3行,M

20、OV A,10H ;2行有键闭合,首键号10HA,AJMP LKP ;跳LKP,计算键号,LTHR:JB Acc.3,NEXT ;3行线为高,无键,;闭合,跳NEXT,准备下一列扫描,MOV A,18H ;3行有键闭合,首键号18HA,LKP: ADD A,R4 ;计算键号:首键号列号=键号,PUSH A ;键号进栈保护,LK3: ACALL DIR ;调用显示子程序,延时6ms,ACALL KS1 ;调用判有无键闭合子程序,延时 ;6ms,JNZ LK3 ;判键释放否,未释放,则循环,POP A ;键已释放,键号出栈A,RET,NEXT:INC R4 ;列计数器加1,为下一列扫描作准备,MO

21、V A,R2 ;判是否已扫到最后一列(最右一列),JNB Acc.7,KND ;键扫描已扫到最后一列,跳KND, ;重新进行整个键盘扫描,RL A ;键扫描未扫到最后一列,位选码左移 ;一位,MOV R2,A ;位选码R2,AJMP LK4 ;,KND: AJMP KEYI ;,KS1: MOV DPTR ,#7F01H;判有无键闭合子程序,全“0” ;扫描口(PA口),MOV A,00H ;即列线全为低电平,MOVX DPTR,A ;,INC DPTR ;DPTR增2,指向PC口,INC DPTR ;指针增1,指向PC口,MOVX A,DPTR ;从PC口读行线的状态,CPL A ;行线取反

22、,如无键按下,则A为0;,ANL A,0FH ;屏蔽无用的高4位,RET,10.3.2 利用8031的串行口实现键盘/显示器接口,串口未作它用,可用来外扩键盘/显示器。,串口为方式0输出,串口外接移位寄存器74LS164。,接口电路如图10-17。,10.3.3 利用通用键盘/显示器接口芯片8279实现键盘/ 显示器接口,Intel 8279芯片:通用可编程键盘/显示器接口芯片。,对键盘部分提供扫描工作方式,能对64个键键盘阵 列不断扫描,自动消抖,自动识别出闭合的键并得到键 号,能对双键或N键同时按下进行处理。,10.4 MCS-51与液晶显示器(LCD)的接口,LCD(Liquid Cry

23、stal Display):液晶显示器 的缩写,被动式显示器-液晶本身并不发光,而是经液晶经过处理后能改变光线通过方向的特性,而达到白底黑字或黑底白字显示的目的。,液晶显示器具有功耗低、抗干扰能力强等优点, 广泛用在仪器仪表和控制系统中。,10.4.1 LCD显示器的分类,按排列形状分:字段型、点阵字符型和点阵图形。,(1)字段型,广泛用于电子表、数字仪表、计算器中。,(2)点阵字符型,显示字母、数字、符号。它是由57或510点阵 组成,广泛应用在单片机应用系统中。,(3)点阵图形型,笔记本电脑和彩色电视等设备中。,10.4.2 点阵字符型液晶显示模块介绍,点阵字符型LCD显示器,需相应的LC

24、D控制器、驱 动器,来对LCD显示器进行扫描、驱动,以及一定空 间的RAM和ROM来存储写入的命令和显示字符的点阵。,现在已将LCD控制器、驱动器、RAM、ROM和LCD显 示器用PCB连接到一起,称为液晶显示模块LCM(LCd Module)。,用户只向LCM送入相应的命令和数据就可实现所需要 的显示内容,与单片机接口简单,使用灵活方便。产品分为字符和图形两种。,1.基本结构,(1)液晶板,在液晶板上排列着若干57或510点阵的字符显示位,从规格上分为每行8、16、20、24、32、40位,有一行、两行及四行三类,用户可根据需要,来选择购买。,(2)模块电路框图,由控制器HD44780、驱动

25、器HD44100及几个电阻电 容组成。HD44100是扩展显示字符位用的(例如:16字 符1行模块就可不用HD44100,16字符2行模块就要 用一片HD44100)。,模块14个引脚,其中有8条数据线,3条控制线,3 条电源线,见表10-2。通过单片机写入模块的数据和 指令,就可对显示方式和显示内容作出选择。,表10-2 液晶显示模块的引脚,模块14个引脚,其中有8条数据线,3条控制线,3 条电源线,见表10-2。通过单片机写入模块的数据和 指令,就可对显示方式和显示内容作出选择。,表10-3 寄存器的选择,命令格式及命令功能说明,(1) 命令格式,控制器HD44780内有多个寄存器,如表1

26、0-3所示。,RS位和R/W*引脚上的电平来选择寄存器,而DB7DB0则决定命令功能。,命令共11种:清除,返回,输入方式设置,显示 开关控制,移位控制,功能设置,CGRAM(字符生成 RAM)地址设置,DDRAM(显示数据RAM)地址设置, 读忙标志和地址,写数据到CGRAM或DDRAM,从CGRAM 或DDRAM读数据。,这些命令功能强:可组合成各种输入、显示、移位方式以满足不同的要求。,(2)标准字符库,图10-23:字符库的内容、字符码和字型的对应 关系。例如“A”的字符码为41H,“B”的字符码为42H。,液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低

27、电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表3是DM-162的内部显示地址.,比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H),10.4.3 8031与LCD的接口及软件编程,1.8031与LCD模块的接口,接口电路见图10-24。将LCM挂接在8031的总线 上,通过对数据总线的读写实现对LCM的控制。,1.软件编程,初

28、始化,用户所编的显示程序,开始必须进行初始化,否 则模块无法正常显示。,显示程序编写(自己阅读),10.5 MCS-51与微型打印机的接口,内部有一个控制用单片机,固化有控打程序,智 能化程度高。,常用的微型打印机:TPP-40A/16A、GP16以及 XLF嵌入仪器面板上的汉字微型打印机。,10.5.1 MCS-51与TPP-40A/16A微型打印机的接口,1. TPP-40A/16A微型打印机,单片机控制的微型智能打印机。TPP-40A与 TPP-16A的接口信号与时序完全相同,操作方式相 近,硬件电路及插脚完全兼容,只是指令代码不完全 相同。TPP-40A每行打印40个字符,TPP-16

29、A则每 行打印16个字符。,2. 主要性能、接口要求及时序,(1)TPP-40A主要技术性能,单片机控制, 2KB控打程序及标准的Centronics并 行接口。,可打印全部ASCII代码字符及128个非标准字符和图 符。1 6个代码字符(67点阵)由用户定义。,可打印出8240点阵的图样(汉字或图案点阵)。,字符、图符和点阵图可在宽和高的方向放大为2、 3、4倍。,每行字符的点行数(包括字符的行间距)可用命令 更换。即字符行间距空点行在0256间任选。,2接口信号,采用国际上流行的Centronics打印机并行接口, 与单片机间是通过一条20芯扁平电缆及接插件相连。 打印机有一个20线扁平插

30、座,信号引脚排列如图10- 26所示。,引脚介绍:,DB0DB7:数据线,单向传输,由单片机输入给打 印机。,STB*:数据选通信号。在该信号的上升沿时,数据 线上的8位并行数据被打印机读入机内锁存。,BUSY:打印机“忙”状态信号。当该信号有效(高电 平)时,表示打印机正忙。此时,单片机不得向打印机 送入新的数据。,ACK*:打印机的应答信号。低电平有效,表明打印 机已取走数据线上的数据。,ERR*:“出错”信号。当送入打印机的命令格式出错 时,打印机立即打印一行出错信息,提示出错。在打印 出错信息之前,该信号线出现一个负脉冲,脉冲宽度 为30s。,3接口信号时序,接口信号时序如图10-27

31、所示。,选通信号STB*宽度需大于0.5s。应答信号ACK*可 与STB*信号作为一对应答联络信号,也可与BUSY作为一 对应答联络信号。,2. 字符代码及打印命令,写入的全部代码共256个,其中00H无效。,代码:01H0FH为打印命令;,代码:10H1FH为用户自定义代码;,代码:20H7FH为标准ASCII代码;,代码:80HFFH为非ASCII代码,如图10-28所示。其 中包括少量汉字、希腊字母、块图图符和一些 特殊字符。,3. TPP-40A/16A与MCS-51单片机接口设计,TPP-40A/16A内部控制电路由单片机构成,在输 入电路中有锁存器,在输出电路中有三态门控制。因此

32、可直接与单片机相接。,TPP-40A/16A只有握手线STB* 、BUSY(或ACK*), 接口电路如图10-29所示。,图10-30:并行I/O口连接的打印机接口电路。图中 的扩展I/O口为8255A的PA口,采用查询法,即通过读 8255A 的PC0脚的状态来判断送给打印机的一个字节的 数据是否处理完毕。也可用中断法(BUSY直接与单片机 的P3.3脚相连)。,例 把MCS-51单片机内部RAM 3FH4FH单元中的ASCII码 数据送到打印机。8255A设置为方式0,即端口A与端口 C的上半部为输出方式。端口C的下半部为输入方式。,打印程序如下:,PRINT: MOV R0,#7FH ;

33、控制口地址R0,MOV A ,#81H ;8255A控制字A,MOVX R0,A ;控制字控制口,MOV R1,#3FH ;数据区首地址R1,MOV R2,#0FH ;打印数据个数的计数,LOOP: MOV A,R1 ;打印数据单元内容A,INC R1 ;指向下一个数据单元,MOV R0,#7CH ;8255A的端口A地址R0,MOVX R0,A ;打印数据送8255A的口A并 锁存,MOV R0,#7FH ;8255A的控制口地址R0,MOV A,#0EH ;PC7的复位控制字A,MOVX R0,A ;PC7=0,MOV A,#0FH ;PC7的置位控制字A,MOVX R0,A ;PC7由0

34、变1,LOOP1: MOV R0,#7EH ;口C地址R0,MOVX A,R0 ;读入C口的值,ANL A,#01H ;屏蔽C口的高7位,只留PC0位,JNZ LOOP1 ;查询BUSY的状态,如为1跳LOOP1,DJNZ R2,LOOP ;未打完,循环,10.5.2 MCS-51与GP16微型打印机的接口,1. GP16微型打印机的接口信号,控制器为8031单片机。接口信号如下:,各信号的功能如下:,IO0IO7:双向三态数据总线,是CPU与GP16打印机之 间命令、状态和数据信息传输线。,CS*:设备选择线。,RD* 、WR*:读、写信号线。,BUSY:打印机状态输出,高电平表示GP16处

35、于忙状态, 可供CPU查询或作中断请求线。,GP16控制器具有数据锁存器,与单片机接口十分方便。,1打印命令及打印方式,GP16的打印命令占两个字节,其格式如下:,第一个字节 D7-D4 D3-D0,操作码 点行数n,第二个字节 D7- D0,打印行数NN,GP16为微型针打,字符本身占据7个点行。命令字 中的点行数n是选择字符行之间的行距的参数,若n=10,则行距为3个点行数,应大于或等于8。打印行数是执行本条命令时打印(或空走纸)的字符行数。,GP16的命令编码如下表。,D7 D6 D5 D4 命令功能,1 0 0 0 空走纸,1 0 0 1 打印字符串,1 0 1 0 十六进制数据打印,

36、1 0 1 1 图形打印,3. MCS-51单片机和GP16的接口,GP16内部有三态锁存器, 能锁存数据总线上的数 据, ,故GP16可以直接与MCS-51数据总线相连而不须 外加锁存器。图10-32为GP16与8031数据总线口相连 的接口电路。,图中BUSY接(P3.3),直接可用于中断方式。如要以 查询方式工作时,BUSY可以不连接,通过查询状态字来 获取BUSY的状态。,如果使用其它I/O或扩展I/O口,只须将P0口线换成 其他I/O或扩展I/O口即可。,按照图10-32的连接,GP16的打印机地址为7FFFH, 读取GP16状态字时,8031执行下列程序段:,MOV DPTR,7F

37、FFH,MOVX A,DPTR,将命令或数据写入GP16时,8031执行下列程序段:,MOV DPTR,7FFFH,MOV A,DATA/COMMAND,MOVX DPTR,A,10.6 MCS-51单片机与BCD码拨盘的接口设计,10.6.1 BCD码拨盘,需输入一些控制参数,设定完将维持不变。使用的 最方便的拨盘是十进制输入,BCD码输出的BCD码拨盘。 这种拨盘如图10-33,为四片BCD码拨盘,拼接的4位十进制输入拨盘组。每片拨盘具有09十 个位置,每个位置都有相应的数字显示。,BCD码拨盘后面有5个接点,A为输入控制线,另外4 是BCD码输出线。,拨盘拨到不同位置时,输入控制线A分别

38、与4根BCD 码输出线中的某根或某几根接通,其接通的BCD码输出 线状态正好与拨盘指示的十进制数相一致。,表10-10为BCD码拨盘的输入输出状态表。,表10-10 BCD码拨盘的输入输出状态,10.6.2 BCD码拨盘与单片机的接口,1.与单片BCD码拨盘的接口,图10-34是8031通过P1.0P1.3与单片BCD码拨盘的 接口电路。,A端接5V,当拨盘拨至某十进制数时,相应的8,4, 2,1有效端输出高电平(如拨至“6”时,4,2,端为“1”)无效端为低电平。输出的BCD码为正逻辑。,A端接地,8,4,2,1输出端通过电阻上拉至高电平时,拨盘输出的BCD码为负逻辑(反码)。,2. 多片B

39、CD码拨盘与单片机的接口,如按图10-34,N位拨盘需占用4N根I/O口线,为减少 I/O口线,可将拨盘的输出线分别通过4个与非门与 单片机的I/O口相连, 每片拨盘的控制端A不再接 5V或地,而是分别与I/O口线相连,用来控制选择多 片拨盘中的任意一片。,这时,N位十进制拨盘,用N片BCD码拨盘拼成时只需占用 4+N根I/O口线。图10-35通过P1与4片BCD码拨盘相 连的4位BCD码输入电路。,4片拨盘的BCD码输出相同端接入同一个4个与非门。 四个与非门输出8,4,2,1端分别接入P1.3,P1.2,P1.1, P1.0。其余的P1.6,P1.5,P1.4分别与千、百、十、个位BCD码

40、拨盘的控制端相连。当选中某位时,该位的控制端置0,其它三个控制端置1。,例如选中千位时,P1.7置0,P1.4P1.6置1,此时四个 与非门所有其它位连接的输入端均为1状态,因此四 个与非门输出的状态取决于千位数BCD拨盘输出状 态。由于该位的控制端置0,因此,拨盘所置之数输 出为BCD反码,通过与非门输出为该千位数的BCD码,下面以图10-35为例,介绍BCD码拨盘输入子程序。,例如输入为9345,这时,每位BCD码输出端上有相应 的数字与A接通。,本程序将读入的4位BCD码按千、百、十、个依次存 放在片内RAM的30H33H单元,每个单元的高4位为0,低4 位为BCD码。,程序如下:,RDS: MOV R0,30H ;初始化,存放单元首址,MOV R2,7FH ;P1口高4位置控制字及低4位置输入 ;方式,MOV R3,04H ;读入4个BCD码,LOOP: MOV A,R2,MOV P1,A ;P1口送控制字及低4位置输入方式,MOV A,P1 ;读入BCD码,ANL A,0FH ;屏蔽高4位,MOV R0,A ;送入存储单元,INC R0 ;指向下个存储单元,MOV A,R2 ;准备下一片拨盘的控制端置0,RR A ;,MOV R2,A ;,DJNZ R3,LOOP ;未读完返回,RET ;读完结束,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1