单片机c语言双边拉幕灯,51单片机实例-拉幕式数码显示.pdf

AT89S51AT89S51AT89S51AT89S51单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程 114114114114 21212121 拉幕式数码显示技术拉幕式数码显示技术 1 1 1 1 实验任务实验任务 用 AT89S51 单片机的 P0 0 AD0 P0 7 AD7 端口接数码管的a h 端 8 位数码管的 S1 S8 通过 74LS138 译码器的 Y0 Y7 来控制选通每个数码管的位选端 AT89S51 单 片机的 P1 0 P1 2 控制 74LS138 的 A B C 端子 在 8 位数码管上从右向左循环显 示 12345678 能够比较平滑地看到拉幕的效果 2 2 2 2 电路原理图电路原理图电路原理图电路原理图 图 4 21 1 3 3 3 3 系统板上硬件连线系统板上硬件连线系统板上硬件连线系统板上硬件连线 1 把 单片机系统 区域中的 P0 0 AD0 P0 7 AD7 用 8 芯排线连接到 动态数码显 AT89S51AT89S51AT89S51AT89S51单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程 115115115115 示 区域中的a h 端口上 2 把 三八译码模块 区域中的 Y0 Y7 用 8 芯排线连接到 动态数码显示 区域中 的 S1 S8 端口上 3 把 单片机系统 区域中的 P1 0 P1 2 端口用 3 根导线连接到 三八译码模块 区域中的 A B C 端口上 4 程序设计方法程序设计方法程序设计方法程序设计方法 1 动态数码显示技术 如何进行动态扫描 由于一次只能让一个数码管显示 因此 要显示 8 位的数据 必须经过让数码管一个一个轮流显示才可以 同 时每个数码管显示的时间大约在 1ms 到 4ms 之间 所以为了保证正确显示 我必须每隔 1ms 就得刷新一个数码管 而这刷新时间我们采用单片机的定时 计数器 T0 来控制 每定时 1ms 对数码管刷新一次 T0 采用方式 2 2 在进行数码显示的时候 要对显示单元开辟 8 个显示缓冲区 每个显示缓冲 区装有显示的不同数据即可 5 程序框图程序框图程序框图程序框图 主程序框图 开始 显示缓冲区初始化 必要参数初始化 T0 初始化 TH0 TL0 装入初值 T0 工作并开中断 等待中断 AT89S51AT89S51AT89S51AT89S51单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程 116116116116 中断服务程序框图 图 4 21 2 T0 中断入口 通过查表方式 获得显示代码送入 P0 位选数据送 P1 位选数据 8 吗 位选数据加 1 位选数据 0 CNT加1 0 4 秒定时到了吗 CNT 9 吗 CNT 0 根据 CNT 来决定显示几位数据 中断返回 AT89S51AT89S51AT89S51AT89S51单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程 117117117117 6 汇编源程序汇编源程序汇编源程序汇编源程序 DISPBUFEQU 30H DISPCNTEQU 38H DISPBITEQU 39H T1CNTAEQU 3AH T1CNTBEQU 3BH CNTEQU 3CH ORG 00H LJMP START ORG 0BH LJMP INT T0 START MOV DISPCNT 8 MOVA 10 MOV R1 DISPBUF LP MOV R1 A INC R1 DJNZ DISPCNT LP MOV DISPBIT 00H MOVT1CNTA 00H MOVT1CNTB 00H MOV CNT 00H MOVTMOD 01H MOVTH0 65536 1000 256 MOVTL0 65536 1000 MOD 256 SETB TR0 SETB ET0 SETB EA SJMP INT T0 MOVTH0 65536 1000 256 MOVTL0 65536 1000 MOD 256 MOVA DISPBIT ADDA DISPBUF MOV R0 A MOVA R0 MOV DPTR TABLE MOVCA A DPTR MOV P0 A MOVA P1 ANLA 0F8H ADDA DISPBIT MOV P1 A INC DISPBIT AT89S51AT89S51AT89S51AT89S51单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程 118118118118 MOVA DISPBIT CJNEA 08H NEXT MOV DISPBIT 00H NEXT INC T1CNTA MOVA T1CNTA CJNEA 50 LL1 MOVT1CNTA 00H INC T1CNTB MOVA T1CNTB CJNEA 8 LL1 MOVT1CNTB 00H INC CNT MOVA CNT CJNEA 9 LLX MOV CNT 00H MOVA CNT LLX CJNEA 01H NEX1 MOV 30H 8 LL1 LJMP DONE NEX1 CJNEA 02H NEX2 MOV 31H 8 MOV 30H 8 LJMP DONE NEX2 CJNEA 03H NEX3 MOV 32H 8 MOV 31H 8 MOV 30H 8 LJMP DONE NEX3 CJNEA 04H NEX4 MOV 33H 8 MOV 32H 8 MOV 31H 8 MOV 30H 8 LJMP DONE NEX4 CJNEA 05H NEX5 MOV 34H 8 MOV 33H 8 MOV 32H 8 MOV 31H 8 MOV 30H 8 LJMP DONE NEX5 CJNEA 06H NEX6 MOV 35H 8 MOV 34H 8 MOV 33H 8 MOV 32H 8 MOV 31H 8 MOV 30H 8 LJMP DONE AT89S51AT89S51AT89S51AT89S51单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程 119119119119 NEX6 CJNEA 07H NEX7 MOV 36H 8 MOV 35H 8 MOV 34H 8 MOV 33H 8 MOV 32H 8 MOV 31H 8 MOV 30H 8 LJMP DONE NEX7 CJNEA 08H NEX8 MOV 37H 8 MOV 36H 8 MOV 35H 8 MOV 34H 8 MOV 33H 8 MOV 32H 8 MOV 31H 8 MOV 30H 8 LJMP DONE NEX8 CJNEA 00H DONE MOV 37H 10 MOV 36H 10 MOV 35H 10 MOV 34H 10 MOV 33H 10 MOV 32H 10 MOV 31H 10 MOV 30H 10 LL LJMP DONE DONE RETI TABLE DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 00H END 7 C C C C 语言源程序语言源程序语言源程序语言源程序 include unsigned char code dispcode 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x77 0 x7c 0 x39 0 x5e 0 x79 0 x71 0 x00 unsigned char dispbitcode 0 xf8 0 xf9 0 xfa 0 xfb 0 xfc 0 xfd 0 xfe 0 xff unsigned char dispbuf 8 16 16 16 16 16 16 16 16 unsigned char dispbitcnt unsigned int t02scnt unsigned char t5mscnt unsigned char u unsigned chari AT89S51AT89S51AT89S51AT89S51单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程 120120120120 void main void TMOD 0 x02 TH0 0 x06 TL0 0 x06 TR0 1 ET0 1 EA 1 while 1 void t0 void interrupt 1 using 0 t5mscnt if t5mscnt 4 t5mscnt 0 P0 dispcode dispbuf dispbitcnt P1 dispbitcode dispbitcnt dispbitcnt if dispbitcnt 8 dispbitcnt 0 t02scnt if t02scnt 1600 t02scnt 0 u if u 9 u 0 for i 0 i 8 i dispbuf i 16 for i 0 i u i dispbuf i 8 AT89S51AT89S51AT89S51AT89S51单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程单片机实验及实践教程 121121121121

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值