硬件实验三按键与显示实验.doc

上传人:文库蛋蛋多 文档编号:2883543 上传时间:2023-03-01 格式:DOC 页数:20 大小:1.05MB
返回 下载 相关 举报
硬件实验三按键与显示实验.doc_第1页
第1页 / 共20页
硬件实验三按键与显示实验.doc_第2页
第2页 / 共20页
硬件实验三按键与显示实验.doc_第3页
第3页 / 共20页
硬件实验三按键与显示实验.doc_第4页
第4页 / 共20页
硬件实验三按键与显示实验.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《硬件实验三按键与显示实验.doc》由会员分享,可在线阅读,更多相关《硬件实验三按键与显示实验.doc(20页珍藏版)》请在三一办公上搜索。

1、硬件实验三 按键与显示实验1. 实验目的 熟练运用keil环境对硬件接口进行调试。 掌握IO扩展键盘的软硬件设计方法; 掌握数字转换成显示段码的软件译码方法; 掌握静态显示的原理和相关程序的编写。 掌握动态显示的原理和相关程序的编写;2. 预习要求 理解51单片机IO实现独立式键盘扩展的工作原理。 理解8段数码管静态显示的电路工作原理,采用静态显示有何优缺点; 理解8段数码管动态显示的电路工作原理,采用动态显示有何优缺点; 理解8段数码管静态显示的IO控制方式及同步串行口控制方式如何实现软件设计;3. 实验设备计算机 1台; ZDGDTH-1型80C51实验开发系统 1套;2号导线、8P数据线

2、 若干条。4. 基础型实验内容 查询式键盘和静态显示实验8个独立式键盘的电路如图2-1所示,串口扩展的6个静态数码管电路如图2-2所示。设将P0口连接到键盘接口,则如果有键按下,相应的口线输出为低,否则输出为高。单片机通过读取接口的状态,判断按下什么键。有键按下后,要有一定的延时,防止由于键盘抖动而引起误操作。8个按键的键值从右至左分别为07。实验例程是查询按键操作,并将按下的键值在6个静态数码管上显示出来。6个静态数码管与6片74LS164(串转并移位寄存器)连接,通过IO口与单片机连接,实现串行静态显示的控制。用8P数据线将80C51/C8051F020MCU模块的 JD1(P1口)与查询

3、式键盘模块JD1C7相连。在实验箱右上角的扩展区中插入静态串行显示模块,用二号导线将80C51/C8051F020MCU模块的 P3.0(RXD)、P3.1(TXD)分别与静态数码显示模块的DIN、CLK相连;将A7区的电源短路帽JD5A7打到右端。在Keil环境连续运行该程序,观察实验结果。电路图:图2-1 8个独立式按键电路 图2-2 6位静态数码管显示接口电路DBUFEQU30HDATEQUP3.0CLKEQUP3.1ORG0000HL0:MOVP1, #0FFHL1:MOVA, P1CJNEA, #0FFH,KEYPUTSJMPL1KEYPUT: CJNEA,#0FEH,NEXT1SJ

4、MPK0NEXT1:CJNEA,#0FDH,NEXT2SJMPK1(请自行展开填写)K0:MOVB,#00HLCALLDISPLJMPL0K1:MOVB,#01HLCALLDISPLJMPL0(请自行展开填写)LJMPL0DISP:MOVDBUF, BMOVDBUF+1,BMOVDBUF+2,BMOVDBUF+3,BMOVDBUF+4,BMOVDBUF+5,B MOVR0,#DBUFMOVDPTR,#TABMOVR2,#06HDP0:MOVA,R0MOVCA,A+DPTRMOVR3,#08HDP1:RLCAMOVDAT,CCLRCLKSETBCLKDJNZR3,DP1INCR0DJNZR2,D

5、P0RETTAB:DB 3FH,06H,5BH,4FH,66H,6DH ; 0,1,2,3,4,5DB 7DH,07H,7FH,6FH,77H,7CH ; 6,7,8, 9,A,BDB 58H,5EH,79H,71H,00H,40H ; C,D,E,F, ,- END 动态显示实验6位动态数码管显示的接口电路设计如图2-3所示,假设P0口输出显示的段码,P2口输出位码,用8P数据线将80C51/C8051F020MCU模块的JD0(P0口)、JD2(P2口)分别与A7区的JD1A7、JD2A7相连;A7区的电源短路帽JD5A7打到右端。在Keil环境连续运行该程序,观察实验结果。图2-3 6位

