8×8点阵数字滚动显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
项目一8×8点阵数字滚动显示
LED点阵的元件符号及内部结构图:
ﻩﻩ
对应编码:
00H, 00H, 00H,00H, 00H, 00H, 00H, 00H ﻩﻩ;NULL
ﻩ 00H, 00H, 3EH, 41H, 41H, 41H, 3EH, 00H ﻩﻩ; 0
00H, 00H, 00H, 00H, 21H, 7FH,01H,00H ;1
2
ﻩ 00H, 00H, 27H, 45H, 45H, 45H,39H, 00Hﻩﻩ
;
;
3
00H, 00H, 22H,49H, 49H, 49H, 36H, 00H ﻩﻩ
ﻩ00H, 00H, 0CH, 14H, 24H, 7FH, 04H,00H ﻩ; 4
5
;
ﻩ 00H, 00H, 72H, 51H, 51H, 51H, 4EH, 00H ﻩﻩ
ﻩ00H, 00H, 3EH, 49H, 49H, 49H, 26H, 00H ; 6
ﻩ 00H, 00H, 40H, 40H,40H, 4FH, 70H, 00H ﻩﻩ; 7
ﻩ00H, 00H,36H, 49H, 49H, 49H, 36H, 00H ﻩﻩ; 8
ﻩ00H,00H, 32H, 49H, 49H, 49H, 3EH, 00H ﻩ; 9
ﻩ 00H,00H, 00H, 00H, 00H, 00H, 00H, 00Hﻩ;NULL
硬件设计原理:
单片机利用外部晶振作为时钟信号输入,RST端口接入上电复位信号使它加电后自动进行复位操作。将要显示的字符码表编入单片机的程序中,由单片机控制时序输出相应的扫描数据和字符数据。行码数据由单片机P0口输出,经一个双向总线收发器控制传输方向后进入LED点阵,点亮相应的发光二极管。列码扫描信号由P3口输出后,直接输入LED点阵控制8列的扫描,每列选
通时间为5ms,看上去就像8列同时显示的效果一样。加上行中相应的LED灯被点亮,就能看到显示的字符了。
三、源程序代码:
R_CNT EQU 31Hﻩﻩ;列码R_NCT=31H单元
NUMB EQU 32Hﻩ;行码NUMB=32H单元
TCOUNT EQU 33Hﻩ;拉幕计数值TCOUNT=33H单元
ﻩORG 00Hﻩﻩ;程序起始地址
LJMP STARTﻩ
ORG 0BHﻩﻩ;中断入口地址
ﻩLJMP INT_T0ﻩ
ﻩORG 30Hﻩ;子程序入口地址
START: ﻩﻩ;主程序开始
ﻩMOV R0, #00H ﻩ;每列的行码起始序号置0
ﻩMOV R_CNT, #00Hﻩ;列:初值00送到31H单元
ﻩMOV NUMB, #00Hﻩﻩ;行:初值00送到32H单元
ﻩMOV TCOUNT, #00Hﻩ;计数单元初值置0
ﻩMOV TMOD, #01Hﻩﻩ;计数定时器选用16位的计数器,工作在方式1
MOV TH0, #(65536-5000)/256ﻩﻩ;定时5ms。定时器高位初值为236
MOV TL0, #(65536-5000) MOD 256 ;定时器低位初值为120
ﻩSETB TR0ﻩﻩ;启动C/T的定时器T0
MOV IE, #82Hﻩ;CPU开中断
SJMP $ ﻩﻩﻩ;中断等待
I NT_T0: ﻩ
ﻩMOV TH0, #(65536-5000)/256 ﻩ;定时5ms,设置定时器T0高位初值为236
ﻩMOV TL0, #(65536-5000)/256ﻩﻩ;定时器T0低位初值为120
ﻩMOV DPTR, #TABﻩﻩ;读列码表首地址,放入DPTR
ﻩMOV A, R_CNTﻩﻩ;读列码偏移地址,放入A中
ﻩMOVCA, @A+DPTRﻩﻩ;基址变址寻址将寻到的列码数据放入A中
ﻩMOV P3,A ﻩﻩﻩ;将列码数据送P3口输出
ﻩMOV DPTR,#NUBﻩ;装入显示数据的地址
ﻩMOV A, NUMBﻩﻩ;显示幕次的偏移地址
ﻩMOVC A, @A+DPTRﻩﻩﻩ;寻到数据的行码地址
MOV P0, A ﻩﻩ;将该地址值输出
ﻩINC NUMBﻩﻩﻩ;行码地址加1
NEXT1: ﻩﻩﻩ
ﻩINC R_CNT ﻩﻩ;扫描列码地址加1
MOV A, R_CNTﻩﻩ;把列地址放入A中
ﻩCJNEA, #8, NEXT2ﻩ;A不等于8,转子程序NEXT2,否则往下执行
ﻩMOVR_CNT, #00H;就把列码置0
MOV NUMB, R0 ﻩ;行码地址送存储单元格中
NEXT2:
ﻩINC TCOUNT ﻩ;拉幕计数序号加1
MOV A, TCOUNTﻩ;将幕次序号送A中
ﻩCJNE A, #40, NEXT4ﻩ;此序号不等于40转Next4,否则往下执行
MOV TCOUNT, #00H ﻩ;把拉幕时序归0
ﻩINC R0 ﻩﻩﻩ;行码起始地址加1
ﻩCJNE R0, #88, NEXT3;行码自加次数不满11字符×8行/字符=88行就转Next3
ﻩMOV R0, #00Hﻩ;不然就把行码置0
NEXT3:
MOV NUMB,R0;送新的一幕行码起始位给R0
NEXT4:
RETIﻩﻩ;中断返回
TAB: ﻩ;列码码表
DB0FEH, 0FDH, 0FBH, 0F7H, 0EFH, 0DFH,0BFH,7FH ;列扫描从右向左NUB:ﻩ;行码码表,字符数据
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00Hﻩ;NULL
DB 00H, 00H, 3EH, 41H, 41H, 41H, 3EH, 00H ﻩ; 0
1
;
DB 00H, 00H, 00H, 00H,21H, 7FH, 01H, 00H ﻩﻩ
DB 00H, 00H, 27H, 45H, 45H, 45H, 39H, 00H ; 2
3
;
ﻩDB 00H, 00H, 22H, 49H, 49H, 49H, 36H, 00H ﻩﻩ
DB 00H, 00H, 0CH, 14H, 24H, 7FH, 04H, 00H ; 4
DB 00H, 00H, 72H, 51H, 51H, 51H,4EH, 00H ;5
DB 00H, 00H, 3EH, 49H, 49H, 49H, 26H, 00Hﻩﻩ; 6
ﻩDB00H, 00H, 40H, 40H, 40H, 4FH, 70H, 00H ;7
ﻩDB 00H, 00H, 36H,49H, 49H, 49H, 36H, 00H ﻩ; 8
ﻩDB00H, 00H, 32H, 49H, 49H,49H, 3EH, 00H ﻩ; 9
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ﻩﻩ;NULL
END ﻩﻩ;结束汇编
程序流图: