8×8点阵数字滚动显示

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 ﻩﻩ;结束汇编

程序流图:

相关文档
最新文档