1、微机原理与接口技术硬件实验报告光电 0605 胡凯 3063031104实 验 报 告课程名称:微机原理与接口技术 指导老师: 成绩: 实验名称:数码管动态显示 查询式键盘和静态显示 实验类型:综合型 同组学生姓名: 一、实验目的和要求(必填) 二、实验内容和原理(必填)三、主要仪器设备(必填) 四、操作方法和实验步骤五、实验数据记录和处理 六、实验结果与分析(必填)七、讨论、心得一、实验目的和要求1.掌握数字、字符转换成显示段码的软件译码方法。2.动态显示的原理和相关程序的编写。3.掌握键盘和显示器的接口方法和编程方法。4.掌握键盘和八段码显示器的工作原理。5.静态显示的原理和相关程序的编写
2、。二、实验内容和原理1.在最后一个数码管上依次显示 a b.f 各段,每段显示时间为 100ms,用 T0 定时器实现。2.循环显示 6 个数码管的边缘各段,形成一个运动着的大边框。3.用按键输入自己的学号,并在静态或动态数码管上显示出来。三、主要仪器设备80C51 实验开发系统、PC 机一台、导线若干四、操作方法和实验步骤1.数码管动态显示将“静态数码显示/动态数码显示 ”扩展板插到实验箱右上角的扩展区中;用 8P 数据线将 80C51/C8051F020MCU 模块的 JD0、JD2 分别与 A7 区的 JD1A7、JD2A7 相连;A7 区的电源短路帽 JD5A7 打到右端。编译无误后,
3、全速运行程序。2.查询式键盘和静态显示用 8P 数据线将 80C51/C8051F020MCU 模块的 JD1 与查询式键盘模块 JD1C7 相连。在实验箱右上角的扩展区中插入静态串行显示模块,用二号导线将 80C51/C8051F020MCU 模块的 P3.0、P3.1 分别与静态数码显示模块的 DIN、CLK 相连;将 A7 区的电源短路帽JD5A7 打到右端。编译无误后,全速运行程序。五、实验数据记录和处理1.在最后一个数码管上依次显示 a b.f 各段,每段显示时间为 100ms,用 T0 定时器实现。源程序如下:ORG 0000HAJMP MAIN微机原理与接口技术硬件实验报告光电
4、0605 胡凯 3063031104ORG 000BHAJMP NEXTORG 0030HMAIN: MOV P2, #1 ;送出位码MOV TMOD, #01H ;定时器 0 工作方式1MOV TH0, #3CH ;设置定时器初值MOV TL0, #0B0HMOV R7, #2MOV R6, #6MOV IE, #82H ;开中断SETB TR0MOV DPTR, #NXTAB ;表格首址送 DPTRSJMP $ ;等待中断NEXT: MOV TH0, #3CH ;设置定时器初值MOV TL0, #0B0HDJNZ R7, RETNMOV R7, #2MOV A, #0MOVC A, A+D
5、PTR ;查表获得段码MOV P0, A ;送出段码INC DPTR ;下一个段码DJNZ R6, RETNMOV R6, #6MOV DPTR, #NXTABRETN: RETINXTAB: DB 01H,02H,04H,08H,10H,20H2.循环显示 6 个数码管的边缘各段,形成一个运动着的大边框。这个程序只是在段码循环显示的基础上又增加了位码部分。使用两组工作寄存器,分别保存段码与位码的表格地址,DPTR 每次从这两组工作寄存器取值即可。ORG 0000HAJMP MAINORG 000BHAJMP ZMORG 0030HMAIN: MOV TMOD, #01H ;定时器 0 选择工
6、作方式 1MOV TH0, #3CH ;设置定时器初值MOV TL0, #0B0HMOV R7, #2MOV R6, #10HMOV IE, #82H ;开中断SETB TR0MOV DPTR, #ZMTAB ;表格首址送 DPTR微机原理与接口技术硬件实验报告光电 0605 胡凯 3063031104MOV R2, DPHMOV R3, DPLMOV DPTR, #ZMTAB2MOV R4, DPHMOV R5, DPLSJMP $ ;等待中断ZM: MOV TH0, #3CH ;重装定时器MOV TL0, #0B0HDJNZ R7, RETNMOV R7, #2MOV DPH, R2MOV
7、 DPL, R3MOV A, #0MOVC A, A+DPTR ;查表获得段码MOV P0, A ;送出段码INC R3 ;下一个字段MOV DPH, R4MOV DPL, R5MOV A, #0MOVC A, A+DPTR ;查表获得位码MOV P2, A ;送出位码INC R5 ;下一个字段DJNZ R6, RETNMOV R6, #10HMOV DPTR, #ZMTAB ;保存段码首址MOV R2, DPHMOV R3, DPLMOV DPTR, #ZMTAB2 ;保存位码首址MOV R4, DPHMOV R5, DPLRETN: RETIZMTAB: DB 01H,02H,04H,08
8、H,08H,08H,08H,08H,08H,10H,20H,01H,01H,01H,01H,01HZMTAB2: DB 1, 1, 1, 1, 2, 4, 8,10H,20H,20H,20H,20H,10H, 8, 4, 23.用按键输入自己的学号,并在静态或动态数码管上显示出来。DBUF EQU 30HTEMP EQU 40HORG 0000HLJMP STARTORG 0100HSTART: MOV A,#10HMAIN: ACALL DISP ;主程序ACALL KEY ;连续调用子程序AJMP MAIN ;完成各部分功能微机原理与接口技术硬件实验报告光电 0605 胡凯 3063031
9、104KEY: MOV P1,#0FFH ;检测是否有键按下MOV A,P1CJNE A, #0FFH, K00 ;没键按下返回AJMP KEYK00: ACALL DELAY ;有键按下延时去抖动MOV A,P1CJNE A,#0FFH,K01AJMP KEYK01: MOV R3,#8MOV R2,#0MOV B,AMOV DPTR,#K0TAB ;表头地址K02: MOV A,R2MOVC A,A+DPTRCJNE A,B,K04 ;查找键值K03: MOV A,P1 ;找到输出CJNE A,#0FFH,K03ACALL DELAYMOV A,R2RETK04: INC R2 ;在表中逐
10、个查找DJNZ R3,K02MOV A,#0FFHLJMP MAINK0TAB: DB 0FEH,0FDH,0FBH,0F7HDB 0EFH,0DFH,0BFH,07FHDISP: MOV DBUF,A ;数码管显示功能MOV DBUF+1,#16MOV DBUF+2,#16MOV DBUF+3,#16MOV DBUF+4,#16MOV R0, #DBUFMOV R1, #TEMPMOV R2, #5DP10:MOV DPTR,#SEGTABMOV A, R0MOVC A, A+DPTRMOV R1, AINC R0INC R1DJNZ R2, DP10MOV R0, #TEMP微机原理与接口
11、技术硬件实验报告光电 0605 胡凯 3063031104MOV R1, #1DP12:MOV R2, #8MOV A, R0DP13:RLC AMOV 0B0H,C;DIN, CCLR 0B1H ;CLKSETB 0B1H ;CLKDJNZ R2, DP13INC R0DJNZ R1, DP12RETSEGTAB:DB 3FH,06H,5BH,4FH,66H,6DHDB 7DH,07H,7FH,6FH,77H,7CHDB 58H,5EH,79H,71H,00H,40HDELAY: MOV R4, #02H ;延时子程序AA1: MOV R5, #0F8HAA: NOPNOPDJNZ R5, AADJNZ R4, AA1RETEND以上三个程序运行后均能达到题目的显示要求,编写无误。六、思考题例子中的程序如何确保每按一次键,只处理一次。答:例程采用的是查询式的按键识别方式,它判断是否有键按下的方法是:对所有行输出0,查询各列的值,如果各列全为 1,则无键按下;若不全为 1,则有键按下。当有键按下后,再进一步判断具体的键值、进行后续操作等。由于查询是由指令控制进行的,因此在每一次查询完成后,设置一个延时(例程中设置了 500us),这样每一次对按键的操作不会过快结束,可以保证每按一次键,只处理一次。