2007级热动专业《单片机原理及应用》实验指导书(9)

2019-08-31 11:07

0075 90FE04 mov dptr, #CLK164 0078 D2E0 setb acc.0 007A F0 movx @dptr, a 007B C2E0 clr acc.0

007D F0 movx @dptr, a 007E EB mov a, r3

007F D5F0EB djnz B, DLP 0082 90FE02 mov dptr, #OUTBIT 0085 EA mov a, r2

0086 F0 movx @dptr, a ; 显示一位八段管 0087 7E01 mov r6, #1

0089 1156 call Delay

008B EA mov a, r2 ; 显示下一位 008C 03 rr a

008D FA mov r2, a 008E 08 inc r0

008F D9D2 djnz r1, Loop 0091 22 ret ToLED:

0092 900046 mov dptr, #LEDMap 0095 93 movc a, @a+dptr 0096 22 ret Start:

0097 758902 mov TMOD, #02h ; 模式2, 定时器 009A 758CCE mov TH0, #T100us

009D 758ACE mov TL0, #T100us

00A0 75A882 mov IE, #10000010b ; EA=1, IT0 = 1 00A3 754000 mov Hour, #0 00A6 754100 mov Minute, #0 00A9 754200 mov Second, #0

00AC 754327 mov C100us, #high(Tick) 00AF 754410 mov C100us+1, #low(Tick)

00B2 D28C setb TR0 ; 启动定时器0 MLoop:

00B4 E540 mov a, Hour 00B6 75F00A mov b, #10 00B9 84 div ab 00BA 1192 call ToLED

00BC F560 mov LEDBuf, a 00BE E5F0 mov a, b 00C0 1192 call ToLED 00C2 4480 orl a, #80h

00C4 F561 mov LEDBuf+1, a 00C6 E541 mov a, Minute 00C8 75F00A mov b, #10 00CB 84 div ab 00CC 1192 call ToLED

39

00CE F562 mov LEDBuf+2, a 00D0 E5F0 mov a, b 00D2 1192 call ToLED 00D4 4480 orl a, #80h

00D6 F563 mov LEDBuf+3, a 00D8 E542 mov a, Second 00DA 75F00A mov b, #10 00DD 84 div ab 00DE 1192 call ToLED

00E0 F564 mov LEDBuf+4, a 00E2 E5F0 00E4 1192 00E6 F565 00E8 115D 00EA 0200B4 mov a, b call ToLED

mov LEDBuf+5, a call DisplayLED

ljmp MLoop End

40

第三部分 部分选做实验

实验七 BCD码到ASCII码转换

一、实验要求

给出一个BCD数,将其转换成ASCII值。

二、实验目的

1、了解BCD值和ASCII值的区别 2、了解如何将BCD值转换成ASCII值 3、了解如何查表进行数值转换及快速计算。

三、实验说明

此实验主要让学生了解数值的BCD码和ASCII码的区别,利用查表功能可能快速地进行数值转换。进一步了解数值的各种表达方式。

四、程序框图

给出要转换数BCD码 取出BCD码高四位 查表得到ASCII码 保存高位ASCII码 取出BCD码低四位 查表得到ASCII码 保存低位ASCII码 结束 41

五、程序清单

; 将 A 拆为二个 ASCII 码, 并存入 Result 开始的二个单元

Result equ 20h org 0 0000 020026 ljmp Start ASCIITab: 0003 303132 0006 333435 0009 363738 000C 394142 000F 434445

0012 46 db '0123456789ABCDEF'

; 定义数字对应的ASCII表 BinToHex:

0013 900003 mov dptr, #ASCIITab

0016 F5F0 mov b, a ; 暂存 A 0018 C4 swap a

0019 540F anl a, #0fh ; 取高四位 001B 93 movc a, @a+dptr ; 查ASCII表 001C F520 mov Result, a

001E E5F0 mov a, b ; 恢复 A 0020 540F anl a, #0fh ; 取低四位 0022 93 movc a, @a+dptr ; 查ASCII表 0023 F521 mov Result+1, a 0025 22 ret Start:

0026 758140 mov sp, #40h 0029 741A mov a, #1ah 002B 1113 call BinToHex 002D 02002D ljmp $ End

42

实验八 键盘扫描显示实验

一、实验要求

在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。

实验程序可分成三个模块:

○1键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。 ②○显示模块:将显示单元的内容在显示器上动态显示。 ③○主程序:调用键输入模块和显示模块。

二、实验目的

1.掌握键盘和显示器的接口方法和编程方法。

2.掌握键盘扫描和LED八段码显示器的工作原理。

三、实验电路及连线

这里只是键盘草图,详细原理参见图1

行码 列码

(0FE00H) (0FE02H)

四、实验说明

本实验仪提供了一个6×4的小键盘,向列扫描码地址(0FE02H)逐列输出低电平,然后从行码地址(0FE00H)读回。如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。这样就可以通过输出的列码和读取的行码来判断按下的是什么键。在判断有键按下后,要有一定的延时,防止键盘抖动。

列扫描码还可以分时用作LED的位选通信号。

43


2007级热动专业《单片机原理及应用》实验指导书(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:语文S版六年级上册《一单元 2 寓言两则《自相矛盾》》优质课教学

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: