您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 接口电路拨码盘数据输入程序
第八章MCS-51与数码显示器和键盘的接口一、MCS-51与数码显示器接口数码显示器是单片机应用产品中最常用的廉价的输出设备,它由8个发光二极管按一定规律排列而成,当某一发光二极管导通时,则会被点亮,控制不同组合的二极管导通,就能显示出各种字符。1.显示器的结构常用的显示器结构如图所示:A.共阳极显示器B.共阴极显示器2.显示器的工作方式:A.静态显示方式所谓静态显示,是指显示器显示一字符时,相应的发光二极管恒定地导通或截止。这种显示方式的每一个数码显示器,需要一个8位输出口控制。所以硬件较多,但字符较亮。a.采用8位锁存器74LS273作为静态显示器接口b.采用移位寄存器74LS164作为静态显示器接口MCS-51串行口工作于方式0输出显示段码:F9H显‘1’更新显示器子程序:DIR:MOVR7,#08HMOVR0,#7FHDL0:MOVA,@R0ADDA,#0BHMOVCA,@A+PCMOVSBUF,A2DL1:JNBT1,DL13CLRT12DECR01DJNZR7,DL02RET1TAB:DBC0H,F9H,A4H,B0H,99HB.动态显示方式所谓动态显示是指一位一位地轮流点亮各位显示器。对于每一位显示器来说,每隔一段时间点亮一次,通常点亮时间为1mS左右,相隔时间为20mS6位共阴显示器和8155的接口逻辑如图所示:其中:8155A口作为段数据口,8155A口扫描输出总是只有一位为高电平。对于6位显示器,在MCS-51RAM中,设置了6个单元的显示缓冲区即79H-7FH,它用来存放显示数据。更新显示器子程序如下:DIR:MOVR0,#79HMOVR3,#01HMOVA,R3LD0:MOVDPTR,#7F01HMOVX@DPTR,AINCDPTRMOVA,@R0ADDA,#0DHMOVCA,@A+PCDIR1:MOVX@DPTR,AACALLDL1INCR0MOVA,R3JBACC.5,LD1RLAMOVR3,ASJMPLD0LDI:RETDSEG:DB3FH,06H,5BH,DL1:MOVR7,#02HDL:MOVR6,#FFHDL6:DJNZR6,DL6DJNZR7,DLRET二、拨码盘接口1.BCD拨码盘的构造BCD拨码盘具有0~9十个位置,每个位置都有相应的指示,一个拨码盘可以输入1个十进制数据。每个BCD拨码盘后面有5位引出线,其中一位为输入控制线(编号为A),另外4位是数据线(编号为8,4,2,1)。拨码被拨到某一个位置时,输入控制线(A)分别与4位数据线中的某几位接通。如果把接通的位定义为1,不通的线定义为0,则拨码盘数据线的状态就是拨盘位置所指示的BCD码。2.接口电路3.拨码盘数据输入程序INBCD:MOVR0,#30HMOVA,P1MOVP1,#7FHXCHDA,@ROMOVA,P1RETSWAPAMOV@R0,AMOVP1,#0BFHMOVA,P1XCHDA,@R0INCR0MOVP1,#0DFHMOVA,P1XCHA,@R0MOVP1,#0EFH三、键盘接口键盘是由若干个按键组成的开关矩阵,它是单片机最简单的输入设备,操作员可以通过键盘输入数据或命令,实现人机通信。1.键盘工作原理一个4X4的键盘结构如图所示:A.按键与否的判别我们使所有行为低自列线读入数据,若列线中有一位为低,则可判为有键按下,否则全为高为无键按下。B.按键的识别由于矩阵网络上每一个键都可以由它所在的行与列来定位。所以,我们可使第一行至第四行逐行为低,通过读入数据来识别是何键按下。例如:当使行2为低,读入列值时,其列2值为低,则可判是键5按下。C.键抖动及消除键按下和释放时存在着机械抖动,其对应的列线电压波形如图示,通常抖动时间为5-10mS。为了保证CPU对键的闭合只作一次处理,必须消除抖动,消除抖动可采用硬件方法即用R-S触发器隔离,但为了节省硬件,目前都用软件方法来实现,即增加一延时程序,在键稳定闭合和断开时才去读取键的状态。2.键盘接口电路3.键输入程序A.键输入程序功能a.判别键盘上有无键闭合使PA0-7输出为“0”,读PC口,若PC0-3为全“1”,则无键闭合,否则为有键闭合。b.消键抖动当判别到有键闭合时,延时10mS后再判别键盘状态,若仍有键闭合,则为有键按下,否则认为是键的抖动。c.确定闭合键的键号设第一列至第四列的列值为00H、08H、10H、18H则键号N=行号+列值d.对键的一次闭合仅作一次处理等待闭合键释放后进行键处理。e.各按键对应的键值如下:B.程序清单:KEY1:ACALLKS1KS1:MOVDPTR,#7F01HJNZLK1MOVA,#00HNI:ACALLDIRMOVX@DPTR,AAJMPKEY1INCDPTRLK1:ACALLDIRINCDPTRACALLDIRMOVA,@DPTRACALLKS1CPLAJNZLK2ANLA,#0FHACALLDIRRETAJMPKEY1LK2:MOVR2,#FEHMOVR4,#00HLK4:MOVDPTR,#7F01HMOVA,R2MOVX@DPTR,AINCDPTRLK3:ACALLDIRINCDPTRACALLKS1MOVXA,@DPTRJNZLK3JBACC.0,LONEPOPACCMOVA,#00HRETAJMPLKPNEXT:INCR4LONE:JBACC.1,LTW0MOVA,R2MOVA,#08HJNBACC.7,KNDAJMPLKPRLALTWO:JBACC.2,LTHRMOVR2,AMOVA,#10HAJMPLK4AJMPLKPKND:AJMPKEY1LTHR:JBACC.3,NEXTMOVA,#18HLKP:ADDA,R4PUSHACCC.键输入程序的改进前面程序主要存在以下问题:a.无键按下,程序将进入死循环b.按键不抬起,程序也将进入死循环,且显示不亮。c.键位置不能灵活放置。键输入程序可作如下更改:ST:MOVDPTR,#7F01HLK0:CLR00HMOVA,#00HLK1:MOVA,#FFHMOVX@DPTR,ARETINCDPTRINCDPTRMOVXA,@DPTRCPLAANLA,#0FHJNZLK2LK2:ACALLDIRACALLDIRMOVR2,#08HMOVR3,#FEHLK3:MOVDPTR,#7F01HMOVA,R3MOVX@DPTR,ARLAMOVR3,AINCDPTRINCDPTRMOVXA,@DPTRCPLAANLA,#0FHJNZLK4DJNZR2,LK3SJMPLK0LK4:SWAPAORLA,R2MOVB,AJB00H,LK1MOVDPTR,#TABMOVR3,#1FHLK5:MOVA,R3MOVCA,@A+DPTRCJNEA,B,LK7LK6:SETB00HMOVA,R3RETLK7:DJNZR3,LK5SJMPLK6TAB:DB88H,48H,47H,…d.各按键对应的键值与键号如下:
本文标题:接口电路拨码盘数据输入程序
链接地址:https://www.777doc.com/doc-3317736 .html