单片机键盘显示实验报告.doc
文本预览下载声明
单片机的键盘和显示实验报告
㈠ 实验目的
掌握单片机I/O的工作方式;
掌握单片机以串行口方式0工作的LED显示;
掌握键盘和LED显示的编程方法。
㈡ 实验器材
G6W仿真器 一台
MCS—51实验板 一台
PC机 一台
电源 一台
㈢ 实验内容及要求
实验硬件线路图见附图
从线路图可见,8051单片机的P1口作为8个按键的输入端,构成独立式键盘。四个LED显示器通过四个串/并移位寄存器74LS164接口至8051的串行口,该串行口应工作在方式0发送状态下,RXD端送出要显示的段码数据,TXD则作为发送时钟来对显示数据进行移位操作。
编写一个计算器程序,当某一键按下时可执行相应的加、减、乘、除运算方式,在四个显示器上显示数学算式和最终计算结果。
注:①通过按键来选择加、减、乘、除四种运算方式。
②输入两个数字均为一位十进制数,可预先放在内存中。
㈣ 实验框图 (见下页)
㈤ 思考题
当键盘采用中断方式时,硬件电路应怎样连接?
P1.4~P1.7是键输出线,P1.0~P1.3是扫描输入线。输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5 V电源,输出端接至8051的外部中断输入端。
2.74LS164移位寄存器的移位速率是多少?
实验中要求计算的式子和结果之间相差一秒,移位寄存器的移位速率应该是每秒一位吧。其实这个问题确实不知道怎么回答。。。。。
LED显示用的段码与教科书所提供的不同,本实验采用如下段码:
显示数符 段码 显示数符 段码 0 BBH A DBH 1 09H B F1H 2 EAH C B2H 3 6BH D E9H 4 59H E F2H 5 73H F D2H 6 F3H — 40H 7 0BH . 04H 8 FBH ┗┛ A1H 9 7BH ┗┛ 1AH 灭 00H P DAH
实验代码:
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:MOV 41H,#0BBH ;对几个存放地址进行初始化
MOV 42H,#0BBH
MOV 43H,#0BBH
MOV 44H,#0BBH
MOV SCON,#00H ;初始化串行口控制寄存器,设置其为方式0
LCALL DISPLAY ;初始化显示
KEY:MOV R3,#08H ;用来存放两个数据
MOV R4,#02H
MOV P1,#0FFH ;初始化P1口
MOV A,P1 ;读取按键状态
CPL A ;取正逻辑,高电平表示有键按下
JZ KEY ;A=0时无键按下,重新扫描键盘
LCALL DELAY1 ;消抖
MOV A,P1 ;再次读取按键状态
CPL A
JZ KEY ;再次判别是否有键按下
PUSH A
KEY1:MOV A,P1
CPL A
ANL A,#0FH ;判别按键释放
JNZ KEY1 ;按键未释放,等待
LCALL DELAY1 ;释放,延时去抖动
POP A
JB ACC.0,ADD1 ;K1按下转去ADD1
JB ACC.1,SUB1 ;K1按下转去SUB1
JB ACC.2,MUL1 ;K1按下转去MUL1
JB ACC.3,DIV1 ;K1按下转去DIV1
LJMP KEY
ADD1:LCALL BUFFER ;显示加数和被加数
MOV 43H,#049H
LCALL DISPLAY ;显示加号
MOV A,R3
ADD A,R4
DA A
MOV R3,A ;相加结果放入R6
ANL A,#0FH
MOV R4,A ;结果个位放入R7
MOV A,R3
SWAP A ;半字节交换,高四位放入低四位
ANL A,#0FH
MOV R3,A ;结果的高位放入R6
LCALL L ;显示缓存区设置
LCALL DELAY2 ;延时一秒后
显示全部