6、动态数码管显示接口电路流程图如下:在动态数码管上显示168168的源程序:DBUF EQU 30H TEMP EQU 40H ORG 0000H LJMP disp ORG 0100H disp: MOV 30h,#8 MOV 31h,#6 MOV 32h,#1 MOV 33h,#8 MOV 34h,#6 MOV 35h,#1 MOV R0,#DBUF MOV R1,#TEMP MOV R2,#6 MOV DPTR,#SEGTABDP00: MOV A,R0 MOVC A,A+DPTR MOV R1,A INC R1 INC R0 DJNZ R2,DP00DISP0: MOV R0,#TEMP

7、 MOV R1,#6 MOV R2,#1 DP01: MOV A,R0 MOV P0,A MOV A,R2 MOV P2,A ACALL DELAY MOV A,R2 RL A MOV R2,A INC R0 DJNZ R1,DP01 SJMP DISP0SEGTAB:DB 3FH,06H,5BH ; 0,1,2DB 4FH,66H,6DH ; 3,4,5DB 7DH,07H,7FH, ; 6,7,8,DB 6FH,77H,7CH ; 9,A,BDB 58H,5EH,7BH, ; C,D,EDB 71H,00H,40H ; F, ,-DELAY: MOV R4,#03HAA1: MOV R5,

8、#0FFHAA: NOP NOP DJNZ R5,AA DJNZ R4,AA1 RET END5. 设计型实验内容 在最后一个数码管上依次显示a、b、.f各段,每段显示时间为100ms,用T0定时器实现;1)源程序ORG 0000H LJMP STARTORG 0030H START: MOV TMOD,#01H ;计数器0工作于方式1 MOV TH0,#0D8H ;设置10ms定时初值 MOV TL0,#0F0H SETB TR0 MOV R7,#10 MOV P2,#01 L1: MOV A,#01H MOV R6,#06 L2: JBC TF0,RE ;等待定时器溢出SJMP $ RE:

9、 MOV TH0,#0D8H ;重置计数初值 MOV TL0,#0F0H DJNZ R7,L2 MOV R7,#10 MOV P0,A RL A ;存入下一个显示的段码 DJNZ R6,L2;利用动态数码管扫描实现 LJMP L1 END 2) 硬件连接将“静态数码显示/动态数码显示”扩展板插到实验箱右上角的扩展区中;用8p数据线将80C51 MCU模块的JD0(P0口),JD2(P2口)分别与A7区的JD1A7,JD2A7相连;A7区的电源短路帽JD5A7打到右端。 3) 实验结果看到最后一个动态数码管上依次循环显示八段码外围,每段显示时间100s。 分别指定IO控制动态扫描显示模块或静态显

10、示模块电路,画出流程并设计程序实现数码管显示自己的学号后六位号码;1)流程图2) 源程序MOV 30H,#9MOV 31H,#0MOV 32H,#0MOV 33H,#4MOV 34H,#0MOV 35H,#1;在30H至35H逆序存入学号后六位MOV R0,#30HMOV R1,#40HMOV R2,#6MOV DPTR,#TABMM: MOV A,R0MOVC A,A+DPTRMOV R1,AINC R1INC R0DJNZ R2,MM;查询得到学号后六位的段码,对应存放在40H至45H中NN: MOV R0,#40HMOV R1,#6MOV R2,#1;设置位码初值YY: MOV A,R0

11、MOV P0,A;显示MOV A,R2MOV P2,A ACALL DELAY;调用延时1ms程序MOV A,R2RL AMOV R2,AINC R0;指向下一个数字DJNZ R1,YY;循环,未结束,取下一个数SJMP NN ;开始新的循环显示TAB: DB 3FH,06H,5BHDB 4FH,66H,6DHDB 7DH,07H,7FH,6FHDELAY: MOV R4,#03HAA1:MOV R5,#0FFHAA:NOPNOPDJNZ R5,AADJNZ R4,AA1RETEND3) 实验结果运行程序,能够在动态显示模块上显示学号后六位 104009 用按键输入自己的学号,并在静态或动态数

