8×8点阵数字滚动显示_精品文档Word文档格式.doc
- 文档编号:13619296
- 上传时间:2022-10-12
- 格式:DOC
- 页数:6
- 大小:416.50KB
8×8点阵数字滚动显示_精品文档Word文档格式.doc
《8×8点阵数字滚动显示_精品文档Word文档格式.doc》由会员分享,可在线阅读,更多相关《8×8点阵数字滚动显示_精品文档Word文档格式.doc(6页珍藏版)》请在冰豆网上搜索。
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 ;
硬件设计原理:
单片机利用外部晶振作为时钟信号输入,RST端口接入上电复位信号使它加电后自动进行复位操作。
将要显示的字符码表编入单片机的程序中,由单片机控制时序输出相应的扫描数据和字符数据。
行码数据由单片机P0口输出,经一个双向总线收发器控制传输方向后进入LED点阵,点亮相应的发光二极管。
列码扫描信号由P3口输出后,直接输入LED点阵控制8列的扫描,每列选通时间为5ms,看上去就像8列同时显示的效果一样。
加上行中相应的LED灯被点亮,就能看到显示的字符了。
三、源程序代码:
R_CNTEQU31H ;
列码R_NCT=31H单元
NUMBEQU32H ;
行码NUMB=32H单元
TCOUNTEQU33H ;
拉幕计数值TCOUNT=33H单元
ORG00H ;
程序起始地址
LJMPSTART
ORG0BH ;
中断入口地址
LJMPINT_T0
ORG30H ;
子程序入口地址
START:
;
主程序开始
MOVR0,#00H ;
每列的行码起始序号置0
MOVR_CNT,#00H ;
列:
初值00送到31H单元
MOVNUMB,#00H ;
行:
初值00送到32H单元
MOVTCOUNT,#00H ;
计数单元初值置0
MOVTMOD,#01H ;
计数定时器选用16位的计数器,工作在方式1
MOVTH0,#(65536-5000)/256 ;
定时5ms。
定时器高位初值为236
MOVTL0,#(65536-5000)MOD256 ;
定时器低位初值为120
SETBTR0 ;
启动C/T的定时器T0
MOVIE,#82H ;
CPU开中断
SJMP$ ;
中断等待
INT_T0:
MOVTH0,#(65536-5000)/256 ;
定时5ms,设置定时器T0高位初值为236
MOVTL0,#(65536-5000)/256 ;
定时器T0低位初值为120
MOVDPTR,#TAB ;
读列码表首地址,放入DPTR
MOVA,R_CNT ;
读列码偏移地址,放入A中
MOVCA,@A+DPTR ;
基址变址寻址将寻到的列码数据放入A中
MOVP3,A ;
将列码数据送P3口输出
MOVDPTR,#NUB ;
装入显示数据的地址
MOVA,NUMB ;
显示幕次的偏移地址
寻到数据的行码地址
MOVP0,A ;
将该地址值输出
INCNUMB ;
行码地址加1
NEXT1:
INCR_CNT ;
扫描列码地址加1
把列地址放入A中
CJNEA,#8,NEXT2 ;
A不等于8,转子程序NEXT2,否则往下执行
MOVR_CNT,#00H ;
就把列码置0
MOVNUMB,R0 ;
行码地址送存储单元格中
NEXT2:
INCTCOUNT ;
拉幕计数序号加1
MOVA,TCOUNT ;
将幕次序号送A中
CJNEA,#40,NEXT4 ;
此序号不等于40转Next4,否则往下执行
MOVTCOUNT,#00H ;
把拉幕时序归0
INCR0 ;
行码起始地址加1
CJNER0,#88,NEXT3 ;
行码自加次数不满11字符×
8行/字符=88行就转Next3
MOVR0,#00H ;
不然就把行码置0
NEXT3:
MOVNUMB,R0 ;
送新的一幕行码起始位给R0
NEXT4:
RETI ;
中断返回
TAB:
;
列码码表
DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH ;
列扫描从右向左
NUB:
行码码表,字符数据
DB00H,00H,00H,00H,00H,00H,00H,00H ;
DB00H,00H,3EH,41H,41H,41H,3EH,00H ;
DB00H,00H,00H,00H,21H,7FH,01H,00H ;
DB00H,00H,27H,45H,45H,45H,39H,00H ;
DB00H,00H,22H,49H,49H,49H,36H,00H ;
DB00H,00H,0CH,14H,24H,7FH,04H,00H ;
DB00H,00H,72H,51H,51H,51H,4EH,00H ;
DB00H,00H,3EH,49H,49H,49H,26H,00H ;
DB00H,00H,40H,40H,40H,4FH,70H,00H ;
DB00H,00H,36H,49H,49H,49H,36H,00H ;
DB00H,00H,32H,49H,49H,49H,3EH,00H ;
END ;
结束汇编
开始
程序流图:
初始化端口
设定扫描时间
拉幕时序清0
取列扫描地址
取行数据地址
数据输出
Yes
幕次数计满?
No
幕次数加1
送新的行码地址
项目一8×
一、设计要求
本次设计采用单片机AT89C51驱动8×
8点阵LED显示屏,轮流显示0~9的数字。
显示方式采用自左向左拉幕式显示。
二、硬件电路介绍
1.AT89C51单片机:
P0口:
P0口为一个8位漏级开路双向I/O口。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0口能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,当P2口被写“1”时,其管脚被内部上拉电阻拉高,P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输出,由于外部下拉为低电平,它将输出电流。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
AT89C51单片机的外形及引脚排列说明如后页图示。
AT89C51单片机的外形及引脚排列如右图。
2.74LS373芯片:
当三态允许控制端OE为低电平时,O0~O7为正常逻辑状态,可用来驱动负载或总线。
当OE为高电平时,O0~O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。
当锁存允许端LE为高电平时,O随数据D而变。
当LE为低电平时,O被锁存在已建立的数据电平.
D0~D7数据输入端 OE三态允许控制端(低电平有效) LE锁存允许端 O0~O7输出端
3.respack-8器件:
排阻器件,起上拉电阻的作用。
4.8×
8LED点阵
8×
8LED点阵可作为信息输出器件。
它是由发光二极管阵列按8排8列的方式排列起来,由x和y引脚输入的电信号对其进行选通,使不同位置的二极管被点亮,相应地显示出文字或图案等信息来。
四、硬件设计仿真:
五、设计调试过程及问题
在PC机上运行Proteus软件,将电路原理图中的元件找出并相应地连接好线;
在Keil汇编软件中输入设计的程序,编译通过后生成十六进制文件,并再把该文件下载到虚拟的AT89C51单片机内。
因为单片机的RST引脚经电容接到了Vcc电源上,同时并联接地,所以系统可以上电后自动执行一次复位操作。
问题一第一次连接硬件电路,由于没有接74LS373双向总线收发器,所以在LED点阵和单片机I/O口之间就直接连接了,结果LED显示屏无法显示单片机输出的结果,所有的LED灯都不亮。
看来直接跳线时单片机I/O口输出的信号不足以驱动8乘8点阵工作。
当8051单片机的P0口输出八位低地址时,必须接入74LS373作地址锁存器。
问题二仿真时会看到LED点阵中有字显示的地方(前景)灯是灭的,无字显示的地方(背景)灯是亮的,这出现“阴文”显示状态。
产生这种显示的原因是因为8×
8点阵LED引脚接反了,应该正端接P3,负端接P0。
即可看到正确的“阳文”方式显示出的数字。
问题三仿真时出现数字是反着的,产生这种显示的原因是因为点阵的列码扫描信号线A~H与单片机的P3.0~P3.7口相应的顺序接反了,把对应的接线顺序倒过来,才正确。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 点阵 数字 滚动 显示 精品 文档