单片机键盘显示实验报告.docx

上传人:b****1 文档编号:2922742 上传时间:2023-05-05 格式:DOCX 页数:10 大小:37.73KB
下载 相关 举报
单片机键盘显示实验报告.docx_第1页
第1页 / 共10页
单片机键盘显示实验报告.docx_第2页
第2页 / 共10页
单片机键盘显示实验报告.docx_第3页
第3页 / 共10页
单片机键盘显示实验报告.docx_第4页
第4页 / 共10页
单片机键盘显示实验报告.docx_第5页
第5页 / 共10页
单片机键盘显示实验报告.docx_第6页
第6页 / 共10页
单片机键盘显示实验报告.docx_第7页
第7页 / 共10页
单片机键盘显示实验报告.docx_第8页
第8页 / 共10页
单片机键盘显示实验报告.docx_第9页
第9页 / 共10页
单片机键盘显示实验报告.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机键盘显示实验报告.docx

《单片机键盘显示实验报告.docx》由会员分享,可在线阅读,更多相关《单片机键盘显示实验报告.docx(10页珍藏版)》请在冰点文库上搜索。

单片机键盘显示实验报告.docx

单片机键盘显示实验报告

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

㈠实验目的

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.当键盘采用中断方式时,硬件电路应怎样连接

~是键输出线,~是扫描输入线。

输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5V电源,输出端接至8051的外部中断输入端。

移位寄存器的移位速率是多少

实验中要求计算的式子和结果之间相差一秒,移位寄存器的移位速率应该是每秒一位吧。

其实这个问题确实不知道怎么回答。

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

实验代码:

ORG0000H

AJMPMAIN

ORG0030H

MAIN:

MOV41H,#0BBH;对几个存放地址进行初始化

MOV42H,#0BBH

MOV43H,#0BBH

MOV44H,#0BBH

MOVSCON,#00H;初始化串行口控制寄存器,设置其为方式0

LCALLDISPLAY;初始化显示

KEY:

MOVR3,#08H;用来存放两个数据

MOVR4,#02H

MOVP1,#0FFH;初始化P1口

MOVA,P1;读取按键状态

CPLA;取正逻辑,高电平表示有键按下

JZKEY;A=0时无键按下,重新扫描键盘

LCALLDELAY1;消抖

MOVA,P1;再次读取按键状态

CPLA

JZKEY;再次判别是否有键按下

PUSHA

KEY1:

MOVA,P1

CPLA

ANLA,#0FH;判别按键释放

JNZKEY1;按键未释放,等待

LCALLDELAY1;释放,延时去抖动

POPA

JB,ADD1;K1按下转去ADD1

JB,SUB1;K1按下转去SUB1

JB,MUL1;K1按下转去MUL1

JB,DIV1;K1按下转去DIV1

LJMPKEY

 

ADD1:

LCALLBUFFER;显示加数和被加数

MOV43H,#049H

LCALLDISPLAY;显示加号

MOVA,R3

ADDA,R4

DAA

MOVR3,A;相加结果放入R6

ANLA,#0FH

MOVR4,A;结果个位放入R7

MOVA,R3

SWAPA;半字节交换,高四位放入低四位

ANLA,#0FH

MOVR3,A;结果的高位放入R6

LCALLL;显示缓存区设置

LCALLDELAY2;延时一秒后显示

LCALLDISPLAY

LJMPKEY

SUB1:

LCALLBUFFER;显示减数和被减数

MOV43H,#40H

LCALLDISPLAY;显示减号

MOVA,R3

CLRCY;CY清零

SUBBA,R4;做减法

PUSHA

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

JCF;判断最高位,若为1则跳转到负数

ZHENG:

POPA

MOVR4,A

MOVR3,#00H;高位清零

SJMPOUT

FU:

POPA

CPLA;取绝对值

INCA

MOVR4,A

MOVR3,#11H;显示负号

OUT:

LCALLL;显示缓存区设置

