《键盘与显示接口技术课件.ppt》由会员分享,可在线阅读,更多相关《键盘与显示接口技术课件.ppt(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、键盘与显示接口技术第1页,此课件共45页哦9.1 LED显示接口技术显示接口技术9.1 LED显示接口技术显示接口技术由由LED构成的构成的3种显示部件种显示部件指示灯指示灯数码管数码管点阵屏点阵屏LED:Light Emiting Diode电路符号电路符号:第2页,此课件共45页哦9.1 LED显示接口技术显示接口技术9.1.1 数码管结构及显示原理数码管结构及显示原理数码管由数码管由8个发光二极管(以下简称段)构成,通过不同的组合个发光二极管(以下简称段)构成,通过不同的组合可用来显示数字可用来显示数字0 9、部分字符、符号、部分字符、符号“”及小数点及小数点“”。数码管的外形结构如图所
2、示。数码管的外形结构如图所示。数码管又分为共阴极和共阳极两种结构。数码管又分为共阴极和共阳极两种结构。第3页,此课件共45页哦9.1 LED显示接口技术显示接口技术COM P1.01.7 MCS-51a f b g e c d dpabh将公共阴极接地将公共阴极接地,在在ag各段的阳极上加不同的电压,就会使各段的发各段的阳极上加不同的电压,就会使各段的发光情况不同,形成不同的发光字符。光情况不同,形成不同的发光字符。D7D6D5D4D3D2D1D0dpgfedcba段选码的位定义段选码的位定义R段码表段码表:段选码的值与显示字符的对应关系段选码的值与显示字符的对应关系.“8”:共阴极段选码的值
3、为共阴极段选码的值为7FH;共阳极段选码的值为共阳极段选码的值为80H.第4页,此课件共45页哦9.1 LED显示接口技术显示接口技术共阴极和共阳极的段选码互为反码共阴极和共阳极的段选码互为反码。显显示字符示字符共阴极共阴极段段选码选码共阳极共阳极段段选码选码显显示字符示字符共阴极共阴极段段选码选码共阳极共阳极段段选码选码03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8HY6EH91H87FH80HL38HC7H96FH90H8FFH0
4、0HA77H88H“灭灭”00FFHB7CH83H第5页,此课件共45页哦9.1 LED显示接口技术显示接口技术9.1.2 数码管的静态显示方式数码管的静态显示方式将公共阴极接地或公共阳极接电源,将公共阴极接地或公共阳极接电源,段码接一段码接一8位并行输出口。位并行输出口。需要占用大量的输出端口。需要占用大量的输出端口。a b hCOM a b hCOM a b hCOMa f b g e c d h 第6页,此课件共45页哦9.1 LED显示接口技术显示接口技术D0D7第7页,此课件共45页哦9.1 LED显示接口技术显示接口技术例例5.1 按照前页电路按照前页电路,编写显示子程序,将编写显
5、示子程序,将33H30H单元存储的字符由单元存储的字符由高到低显示在四只数码管上。高到低显示在四只数码管上。分析分析:1.设置串口工作方式设置串口工作方式0,SCON初值为初值为00H。2.先发送高位数码管的段选码,先发送高位数码管的段选码,后发送低位数码管的段选码。后发送低位数码管的段选码。3.段选码采用查表的方式获得。段选码采用查表的方式获得。DXM:MOVDPTR,#TAB;取段选码表首地址取段选码表首地址MOVC A,A+DPTR;取段选码,变址寻址取段选码,变址寻址RETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;0,1,2,3,4DB92H,82H,0F8H,8
6、0H,90H ;5,6,7,8,9DB88H,83H,0C6H,0A1H,86H,8EH;A,b,C,d,E,F查段选码子程序:查段选码子程序:入口条件:待显示字符存于入口条件:待显示字符存于A中;中;出口条件:待显示字符的段选码存于出口条件:待显示字符的段选码存于A中;中;占用资源:占用资源:DPRT,A。第8页,此课件共45页哦9.1 LED显示接口技术显示接口技术DISP:MOV SCON,#00H;串口初始化方式串口初始化方式0 SETB P1.0;74HC164处于正常工作状态处于正常工作状态MOV R0,#33H;首地址赋指针首地址赋指针MOVR1,#04H;显示显示4个数个数LP
7、1:MOV A,R0 ;取待显示字符取待显示字符LCALL DXM;查段选码查段选码 MOV SBUF,A;启动串行发送命令,输出段位码启动串行发送命令,输出段位码JNB TI,$;等待发送完毕等待发送完毕CLRTI;清发送完毕标志位清发送完毕标志位DECR0;指针减指针减1DJNZ R1,LP1;判断判断4位段选码是否全部输出位段选码是否全部输出RET;显示子程序:显示子程序:入口条件:待显示字符存于入口条件:待显示字符存于33H-30H单元中;单元中;出口条件:出口条件:占用资源:占用资源:R0,R1,A。第9页,此课件共45页哦9.1 LED显示接口技术显示接口技术9.1.3 数码管的动
8、态显示方式数码管的动态显示方式将所有显示位的段选码接在一起;将所有显示位的段选码接在一起;通过位选线选择某一时刻显示的位,时间单位一般取通过位选线选择某一时刻显示的位,时间单位一般取15ms;采用循环扫描的方法,实现多位显示。采用循环扫描的方法,实现多位显示。第10页,此课件共45页哦9.1 LED显示接口技术显示接口技术位选线的驱动位选线的驱动位选线为什么需要驱动?位选线为什么需要驱动?位选线如何驱动?位选线如何驱动?ULN20037位达林顿驱动器位达林顿驱动器ULN2003反相输出反相输出单路驱动能力单路驱动能力(吸入电流吸入电流)达达500mA第11页,此课件共45页哦9.1 LED显示
9、接口技术显示接口技术第12页,此课件共45页哦9.1 LED显示接口技术显示接口技术1.分析分析8155口地址口地址命令寄存器口地址命令寄存器口地址:EF00H;PA口寄存器口地址口寄存器口地址:EF01H;PB口寄存器口地址口寄存器口地址:EF02H;PC口寄存器口地址口寄存器口地址:EF03H;2.分析分析8155 命令字命令字PA口、口、PB口为输出口;口为输出口;PC口未使用口未使用,假设为输入口;假设为输入口;命令字为命令字为03H。INIT8155:MOV DPTR,#0EF00H MOV A,#03H MOVXDPTR,A RET3.8155 初始化程序初始化程序第13页,此课件
10、共45页哦9.1 LED显示接口技术显示接口技术DXM:MOVDPTR,#TAB;取段选码表首地址取段选码表首地址MOVC A,A+DPTR;取段选码,变址寻址取段选码,变址寻址RETTAB:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h ;0,1,2,3,4,5,6,7 DB 7fh,6fh,77h,7ch,39h,5eh,79h,71h,0 ;8,9,A,b,C,d,E,F,灭灭4.查段选码子程序:查段选码子程序:入口条件:待显示字符存于入口条件:待显示字符存于A中;中;出口条件:待显示字符的段选码存于出口条件:待显示字符的段选码存于A中;中;占用资源:占用资源:DP
11、RT,A。SCD:MOVDPTR,#0EF02H;指针指向指针指向8155的的PB口口MOVX DPTR,A;输出段选码到输出段选码到PB口口RET5.输出段选码子程序:输出段选码子程序:入口条件:待输出段选码存于入口条件:待输出段选码存于A中;中;占用资源:占用资源:DPTR第14页,此课件共45页哦9.1 LED显示接口技术显示接口技术6.扫描一次扫描一次方法分析:方法分析:扫描扫描1次,每位数码管显示一次。次,每位数码管显示一次。以以1ms为间隔,顺序将为间隔,顺序将PA0到到PA5输出高电平。输出高电平。在某位输出高电平期间,相应输出该位的段选码。在某位输出高电平期间,相应输出该位的段
12、选码。入口条件:入口条件:待显示字符存于待显示字符存于35H30H单元中单元中占用资源:占用资源:A,R0,R1,R2SCW:MOVDPTR,#0EF01H ;8155的的PA口口MOVX DPTR,A ;输出位选码输出位选码RET5.输出位选码子程序:输出位选码子程序:入口条件:待输出位选码存于入口条件:待输出位选码存于A中;中;占用资源:占用资源:DPTR注意:位选码的值总是只有注意:位选码的值总是只有1个位为个位为1。第15页,此课件共45页哦9.1 LED显示接口技术显示接口技术DISP:MOV R0,#30H;地址指针地址指针MOV R1,#01H;位选码位选码,从低位开始显示从低位
13、开始显示MOV R2,#06H;长度指针长度指针DP1:MOVMOV A,#00H A,#00HLCALLLCALL SCWSCW;关显示关显示MOV A,R0;取待显示字符取待显示字符LCALL DXM;查表段选码查表段选码LCALL SCD;输出段选码输出段选码MOV A,R1LCALL SCW;输出位选码输出位选码INC R0;地址指针指向下一单元地址指针指向下一单元RL A;位选码指向高一位位选码指向高一位MOV R1,A;保存位选码保存位选码LCALL DELY1;延时延时1msDJNZ R2,DP1RET第16页,此课件共45页哦9.1 LED显示接口技术显示接口技术ORG0000
14、HLJMP MAINORG0030HMAIN:MOV SP,#6FH;设置堆栈;设置堆栈LCALL INIT8155;初始化;初始化8155MN1:LCALLDISP;输出显示字符;输出显示字符SJMPMN1;循环输出;循环输出7.主程序(反复调用扫描显示程序)主程序(反复调用扫描显示程序)6.延时延时1ms子程序子程序子程序子程序2:延时:延时1ms程序(程序(12M晶体)晶体)占用资源:占用资源:R6,R7DELY1:MOVR7,#02HDL1:MOVR6,#0FFHDJNZR6,$DJNZR7,DL1RET程序中哪些地方需程序中哪些地方需要用堆栈?要用堆栈?第17页,此课件共45页哦9.
15、1 LED显示接口技术显示接口技术程序清单程序清单:1 主程序主程序2 子程序子程序18155初始化程序初始化程序3 子程序子程序2延时延时1ms程序程序4 子程序子程序3查表段选码查表段选码5 子程序子程序4输出段选码输出段选码6 子程序子程序5输出位选码输出位选码7 子程序子程序6输出输出6位字符(扫描一次)位字符(扫描一次)第18页,此课件共45页哦9.2 键盘接口技术键盘接口技术9.2 键盘接口技术键盘接口技术9.2.1 键盘结构与工作原理键盘结构与工作原理键盘中每个按键都是一个常开开关键盘中每个按键都是一个常开开关按下键按下键S3,P1.7口为低电平口为低电平放开键放开键S3,P1.
16、7口为高电平口为高电平第19页,此课件共45页哦9.2 键盘接口技术键盘接口技术由于机械触点的弹性作用,在闭合和断开按键的瞬由于机械触点的弹性作用,在闭合和断开按键的瞬间,触点会产生机械抖动,表现为间,触点会产生机械抖动,表现为P1.7口出现一系列口出现一系列的脉冲信号。如右图所示。的脉冲信号。如右图所示。抖动时间的长短,由按键的机械特性决定,一抖动时间的长短,由按键的机械特性决定,一般在般在5ms10ms间。间。按键抖动的危害按键抖动的危害按键抖动的消除按键抖动的消除 硬件消除;硬件消除;如:如:R-S双稳态触发器电路双稳态触发器电路 RC阻容滤波电路阻容滤波电路 软件消除,实际应用多。软件
17、消除,实际应用多。在在CPU检测到有按键按下时,执行一个检测到有按键按下时,执行一个10ms的延时程序后,再次判断该的延时程序后,再次判断该键电平是否保持闭合状态电平,如保持闭合状态电平则确认为真正有键按下,键电平是否保持闭合状态电平,如保持闭合状态电平则确认为真正有键按下,从而消除抖动的影响。从而消除抖动的影响。当当CPU检测到按键释放后,也要给一个检测到按键释放后,也要给一个10ms的延时,待后沿抖动消失后才的延时,待后沿抖动消失后才去执行该键的处理程序。去执行该键的处理程序。第20页,此课件共45页哦9.2 键盘接口技术键盘接口技术9.2.2 独立式键盘接口设计独立式键盘接口设计独立式按
18、键是指各按键相互独立,每个按独立式按键是指各按键相互独立,每个按键各接一个输入口。通过检测输入口上的键各接一个输入口。通过检测输入口上的电平状态判断哪个键被按下。电平状态判断哪个键被按下。接上拉电阻的目的是为了保证在按键断开接上拉电阻的目的是为了保证在按键断开时,各个输入口有确定的高电平。时,各个输入口有确定的高电平。每个按键需要占用一个输入口,不适每个按键需要占用一个输入口,不适合用于需要很多按键的场合。合用于需要很多按键的场合。第21页,此课件共45页哦9.2 键盘接口技术键盘接口技术KEY_START:MOV 30H,P1 ;读键盘状态并保存;读键盘状态并保存30H单元单元ANL 30H
19、,#1FH;屏蔽高;屏蔽高3位位CJNE 30H,#1FH,NEXT;判断是否有键按下;判断是否有键按下SJMPKEY_STARTNEXT:LCALL D_10ms ;软件延时;软件延时10ms,消除抖动,消除抖动 MOV A,P1 ;再次读键盘状态;再次读键盘状态ANL A,#1FH;屏蔽高;屏蔽高3位位CJNE A,30H,KEY_START JNB ACC.0,KEY0JNB ACC.1,KEY1 JNB ACC.2,KEY2 JNB ACC.3,KEY3 JNB ACC.4,KEY4SJMP KEY_START KEY0:LJMP KP0;KEY1:LJMP KP1;KEY2:LJMP
20、 KP2;KEY3:LJMP KP3;KEY4:LJMP KP4为什么不直接跳到为什么不直接跳到KP0;延时;延时10ms程序程序D_10ms:MOVR6,#14HDL:MOVR7,#0FFHDJNZR7,$DJNZ R6,DLRET第22页,此课件共45页哦9.2 键盘接口技术键盘接口技术KP0:;KEY0键按下的处理程序键按下的处理程序 LJMP KEY_STARTKP1:;KEY1键按下的处理程序键按下的处理程序LJMP KEY_START;KP2:;KEY2键按下的处理程序键按下的处理程序LJMP KEY_START;KP3:;KEY3键按下的处理程序键按下的处理程序LJMP KEY_
21、START;KP4:;KEY4键按下的处理程序键按下的处理程序LJMP KEY_START;第23页,此课件共45页哦9.2 键盘接口技术键盘接口技术9.2.3 矩阵式键盘接口设计矩阵式键盘接口设计1.矩阵式键盘结构矩阵式键盘结构矩阵式键盘由行线和列线构成矩阵式键盘由行线和列线构成列线通过上拉电阻接到列线通过上拉电阻接到+5V列线接到输入口上列线接到输入口上行线接到输出口上行线接到输出口上按键位于行、列的交叉点上按键位于行、列的交叉点上适用于需要按键较多的场合适用于需要按键较多的场合2.矩阵式键盘工作原理矩阵式键盘工作原理无按键按下时无按键按下时,列线输入高电平列线输入高电平;有按键按下时有按
22、键按下时,列线输入电平由与此列线相连的行线电平决定列线输入电平由与此列线相连的行线电平决定.如果行线输出低电平如果行线输出低电平,则列线电平为低则列线电平为低如果行线输出高电平如果行线输出高电平,则列线电平为高则列线电平为高为了确认按键位置,必须将行、列线配合使用。为了确认按键位置,必须将行、列线配合使用。第24页,此课件共45页哦3.按键的识别方法(键扫描)按键的识别方法(键扫描)首先行线全输出首先行线全输出0,判断是否有键按下。,判断是否有键按下。如果列线为全如果列线为全1,无按键按下,无按键按下如果列线非全如果列线非全1,有按键按下,有按键按下然后,让行线然后,让行线P10输出输出0,其
23、它三条行线输出,其它三条行线输出1,读列线状态。,读列线状态。如果列线为全如果列线为全1,第一行无按键按下,继,第一行无按键按下,继续扫描。续扫描。如果列线非全如果列线非全1,可以判断按键在第一行,再根据为,可以判断按键在第一行,再根据为0的列线序号,可以确定的列线序号,可以确定按键具体的列号,停止扫描。按键具体的列号,停止扫描。如果第一行无按键按下,让行线如果第一行无按键按下,让行线P11口输出口输出0,其它三条行线输出,其它三条行线输出1,读列线状,读列线状态,判断按键是否在第二行。态,判断按键是否在第二行。如果第二行仍无按键按下,让行线如果第二行仍无按键按下,让行线P12口输出口输出0,
24、其他三条行线输出,其他三条行线输出1,读列线状态,读列线状态,判断按键是否在第三行。判断按键是否在第三行。如果第三行仍无按键按下,让行线如果第三行仍无按键按下,让行线P13口输出口输出0,其它三条行线输出,其它三条行线输出1,读列线状态,读列线状态,判断按键是否在第四行。判断按键是否在第四行。9.2 键盘接口技术键盘接口技术第25页,此课件共45页哦9.2 键盘接口技术键盘接口技术;判断是否有按键按下;判断是否有按键按下KAP:MOVP1,#0F0HMOVA,P1ORLA,#0FHCPLARET;延时;延时10ms程序程序DELY:MOVR6,#14HDL:MOVR7,#0FFHDJNZR7,
25、$DJNZ R6,DLRET4.编程举例编程举例键值=行首键值+列号第26页,此课件共45页哦9.2 键盘接口技术键盘接口技术KINP:LCALLKAP;调用键盘查询程序;调用键盘查询程序JZKINP;无键按下,继续查询;无键按下,继续查询KP1:LCALLDELY;延时;延时10ms,消除抖动,消除抖动LCALLKAP;再次调用键盘查询程序;再次调用键盘查询程序JZKINP;无键按下,继续查询;无键按下,继续查询MOVR2,#0FEH;从第从第从第从第0 0行开始扫描行开始扫描行开始扫描行开始扫描MOVR4,#00H;置第;置第0行行首键值行行首键值KP4:MOVP1,R2;置扫描行为;置扫
26、描行为0MOVA,P1;读;读P1状态状态JBACC.4,L1;第;第0列不为列不为0,转测第,转测第1列列MOVA,#00H;列号存入;列号存入A中中AJMPKP5;停止扫描;停止扫描L1:JBACC.5,L2;第;第1列不为列不为0,转测第,转测第2列列MOVA,#01H;列号存入;列号存入A中中AJMPKP5;停止扫描;停止扫描L2:JBACC.6,L3;第;第2列不为列不为0,转测第,转测第3列列MOVA,#02H;列号存入;列号存入A中中AJMPKP5;停止扫描;停止扫描L3:JBACC.7,NEXT;第;第3列不为列不为0,转测下一行,转测下一行MOVA,#03H;列号存入;列号存
27、入A中中KP5:ADDA,R4;停止扫描,计算键值;停止扫描,计算键值R2 R4行0FE 0行1FD4行2FB 8行3F7 C键值=行首键值+列号第27页,此课件共45页哦9.2 键盘接口技术键盘接口技术PUSHA;保存键值;保存键值KP3:LCALLKAP;查询键是否释放;查询键是否释放JNZKP3;未释放,继续查询;未释放,继续查询LCALL DELYLCALLKAP;再次查询键是否释放;再次查询键是否释放JNZKP3POPA;弹出键值;弹出键值RETNEXT:MOVA,R2;扫描行指针赋给;扫描行指针赋给AJNBACC.3,KINP;扫描结束,未发现按键;扫描结束,未发现按键RLA;准备
28、扫描下一行;准备扫描下一行MOVR2,AADDADDR4R4,#04H#04H;置下一行行首键值MOVA,R4ADDA,#04HMOVR4,AAJMPKP4;转开始下一行扫描;转开始下一行扫描执行完以上程序后,键值存放于累加器执行完以上程序后,键值存放于累加器A中。中。第28页,此课件共45页哦9.3 键盘显示接口专用芯片键盘显示接口专用芯片82798位并行接口位并行接口ZLG7289BI2C接口接口ZLG7290CI2C接口接口BC7281二线串口二线串口BC7281A二线串口二线串口BC7281B二线串口二线串口MAX7219 三线串口三线串口MAX7221三线串口三线串口第29页,此课件
29、共45页哦9.4 键盘显示接口专用芯片键盘显示接口专用芯片第30页,此课件共45页哦实验箱显示电路实验箱显示电路74HC138第31页,此课件共45页哦1.分析分析8155口地址口地址命令寄存器口地址命令寄存器口地址:1110_xxx1_xxxx_xx00B E100H;PA口寄存器口地址口寄存器口地址:1110_xxx1_xxxx_xx01B E101H;PB口寄存器口地址口寄存器口地址:1110_xxx1_xxxx_xx10B E102H;PC口寄存器口地址口寄存器口地址:1110_xxx1_xxxx_xx11B E103H;2.分析分析8155 命令字命令字PA口、口、PB口为输出口;口
30、为输出口;PC口未使用口未使用,假设为输入口;假设为输入口;命令字为命令字为03H。INIT8155:MOV DPTR,#0E100H MOV A,#03H MOVXDPTR,A RET3.8155 初始化程序初始化程序实验箱显示电路实验箱显示电路第32页,此课件共45页哦DXM:MOVDPTR,#TAB;取段选码表首地址取段选码表首地址MOVC A,A+DPTR;取段选码,变址寻址取段选码,变址寻址RETTAB:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h ;0,1,2,3,4,5,6,7 DB 7fh,6fh,77h,7ch,39h,5eh,79h,71h,0 ;8
31、,9,A,b,C,d,E,F,灭灭4.查段选码子程序:查段选码子程序:入口条件:待显示字符存于入口条件:待显示字符存于A中;中;出口条件:待显示字符的段选码存于出口条件:待显示字符的段选码存于A中;中;占用资源:占用资源:DPRT,A。实验箱显示电路实验箱显示电路第33页,此课件共45页哦SHIFT:MOVR6,#08H;循环次数循环次数MOVDPTR,#E102H;指针指向指针指向8155的的PB口寄存器口寄存器LP1:RLCAMOVR7,A;备份备份A中段选码中段选码MOVACC.0,CCLRACC.1MOVX DPTR,A;输出输出DAT,输出输出CLK为为0,SETBACC.1MOVX
32、 DPTR,A;DAT不变不变,输出输出CLK为为1CLRCLRACC.1ACC.1MOVXMOVX DPTR,A DPTR,A;DAT不变不变,输出输出CLK为为0MOVA,R7;恢复恢复A中内容中内容DJNZ R6,LP1;判断判断8位是否移位完毕位是否移位完毕RET;5.输出一个字符的段选码输出一个字符的段选码 方法分析:方法分析:PB0逐位输出数据,逐位输出数据,PB1输出移位时钟;输出移位时钟;入口条件:待显示字符的段选码存放在入口条件:待显示字符的段选码存放在A中;中;占用资源:占用资源:A,R6,R7。实验箱显示电路实验箱显示电路第34页,此课件共45页哦7.输出输出6位字符(扫
33、描一次)位字符(扫描一次)方法分析:方法分析:扫描扫描1次,每位数码管显示一次。次,每位数码管显示一次。以以1ms为间隔,顺序将为间隔,顺序将PA0到到PA5输出高电平。输出高电平。在某位输出高电平期间,相应输出该位的段选码。在某位输出高电平期间,相应输出该位的段选码。入口条件:入口条件:待显示字符存于待显示字符存于35H30H单元中单元中占用资源:占用资源:A,R0,R1实验箱显示电路实验箱显示电路SCW:MOVDPTR,#0EF01H ;8155的的PA口口MOVX DPTR,A ;输出位选码输出位选码RET5.输出位选码子程序:输出位选码子程序:入口条件:待输出位选码存于入口条件:待输出
34、位选码存于A中;中;占用资源:占用资源:DPTR注意:位选码的值总是只有注意:位选码的值总是只有1个位为个位为1。第35页,此课件共45页哦DISP:MOVR0,#30H;地址指针地址指针MOVR1,#01H;位选码位选码,从低位开始显示从低位开始显示DP1:MOVMOVA,#00HA,#00HLCALLLCALLSCWSCW;关显示关显示MOVA,R0;取待显示字符取待显示字符LCALLDXM;查表段选码查表段选码LCALL SHIFT;移位输出段选码移位输出段选码MOVA,R1LCALLSCW;输出位选码输出位选码INCR0;地址指针指向下一单元地址指针指向下一单元RLA;位选码指向高一位
35、位选码指向高一位MOVR1,A;保存位选码保存位选码LCALLDELY1;延时延时1msJNBACC.6,DP1RET实验箱显示电路实验箱显示电路第36页,此课件共45页哦ORG0000HLJMP MAINORG0030HMAIN:MOV SP,#6FH;设置堆栈;设置堆栈LCALL INIT8155;初始化;初始化8155MN1:LCALLDISP;输出显示字符;输出显示字符SJMPMN1;循环输出;循环输出9.主程序(反复调用扫描显示程序)主程序(反复调用扫描显示程序)8.延时延时1ms子程序子程序子程序子程序2:延时:延时1ms程序(程序(12M晶体)晶体)占用资源:占用资源:R6,R7
36、DELY1:MOVR7,#02HDL1:MOVR6,#0FFHDJNZR6,$DJNZR7,DL1RET程序中哪些地方需程序中哪些地方需要用堆栈?要用堆栈?实验箱显示电路实验箱显示电路第37页,此课件共45页哦程序清单程序清单:1 主程序主程序2 子程序子程序18155初始化程序初始化程序3 子程序子程序2延时延时1ms程序程序4 子程序子程序3查表段选码查表段选码5 子程序子程序4输出一个字符的段选码输出一个字符的段选码6 子程序子程序5输出输出6位字符(扫描一次)位字符(扫描一次)实验箱显示电路实验箱显示电路第38页,此课件共45页哦实验箱键盘与显示接口应用举例实验箱键盘与显示接口应用举例
37、列行键码由键值查表得到键值=行首键值+列号R2R4行0FE0行1FD4行2FB8行3F7C行4EF10行5DF14列0第39页,此课件共45页哦端口地址译码电路端口地址译码电路命令寄存器口地址命令寄存器口地址:E100HPA口寄存器口地址口寄存器口地址:E101HPB口寄存器口地址口寄存器口地址:E102HPC口寄存器口地址口寄存器口地址:E103H例:编写键盘扫描程序,并利用例:编写键盘扫描程序,并利用.1节的数码管动态显示程节的数码管动态显示程序,将被按下键的键码显示到个位数码管上。序,将被按下键的键码显示到个位数码管上。实验箱键盘与显示接口应用举例实验箱键盘与显示接口应用举例第40页,此
38、课件共45页哦键盘显示扫描程序编写键盘显示扫描程序编写程序清单程序清单:1 子程序子程序6判断是否有键按下判断是否有键按下2 子程序子程序7键盘扫描程序键盘扫描程序,确认按下的键确认按下的键3 主程序主程序 将按键码显示在数码管上将按键码显示在数码管上子程序子程序6:判断是否有键按下:判断是否有键按下占用资源:占用资源:AKeyTest:MOVDPTR,#0E101H;指向指向8155的的PA口寄存器口寄存器MOVA,#00HMOVXDPTR,A;列输出全列输出全0MOVDPTR,#0E103H;指向指向8155的的PC口寄存器口寄存器MOVX A,DPTR;读键值读键值ORLA,#0F0H;
39、屏蔽高四位屏蔽高四位CPLCPLA A;全全0无按键无按键RET实验箱键盘与显示接口应用举例实验箱键盘与显示接口应用举例第41页,此课件共45页哦子程序子程序7:键盘扫描程序:键盘扫描程序,确认按下的键确认按下的键 占用资源:占用资源:A,R2,R4KeyGet:MOVR2,#11111110B;行扫描码行扫描码MOVR4,#00H;置第置第0行首键值行首键值KG1:MOVDPTR,#0E101H;指向指向8155的的PA口寄存器口寄存器MOVA,R2MOVXDPTR,A;一行输出一行输出0,其它行输出其它行输出1MOVDPTR,#0E103H;指向指向8155的的PC口寄存器口寄存器MOVX
40、A,DPTR;读键值读键值JBACC.0,L1;第第0列无按键列无按键,跳到跳到L1MOVA,#00H;保存列号保存列号,准备计算键值准备计算键值LJMPKG2L1:JBACC.1,L2;第第1列无按键列无按键,跳到跳到L2MOVA,#01H;保存列号保存列号,准备计算键值准备计算键值LJMPKG2L2:JBACC.2,L3;第第2列无按键列无按键,跳到跳到L3MOVA,#02H;保存列号保存列号,准备计算键值准备计算键值LJMPKG2L3:JBACC.3,NEXT;第第3列无按键列无按键,跳到扫描下一行跳到扫描下一行MOVA,#03H;保存列号保存列号,准备计算键值准备计算键值KG2:ADD
41、A,R4;停止扫描停止扫描,计算键值计算键值R2R4行0FE0行1FD4行2FB8行3F7C行4EF10行5DF14实验箱键盘与显示接口应用举例实验箱键盘与显示接口应用举例第42页,此课件共45页哦MOVDPTR,#TAB1MOVC A,A+DPTR;按照键值查表得到键码按照键值查表得到键码PUSH ACC;保存键码保存键码WaitRelease:LCALLLCALLDISPDISPLCALL KeyTest;判断是否有键按下判断是否有键按下JNZJNZ WaitRelease WaitReleaseLCALL DISP;调用显示程序调用显示程序,延时延时6ms,消除抖动,消除抖动LCALL
42、KeyTest;再次判断是否有键按下再次判断是否有键按下JNZJNZ WaitRelease WaitReleasePOPACCKeyGetEND:RETNEXT:MOVA,R2;扫描行指针扫描行指针JNBACC.5,NEXT1;判断判断6行是否全部扫描完行是否全部扫描完RLA;行扫描码左移行扫描码左移MOVR2,AMOVMOVA,R4A,R4ADDADDA,#04A,#04;置下一行首键值置下一行首键值MOVMOVR4,AR4,ALJMPKG1;开始扫描下一行开始扫描下一行NEXT1:MOVA,#24;未扫描到按键返回键码未扫描到按键返回键码24LJMP KeyGetENDTAB1:DB0,
43、1,4,7,0FH,2,5,8,0EH,3,6,9,0DH,0CH,0BH,0AH;键码表键码表键码表键码表DB16,17,18,19,20,21,22实验箱键盘与显示接口应用举例实验箱键盘与显示接口应用举例第43页,此课件共45页哦按键显示主程序按键显示主程序MAIN:MOVSP,#6FHLCALLINIT8155;8155初始化初始化MOV30H,#0FFH;初始化缓冲区初始化缓冲区,显示显示00008.MOV31H,#00HMOV32H,#00HMOV33H,#00HMOV34H,#00HMOV35H,#00HMAIN1:LCALL DISP;显示显示LCALLKeyTest;判断是否有
44、键按下判断是否有键按下JZJZ MAIN1 MAIN1;无键按下无键按下,继续循环继续循环LCALL DISP;显示显示,延时延时6msLCALL KeyTest;再次判断是否有键按下再次判断是否有键按下JZJZ MAIN1 MAIN1;无键按下无键按下,继续循环继续循环LCALLLCALLKeyGetKeyGet;扫描键盘扫描键盘,得到键码得到键码PUSHACC;保存键码保存键码CLRCLRC CSUBBA,#16;显示小于显示小于15的键码的键码JNCMAIN1POPACC弹出键码弹出键码MOV30H,A;键码写入显示缓冲区键码写入显示缓冲区LJMPMAIN1实验箱键盘与显示接口应用举例实验箱键盘与显示接口应用举例第44页,此课件共45页哦COM P1.0 P1.789c51a f b g e c d dpabhR作业作业1 假定假定AT89C51单片机的单片机的P1口静态驱动一只数码管,如下图所示,试编写程序,实现口静态驱动一只数码管,如下图所示,试编写程序,实现0到到9数字依次循环显示,显示间隔为数字依次循环显示,显示间隔为2S.第45页,此课件共45页哦