10 C51单片机(第十章MCS 51与键盘、显示器、打印机的接口设计)ppt课件.ppt
《10 C51单片机(第十章MCS 51与键盘、显示器、打印机的接口设计)ppt课件.ppt》由会员分享,可在线阅读,更多相关《10 C51单片机(第十章MCS 51与键盘、显示器、打印机的接口设计)ppt课件.ppt(92页珍藏版)》请在三一办公上搜索。
1、C51单片机技术-入门与提高,键盘、显示器的接口设计,第十章,新疆师范大学物理与电子工程学院刘楚湘主讲,10.1 键盘接口原理,1键盘输入的特点,2.按键的确认,键的闭合与否,反映在行线输出电压上就是呈现高电平或低电平,如果高电平表示键断开低电平则声示键闭合,通过对行线电平高低状态的检测,便可确认按键按下与否。为了确保CPU对一次按键动作只确认一次按键有效,必须消除抖动期t1和t3的影响。下面将介绍消除抖动的措施。3如何消除按键的抖动 常采用软件来消除按键抖动。采用软件来消除按键抖动的基本思想是:在第一次检测到有键按下时,该键所对应的行线为低电平,执行一段延时10 ms的子程序后,确认该行线电
2、平是否仍为低电平,如果仍为低电平,则确认为该行确实有键按下。当按键松开时,行线的低电平变为高电平,执行一段延时10 ms的子程序后,检测该行线为高电平,说明按键确实已经松开。采取以上措施,躲开了两个抖动期t1和t3,从而消除了按键抖动的影响。,10.2.1 键盘接口的工作原理,1独立式键盘接口,图10-9程序如下:,KEYIN:MOV DPTR,BFFFH;键盘地址BFFFH MOVX A,DPTR;读键盘状态 ANL A,01FH;屏蔽高 3位 0001 1111 MOV R3,A;保存键盘状态值 LCALL DELAY10;调用延时10ms子程序,软件去键盘抖动 MOVX A,DPTR;再
3、读键盘状态 ANL A,01FH;屏蔽高3位 CJNE A,R3,RETURN;2次结果不一样,说明是抖动引起的,转RETURN,地址译码关系图,键盘地址BFFFH,CJNE A,1EH,KEY2;2次结果一样,有键按下。再判是否S1键按下?S1键未按下,转KEY2 0001 1110 LJMP PKEY1;是S1键按下,转S1键处理 子程序PKEY1 KEY2:CJNE A,1DH,KEY3;S2键未按下,转 KEY3 0001 1101 LJMP PKEY2;S2键按下,转PKEY2处理KEY3:CJNE A,1BH,KEY4;S3未按下,转 KEY4 0001 1011 LJMP PKE
4、Y3;S3按下,转PKEY3处理,KEY4:CJNE A,17H,KEY5;S4键未按下,转KEY5 0001 0111 LJMP PKEY4;S4按下,转PKEY4处理KEYS:CJNE A,0FH,PASS;S5未按下,转RETURN 0000 1111 LJMP PKEY5;S5按下,转PKEY5处理RETURN:RET;重键或无键按下,从子程序返回 PKEY1:;S1键处理子程序 PKEY2:;S2键处理子程序 PKEY3:;S3键处理子程序 PKEY4:;S4键处理子程序,2行列式键盘接口,行列式键盘工作原理,(1)行列式键盘的结构,扫描法,第1步,识别键盘有无键被按下;第2步,如有
5、键被按下,识别出具体的按键。首先把所有的列线均置为低电平,检查各行线电平是否有变化,如果有变化,则说明有键被接下,如果没有变化,则说明无键被按下。其次,先把某一列置低电平,其余各列置为高电平,检查各行线电平的变化,如果某行线电平为低电平,则可确定此行此列交叉点处的按键被按下。,(2)按键的识别方法,以图1010(b)中3号键被按下为例,来说明此键是如何被识别出来的。,第1步,让行线编程为输入线,列线编程为输出线,并使输出线输出为全低电平,则行线中电平由高变低的所在行为按键所在行。第2步,再把行线编程为输出线,列线编程为输入线,并使输出线输出为全低电平,则列线中电平由高变低所在列为按键所在列。结
6、合上述2步的结果,可确定按键所在行和列,从而识别出所按的健。,线反转法,【例】假设3号键被按下,那么第1步即在D0D3输出全为0,然后读入D4D7位,结果D40,而D5、D6和D7均为1,因此,第1行出现电平的变化,说明第1行有键按下;,第2步让D4D7输出全为0,然后读入D0D3位,结果D0=0而D1、D2和D3均为1,因此第4列出现电平的变化,说明第4列有键按下。综合上述分析,即第1行第4列按键被按下,此按键即是3号键。,对于独立式键盘,由于按键的数目比较少,可根据实际需要灵活编码。对于行列式键盘,按键的位置由行号和列号惟一确定、所以常常采用依次排列键号的方式对键盘进行编码。以44键盘为例
7、,键号可以编码为01H,02H,03H,0EH,0FH,10H共16个。,(3)键盘的编码,10.2.2 键盘的工作方式,1.编程扫描方式,这种方式就是只有当单片机空闲时,才调用键盘扫描子程序,反复的扫描键盘,等待用户从键盘上输入命令或数据,来响应键盘的输入请求。,编程扫描方式的具体步骤(1)设置PA口工作于方式0输出,PC口低4位工作于方式0输入。(2)判断键盘上有无键按下(PA口8位输出全0,读PC口低4位状态)(3)延时10 ms来消除按键抖动(4)求按下键的键号(扫描法或线反转法)。(5)等待按键释放后,再进行按键功能的处理操作。,单片机对键盘的扫描也可采用定时扫描方式,即每隔一定的时
8、间对键盘扫描一次。”在这种扫描方式中,通常利用单片机内的定时器,产生10 ms的定时中断,CPU响应定时器溢出中断请求,对键盘进行扫描,在有键按下时识别出该键,并执行相应键的处理功能程序。,2定时扫描工作方式,为进一步提高单片机扫描键盘的工作效率,可采用中断扫描方式,即只有在键盘有键按下时,才执行键盘扫描程序并执行该按键功能程序,如果无键按下,单片机将不理睬键盘。,3中断工作方式,第1层:单片机如何来监视键盘的输入。体现在键盘的工作方式上就是:编程扫描工作方式;定时扫描工作方式;中断扫描工作方式。第2层:确定具体按键的键号。体现在按键的识别方法上就是:扫描法;线反转法。第3层:实现按键的功能,
9、执行键处理程序。,键盘所做的工作分为3个层次,键盘扫描应用举例(例题10_110_3),10.3 键盘显示器接口设计实例,10.3.1 利用并行IO芯片8155H实现键盘/显示器接口,8155H的IO口地址为7F00H7F05H,RAM地址为7E00H7EFFH。8155H的PA口为输出口,控制键盘列线的扫描,PA口同时又是6位共阴极显示器的位扫描口。PB为输出口作为显示器的段码(字型码)口,8155H的PC口作为键盘的行线状态的输入口,故称为键输入口。75452为反相驱动器,7407为同相驱动器。,8155芯片使用介绍,图1014中的6位显示器采用动态显示的方式。在8051内部RAM中设置6
10、个显示缓冲单元79H7EH,分别存放显示器要显示的6位数据。8155H的PA口扫描输出总是只有1位高电平,经75452反相后,即显示器的6位中仅有1位公共阴极为低电平,其他位为高电平。8155H的PB口输出相应位的显示数据的段码,使某一位显示某一字符,其它位为暗。依次的改变PA口输出为高的位,PB口输出对应的段码,显示器的6位就动态地显示出由缓冲区中显示数据所确定的字符。显示程序的流程如图1015所示。,0000 0001 位选码R3,1动态显示程序设计,参考程序如下:DIR:MOV R0,79H;置缓冲器指针初值 MOV R3,01H;位选码的初值送 R3 MOV A,R3 0000 000
11、1LD0:MOV DPTR,#7F01H;DPTR指向8155H PA口 MOV DPTR,A;位选码8155H PA口(PA0位)最左边LED亮 INC DPTR;数据指针指向 PB口 MOV A,R0;缓冲区中取出显示数据A ADD A,0DH;加偏移量(下条指令到表首间 所有指令占的单元数)MOVC A,APC;根据显示数据来查表取段码,在8031内部RAM中设置6个显示缓冲单元79H7EH,分别存放显示器要显示的6位数据。,8155H的IO口地址为7F00H7F05H,DIR1:MOVX DPTR,A;段码8155H的 PB口 ACALL DL1ms;延时1ms,即该位显示1ms IN
12、C R0;显示数据缓冲区指针指向下一个数据单元 MOV A,R3;位选码送入 A中(初值R3=01H)JB ACC.5,LD1;判断是否扫描到最右边的LED,如到最右边,则返回 RL A;位选码向左移一位,准备让右边的下一位 LED亮 MOV R3,A;位选码送R3中保存 AJMP LD0LD1:RET,初始的位选码0000 0001,DSEG:;共阴极LED段码表 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 38H,
13、00DL1ms:MOV R7,#02H;延时1ms子程序 DL:MOV R6,#0FFH DL6:DJNZ R6,DL6 DJNZ R7,DL RET 程序中的 ADD A,0DH指令中的“0DH”为偏移量(即为查表指令下一条指令到表首地址标号DESG之间所有指令所占单元之和),在显示数据的基础上加上偏移量,可查到该显示数据所对应的段码。,2键盘程序设计,键盘程序的功能有以下4个方面:(1)判别键盘上有无键闭合:其方法为:首先把所有的列线(PA口)均置为低电平,检查各行线(PC口)电平是否有变化(2)去除键的机械抖动:其方法为延迟一段时间再判别键盘的状态。(3)判别闭合键的键号:方法为对键盘的
14、列线进行逐列扫描,扫描口PA0PA7依次输出下列编码,即只有1列为低电平,其余各列为高电平:(行列扫描法)PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1,相应地依次读PC口的状态,若PC3PC0全为1,则列线为0的这1列上没有键闭合。闭合键的键号等于为低电平的列号加上行线为低电平的行的首键号。例如:PA口输出为11111101时,读出PC3PC0为1101,则第1行第1列相交的键处于闭合状态,第1行的首键号为8,列号为1。因此,闭合键的键号N为:N=行
15、首键号十列号=81=9(4)使CPU对键的1次闭合仅作1次处理,采用的方法为等待闭合键释放以后再作处,键盘程序的流程图,KEY1:ACALL KS1;调用判有无键闭合于程序 JNZ LK1;(A)0有键闭合,跳LK1NI:ACALL DIR;无键闭合,调用显示子程序(调用 上页的显示程序),延迟6ms后,跳KEY1 AJMP KEY1;LK1:ACALL DIR;可能有键闭合,延迟12ms,软件去抖动 ACALL DIR ACALL KS1;延迟后再次调用判有无键闭合子程序,键盘子程序如下:,JNZ LK2;经去抖动,判键确实闭合,跳LK2去处理 ACALL DIR;调用显示子程序延迟6ms
16、AJMP KEY1;抖动引起,跳KEY1LK2:MOV R2,0FEH;列选码R2 MOV R4,00H;R4为列号计数器LK4:MOV DPTR,7F01H;列选码8155H 的PA口 MOV A,R2;列选码A MOVX DPTR,A;从PA口送出列选码 INC DPTR;数据指针增2,指向PC口,8155H的IO口地址为7F00H7F05H,INC DPTR;数据指针增2,指向PC口 MOVX A,DPTR;读8155H PC口 JB ACC.0,LONE;判定第0行有无键按下 MOV A,#00H;(ACC.0)=0第 0行有键闭合,首键号0A AJMP LKP;跳LKP,计算键号LO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 C51单片机第十章MCS 51与键盘、显示器、打印机的接口设计ppt课件 C51 单片机 第十 MCS 51 键盘 显示器 打印机 接口 设计 ppt 课件
链接地址:https://www.31ppt.com/p-2069603.html