单片机键盘显示实验报告

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机的键盘和显示实验报告

㈠实验目的

1.掌握单片机I/O的工作方式;

2.掌握单片机以串行口方式0工作的LED显示;

3.掌握键盘和LED显示的编程方法。

㈡实验器材

1.G6W仿真器一台

2.MCS—51实验板一台

3.PC机一台

4.电源一台

㈢实验内容及要求

实验硬件线路图见附图

从线路图可见,8051单片机的P1口作为8个按键的输入端,构成独立式键盘。四个LED显示器通过四个串/并移位寄存器74LS164接口至8051的串行口,该串行口应工作在方式0发送状态下,RXD端送出要显示的段码数据,TXD则作为发送时钟来对显示数据进行移位操作。

编写一个计算器程序,当某一键按下时可执行相应的加、减、乘、除运算方式,在四个显示器上显示数学算式和最终计算结果。

注:①通过按键来选择加、减、乘、除四种运算方式。

②输入两个数字均为一位十进制数,可预先放在内存中。

㈣实验框图(见下页)

㈤思考题

1.当键盘采用中断方式时,硬件电路应怎样连接?

P1.4~P1.7是键输出线,P1.0~P1.3是扫描输入线。输入与门用于产生按键中断,其输

入端与各列线相连,再通过上拉电阻接至+5 V电源,输出端接至8051的外部中断输入端。

2.74LS164移位寄存器的移位速率是多少?

实验中要求计算的式子和结果之间相差一秒,移位寄存器的移位速率应该是每秒一位吧。其实这个问题确实不知道怎么回答。。。。。

LED显示用的段码与教科书所提供的不同,本实验采用如下段码:

实验代码:

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 ;延时一秒后显示

LCALL DISPLAY

LJMP KEY

SUB1:LCALL BUFFER ;显示减数和被减数MOV 43H,#40H

LCALL DISPLAY ;显示减号

MOV A,R3

CLR CY ;CY清零

SUBB A,R4 ;做减法

PUSH A

RLC A ;带进位循环左移,最高位放入CY

JC F ;判断最高位,若为1则跳转到负数ZHENG: POP A

MOV R4,A

MOV R3,#00H ;高位清零

SJMP OUT

FU:POP A

CPL A ;取绝对值

INC A

MOV R4,A

MOV R3,#11H ;显示负号

OUT: LCALL L ;显示缓存区设置

LCALL DELAY2 ;延时1s后显示

LCALL DISPLAY

LJMP KEY

MUL1:LCALL BUFFER ;显示两位乘数

MOV 43H,#99H

LCALL DISPLAY ;显示乘号

MOV A,R3

MOV B,R4

MUL AB ;结果放入AB,A中是低8位,B中是高8位

MOV B,#0AH

DIV AB ;十进制转换

MOV R4,B ;结果个位放入R7

MOV R3,A ;结果的十位放入R6

LCALL L

LCALL DELAY2

LCALL DISPLAY ;延时1s后显示

LJMP KEY

DIV1:LCALL BUFFER ;显示除数和被除数

MOV 43H,#62H

LCALL DISPLAY ;显示除号

MOV A,R3

MOV B,R4

DIV AB ;A除以B

MOV R4,B ;余数放在R4中

MOV R3,A ;商放在R3中

MOV A,R4

MOVC A,@A+DPTR ;调用段选号

MOV 41H,A ;显示余数

MOV A,R3

MOVC A,@A+DPTR

MOV 43H,A ;显示商

MOV 42H,#00H

MOV 44H,#00H

LCALL DELAY2 ;延时1S后显示

LCALL DISPLAY

LJMP KEY

BUFFER: MOV 41H,#22H ;显示初始化,在做计算之前显示两个操作数,显示等号

MOV DPTR,#TABL

MOV A,R4

MOVC A,@A+DPTR

MOV 42H,A

MOV A,R3

MOVC A,@A+DPTR

MOV 44H,A

RET

DISPLAY:MOV R5,#04H ;共四位需要显示

相关文档
最新文档