ImageVerifierCode 换一换
格式:DOC , 页数:60 ,大小:1.88MB ,
资源ID:6885595      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/6885595.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(学习情境三-密码锁设计.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

学习情境三-密码锁设计.doc

1、学习情境三 密码锁设计 学习目标: Ø 了解并行通信的基本概念; Ø 掌握键盘的基本组成及工作原理; Ø 掌握七段LED显示器的基本组成及工作原理。 技能目标: Ø 能够正确在AT89S52外连接键盘和显示设备。 Ø 能够灵活应用典型键盘、显示电路构成各种实际电路。 Ø 能够利用AT89S52设计制作一位密码锁实用电路。 Ø 能够利用AT89S52设计制作多位密码锁的实用电路。 在数据通信与计算机领域中,有两种基本的数据传送方式,即串行数据传送方式与并行数据传送方式,也称串行通信与并行通信。串行通信将在以后介绍。 数据在多条并行传输线上各位同时传送的方式,称为并行传

2、送方式,多用于近距离传送,如图3.1(a)所示;而数据在单条一位宽的传输线上按时间先后一位一位地传送,称为串行数据传送方式,常用于远距离传送,如图3.1(b)所示。 在单片机应用系统中,通常都有操作面板。操作人员通过操作面板实现与应用系统的信息交流,包括下达命令、修改程序和参数、干预应用系统的状态、显示运行状态和运行结果。 本学习环境主要介绍人机对话通道中常用的输入设备――键盘,输出设备――LED显示器。 低位 8位数据 图3.1 (a)并行通信方式 (b)串行通信方式 任务一 字符显示 第一部分 项目要求 设计一个八位显示电路,要求8只数码管从左到右顺序显示

3、1、2、3、4、5、6、7、8共8个字符;将内存10H、11H、12H、13H中存放的压缩BCD码显示出来。 第二部分 相关知识 在单片机系统中,常用的显示器有:发光二极管显示器,简称LED (Light Emitting Diode);液晶显示器,简称LCD (Liquid Crystal Display);荧光管显示器。三种显示器中,以荧光管显示器亮度最高,发光二极管次之,而液晶显示器最弱,为被动显示器,必须有外光源。 一、发光二极管及LED显示器 发光二极管是由半导体发光材料做成的PN结,只要在发光二极管两端通过正向电流5-20mA就能达到正常发光。LED的发光颜色通常有红、绿

4、黄、白,其外形和电气图形符号如图3.2所示。单个LED通常是通过亮、灭来指示系统运行状态和用快速闪烁来报警。 通常所说的LED显示器由7个发光二极管组成,因此也称之为七段LED显示器,其排列形状如图3.3(a)所示。显示器中还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。通过七个发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。 图3.2发光二极管 LED显示器中的发光二极管共有两种连接方法: 1.共阳极接法 把发光二极管的阳极连在一起构成公共阳极,图3.3(b)所示。使用时公共阳极接+5V。阴极端输入低电平的段发光二

5、极管导通点亮,输入高电平的则不点亮。 2.共阴极接法 把发光二极管的阴极连在一起构成公共阴极,图3.3(c)所示。使用时会共阴极接地,阳极端输入高电平的段发光二极管导通点亮,输入低电平的则不点亮。 图3.3 七段LED显示器 用LED显示器显示十六进制数的字型代码如表3-1所示: 表3-1 十六进制数的字型代码 字型 共阳极代码 共阴极代码 字型 共阳极代码 共阴极代码 0 C0H 3FH 9 90H 6FH 1 F9H 06H A 88H 77H 2 A4H 5BH B 83H 7CH 3 B0H 4FH C C6

6、H 39H 4 99H 66H D A1H 5EH 5 92H 6DH E 86H 79H 6 82H 7DH F 8EH 71H 7 F8H 07H 灭 FFH 00H 8 80H 7FH 二、七段LED显示器的工作原理 七段LED显示器需要由驱动电路驱动。在七段LED显示器中,共阳极显示器,用低电平驱动;共阴极显示器,用高电平驱动。点亮显示器有静态和动态两种方式。 1.静态显示器 所谓静态显示,就是当显示器显示某一字符时,相应段的发光二极管恒定地导通或截止。图3.4 为一个四位静态LED显示器电路。该电路各位可独立

7、显示,只要在该位的段选线上送相应的段码,该位就能保持响应的显示字符。这种显示方法的每一位都需要有一个8位输出口控制。 静态显示器的优点是显示稳定,在发光二极管导通电流一定的情况下显示器的亮度高,控制系统在运行过程中,仅仅在需要更新显示内容时,CPU才执行一次显示更新子程序,这样大大节省了CPU的时间,提高了CPU的工作效率;缺点是位数较多时,硬件开销太大。 图3.4 四位静态LED显示电路 例如在AT89S52的串行口上扩展多片串行输人并行输出的移位寄存器74LS164作为静态显示器接口,图3.5给出了8位共阳极静态显示器的逻辑接口。设要显示的数据放在78H-7FH中。 图3

8、5 串行扩展静态显示电路 静态显示程序如下: DISPLAY:MOV R7,#8;8位显示计数器 MOV R0,#78H;78H-7FH为显示器缓冲区 MOV DPTR,#TABLE;显示字形码表首地址 LOOP1:MOV A,@R0;取出要显示的数据 INC R0;指向缓冲区下一地址 MOVC A,@A+DPTR;取出显示字形码 MOV SBUF,A;送出该LED上的字形码 LOOP2:JN

9、B TI,LOOP2;输出完否? CLR TI;完,清发送中断标志 DJNZ R7,LOOP1;8位显示未完,继续 RET TABLE:DB 0C0H,0F9H,0A4H,0BH,99H ;0,1,2,3,4 DB 92H,82H,0FBH,80H,90H ;5,6,7,8,9 DB 88H,83H,0C6H,0A1H,86H ;A, b,C, d,E DB 8EH,0FFH

10、 ;F,暗 2.动态显示器 图3.6 四位动态LED显示电路 所谓动态显示就是一位一位地轮流点亮各位显示器(扫描),对于显示器的每一位而言,每隔一段时间点亮一次。在同一时刻只有一位显示器在工作(点亮),利用人眼的视觉暂留效应和发光二极管熄灭时的余辉效应,看到的却是多个字符“同时”显示。 显示器亮度既与点亮时的导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。 图3.6为一个4位动态LED显示器电路。其中段选线占用一个I/O口,控制各位LED显示器所显示的字形(称为段码或字形口);位选线需要一个I/

11、O口,控制显示器公共极电位(称为位码或字位口)。 动态显示器的优点是节省硬件资源,成本较低。但在控制系统运行过程中,要保证显示器正常显示,CPU必需每隔一段时间执行一次显示子程序,占用CPU大量时间,降低了CPU的工作效率,同时显示亮度较静态显示器低。 第三部分 项目实施 一、项目实施分析 (一)硬件电路 图3.7是一个动态扫描方式驱动的8只数码管显示电路,要求8只数码管从左到右顺序显示1、2、3、4、5、6、7、8共8个字符。 图3.7 八位LED显示电路 电路选用共阳极数码管。 AT89S52的P2口为位驱动口,当输出为“0”时对应的位被选中,显示

12、字符。P2口的8个位中,任意时刻只能有一个输出为“0”,其他均为“1”。P2口输出与对应显示位的关系见表3-2。 表3-2 P2口输出与对应显示位的关系 端口 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 位码 01H 02H 04H 08H 10H 20H 40H 80H 数码管 L1 L2 L3 L4 L5 L6 L7 L8 AT89S52的P1口为段驱动口,当输出为“0”,对应的段“灭”;当输出为“1”时,对应的段“亮”。P1口与数码管笔画的对应关系见表3-3。 表3-3

13、 P1口与数码管笔画的对应关系 A B C E D F G DP P1.0 P1.1 P1.2 P1.3 P1 P15 P1.6 P1.7 (二)程序清单 程序清单如下: ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV SP,#50H MOV 30H,#01H MOV 31H,#02H MOV 32H,#03H MOV 33H,#04H MOV 3

14、4H,#05H MOV 35H,#06H MOV 36H,#07H MOV 37H,#08H LP7: LCALL DIR SJMP LP7 DIR: MOV R0,#30H ;显示数据缓冲区首地址送R0 MOV R1,#7FH ;使显示器最左边位亮 MOV A,R1 LPl: MOV P2,A ;扫描值送P2口 MOV A,@R0 ;取

15、欲显示数据 ADD A,#0EH ;加上查表指令地址偏移量 MOVC A,@A+PC ;取出段码 MOV P1,A ;送出显示 ACALL DELAY ;调用延时子程序 INC R0 ;指向下一个显示缓冲区地址 MOV A,R1 JNB ACC.0,LP2 ;扫描到第八个显示器否? RR A

16、 ;未到,扫描码右移1位 MOV R1,A SJMP LP1 LP2:RET DB 0C0H,0F9H,0A4H,0B0H,99H,92H ;0,1,2,3,4,5 DB 82H, 0F8H, 80H, 90H, 0C8H,83H ;6,7,8,9,A,B DB 0C6H,0A1H,86H, 8EH ;C,D,E,F DELAY:MOV R7,#01H ;延时子程序 DL1

17、MOV R6,#0FFH DL2:DJNZ R6,DL2 DJNZ R7,DLl RET 编程方法二: ;12345678数码管循环点亮 X_H DATA 20H ;定义显示缓存起始地址20H X_D EQU P1 ;定义段口P1 X_W EQU P2 ;定义位口P2 NUM EQU 8 ;定义显示数字个数 ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R0, #X_H

18、 MOV R1, #NUM MOV A, #01H ACALL FUZHI ;调显示缓存单元赋值 DISP: MOV R7, #NUM ;显示初始化 MOV R6, #7FH ;显示起始位码 MOV DPTR, #BIAO MOV R0, #20H DISP_D:MOV A, @R0 ;显示 MOVC A, @A+DPTR MOV X_D, A MOV X_W, R6 ACAL

19、L DE ;调1ms延时 INC R0 MOV A, R6 RR A MOV R6, A DJNZ R7, DISP_D SJMP DISP BIAO: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DE: MOV R1, #01 ;1ms延时 DE1: MOV R2, #0FAH DJNZ R2,$ DJNZ R1,DE1 RET FUZHI: M

20、OV @R0, A ;显示缓存单元赋值子程 INC A INC R0 DJNZ R1, FUZHI RET END 二、项目实施要求 (一)项目设备要求 1.装有Keil C51 μVision2集成开发环境、编程器软件、在线下载软件的计算机。 2.单片机最小系统开发平台。 (二)项目实施步骤 1.断电,连接计算机、实验板 2.连接好下载线,接好电源。 3.进入Keil开发环境,在指定路径下建一个项目名称。 4.在指定的路径下建一个文件名。 5.将该文件添加到项目中,保存该

21、项目。 6.在编辑窗口输入程序。 7.汇编、链接无误后将文件下载到目标电路。 8.设断点或全速运行程序,观察能否将存储器中的数据显示出来,否则检查程序或连线。 9.记录实验程序内容、调试过程。 10.改变延时程序的时间,观察延时时间对显示的亮度的影响,确定最佳延时时间。 11.根据参考程序,画出显示子程序的流程图。 12.修改程序,从右到左显示0—7,请编程,并观察现象。 13.将内存10H、11H、12H、13H中存放的压缩BCD码显示出来,请编程。 三、成绩评定 1.在计算机中输入并调试程序,记录调试中出现的问题。10分 2.使用编程器将程序文件传送到用户板中,运行程

22、序,观察结果。20分 3.根据参考程序,画出显示子程序的流程图。 10分 4.修改程序,从右到左显示0—7。 30分 5.将内存10H、11H、12H、13H中存放的压缩BCD码显示出来。 30分 小题分值 (1) 10分 (2) 20分 (3) 10分 (4) 30分 (5) 30分 总分 小题得分 任务二 矩阵式键盘电路设计 第一部分 项目要求 设计一个4×4矩阵键盘与AT89S52接口电路。要求用查询法读取行列键盘键码,并将键码存入内部RAM 32H单元。 第二部分 相关知识 键盘是由若干个按键组成的开关矩阵,它是最

23、简单的单片机输入设备,操作员可以通过键盘输入数据或命令,实现简单的人机通信。若键盘闭合键的识别是由专用硬件实现的,则称为编码键盘;若用软件实现闭合键识别的,则称为非编码键盘。非编码键盘又分为行列式和独立式两种。本项目主要讨论,非编码键盘的工作原理、接口技术和程序设计。 键盘接口应有以下功能: ü 键扫描功能,即检测是否有键闭合; ü 键识别功能,确定被闭合键所在的行列位置; ü 产生相应的键值功能; ü 消除按键抖动功能。 一、键盘工作原理 图3.8 键闭合和断开时的电压抖动 1.按键去抖动 常用键盘的按键是一个机械开关结构,被按下时,由于机械触点的弹性

24、及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动,如图3.8所示。抖动时间长短与按键的结构和机械特性有关,一般为5~10 ms。而按健的闭合时间和操作者的按键动作有关,大约为十分之几秒到几秒不等。 去抖动有硬件和软件两种方法。硬件方法就是在键盘中附加去抖动电路,从根本上消除抖动产生的可能性,图3.9为利用双稳电路的去抖动电路;而软件方法则是采用时间延迟以躲过抖动(大约延时20-30ms即可),待行线上状态确定之后,再进行状态输入。一般为简单起见多采用软件方法。 图3.9 去抖动电路 2.按键连接方式 键盘和CPU的连接方式可分

25、为独立式键盘和矩阵式键盘。 ① 独立式键盘 独立式是一组相互独立的按健,这些按键可直接与单片机的I/O口连接,即每个按键独占一条口线,接口简单。独立式键盘因占用单片机的硬件资源较多,只适合按键较少的场合。 图3.10(a)是一个具有4个按键的独立式键盘,每一个按键的一端都接地,另一端接AT89S52的I/O口。从图中可以看出,独立式键盘每一按键都需要一根I/O线,占用AT89S52的硬件资源较多。 图3.10 独立式键盘和矩阵式键盘 ② 矩阵式键盘 也称行列式键盘,因为键的数目较多,所以按键按行列组成矩阵。图3.10(b)是由

26、4根行线和4根列线组成的16个按键的键盘。与独立式键盘相比,16个按键只占用了8个I/O口线,因此适用于按键较多的场合。 矩阵式键盘接口处理的内容: A.键扫描 键盘上的键按行列组成矩阵,在行列的交点上都对应有一个键。为判定有无键被按下(闭合健)以及被按键的位置,可使用扫描法说明查找闭合健的方法。 首先是判定有没有键被按下。如图3.11所示,键盘的行线一端经电阻接+5V 电源,另一端接单片机的输入口线。各列线的一端接单片机的输出口线,另一端悬空。为判定有没有键被按下,可先经输出口向所有列线输出低电平,然后再输入各行线状态。若行线状态皆为高电平,则表明无健按下;若行线状态中有低电平,则表

27、明有健被按下。 图3.11 键扫描示意图 然后再判定被按键的位置。判定键位置的扫描是这样进行的:先使输出口输出0FEH,即Y0为低电平“0”,其它列线为高电平“1”,然后输入行线状态,测试行线状态中是否有低电平的。如果没有低电平,再使输出口输出0FDH,即Y1为“0”,其它列线为“1”,再测试行线状态。以次类推,直检测到行线中有低电平,则闭合健找到,通过此次扫描的列线值和行线值就可以知道闭合健的位置。 B.去抖动 判断有键按下后,延时一段时间,再判断键盘状态,如果仍为有键按下状态,则认为有键按下,否则按抖动处理。 C.确定按键的键值 如图3.12所示,以键的排列顺序安排健

28、号,则键值的计算公式为: 键值=行首号+列号 图3.12 键值表 D.判断闭合键是否释放 计算键值之后,等待键释放是为了保证键的一次闭合仅进行一次处理。 二、键盘接口的控制方式 在单片机的运行过程中,扫描键盘只是CPU的工作任务之一,何时执行键盘扫描和处理,可以有两种方式:程序扫描方式和中断扫描方式。程序扫描是指CPU空闲时执行键盘扫描,或每隔一定时间执行一次键盘扫描,定时可由单片机的定时器完成。中断扫描是指,当有键闭合时才向CPU发出中断请求,中断响应后执行键盘扫描程序。 89S52 三、应用举例 图3.13 硬件连接示

29、意图 【例3.1】硬件连接如图3.13所示,编程完成如下功能:按键按下后,对应的小灯亮,再按下,对应的小灯灭。 参考程序方法一: KEY:MOV P1, #0FFH ;灯全灭 MOV P2 , #0FFH ;P2口为输入状态 MOV A, P2 ;读键值,键按下相应位为0 CPL A ;取反,键按下相应位为1 ANL A, #0FH ;屏蔽高4位,保留低4位

30、JZ LRET ;全零,无键按下,返回 LCALL DEL20 ;非全零,有键按下,延时,软件去抖 MOV A, P2 ;重读键值 CPL A ANL A, #0FH JZ LRET ;全零,无键按下,返回 JB ACC.0, K0 ;K0按下,转K0程序 JB ACC.1, K1 ;K1按下,转K1程序 JB

31、ACC.2, K2 ;K2按下,转K2程序 JB ACC.3, K3 ;K3按下,转K3程序 SJMP LRET K0: CPL P1.0 ;P1.0状态取反,小灯LED0亮变灭,灭变亮 SJMP LRET K1: CPL P1.1 ;P1.1状态取反,小灯LED1亮变灭,灭变亮 SJMP LRET K2: CPL P1.2 ;P1.2状态取反,小灯LED2亮变灭,灭变亮 SJMP LRET

32、 K3: CPL P1.3 ;P1.3状态取反,小灯LED3亮变灭,灭变亮 LRET:RET DEL20:MOV R7, #27H ;延时20ms左右 LOOP1:MOV R6, #0FFH LOOP2:DJNZ R6, LOOP1 DJNZ R7, LOOP2 RET 参考程序方法二: 硬件电路,单片机实验板的P2.4- P2.7接P2口P2-1的5-8,P2.0- P2.3接P2-3的1-4,KEY接P3.3。 SW1 BIT P2.0 S

33、W2 BIT P2.1 SW3 BIT P2.2 SW4 BIT P2.3 KEY BIT P3.3 ORG 0000H LJMP START ORG 0100H START: MOV SP ,#60H MOV P1,#0FFH MOV P2,#0FFH MOV P0,#0FFH MOV

34、 P3,#0FFH CLR KEY WAIT: JB KEY, $ JNB SW1,SW11 JNB SW2,SW22 JNB SW3,SW33 JNB SW4,SW44 JMP WAIT SW11: MOV P1, #0F9H MOV P2, #7FH LCALL DELAY JNB SW1, $ JMP WAI

35、T SW22: MOV P1, #0A4H MOV P2, #0BFH LCALL DELAY JNB SW2, $ JMP WAIT SW33: MOV P1, #0B0H MOV P2, #0DFH LCALL DELAY JNB SW3, $ JMP WAIT SW44: MOV P1, #99H MOV P2, #0EFH LCALL DELAY

36、 JNB SW4, $ JMP WAIT DELAY: MOV R7,#30 D1: MOV R6,#20 D2: MOV R5,#248 DJNZ R5, $ DJNZ R6, D2 DJNZ R7, D1 RET END 第三部分 项目实施 一、项目实施分析 (一)硬件电路 见图3.14,是一4×4矩阵键盘。图中P1.4~P1.7用于控制行线,P1.0~P1.3用于控制列线。行、列线通过上拉电阻接+5V,没有键

37、按下时,被钳在高电平状态。通过发送扫描字确定键码,具体方法如下: (1) 由列线输出0,然后读入P1口的值存入内部RAM 30H单元。 (2) 由行线输出0,然后读入P1口的值存入内部RAM 31H单元。 (3) 把30H的低4位与31H的高4位的值相加存入累加器A。 (4) 最后判断累加器A的值,如果累加器A的数据全为1,说明无键按下,否则说明有键按下,且累加器A的数据就是被按下键的键值(程序中对累加器A取反,目的是用 JNZ指令判断是否有键按下)。 图3.14 键盘矩阵电路 AT89S52 +5V P1.0 5.

38、1 k W ×4 P1.7 P1.6 P1.5 P1.4 +5V 5.1 k W ×4 P1.3 P1.2 P1.1 图4.14 矩阵键盘与AT89S52接口连接图 (二)参考程序 键盘扫描流程图见图3.15。 图3.15 键盘扫描流程 参考程序方法一: ORG 0000H BOAD:LCALL BOADD JNZ BOAD1 ;无键按下转BOAD

39、 LCALL DELAY ;调延时子程序 AJMP BOAD ;继续扫描键盘 BOAD1:LCALL DELAY ;消除键抖动(延时子程序略) LCALL BOADD ;确认是否有键按下 JNZ BOAD2 LCALL DELAY SJMP BOAD ;转键扫描 BOAD2:CPL A MOV 32H,A ;取键值 B

40、OAD3:LCALL DELAY LCALL BOADD JNZ BOAD3 ;等待键松开 B2: RET ;返回 ;获取键值子程序 BOADD:MOV P1,#0FH ;置行线为0 MOV A,P1 MOV 30H,A MOV P1,#0F0H ;置列线为0 MOV A,P1

41、 MOV 31H,A ANL 30H,#0FH ;取列值 MOV A,30H ANL 31H,#0F0H ;取行值 ADD A,31H ;行值加列值 CPL A ;A全0无键按下 RET 键盘扫描程序的运行结果是把闭合键的键码放在32单元中。接下来的程序是根据键码进行程序转移,转去执行该键对应的操作。 参考程序方法二: 硬件电路:P1口接段码,P2口接

42、数码管的位,P3.0---P3.3接4行,P3.4—P3.7接4列 ORG 0000H;矩阵键盘程序 PORT EQU P3; 键盘接口P3 XH DATA 20H X DATA 32H;放键号 ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV SP, #60H SCAN:ACALL DIR;调显示 ACALL PYE;判有无键 JC SCAN;无键转 ACALL KEY;有键,调键盘扫描子

43、程序 JC SCAN;无键返回 ACALL LF;确有键,左移 MOV 20H, A;送新值 SJMP SCAN;返开始 LF:MOV 23H, 22H MOV 22H, 21H MOV 21H, 20H RET KEY: ACALL PYE;判断是否有键按下子程序 JNC WHICH;有键转拼装 KKK1: RET PYE:MOV PORT, #0FH;列线P1.4-P1.7输出0,同时P1.0-P1.3写1 MO

44、V A, PORT;输入行线数据 CJNE A, #0FH, PRESS;行线不全为0说明有键按下转 SJMP PN; PRESS:ACALL DELAY;有键按下延时去抖 MOV PORT, #0FH;再次使列线输出0 MOV A, PORT; CJNE A, #0FH, PY;确有键按下,转 SJMP PN; PY: CLR C;有键标志 RET PN: SETB C;无键标志 RET WHICH:MOV

45、 R7, #4;设置列数扫描次数 MOV R6, #0; MOV DPTR, #TABS;指向列扫描码表 GETS:MOV A, R6; MOVC A, @A+DPTR;查表求列扫描码 MOV PORT, A;输出列线扫描码,使某一列输出为0 MOV A, PORT;输入行线状态 JNB ACC.0, L0;0行有键按下,转L0 JNB ACC.1, L1;1行有键按下,转L1 JNB ACC.2, L2;2行有键按下,转L

46、2 JNB ACC.3, L3;3行有键按下,转L3 INC R6;本列无键按下,列号加1 DJNZ R7, GETS;未扫描完所有列,转继续扫描 SETB C RET L0:MOV A,#0;0行键有键按下,行号0送A SJMP GEN;转求键号 L1:MOV A,#1;1行键有键按下,行号1送A SJMP GEN L2:MOV A,#2;2行键有键按下,行号2送A SJMP GEN L3: M

47、OV A, #3;3行键有键按下,行号3送A GEN: RL A; RL A;行号*4 ADD A, R6;计算键号=行号*4+列号 PUSH ACC L4: ACALL DELAY ACALL PYE;判断是否有键按下子程序 JNC L4;c=0有键转 CLR C POP ACC RET TABS: DB 7FH,0BFH,0DFH,0EFH DIR: MOV R0, #XH MOV R1, #08H

48、 MOV A, R1 LP: MOV P2, A MOV A, @R0 ACALL LP3 MOV P1, A ACALL DELAY INC R0 MOV A, R1 JB ACC.7, LOOP4 RR A MOV R1, A SJMP LP DELAY:MOV R7, #01H L44: MOV R6, #0FAH L22: DJNZ R6, L22 DJNZ

49、 R7, L44 RET LOOP4:RET LP3: ADD A, #01H MOVC A, @A+PC RET DB 0C0H,0F9H,0A4H,0B0H,99H,092H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH END 二、项目实施要求 (一)项目设备要求 1.装有Keil C51 μVision2集成开发环境、编程器软件、在线下载软件的计算机。 2.单片机最小系统开发平台。 (二)项目实施步骤 1.断电,连接计算机、实验板 2.给计算

50、机、实验板通电。 3.打开计算机,进入Keil C51开发环境。 4.正确设置通信口,连接好开发环境和实验板。 5.新建一个项目,并将该项目建立在指定的文件下。 6.新建一个文件,存储器的路径与刚才建的项目相同。 7.将新建的文件添加到项目中,保存项目。 8.在编辑窗口输入程序,对程序进行汇编、生成和下载。 9.全速运行程序,观察内部RAM 32H单元的键值数据。 10.随机按下任一按键,观察RAM 32单元的情况。 三、成绩评定 1.熟悉用户板,电路如图4.8所示。10分 2.在计算机中输入并调试程序,记录调试中出现的问题。 10分 3.使用编程器将程序文件传送到用户

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服