LCALLDELAY2;延时1s后显示

LCALLDISPLAY

LJMPKEY

MUL1:

LCALLBUFFER;显示两位乘数

MOV43H,#99H

LCALLDISPLAY;显示乘号

MOVA,R3

MOVB,R4

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

MOVB,#0AH

DIVAB;十进制转换

MOVR4,B;结果个位放入R7

MOVR3,A;结果的十位放入R6

LCALLL

LCALLDELAY2

LCALLDISPLAY;延时1s后显示

LJMPKEY

DIV1:

LCALLBUFFER;显示除数和被除数

MOV43H,#62H

LCALLDISPLAY;显示除号

MOVA,R3

MOVB,R4

DIVAB;A除以B

MOVR4,B;余数放在R4中

MOVR3,A;商放在R3中

MOVA,R4

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

MOV41H,A;显示余数

MOVA,R3

MOVCA,@A+DPTR

MOV43H,A;显示商

MOV42H,#00H

MOV44H,#00H

LCALLDELAY2;延时1S后显示

LCALLDISPLAY

LJMPKEY

BUFFER:

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

MOVDPTR,#TABL

MOVA,R4

MOVCA,@A+DPTR

MOV42H,A

MOVA,R3

MOVCA,@A+DPTR

MOV44H,A

RET

DISPLAY:

MOVR5,#04H;共四位需要显示

MOVR0,#41H

DISPLAY1:

MOVA,@R0

MOVSBUF,A

DISPLAY2:

JNBTI,DISPLAY2;是否传完了

CLRTI

INCR0

DJNZR5,DISPLAY1

RET

L:

MOVA,R4

MOVCA,@A+DPTR

MOV41H,A;R4对应的段码

MOVA,R3

MOVCA,@A+DPTR

MOV42H,A;R3对应的段码

MOV43H,#00H

MOV44H,#00H

RET

DELAY1:

;普通延时

MOVR1,#20H

DS1:

MOVR2,#0FFH

DS2:

DJNZR2,DS2

DJNZR1,DS1

RET

DELAY2:

MOVR6,#14H;定时1S

MOVTMOD,#01H

DS3:

MOVTH0,#3CH

MOVTL0,#0B0H;50ms

SETBTR0

LOOP:

JNBTF0,LOOP

CLRTF0

CLRTR0

DJNZR6,DS3;1s到,中断返回

RET

TABL:

DB0BBH09H0EAH6BH;段码表

DB59H73H0F3H0BH

DB0FBH7BH00H0DBH

DB0F1H0B2H0E9H0F2H

DB0D2H40H

实验结果及分析

按键1:

8+2=结果:

10

按键2:

8-2=结果:

6

按键3:

8*2=结果:

16

按键4:

8/2=结果:

4

从上面的结果可以看出,本次实验基本完成了实验要求。

本次实验主要运用了键盘接口和LED显示方面的知识,

掌握了如何读取键盘状态和消抖:

MOVP1,#0FFH;初始化P1口

MOVA,P1;读取按键状态

CPLA;取正逻辑,高电平表示有键按下

JZKEY;A=0时无键按下,重新扫描键盘

LCALLDELAY1;消抖

MOVA,P1;再次读取按键状态

CPLA

JZKEY;再次判别是否有键按下

PUSHA

KEY1:

MOVA,P1

CPLA

ANLA,#0FH;判别按键释放

JNZKEY1;按键未释放,等待

LCALLDELAY1;释放,延时去抖动

POPA

在计算过程的显示中复习了定时器的知识:

DELAY2:

MOVR6,#14H;定时1S

MOVTMOD,#01H

DS3:

MOVTH0,#3CH

MOVTL0,#0B0H;50ms

SETBTR0

LOOP:

JNBTF0,LOOP

CLRTF0

CLRTR0

DJNZR6,DS3;1s到,中断返回

RET

对于缓存区的设置这一块儿掌握的还不是很好,希望经过多次练习可以加深理解。

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2