12、码管上显示出来。1) 流程图2) 源程序DATEQUP3.0CLKEQUP3.1MAIN:MOVR0,#6LOOP:ACALLKEY;查询按键ACALLDISP;显示键值ACALLDELAY;延时,防止连击DJNZR0,LOOP;6次循环SJMP$;查询按键程序KEY:MOVP1,#0FFHKEY1:MOVA,P1CJNEA,#0FFH,KEYPUTSJMPKEY1KEYPUT:CJNEA,#0FEH,NEXT1SJMPKONEXT1:CJNEA,#0FDH,NEXT2SJMPK1NEXT2:CJNEA,#0FBH,NEXT3SJMPK2NEXT3:CJNEA,#0F7H,NEXT4SJMPK

13、3NEXT4:CJNEA,#0EFH,NEXT5SJMPK4NEXT5:CJNEA,#0DFH,NEXT6SJMPK5NEXT6:CJNEA,#0BFH,NEXT7SJMPK6NEXT7:CJNEA,#07FH,KEY1SJMPK7KO:MOVA,#3FHRETK1:MOVA,#06HRETK2:MOVA,#5BHRETK3:MOVA,#4FHRETK4:MOVA,#66HRETK5:MOVA,#6DHRETK6:MOVA,#7DHRETK7:MOVA,#07HRETDISP:MOVR7,#8DP1:RLCAMOVDAT,CCLRCLKSETBCLKDJNZR7,DP1RET;延时程序DELA

14、Y:MOVR4,#0FFHLP0:MOVR5,#0FFHLP1:NOPNOPDJNZR5,LP1DJNZR4,LP0RETEND 3) 硬件连接用8p数据线将80C51 MCU模块的JD1(P1口)与查询式键盘模块JD1C7相连。在实验箱右上角的扩展区中插入静态串行显示模块,用二号线将80C51 MCU模块的P3.0(RXD),P3.1(TXD)分别与静态数码显示模块的DIN,CLK相连;将A7区的电源短路帽JD5A7打到右端。4) 实验结果每按一次键,就把对应键值在最后一个静态数码管上显示出来,同时之前输入的键值左移一位。6. 综合型实验 循环显示6个数码管的边缘各段,形成一个运动着的大边框

15、。1)源程序 ORG 0000H MOV 30H,#02H MOV 31H,#04H MOV 32H,#08H MOV 33H,#10H MOV 34H,#20H MOV 35H,#01H START: MOV R0,#30H;动态显示段码 MOV R1,#2 MOV R2,#1 L1:MOV A,R0 ;显示最右边LED的b,c段 MOV P0,A MOV A,R2MOV P2,A;输出位码 ACALL DELAY INC R0 DJNZ R1,L1 MOV R1,#6 L2: MOV A,R0 ;从右到左显示LED的d段 MOV P0,A MOV A,R2 MOV P2,A ACALL D

16、ELAY RL A MOV R2,A DJNZ R1,L2 MOV R2,#20H ;修正位码 MOV R1,#2 INC R0 L3: MOV A,R0 ;显示最左边LED的e,f段 MOV P0,A MOV A,R2 MOV P2,A ACALL DELAY INC R0 DJNZ R1,L3 MOV R1,#6 L4:MOV A,R0 ;从左到右显示LED的a段 MOV P0,A MOV A,R2 MOV P2,A ACALL DELAY RR A MOV R2,A DJNZ R1,L4 LJMP START DELAY: MOV R3,#0FAH MOV R4,#0C8HDELAYLO

17、OP:DJNZ R3,DELAYLOOP DJNZ R4,DELAYLOOP RET END2) 硬件连接将“静态数码显示/动态数码显示”扩展板插到实验箱右上角的扩展区中;用8p数据线将80C51 MCU模块的JD0(P0口),JD2(P2口)分别与A7区的JD1A7,JD2A7相连;A7区的电源短路帽JD5A7打到右端。 3) 实验结果看到从右到左六个动态数码管最外围大边框依次循环点亮。 按键连击的消除和利用。利用连击现象,当按键时间长于2秒时,每0.5秒在个位上加1,连续累加,直到按键释放。 分别基于动态扫描显示模块、静态显示模块电路,画出流程并设计程序实现数码管从右到左滚动显示自己的学号的所有位数;7. 思考心得1、 当主程序较为复杂,延时比较长,有时实现定时中断容易出现误判,并且往往是错过溢出中断时刻。在这样情况下采用嵌套循环子程序进行延时比较稳定可靠。如果采用自动重装载定时器初值可以改善这种情况,相比定时器工作在方式零和方式一,不仅定时更为精确,也不会出现错过溢出中断标志置。2、 按键输入必须加入延时消抖,消除按键抖动的影响。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号