《第7章--MCS-51与键盘、显示器的接口要点优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第7章--MCS-51与键盘、显示器的接口要点优秀PPT.ppt(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第7章章 MCS-51与键盘、显示器的接口与键盘、显示器的接口 7.1 MCS-51单片机与键盘接口单片机与键盘接口7.2 MCS-51单片机与单片机与LED显示器接口显示器接口7.3 MCS-51单片机与行程开关、晶闸单片机与行程开关、晶闸 管、继电器的接口管、继电器的接口单片机单片机7.1 MCS-51单片机与键盘接口单片机与键盘接口7.1.1 键盘的工作原理键盘的工作原理 键盘事实上是一组按键开关的集合,平常按键开关总是处键盘事实上是一组按键开关的集合,平常按键开关总是处于断开状态,当按下键时它才闭合。它的结构和产生的波形如于断开状态,当按下键时它才闭合。它的结构和产生的波形如图所示。
2、图所示。P1.1VCCGND(a)KP1.1(b)抖动时间抖动时间10ms开关动作时间开关动作时间100ms“断开断开”“闭合闭合”10ms“断开断开”键盘的处理主要涉及三个方面:键盘的处理主要涉及三个方面:1按键的识别按键的识别2抖动的消退抖动的消退消退按键盘抖动通常有两种方法:硬件消抖和软件消抖。消退按键盘抖动通常有两种方法:硬件消抖和软件消抖。硬件消抖是通过在按键输出电路上加确定的硬件线路来消硬件消抖是通过在按键输出电路上加确定的硬件线路来消退抖动,一般接受退抖动,一般接受R-S触发器或单稳态电路。触发器或单稳态电路。软件消抖是利用延时来跳过抖动过程。软件消抖是利用延时来跳过抖动过程。I
3、/O接接口口+5v+5v消除抖动电路消除抖动电路开关开关单单片片机机3键位的编码键位的编码通常有两种方法编码。通常有两种方法编码。(1)用连接键盘的)用连接键盘的I/O线的二进制组合进行编码。如(线的二进制组合进行编码。如(a)图。)图。(2)依次排列编码。如()依次排列编码。如(b)图。)图。处理方法如下:编码值处理方法如下:编码值=行首编码值行首编码值X+列号列号Y。P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0F E D CB A 9 87 6 5 43 2 1 0(b)第第0列列第第1列列第第0行行第第1行行P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1
4、.088 84 82 8148 44 42 4128 24 22 2118 14 12 11(a)+5V逐列输出逐列输出0以检查行线以检查行线7.1.2 独立式键盘与单片机的接口独立式键盘与单片机的接口键盘的结构形式一般有两种:键盘的结构形式一般有两种:独立式键盘与矩阵式键盘独立式键盘与矩阵式键盘。独立式键盘就是各按键相互独立,每个按键各接一根独立式键盘就是各按键相互独立,每个按键各接一根I/O口线,口线,每根每根I/O口线上的按键都不会影响其它的口线上的按键都不会影响其它的I/O口线。口线。GNDVCCGNDVCC与与(b)查询方式工作的查询方式工作的独立式键盘的结构形式独立式键盘的结构形式
5、8051(a)中断方式工作的中断方式工作的独立式键盘的结构形式独立式键盘的结构形式INT08051P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7 下面是针对图下面是针对图7.4(b)图查询方式的汇编语言形式的键盘程序。)图查询方式的汇编语言形式的键盘程序。总共有总共有8个键位,个键位,KEY0KEY7为为8个键的功能程序。个键的功能程序。START:MOV A,#0FFH;MOV P1,A ;置;置P1口为输入状态口为输入状态 MOV A,P1 ;键状态输入;键状态输入 CPL A JZ START ;没有键按下
6、,则转起先;没有键按下,则转起先 JB ACC.0,K0 ;检测;检测0号键是否按下,按下转号键是否按下,按下转 JB ACC.1,K1 ;检测;检测1号键是否按下,按下转号键是否按下,按下转 JB ACC.2,K2 ;检测;检测2号键是否按下,按下转号键是否按下,按下转 JB ACC.3,K3 ;检测;检测3号键是否按下,按下转号键是否按下,按下转 JB ACC.4,K4 ;检测;检测4号键是否按下,按下转号键是否按下,按下转 JB ACC.5,K5 ;检测;检测5号键是否按下,按下转号键是否按下,按下转 JB ACC.6,K6 ;检测;检测6号键是否按下,按下转号键是否按下,按下转 JB
7、ACC.7,K7 ;检测;检测7号键是否按下,按下转号键是否按下,按下转 JMP START ;无键按下返回,再顺次检测;无键按下返回,再顺次检测K0:AJMP KEY0K1:AJMP KEY1 K7:AJIMP KEY7KEY0:;0号键功能程序号键功能程序 JMP START ;0号键功能程序执行完返回号键功能程序执行完返回KEY1:;1号键功能程序号键功能程序 JMP START ;1号键功能程序执行完返回号键功能程序执行完返回 KEY7:;7号键功能程序号键功能程序 JMP START ;7号键功能程序执行完返回号键功能程序执行完返回 矩阵键盘的连接方法有多种:矩阵键盘的连接方法有多种
8、:可干脆连接于单片机的可干脆连接于单片机的I/O口线;口线;可利用扩展的并行可利用扩展的并行I/O口(口(8255、8155等)连接;等)连接;也可利用可编程的键盘、显示专用接口芯片也可利用可编程的键盘、显示专用接口芯片 (8279等)进行连接等等。等)进行连接等等。其中,利用扩展的并行其中,利用扩展的并行I/O口连接便利敏捷,在单片口连接便利敏捷,在单片机应用系统中比较常用。机应用系统中比较常用。7.1.3 矩阵键盘与单片机的接口矩阵键盘与单片机的接口 矩阵式键盘又叫矩阵式键盘又叫行列式键盘行列式键盘。用。用I/O口线组成行、列口线组成行、列结构,键位设置在行列的交点上。例如结构,键位设置在
9、行列的交点上。例如44的行、列结构的行、列结构可组成可组成16个键的键盘,比一个键位用一根个键的键盘,比一个键位用一根I/O口线的独立口线的独立式键盘少了一半的式键盘少了一半的I/O口线。口线。下图就是通过下图就是通过8255A芯片扩展的并行芯片扩展的并行I/O口连接口连接4 8的矩阵键盘。的矩阵键盘。P2.7=0:A口地址为:口地址为:7F00H;C口地址为:口地址为:7F02H。扫描法:列线输出,行线输入。扫描法:列线输出,行线输入。列线逐列输出列线逐列输出0 0,某行有按键,行线输入就为,某行有按键,行线输入就为0 0;若无按键,行线输入全部为若无按键,行线输入全部为1 1。PA7PA6
10、PA5PA4PA3PA2PA1PA0PC0PC1PC2PC30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 CS74LS373WRRDA1A0P2.7WRRDALEP0.0P0.7D0D7RESET1K 20 F+5V+5V82555.1K48051编码值编码值=行首编码值行首编码值X+列号列号Y键码键码键码键码=行首键号行首键号行首键号行首键号+列号列号列号列号(键号必须依次是从左至右书写)(键号必须依次是从左至右书写)(键号必须依次是从左至右书写)(键号必须依次是从左
11、至右书写)或键码或键码或键码或键码=列首键号列首键号列首键号列首键号+行号行号行号行号(键号必须依次是从上至下书写)(键号必须依次是从上至下书写)(键号必须依次是从上至下书写)(键号必须依次是从上至下书写)一矩阵键盘的工作过程一矩阵键盘的工作过程对矩阵键盘的工作过程可分两步:对矩阵键盘的工作过程可分两步:第一步是第一步是CPU首先检测键盘上是否有键按下;首先检测键盘上是否有键按下;其次步是再识别是哪一个键按下。其次步是再识别是哪一个键按下。1检测键盘上是否有键按下处理方法是:将列线送入全扫描字,检测键盘上是否有键按下处理方法是:将列线送入全扫描字,读入行线的状态来判别。其具体过程如下:读入行线
12、的状态来判别。其具体过程如下:PA口输出口输出00H,即全部,即全部列线置成低电平,然后将行线电平状态读入累加器列线置成低电平,然后将行线电平状态读入累加器A中。假如有键按中。假如有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为1。2识别键盘中哪一个键按下处理方法是:将列线逐列置低电平,识别键盘中哪一个键按下处理方法是:将列线逐列置低电平,检查行输入状态,称为逐列扫描。其具体过程如下:从检查行输入状态,称为逐列扫描。其具体过程如下:从PA0起先,依起先,依次输出次输出“0”,置对应的列线为低电平,然后从,置对应的列线为低
13、电平,然后从PC口读入行线状态,口读入行线状态,假如全为假如全为“1”,则按下的键不在此列;假如不全为,则按下的键不在此列;假如不全为“1”,则按下,则按下的键必在此列,而且是该列与的键必在此列,而且是该列与“0”电平行线相交的交点上的那个键。电平行线相交的交点上的那个键。为求取编码,在逐列扫描时,可用计数器记录下当前扫描列的列号,为求取编码,在逐列扫描时,可用计数器记录下当前扫描列的列号,检测到第几行有键按下,就用该行的首键码加列号得到当前按键的检测到第几行有键按下,就用该行的首键码加列号得到当前按键的编码。编码。1查询工作方式查询工作方式 这种方式是干脆在主程序中插入键盘检测子程序,主程序
14、每执这种方式是干脆在主程序中插入键盘检测子程序,主程序每执行一次则键盘检测子程序被执行一次,对键盘进行检测一次,假如行一次则键盘检测子程序被执行一次,对键盘进行检测一次,假如没有键按下,则跳过键识别,干脆执行主程序;假如有键按下,则没有键按下,则跳过键识别,干脆执行主程序;假如有键按下,则通过键盘扫描子程序识别按键,得到按键的编码值,然后依据编码通过键盘扫描子程序识别按键,得到按键的编码值,然后依据编码值进行相应的处理,处理完后再回到主程序执行。键盘扫描子程序值进行相应的处理,处理完后再回到主程序执行。键盘扫描子程序流程如图流程如图。二矩阵键盘的工作方式二矩阵键盘的工作方式开始开始有键按下否?
15、有键按下否?调用调用6ms延时子程序延时子程序调用调用12ms延时子程序延时子程序有键按下否?有键按下否?判闭合键,编码入栈保护判闭合键,编码入栈保护闭合键释放否?闭合键释放否?编码编码A返回返回否否否否否否是是是是是是2定时扫描工作方式定时扫描工作方式3中断处理方式中断处理方式 键盘扫描子程序如下:(硬件线路如图键盘扫描子程序如下:(硬件线路如图7.4,8255A的的A口、口、B口、口、C口和限制口地址分别为口和限制口地址分别为7F00H、7F01H、7F02H、7F03H,设,设8255A已在主程序中初始化。已设定为已在主程序中初始化。已设定为A口方式口方式0输出,输出,C口的低口的低4位
16、位方式方式0输入。)输入。)KEY1:ACALL KS1 ;调用推断有无键按下子程序;调用推断有无键按下子程序 JNZ LK1 ;有键按下时,;有键按下时,(A)0转消抖延时转消抖延时KEY2:ACALL TM6ms AJMP KEY1 ;无键按下返回;无键按下返回LK1:ACALL TM12ms ;调;调12 ms延时子程序延时子程序 ACALL KS1 ;查有无键按下,若有则真有键按下;查有无键按下,若有则真有键按下 JNZ LK2 ;键;键(A)0逐列扫描逐列扫描 AJMP KEY2 ;不是真有键按下,返回;不是真有键按下,返回LK2:MOV R2,#0FEH ;初始列扫描字;初始列扫描
17、字(0列列)送入送入R2 MOV R4,#00H ;初始列;初始列(0列列)号送入号送入R4LK4:MOV DPTR,#7F00H;DPTR指向指向8255PA口口 MOV A,R2 ;列扫描字送至;列扫描字送至8255PA口口 MOVX DPTR,A INC DPTR ;DPTR指向指向8255PC口口 INC DPTR MOVX A,DPTR ;从;从8255 PC口读入行状态口读入行状态JB ACC.0,LONE ;查第;查第0行无键按下,转查第行无键按下,转查第1行行MOV A,#00H ;第;第0行有键按下,行首键码行有键按下,行首键码#00HAAJMP LKP ;转求键码;转求键码
18、LONE:JB ACC.1,LTWO ;查第;查第1行无键按下,转查第行无键按下,转查第2行行MOV A,#08H ;第;第1行有键按下,行首键码行有键按下,行首键码#08HAAJMP LKP ;转求键码;转求键码LTWO:JB ACC.2,LTHR ;查第;查第2行无键按下,转查第行无键按下,转查第3行行MOV A,#10H ;第;第2行有键按下,行首键码行有键按下,行首键码#10HAAJMP LKP ;转求键码;转求键码LTHR:JB ACC.3,NEXT ;查第;查第3行无键按下,转该查下一列行无键按下,转该查下一列 MOV A,#18H ;第;第3行有键按下,行首键码行有键按下,行首键
19、码#18HALKP:ADD A,R4 ;求键码,键码;求键码,键码=行首键码行首键码+列号列号PUSH ACC ;键码进栈爱护;键码进栈爱护LK3:ACALL KS1 ;等待键释放;等待键释放JNZ LK3 ;键未释放,等待;键未释放,等待POP ACC ;键释放,键码;键释放,键码ARET ;键扫描结束,出口状态;键扫描结束,出口状态(A)=键码键码NEXT:INC R4 ;准备扫描下一列,列号加;准备扫描下一列,列号加1MOV A,R2 ;取列扫描字送累加器;取列扫描字送累加器AJNB ACC.7,KEND ;推断;推断8列扫描否?扫描完返回列扫描否?扫描完返回RL A ;扫描字左移一位,
20、变为下一列扫描字;扫描字左移一位,变为下一列扫描字MOV R2,A ;扫描字送入;扫描字送入R2保存保存AJMP LK4 ;转下一列扫描;转下一列扫描KEND:AJMP KEY1 KS1:MOV DPTR,#7F00H;DPTR指向指向8255的的PA口口MOV A,#00H ;全扫描字;全扫描字AMOVX DPTR,A ;全扫描字送往;全扫描字送往8255的的PA口口INC DPTR ;DPTR指向指向8255的的PC口口INC DPTR MOVX A,DPTR;读入;读入PC口行状态口行状态CPL A ;变正逻辑,以高电平表示有键按下;变正逻辑,以高电平表示有键按下ANL A,#0FH ;
21、屏蔽高;屏蔽高4位,只保留低位,只保留低4位行线值位行线值RET ;出口状态:;出口状态:(A)0时有键按下时有键按下执行执行KS1子程序的结果是:有闭合键则(子程序的结果是:有闭合键则(A)0;无闭合键则(无闭合键则(A)0。CPL A;负逻辑不直观,常实行行列线加反相器或;负逻辑不直观,常实行行列线加反相器或 软件求反的方法把键盘改成正逻辑。软件求反的方法把键盘改成正逻辑。TM12ms:MOV R7,#18H ;延时;延时12ms子程序子程序TM:MOV R6,#0FFHTM6:DJNZ R6,TM6 DJNZ R7,TM RETTM6ms:MOV R7,#0CH ;延时;延时6ms子程序
22、子程序TM2:MOV R6,#0FFHTM62:DJNZ R6,TM6 DJNZ R7,TM RETC语言键盘扫描子程序:语言键盘扫描子程序:#include#include /定义确定地址访问定义确定地址访问#define uchar unsigned char#define uint unsigned intvoid delay(uint);uchar scankey(void);uchar keyscan(void);void main(void)uchar key;while(1)key=keyscan();delay(2000);/*延时函数延时函数*void delay(uint
23、i)/延时函数延时函数 uint j;for (j=0;ji;j+)/*检测有无键按下函数检测有无键按下函数*uchar checkkey()/检测有无键按下函数检测有无键按下函数,有返回有返回0 xff,无返回无返回0uchar i;XBYTE0 x7f00=0 x00;i=XBYTE0 x7f02;i=i&0 x0f;if (i=0 x0f)return(0);else return(0 xff);/*键盘扫描函数键盘扫描函数*uchar keyscan()/键盘扫描函数键盘扫描函数,假如有键按下假如有键按下,则返回该键的编码则返回该键的编码,假如无键按下假如无键按下,则返回则返回0 xf
24、f uchar scancode;/定义列扫描码变量定义列扫描码变量 uchar codevalue;/定义返回的编码变量定义返回的编码变量 uchar m;/定义行首编码变量定义行首编码变量 uchar k;/定义行检测码定义行检测码 uchar i,j;if (checkkey()=0)return(0 xff);/检测有无键按下检测有无键按下,无返回无返回0 xff else delay(200);/延时延时 if(checkkey()=0)return(0 xff);/检测有无键按下检测有无键按下,无返回无返回0 xff else scancode=0 xfe;m=0 x00;/列扫描
25、码列扫描码,行首码赋初值行首码赋初值 for (i=0;i8;i+)k=0 x01;XBYTE0 x7f00=scancode;/送列扫描码送列扫描码 for (j=0;j4;j+)if (XBYTE0 x7f02&k)=0)/检测当前行是否有键按下检测当前行是否有键按下 codevalue=m+j;/按下按下,求编码求编码 while(checkkey()!=0);/等待键位释放等待键位释放 return(codevalue);/返回编码返回编码 m=m+8;/计算下一行的行首编码计算下一行的行首编码 else k=k1;/行检测码左移一位行检测码左移一位 scancode=scancode
26、1;/列扫描码左移一位列扫描码左移一位,扫描下一扫描下一列列 7.2 MCS-51单片机与单片机与LED显示器接口显示器接口7.2.1 LED显示器的结构与原理显示器的结构与原理 在单片机应用系统中通常运用的是在单片机应用系统中通常运用的是8段式段式LED数码管显示器,数码管显示器,它有共阴极和共阳极两种,如图所示。它有共阴极和共阳极两种,如图所示。abcdefgdpcomabcdefgdpcomabcdefgdp10 9 8 7 61 2 3 4 5 g f com a be d com c dp(a)共阴极结构共阴极结构(c)管脚图管脚图(b)共阳极结构共阳极结构代码位代码位D7D6D5D
27、4D3D2D1D0显示段显示段hgfedcbaLED(Light Emiting Diode)其中:(其中:(a)为共阴极结构。()为共阴极结构。(b)为共阳极结构。()为共阳极结构。(c)图为)图为管脚图,从管脚图,从ag管脚输入不同的管脚输入不同的8位二进制编码,可显示不同的数位二进制编码,可显示不同的数字或字符。共阴极和共阳极的字段码互为反码字或字符。共阴极和共阳极的字段码互为反码。显显示字符示字符共阴极字段共阴极字段码码共阳极字段共阳极字段码码显显示字符示字符共阴极字段共阴极字段码码共阳极字段共阳极字段码码03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H8
28、6H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8HY6EH91H87FH80HL38HC7H96FH90H8FFH00HA77H88H“灭灭”00FFHB7CH83H7.2.2 LED数码管显示器的译码方式数码管显示器的译码方式一硬件译码方式一硬件译码方式译码方式是指由显示字符转换得到对应的字段码的方式译码方式是指由显示字符转换得到对应的字段码的方式。硬件译码方式是指利用特地的硬件电路来实现显示字符到字段码硬件译码方式是指利用特地的硬件电路来实现显示字符到字段码的转换,这样的硬件电路有很多,比如的转换,这样的硬件电
29、路有很多,比如MOTORLA公司生产的公司生产的MC14495芯片就是其中的一种,芯片就是其中的一种,MC14495是共阴极一位十六进制数是共阴极一位十六进制数字段码转换芯片,能够输出用四位二进制表示形式的一位十六字段码转换芯片,能够输出用四位二进制表示形式的一位十六进制数的七位字段码,不带小数点。它的内部结构如图。进制数的七位字段码,不带小数点。它的内部结构如图。4锁锁存存器器地址地址译码译码和字和字段码段码ROM阵列阵列ABCDLE569107Vss VDD8 16abcdefgh+iVCR11121314151234二软件译码方式二软件译码方式 软件译码方式就是通过编写软件译码程序,通过
30、译码程序来得到软件译码方式就是通过编写软件译码程序,通过译码程序来得到要显示的字符的字段码。要显示的字符的字段码。7.2.3 LED数码管数码管的显示方式的显示方式 显示多位数据的显示多位数据的 两种电路:两种电路:静态显示;静态显示;动态显示。动态显示。对应字位线:对应字位线:D0 D1 D2 D3 D4 D5 a b hCOM a b hCOM a b hCOMa f b g e c d h 段控和位控段控和位控静静态态显显示示动动态态显显示示一、一、LED静态显示静态显示 LED静态显示时,其公共端干脆接地(共阴极)静态显示时,其公共端干脆接地(共阴极)或接电源(共阳极),各段选线分别与
31、或接电源(共阳极),各段选线分别与I/O口线相连。口线相连。要显示字符,干脆在要显示字符,干脆在I/O线送相应的字段码。线送相应的字段码。a b c d e f g dpI/O(1)a b c d e f g dpI/O(2)特点:显示亮度大,硬件和软件都较简洁,应用广泛。特点:显示亮度大,硬件和软件都较简洁,应用广泛。特点:显示亮度大,硬件和软件都较简洁,应用广泛。特点:显示亮度大,硬件和软件都较简洁,应用广泛。显示缓冲区与显示缓冲区与多位多位LED对应关系:对应关系:每个每个LED须要须要一个一个8位并行口。位并行口。例:例:显示显示80C51片内片内RAM中以中以30H为首地址的为首地址
32、的8位位字形数的程序:字形数的程序:静态显示电路静态显示电路“0”DIRDIR:PUSHPUSHACCACC;爱护现场;爱护现场 PUSH PUSHDPHDPH PUSH PUSHDPLDPL MOV MOVR2R2,#08H#08H;显示;显示8 8个数个数 MOV MOVR0R0,#30H#30H;显示缓冲区地址送入;显示缓冲区地址送入R0R0DL0:MOVDL0:MOVA A,R0R0;取要显示的数作查表偏移量;取要显示的数作查表偏移量 MOV MOVDPTRDPTR,#TAB#TAB;指向字形码表首;指向字形码表首 MOVC MOVCA A,A+DPTRA+DPTR;查表得字形码;查表
33、得字形码 MOV MOVSBUFSBUF,A A;发送显示;发送显示DL1:JNBDL1:JNBTITI,DL1DL1;等待发送完一桢数据;等待发送完一桢数据 CLR CLRTITI;清标记,准备接着发送;清标记,准备接着发送 INC INCR0R0;更新显示单元;更新显示单元 DJNZ DJNZR2R2,DL0DL0;重复显示全部数码管;重复显示全部数码管 POP POPDPLDPL;复原现场;复原现场 POP POPDPHDPH POP POPACCACC RET RETTAB:DBTAB:DB 0C0H0C0H,0F9H0F9H,0A4H0A4H,0B0H0B0H,99H 99H ;0
34、0,1 1,2 2,3 3,4 4 DB DB 92H92H,82H82H,0F8H0F8H,80H80H,90H90H,88H 88H ;5 5,6 6,7 7,8 8,9 9,A A DB DB 83H83H,0C6H0C6H,0A1H0A1H,86H86H,8EH 8EH ;B B,C C,D D,E E,F F程序:程序:二、二、LED动态显示方式动态显示方式 LED动态显示是将全部的数码管的段选线并接在一动态显示是将全部的数码管的段选线并接在一起,用一个起,用一个I/O口限制,公共端不是干脆接地(共阴极)口限制,公共端不是干脆接地(共阴极)或电源(共阳极),而是通过相应的或电源(共阳
35、极),而是通过相应的I/O口线限制。口线限制。D3D2D1D0I/O(1)I/O(2)分时轮番选通数码分时轮番选通数码管的公共端,使得各数管的公共端,使得各数码管轮番导通,在选通码管轮番导通,在选通相应相应LED后,即在显示后,即在显示字段上得到显示字形码。字段上得到显示字形码。特点:提高数码管的发光效率,可简化硬件线路。特点:提高数码管的发光效率,可简化硬件线路。多位多位LEDLED共用一共用一个个8 8位字段口(共位字段口(共阴极或共阳极),阴极或共阳极),各位各位LEDLED公共端用公共端用字位口限制,扫描字位口限制,扫描输出显示不同字形。输出显示不同字形。设数码管为共阳极,它的工作过程
36、为:第一步使右边设数码管为共阳极,它的工作过程为:第一步使右边第一个数码管的公共端第一个数码管的公共端D0为为1,其余的数码管的公共端为,其余的数码管的公共端为0,同时在,同时在I/O(1)上送右边第一个数码管的字段码,这时,)上送右边第一个数码管的字段码,这时,只有右边第一个数码管显示,其余不显示;其次步使右边只有右边第一个数码管显示,其余不显示;其次步使右边其次个数码管的公共端其次个数码管的公共端D1为为1,其余的数码管的公共端为,其余的数码管的公共端为0,同时在,同时在I/O(1)上送右边其次个数码管的字段码,这时,)上送右边其次个数码管的字段码,这时,只有右边其次个数码管显示,其余不显
37、示,依此类推,直只有右边其次个数码管显示,其余不显示,依此类推,直到最终一个,这样四个数码管轮番显示相应的信息,一个到最终一个,这样四个数码管轮番显示相应的信息,一个循环完后,下一循环又这样轮番显示,从计算机的角度看循环完后,下一循环又这样轮番显示,从计算机的角度看是一个一个的显示,但由于人的视觉滞留,只要循环的周是一个一个的显示,但由于人的视觉滞留,只要循环的周期足够快,看起来全部的数码管都是一起显示的了。这就期足够快,看起来全部的数码管都是一起显示的了。这就是动态显示的原理。而这个循环周期对于计算机来说很简是动态显示的原理。而这个循环周期对于计算机来说很简洁实现。所以在单片机中常常用到动态
38、显示。洁实现。所以在单片机中常常用到动态显示。三、三、LCD显示显示LCD(Liquid Crystal Display):它是一种被动式的显示器,即液晶本身它是一种被动式的显示器,即液晶本身并不发光,而是利用液晶经过处理后能变更并不发光,而是利用液晶经过处理后能变更光线通过方向的特性,而达到白底黑字或黑光线通过方向的特性,而达到白底黑字或黑底白字显示的目的。底白字显示的目的。LCD只能工作在静态显示方式。只能工作在静态显示方式。并要求加上特地的驱动芯片并要求加上特地的驱动芯片4056。原理与原理与LED类似!类似!串行口限制的静态串行口限制的静态LCD显示(显示(2位)位)输出输出2位显示,
39、即位显示,即1字节。字节。程序:程序:#include#define uchar unsigned charuchar byte=0 x59;void display(uchar x)SBUF=x;/*由串行口输出由串行口输出*/while(TI=0);/*等待等待8位发送结束位发送结束*/TI=0;void main(void)display(byte);因因4056是是BCD的的LCD驱动芯片,故驱动芯片,故byte中包含的中包含的BCD码可干脆输出显示。码可干脆输出显示。一硬件译码静态显示一硬件译码静态显示下图是一个两位数码管硬件译码静态显示的接口电路图。下图是一个两位数码管硬件译码静态
40、显示的接口电路图。a b c d e f gMC14495a b c d e f ga b c d e f gA B C DLEMC14495a b c d e f gA B C DLEP1.0P1.1P1.2P1.3P1.4P1.580517.2.4 LED显示器与单片机的接口显示器与单片机的接口 LED显示器从译码方式上有硬件译码方式和软件译码方式。从显显示器从译码方式上有硬件译码方式和软件译码方式。从显示方式上有静态显示方式和动态显示方式。在运用时可以把它们组合示方式上有静态显示方式和动态显示方式。在运用时可以把它们组合起来。在实际应用时,假如数码管个数较少,通常用硬件译码静态显起来。在
41、实际应用时,假如数码管个数较少,通常用硬件译码静态显示,在数码管个数较多时,则通常用软件译码动态显示。示,在数码管个数较多时,则通常用软件译码动态显示。二软件译码动态显示二软件译码动态显示 下图是一个下图是一个8位软件译码动态显示的接口电路图。位软件译码动态显示的接口电路图。图中用图中用8255A扩展并行扩展并行I/O口接数码管,数码管为共口接数码管,数码管为共阴极,接受动态显示方式,阴极,接受动态显示方式,8位数码管的段选线并联位数码管的段选线并联与与8255A的的A口通过口通过74LS373相连,相连,8位数码管的公位数码管的公共端通过共端通过74LS373分别与分别与8255A的的B口相
42、连。也即口相连。也即8255A的的B口输出位选码选择要显示的数码管,口输出位选码选择要显示的数码管,8255A的的A口输出字段码使数码管显示相应的字符,口输出字段码使数码管显示相应的字符,8255A的的A口和口和B口都工作于方式口都工作于方式0输出。输出。A口、口、B口、口、C口和限制口的地址分别为口和限制口的地址分别为7F00H、7F01H、7F02H和和7F03H。D0D1D2D7Q0Q1Q2Q3Q4Q5Q6Q7D0D1D2D3D4D5D6D7G OEVCC74LS373Q0Q1Q2Q3Q4Q5Q6Q7D0D1D2D3D4D5D6D7G OEVCC74LS373PA0PA1PA2PA3PA
43、4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7CSWRRD74LS373P2.7WRRDALEP0.0P0.78051D0D7A1A0GA1A08255地址:地址:A口:口:7F00H B口:口:7F01H C口:口:7F02H控制口:控制口:7F03H 共阴极共阴极 软件译码动态显示汇编语言程序为:软件译码动态显示汇编语言程序为:(设(设8个数码管的显示缓冲区为片内个数码管的显示缓冲区为片内RAM的的57H50H单元)单元)DISPLAY:MOV A,#10000000B ;8255初始化初始化 MOV DPTR,#7F03H ;使;使DPTR指向指向8255限制寄存器
44、端口限制寄存器端口 MOVX DPTR,A MOV R0,#57H ;动态显示初始化,使;动态显示初始化,使R0指向缓冲区首址指向缓冲区首址 MOV R3,#7FH ;首位位选字送;首位位选字送R3 MOV A,R3 LD0:MOV DPTR,#7F01H ;使;使DPTR指向指向PB口口 MOVX DPTR,A ;选通显示器高位;选通显示器高位(最右端一位最右端一位)DEC DPTR ;使;使DPTR指向指向PA口口 MOV A,R0 ;读要显示数;读要显示数 ADD A,#0DH ;调整距段选码表首的偏移量;调整距段选码表首的偏移量 MOVC A,A+PC ;查表取得段选码;查表取得段选码
45、 MOVX DPTR,A ;段选码从;段选码从PA口输出口输出 ACALL DL1 ;调用;调用1ms延时子程序延时子程序 DEC R0 ;指向缓冲区下一单元;指向缓冲区下一单元 MOV A,R3 ;位选码送累加器;位选码送累加器AJNB ACC.0,LD1 ;推断;推断8位是否显示完毕,显示完返回位是否显示完毕,显示完返回RR A;未显示完,把位选字变为下一位选字;未显示完,把位选字变为下一位选字MOV R3,A ;修改后的位选字送;修改后的位选字送R3AJMP LD0 ;循环实现按位序依次显示;循环实现按位序依次显示LD1:RETTAB:DB 3FH,06H,5BH,4FH,66H,6DH
46、,7DH,07H ;共阴极字段码表;共阴极字段码表DB:7FH,6FH,77H,7CH,39H,5EH,79H,71HDL1:MOV R7,#02H ;延时子程序;延时子程序DL:MOV R6,#0FFHDL0:DJNZ R6,DL0 DJNZ R7,DL RET软件译码动态显示软件译码动态显示C语言程序为:语言程序为:#include#include /定义确定地址访问定义确定地址访问#define uchar unsigned char#define uint unsigned intvoid delay(uint);/声明延时函数声明延时函数void display(void);/声明显
47、示函数声明显示函数uchar disbuffer8=0,1,2,3,4,5,6,7;/定义显示缓冲区定义显示缓冲区void main(void)XBYTE0 x7f03=0 x80;/8255A初始化初始化while(1)display();/设显示函数设显示函数/*延时函数延时函数*void delay(uint i)/延时函数延时函数uint j;for (j=0;ji;j+)/*显示函数显示函数*void display(void)/定义显示函数定义显示函数uchar codevalue16=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,
48、0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;/0F的共阴极字段码表的共阴极字段码表uchar chocode8=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;/位选码表位选码表uchar i,p,temp;for (i=0;i8;i+)p=disbufferi;/取当前显示的字符取当前显示的字符temp=codevaluep;/查得显示字符的字段码查得显示字符的字段码XBYTE0 x7f00=temp;/送出字段码(送出字段码(PA口)口)temp=chocodei;/取当前的位选码取当前的位
49、选码XBYTE0 x7f01=temp;/送出位选码(送出位选码(PB口)口)delay(20);/延时延时1ms7.3 MCS-51单片机与行程开关、晶闸管、继电器的接口单片机与行程开关、晶闸管、继电器的接口7.3.1 行程开关、继电器与行程开关、继电器与MCS-51单片机的接口单片机的接口行程开关和继电器常开触点与单片机的接口如图所示。行程开关和继电器常开触点与单片机的接口如图所示。E1E2S10K 10K 10K 10 F光电耦合器件光电耦合器件单片机的单片机的I/O引脚引脚开关开关7.3.2 晶闸管与晶闸管与MCS-51单片机的接口单片机的接口8051P1.0P1.1过零过零电路电路大功率大功率晶闸管晶闸管及负载及负载5V5V7407740791 180 12126546410K 100 01 F220V4N40MOC3041RsCs7.3.3 继电器与继电器与MCS-51单片机的接口单片机的接口8051P1.17406VD1R+5VVCCVD2S1V18051P1.1R+5VS174064N25R1R2V1VD1VCC7.3.4 蜂鸣器与蜂鸣器与MCS-51单片机的接口单片机的接口8051P1.07406+5VPB2130UP002A8051P1.0+5VPB2130UP002AR1R2V1