实用单片机讲座:手把手教你学单片机(十六)——LED数码显示器接口技术.pdf_第1页
实用单片机讲座:手把手教你学单片机(十六)——LED数码显示器接口技术.pdf_第2页
实用单片机讲座:手把手教你学单片机(十六)——LED数码显示器接口技术.pdf_第3页
全文预览已结束

实用单片机讲座:手把手教你学单片机(十六)——LED数码显示器接口技术.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MCU Ap p l i c a t i o n 实用单片机讲座 : 口 周 兴 华 手把手教你学单片机 ( 十六 ) L E D数码显示器接 口技术 ( 接上期 ) 同样在S 2板做一个实 验 让 P 3 - P 0口的数码管依次快速 ( 显 示 时 间为 1 ms)显 示 1 2 3 4四个 字。 在我 的文档 中建立一个文件 目录 ( s 3 2) ,然后建立一个 s 3 2u v 2的工程 项 目, 最后建立源程序文件 ( $ 3 2a s m ) 。 输入下面的程序 : 序号 : 1 OR G 0 0 0 0 H 2 L J M PMAl N 3 OR G 03 0 H 4 MAI N MOV P 3 0 F 9 H 5 ACAL L DEL l mS 6 MOV P 3 , # 0 F F H 7 M0V P 2 0 A4 H 8 ACAL L DEL 1 mS 9 MOV P 2 , # 0 F F H 1 0 M0V P1 0 B0 H 11 ACAL LDEL l mS 1 2 M0V P1 0 F F H 1 3 MOV P 0 # 9 9 H 1 4 ACAL L DEL 1 ms 1 5 M0V P 0 # 0 F F H 1 6 AJ MPMAI N 1 7 DEL 1 ms : MOV R6# 02 H 1 8 DEL 1 : MOV R 7# 0F F H 1 9 DJ NZR7$ 2 0 DJ NZ R 6 DEL 1 2 1 R ET 2 2 END 编译 通过 后 ,将 S 3 2文件夹 中的 h e x文件烧录到 8 9 C5 1芯片 中 ,将芯 片插入 到 S 2型数码管试验板上 ,通 电 运行。 可看到四个( 个、 十、 百、 千位 ) 数 码 管同时稳定地 显示 1 2 3 4四个 字 , 没 有闪烁感。 这次尽管也采用了分时动态 扫描的方法依次点亮四位数码管。 但由 于每位数码管点亮的时间仅为 1 ms , 扫 描频率较高, 故显示效果十分理想。 我们对程序进行解 释。 序号 1 ( 程序解释, 以下 同 ) : 程序开始。 序号 2 : 跳转到 MAI N主程序处。 。 序号3 : 主程序 MA I N从地址0 0 O 0 H开始。 I 序 号 4: 将 立 即数 F 9 H送 P 3口 , 使千 位数码管显示 1 。 序号 5 : 调用 1毫秒延时子程序 , 维持 千位数码管点亮。 I 序 号 6: 将 立 即数 F F H送 P 3口 , 熄 灭 千位数码管。 。 序号 7 : 将立即数 A 4 H送 P 2口, 使百 位数码管显示 2 。 序号 8 : 调用 1毫秒延时子程序 , 维持 百位数码管点亮。 序 号 9 : 将 立 即数 F F H送 P 2口, 熄灭 百位数码管。 序号 1 0 : 将立即数 B 0 H送 P 1口, 使十 位数码管显示 3 。 序号 1 1 : 调用 1 毫秒 延时子程序 , 维持 十位数码管点亮。 序号 1 2 : 将立即数 F F H送 P 1口, 熄灭 十位数码管。 序号 1 3 : 将立 即数 9 9 H送 P 0口, 使个 位数码管显示 4 。 序号 1 4 : 调用 1 毫秒延时子程序, 维持 个位数码管点亮。 序号 1 5 : 将立即数 F F H送 P 0口, 熄灭 个位数码管。 序号 1 6 : 跳转到 MA I N处循环运行。 序号 1 7 - 2 1 : 1毫秒延时子程序 。 序号 2 2 : 程序结束。 l 最后我们在 S 2板做一个综合实 验, 让 S 2板成为一个实时时钟。 设计一个电子钟程序的基本思路 为 :让定 时器 T 0作 为时钟基准 , 每 5 0 ms 产生一次定时中断。此外, 我们还 需建立 5 0 ms 计数单元、 秒计数单元 、 分 计数单元、 时计数单元各一个。 每次定时 中断时 5 0 ms计数单元加 1 。还要建立 一 个走时转换子程序,其工作是判断走 时, 5 0 ms计数单元满 2 O时令秒计数单。 元加 1 , 秒计数单元满 6 0时令分计数单 元加 1 , 分计数单元满 6 0时令时计数单 元加 1 , 时计数单元满 2 4时令时、 分计 数单元清零。另外分别建立一个数码管 显示子程序及一个按键判断子程序, 用 于显示及调整时间。 主程序的工作是: 先 判有无键按下?若有则调用按键判断子 程序, 随后分别调用走时转换子程序、 数 码管显示子程序 , 反复执行。 在我的文档中建立一个文件 目录 ( $ 3 3) ,然后建 立一个 $ 3 3 u v 2的工 程项 目,最 后建 立源 程 序文 件 ( $ 3 3 a s m ) o 输入下面的程序 : 序号 : 1 F L A G B I T2 5 H 0 2 Dl DA DAT A 2 0 H 3 SE C DA T A 21 H 4 MI N DAT A 2 2 H 5 H0UR DAT A 2 3 H 6 0R G 0 0 0 0H 7 U MPMAI N 8 0R G 00 0 BH 9 L J MPCL OCK 1 0 0R G 0 3 0 H 1 1 MAl N: MOV T MOD 01 H 1 2 M0V T L 0 # 0 BO H 1 3 MOV T H0 3 CH 1 4 SE T B E T 0 1 5 SE T BT R0 1 6 M0V DI DA# 0 0 H 1 7 SE T B E A 1 8 B EGl N: MOV P 3 # 7F H 1 9 M0VA P 3 2 0 CJ NEA#7 F H NE X T 21 SE T B P 3 7 2 2 ACAL L CONV 2 3 ACAL LDl S 2 4 J B F L AG F L AG SE C 2 5 S E TB P 2 7 2 6 AJ MP BE Gl N 2 4 电子制作2 0 8 4年 第4期 维普资讯 MCU Ap pl i c a t i on 2 7 F L AG SE C: CL R P 2 7 2 8 AJ MP BE GI N 2 9 NE X T : ACAL L KE Y 3 0 AJ MP BE GI N 31 KE Y: ACAL L DEL 1 0 MS 32 J B P 3 0 , HOUR KE Y 3 3 MI N ADJ : CL R C 3 4 MOVA MI N 3 5 I NC A 3 6 DA A 3 7 CJ NE A# 6 0H X1 3 8 CL R A 3 9 X1 : MOVMI N A 4 0 ACAL LDI S 41 ACAL L DEL 2 0 0 MS 4 2 M0V P 3 # 7 F H 4 3 J NB P3 0 MI N AD J 4 4 H0UR KE Y : J B P 3 1 X2 4 5 HOUR ADJ : CL R C 4 6 MOV A, HOUR 4 7 I NC A 4 8 DA A 4 9 CJ NE A # 2 4H X 3 5 0 CL R A 51 X 3: MOVHOURA 5 2 ACAL LDI S 5 3 ACAL L DEL 2 0 0 MS 5 4 X2 : MOV P 3, # 7 F H 5 5 J NB P 3 1 H0UR ADJ 5 6 SE T B P 3 7 5 7 RE T 5 8 C0NV: M0V A DI DA 5 9 CJ NE A # 0 AH F1 6 0 SE T B F L AG 61 F1 : CJ NE A #1 4 H D0NE 6 2 CL R FL AG 6 3 M0VDI DA# 0 0 H 6 4 MOVA SE C 6 5 ADD A # 01 H 6 6 DA A 6 7 M0VSE CA 6 8 CJ NE A # 6 0 H DONE 6 9 M0V SEC # 0 0 H 7 0 M0VA MI N 7 1 ADD A # 01 H 7 2 DA A 7 3 M0V MI N A 7 4 CJ NE A# 60 H DONE 7 5 M0V MI N#0 0H 7 6 M0V A H0UR 7 7 ADD A # 01 H 7 8 DA A 7 9 M0V H0UR A 8 0 CJ NE A # 2 4 H DONE 81 M0VH0UR# 0 0 H 8 2 D0NE: RE T 8 3 DI S:M0V A MI N 8 4 ANL A # 0 F H 8 5 M0V DP T R # T AB 8 6 M0VC A A+DPT R 8 7 M0V P 0 A 8 8 ACAL L DEL 1 MS 8 9 M0VA MI N 9 0 S WAP A 91 ANL A # 0 F H 9 2 M0VC A A+DPT R 9 3 M0V P1 A 9 4 ACAL L DE L1 MS 9 5 M0V A H0UR 9 6 ANL A#0 F H 9 7 M0VC A A+DP TR 9 8 M0V P 2A 9 9 ACAL L DE L1 MS 1 0 0 M0V A H0UR 1 01 S WAP A 1 0 2 ANL A# 0F H 1 0 3 M0VC A A+DP TR 1 0 4 MOV P 3A 1 0 5 ACAL L DE L1 MS 1 0 6 RE T 1 0 7 CL 0CK: M0V TL 0 #0 B OH 1 0 8 M0V TH0 # 3 CH 1 0 9 I NC DI DA 1 1 0 RE T I 1 1 1 DEL 1 MS : M0V R 6# 0 2H 1 1 2 DEL 1 : MOV R7# 0 F F H 1 1 3 DJ NZ R 7 $ 1 1 4 DJ NZ R 6 DEL 1 1 1 5 R E T 1 1 6 DE L1 0 MS: M0V R 5#1 0 H 1 1 7 T X1 : MOV R4# 0 F F H 1 1 8 DJ NZ R 4 $ 1 1 9 DJ NZ R 5 T X1 1 2 0 R E T 1 21 DE L 2 0 0 MS: MOV R 3 #1 4 H 1 2 2 T X2 : ACAL L DE Ll 0 MS 1 2 3 DJ NZ R3 T X2 1 2 4 RE T 1 2 5 T AB: DB 0 CO H0F 9 H 0 A4 H 0B 0 H 0 9 9 H 0 9 2H 0 8 2 H, 0 F 8 H 1 2 6 DB 0 8 0 H 0 9 0 H, 0 8 8 H, 0 8 3 H,0 C6 H, 0 A1 H, 0 8 6 H,0 8E H 1 2 7 E ND 编译通过后 。将 S 3 3文件夹 中的 h e x文件烧录 到 8 9 C 5 1芯片 中,将芯 片插入到 S 2型数码管试验板上 。通 电 运行。 可看到四个( 个、 十、 百、 千位 ) 数 码管显示 0 0 0 0 ,同时百位数码管的小 数点每秒闪动一次 ( 作秒点显示 ) 。按 下 3 #键 ( S 9) 。 可调 整个位 、 十位 显示 的 “ 分 ”; 按下 6 #键 ( S1 0) 。 可调 整百 位 、 千位显示的 “ 时” 。 我们对程序进行解释 。 序号 1 ( 程 序解 释 。以下 同 ) :定义 2 5 H 0为秒点 闪烁 的位标志 F L A G。 序号 2 : 定义 2 0 H单元为5 0 ms 计数单 元 DI DA。 序号3 : 定义 2 1 H单元为秒计数单元S 宦 c o 序号 4:定义 2 2 H单元为分计数单 元 MI N。 序号 5 :定义 2 3 H单元为时计数单元 HOUR。 序号 6 : 程序从地址 0 0 0 0 H开始。 序号 7 : 跳转到 MAI N处。 序号 8 : 定时器 T 0中断入口地址 0 0 0 B H。 序号 9 : 跳转到 CL OCK处。 序号 1 0: 主程序从地址 0 0 3 0 H开始。 序号 1 1 : 主 程 序开 始 。 置 定 时器 T O 方 式 1 。 序号 1 2 : 定时器 T 0装入 5 0 ms初值 。 序号 1 3 : 定时器 T 0装入 5 0 ms初值 。 序号 1 4 : 开放 T O中断。 序号 1 5 : 启动定 时器 T 0 。 序号 1 6 : 清除 5 0 ms 计数单元。 序号 1 7 : 开放 总中断。 序 号 1 8 :向 P 3 13送 立 即 数 7 F H。 即 P 3 7为低电平。 序号 1 9 : 读取 P 3口状态至累加器 A 。 序号 2 0:若 A中内容 不为 7 F H。 转 NE X T ; 否则顺序执行。 序号 2 1 : 置 P 3 7为高 电平。 序号 2 2 : 调用走时转换子程序。 序号 2 3 : 调用数码管显示子程 序。 序 号 2 4 : 判秒点 标 志 F L AG, 若 F L A G 为 1 , 转 F L A G S E C; 若 F L A G 为 0 顺 序执 行。 序号 2 5 : 置 P 2 7为高电平。 熄灭秒点。 序号 2 6 : 跳转到 B E GI N处循环执行。 电子制作2 0 0 4年 第4期2 5 维普资讯 序号 2 7 : 置 P 2 _ 7为低 电平 , 点亮秒点 。 序号 2 8 : 跳转到 B E GI N处循环执行 。 序号 2 9 : 调 用按键判断子程序。 序号 3 0 : 跳转到 BE GI N处循环执行 。 序 号 3 1 :按键判断子程序开 始。调用 1 0 ms 延时子程序。 序号 3 2 :若 P 3 0为 0 (即按下 3 # 键】 , 顺 序 执 行 ; 否 则 跳 转 到 HOUR K E Y处。 序号 3 3 : 清除进位 CY 。 序号 3 4 :将分计数单元 MI N送累加器 Ao 序号 3 5 : 累加器 A加 1 。 序号 3 6 : 2 1 0进制调整。 序号 3 7 :若 A不为 6 0 H,跳转到 1 处; 若 A为6 0 H, 则顺序执行。 序号 3 8 : 清除累加器A。 序号 3 9 :调整后的累加 器 A 内容送 回 分计数单元 MI N 。 序号 4 0 : 调用显示子 程序 。 序号 4 1 : 调用 2 0 0 ms延时子程序。 序 号 4 2 :向 P 3 12 1 送 立 即数 7 F H, 即 P 3 7为低 电平。 序号 4 3 :若 P 3 0为 0 ( 即仍按下 3 # 键 ) ,跳 转 到 MI N AD J处 继 续 进 行 “ 分” 调整 ; 否N J ll 序执行。 序号 4 4 : 若 P 3 1为 0顺序执行 ; 否则 跳转到 X 2处。 序号 4 5 : 清除进位 CY 。 序号 4 6 : 将时计数单元 H OU R送累加 器 A 。 序号 4 7 : 累加器 A加 1 。 序号 4 8 : 2 1 0进制调整。 序号 4 9 :若 A不为 2 4 H,跳转到 X 3 处; 若 A为2 4 H。 则顺序执行。 序号 5 O : 清除累加器 A。 序 号 5 1 :调整后的累加 器 A 内容送 回 时计数单元 HOU R 。 序号 5 2 : 调 用显 示子程序。 序号 5 3 : 调 用 2 0 0 ms 延时子程序。 序 号 5 4 :向 P 3口送 立 即数 7 F H 即 P 3 7为低 电平。 序号 5 5 :若 P 3 1为 0 ( 即仍按下 6 # 键 ) ,跳转到 HOU R A D J处继 续进行 “ 时” 调 整; 否则顺序执行 。 序号 5 6 : 置 P 3 7为高电平。 序号 5 7 : 按键 判断子程序返 回。 序号 5 8 : 走 时转换子程序 开始。5 0 ms 计数单元内容送累加器 A 。 序号 5 9 : 若 A为0 A H( 十进制为 1 0) , 顺 序执行 ; 否则跳转 到 F 1处。 序号 6 O : 置位秒点标志 F L A G。 序号 6 1 : 若 A为 1 4 H( 十进制为 2 O) 顺序执行 : 否则跳转 到 D ONE处。 序号 6 2: 清除秒点标志 F L AG。 序号 6 3 : 清除 5 0 ms 计数单元。 序号 6 4 : 将秒计数单元内容送累加器A。 序号 6 5: 累加器加 1 。 序号 6 6 : 2 1 0 进制调整。 序号 6 7 :调整后的累加器 A内容送回1 秒计数单元 S E C。 序号 6 8 : 若 A为 6 0 H, 顺序执行; 否则l 跳转到 D ONE处。 序号 6 9 : 清除秒计数单元S E C。 序号 7 0 : 将分计数单元内容送累加器 A 。 序号 7 1 : 累加器加 1 。 序号 7 2 : 2 1 0进制调整 。 序号 7 3 :调整后的累加器 A内容送 回 分计数单元 MI N 。 序号 7 4 : 若 A为 6 0 H, 顺序执行; 否则 跳转到 D ONE处。 序号 7 5 : 清除分计数单元 MI N 。 I 序号 7 6 :将时计数单元内容送累加 器 A。 序号 7 7 : 累加器加 1 。 序号 7 8 : 2 1 0进制调整 。 序号 7 9 :调整后的累加器 A内容送回 时计数单元 H OU R 。 序号 8 O : 若 A为 2 4 H, 顺序执行; 否则。 E 转至 0 D ONE处。 序号 8 1 : 清除时计数单元 H OUR 。 序号 8 2 : 走时转换子程 序返 回。 序号 8 3 : 数码管显示子程序开始。分计 数单元送 累加器 A 。 序号 8 4 : 屏蔽分的高 4位。 1 序号 8 5 :数据表格首地址送数据指针 DP TR。 序号 8 6 : 根据A的内容查表。 序号 8 7 : 查表内容送 P 0口。 序号 8 8 : 调用 1 ms延时子程序 , 维持j 数码管显示。 序号 8 9 : 分计数单元送累加器 A。 序号 9 O : 交换累加器 A的高 4位 、 低 4 位 。 序号9 1 : 屏蔽分的高 4位。 1 序号9 2 : 根据A的内容查表。 序号 9 3 : 查表 内容送 P 1 13。 序 号 9 4 : 调 用 1 ms延时子 程 序 , 维 持 数码管显示。 : 序号 9 5 : 时计数单元送累加器 A 。 序号 9 6 : 屏蔽时的高 4位。 序号 9 7 : 根据 A的内容查表。 序号 9 8 : 查表内容送 P 2口。 序号 9 9 : 调 用 1 ms延 时子 程序 , 维持 数码管显示。 序号 1 O 0 : 时计数单元送累加器 A 。 序号 1 O 1 :交换累加器 A的高 4位、 低 4位 。 序号 1 O 2 : 屏蔽时的高 4位。 序号 1 O 3 : 根据 A的内容查表。 序号 1 O 4 : 查表 内容送 P 3 13。 序 号 1 O 5 : 调 用 1 ms延 时子程序 , 维持 数码管显示。 序号 1 0 6 : 数码管显示子程序返 回。 序号 1 0 7 : 定时器 T O中断

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论