《2022年单片机键盘扫描实 .pdf》由会员分享,可在线阅读,更多相关《2022年单片机键盘扫描实 .pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机原理及应用实验报告实验名称:键盘扫描一、 实验目的:1、掌握键盘和显示器的接口方法和编程方法。2、掌握键盘扫描和LED 八段码显示器的工作原理。二、 实验内容:利用实验系统提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。1、按原来的源程序进行运行调试,要成功。2、初始显示为自己学号的低6 位3、将左边开始第 3 位数码管的显示跟随按键输入变化而变化。4、在 3 的基础上让显示值和键码值相等。5、若只用键盘中的列扫描,而不使用行扫描,会有什么结果产生?三、 程序框图及电路连接图四、 源程序清单(注释部分请手写)1、显示自己学号的低6 位,
2、显示值为 680127,键码值分别为 082H,080H,0C0H,0F9H,0A4H,0F8H 。OUTBIT equ 0ffddh OUTSEG equ 0ffdch IN equ 0ffdeh LedBuf equ 60h org 0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - Start: mov sp,#40h mov LedBuf+0,#082h mov LedBuf+1,#080h mov LedBuf+2,#
3、0c0h mov LedBuf+3,#0f9h mov LedBuf+4,#0a4h mov LedBuf+5,#0f8h MLoop: call DisplayLED call ScanKey jb acc.5,MLoop jb acc.4,MLoop anl a,#00001111b mov dptr, #keytable (2)movc a, a+dptr mov dptr,#LedMap movc a,a+dptr mov LedBuf+5,a (1)sjmp MLoop Delay: mov r7,#0 DelayLoop: djnz r7,DelayLoop djnz r6,Del
4、ayLoop ret DisplayLED: mov r0,#LedBuf mov r1,#6 mov r2,#20h Loop: mov dptr,#OUTBIT mov a,#0 movx dptr ,a mov a,r0 mov dptr,#OUTSEG movx dptr ,a mov dptr,#OUTBIT mov a,r2 movx dptr ,a mov r6,#1 call Delay mov a,r2 rr a 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2
5、页,共 4 页 - - - - - - - - - mov r2,a inc r0 djnz r1,Loop ret ScanKey: setb RS1 mov r2,#0feh mov r3,#08h mov r0,#00h LoopS: mov r1,#Low(OUTBIT) mov a,r2 movx r1,a rl a mov r2,a inc r1 movx a,r1 cpl a anl a,#0fh jnz Scan (3)inc r0 djnz r3,LoopS ReTKey3:mov a,#20h TKey3: mov r2,a clr a mov r1,#Low(OUTBIT
6、) movx r1,a mov a,r2 clr RS1 ret Scan1: mov a, r0 sjmp TKey3 Scan: cpl a jb acc.0,TKey0 mov a,#00h sjmp EndLoop TKey0: jb acc.1,TKey1 mov a,#08h sjmp EndLoop TKey1: jb acc.2,TKey2 mov a,#10h sjmp EndLoop TKey2: jb acc.3,ReTKey3 mov a,#18h 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心
7、整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - EndLoop:add a,r0 sjmp TKey3 LedMap: db 0c0h,0f9h,0a4h,0b0h,099h,092h,082h,0f8h db 080h,090h,088h,083h,0c6h,0a1h,086h,08eh KeyTable: db 07h,04h,08h,05h,09h,06h,0ah,0bh db 01h,00h,02h,0fh,03h,0eh,0ch,0dh end 2、在原有的程序上修改:把( 1)处的 mov LedBuf+5,a 改为 mov LedBuf+2,a 3、在 2 的基础上让显示值和键码值相等:把(2)处的 mov dptr, #keytable改为 mov dptr, # LedMap 然后把后两行删除4、只用键盘中的列扫描,而不使用行扫描把( 3)处的 jnz Scan改为 jnz Scan1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -