8×8点阵数字滚动显示

合集下载

滚动显示“verilog”字符串程序代码及相关说明

滚动显示“verilog”字符串程序代码及相关说明

实验报告一、 实验题目8*8点阵显示设计二、 题目要求用8*8点阵滚动显示一组字符串本题中,设计使用8*8点阵循环滚动显示VerilogHDL字符串。

三、 设计思路显示效果:字符串VerilogHDL向左以一速度移动,每次移动一步。

显示原理:首先应该实现一个字符的静态显示任务。

由于人的视觉暂留效应,只要图像的变化速率大于25帧每秒,人所看到的图像就是一副运动的景象。

由于显示一个字符就是需要控制每一个像素——每一个LED点的亮灭来组合形成整个一副图像,所以为了达到静态显示的目的,必须先使得显示每个点的时间小于(1 / 64) * ( 1 / 25)S,既一帧中每个点的暂留时间。

由于一次可对一行或者一列赋值(控制),所以时间上只需每次刷屏时间小于1 / 25 s 、每行属性显示的时间小于( 1 / 8 ) * ( 1 /25 ) s。

为了达到字符运动的效果,需要在每一帧画面的时间( 1 / 25 ) s 里改变一次需要显示的屏幕的内容即可。

如图一,\图一、显示字样图示首先,L7=1(置高),L5—L0都置低,行信号为:H=8’h00,此步骤显示第一列LED。

按照这个方法,分别:L6=1,H=8’H40;显示第二列LEDL5=1,H=8’H78;显示第三列LED… …L0=1,H=8’H40;显示第八列LED每条语句持续时间小于( 1 / 8 ) * ( 1 /25 ) s;如此构成第一幅图像。

接下来使数据向左移动,只需重复上述步骤,唯一不同的是以前的L7的那一列数据不再是H=8’h00,而是H=8’H40;L6的数据H=8’H78变成同理,依次向后移动一位。

这样一个移动后,又显示了一屏。

之后就按照这个规律对后来的数据进行如此操作,形成连续的可移动的图像了。

程序流程图参考如下:如图,按照图二、图三所示的程序流程图即可达到显示一个向左流动的字符运动效果。

图二、程序流程图图三、任务display的流程图系统设计循环移动字符串的各字符编码如下(使用PCtoLCD2002取字模软件)V:00H 40H 78H 04H 02H 04H 78H 40He: 00H 3CH 52H 92H 92H 52H 34H 00Hr: 00H 00H 80H FEH 10H 20H 40H 40Hi: 00H 00H 00H 20H BFH 02H 00H 00Hl: 00H 00H 00H 7EH 02H 02H 00H 00Ho: 00H 3CH 42H 42H 42H 3CH 00H 00Hg: 00H 00H 64H 92H 92H 6CH 00H 00HH: 00H FEH 10H 10H 10H 10H FEH 00HD: 00H 7EH 42H 42H 42H 3CH 00H 00HL: 00H 00H 7EH 02H 02H 02H 02H 00h结构框图如下:图四、系统框图四、 实验总结本实验作为一个显示系统还存在很多问题,还不具备数据更新、方向调节、颜色控制等功能,只是简单的使用了任务、寄存器来实现一个字符串的循环滚动功能,但是时序的思想将会在以后的设计中作为主要的指导思想。

8x8LED点阵屏仿电梯数字滚动显示说明书

8x8LED点阵屏仿电梯数字滚动显示说明书

湄洲湾职业技术学院8*8LED点阵屏仿电梯数字滚动显示说明书系部:自动化工程系年级: 10 级专业:电气自动化应用技术姓名:郑沁杰学号: 1001020205导师姓名:郑德山职称:副教授2013 年 05 月 26 日目录1.前言 (1)2.系统设计技术参数要求 (2)3.系统设计 (3)3.1 系统设计总框图 (3)3.2 各模块原理说明 (4)3.3系统原理说明 (5)3.4 系统操作说明 (5)3.5系统操作注意事项 (6)4.参考文献 (7)5. 致谢词 (8)6.附录 (9)6.1元件清单 (9)6.2系统原理图 (10)6.3 PCB原理设计 (11)6.4 系统程序 (11)1.前言LED市场比较好,但是现在市场竞争也比较激烈,和做其他产品差不多。

LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。

在实际应用中的显示屏由于成本和可靠性的因素常采用一种称为动态扫描的显示方法。

本文设计的是一个用8x8的点阵LED图文显示屏,图形或文字显示有静止、移入移出显示方式。

LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。

文章给出了一种基于MCS-51单片机的8×8 点阵LED显示屏的设计方案。

包括系统具体的硬件设计方案,软件流程图和部分汇编语言程序等方面。

在负载范围内, 只需通过简单的级联就可以对显示屏进行扩展,是一种成本低廉的图文显示方案。

它用高亮度发光二极管芯阵列组合后,环氧树脂与塑模封装而成。

具有高亮度,功耗低,引脚少,视角大,寿命长,耐湿,耐冷热,耐腐蚀等特性,LED显示屏以突出的优势成为平板显示的主流产品之一。

LED这一显示产品使用在我们日常的生活中扮演者越来越重要的角色。

51单片机88点阵LED显示的原理及程序

51单片机88点阵LED显示的原理及程序

51单片机8*8点阵LED显示原理及程序更多在8X8点阵LED上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。

1.程序设计内容8X8点阵LED工作原理说明:8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图49所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:一根竖柱:对应的列置1,而行则采用扫描的方法来实现。

一根横柱:对应的行置0,而列则采用扫描的方法来实现。

2.硬件电路3.汇编源程序ORG 00HSTART: NOPMOV R3,#3LOP2: MOV R4,#8MOV R2,#0LOP1: MOV P1,#0FFHMOV DPTR,#TABAMOV A,R2MOVC A,@A+DPTR MOV P3,AINC R2LCALL DELAY DJNZ R4,LOP1 DJNZ R3,LOP2MOV R3,#3LOP4: MOV R4,#8 MOV R2,#7LOP3: MOV P1,#0FFH MOV DPTR,#TABA MOV A,R2MOVC A,@A+DPTR MOV P3,ADEC R2LCALL DELAY DJNZ R4,LOP3 DJNZ R3,LOP4MOV R3,#3LOP6: MOV R4,#8 MOV R2,#0LOP5: MOV P3,#00H MOV DPTR,#TABB MOV A,R2MOVC A,@A+DPTR MOV P1,AINC R2LCALL DELAY DJNZ R4,LOP5 DJNZ R3,LOP6 MOV R3,#3LOP8: MOV R4,#8 MOV R2,#7LOP7: MOV P3,#00H MOV DPTR,#TABB MOV A,R2MOVC A,@A+DPTR MOV P1,ADEC R2LCALL DELAYDJNZ R4,LOP7DJNZ R3,LOP8LJMP STARTDELAY: MOV R5,#10D2: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1DJNZ R5,D2RETTABA: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH TABB: DB 01H,02H,04H,08H,10H,20H,40H,80HEND4.C51语言源程序#include <AT89X52.H>unsigned CHAR code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned CHAR code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};void DELAY(void){unsigned CHAR i,j;for(i=10;i>0;i--)for(j=248;j>0;j--);}void DELAY1(void){unsigned CHAR i,j,k;for(k=10;k>0;k--)for(i=20;i>0;i--)for(j=248;j>0;j--);}void main(void){unsigned CHAR i,j;while(1){for(j=0;j<3;j++)//FROM left to right 3 time {for(i=0;i<8;i++){P3=taba[i];P1=0xff;DELAY1();}}for(j=0;j<3;j++)//FROM right to left 3 time{for(i=0;i<8;i++){P3=taba[7-i];P1=0xff;DELAY1();}}for(j=0;j<3;j++)//FROM top to bottom 3 time {for(i=0;i<8;i++){P3=0x00;P1=tabb[7-i];DELAY1();}}for(j=0;j<3;j++)//FROM bottom to top 3 time {for(i=0;i<8;i++){P3=0x00;P1=tabb[i];DELAY1();}}}}。

8×8LED点阵屏仿电梯数字滚动显示

8×8LED点阵屏仿电梯数字滚动显示

8×8LED点阵屏仿电梯数字滚动显示摘要:伴随着我国现代化程度的提高,电梯成为高层建筑中的重要交通工具,它是高层建筑中安全、可靠、垂直上下的运载工具,对改善劳动条件、减轻劳动强度起到很大的作用。

同时也给人们的生活带来了便利,为我国现代化建设的加速发展提供了强大的保障。

电梯的应用范围很广,可用于宾馆、饭店、办公大楼、商场、娱乐场所,仓库以及居民住宅大楼等。

因此,在现代社会中电梯已成为人类必不可少的垂直运输交通工具。

利用单片机控制电梯有成本低,通用性强,灵活性大以及易于实现复杂控制等优点。

基于单片机的电梯智能控制系统的设计分别从系统要求、硬件设计、软件设计等几个部分设计,介绍了以AT89C51系列单片机为核心,并结合74LS245和LED等芯片以及与之相配套的汇编语言软件等进行电梯模拟的具体实现方法,该方法不仅可以实现电梯的基本功能,而且可以设置电梯直达、急停、停电检修等功能,从而可实现电梯的智能控制及相应的最佳路线选择,提高电梯的有效利用率。

关键词:单片机;电梯;系统;控制目录1. 课题设计内容 (3)2. 硬件电路中器件选择 (3)3. 硬件设计 (8)3.1 控制模块 (9)3.2按键模块 (10)3.3 LED显示模块 (11)3.4 电源电路 (12)4. 软件设计 (11)4.1 主程序模块 (12)4.2 判断子程序 (13)5. 结束语 (14)参考文献 (15)附录 (16)程序清单 (16)1.课题设计内容本课题的主要任务是完成一个电梯系统的智能控制模块,即根据每个楼层不同顾客的按键要求,让电梯做出合理的判断,正确高效的指导电梯完成各项载客任务。

设计基于单片机的电梯智能控制系统的硬件电路与软件程序,给出硬件系统的电路原理图,对硬件电路与软件分别进行调试,得到调试成功的基于单片机的电梯智能控制系统。

根据此任务,本课题需要研究的内容有:1、根据系统的技术要求,进行系统硬件的总体方案设计;2、学习单片机的相关知识,并且加以运用;3、选择适当的芯片,并对其内部协议有所掌握,便于应用。

2、8-8-点阵汉字滚动显示

2、8-8-点阵汉字滚动显示

VHDL/EDA实习报告设计题目:基于FPGA的8*8点阵汉字滚动显示目录FPGA设计的特点 (2)设计任务与要求 (3)设计原理 (3)LED点阵原理 (3)汉字的存储 (5)字符样式设计 (7)开发环境介绍 (13)FPGA设计的特点FPGA 通常被认为是ASIC 实现的一种替代手段. 一般ASIC 包括三种, 既全定制、半定制(含标准单元和门阵列) 以及可编程器件。

对于前两种, 需要支付不可重复使用的工程费用NRE (Non recurring Engineering) , 主要用于芯片的流片、中测、分析的工程开销, 一次费用一般在 1 万至数万美元以上。

如果一次不成功、返工、甚至多次返工,NRE 费用将要上升。

成本高、风险大, 而通常对每个ASIC 品种的需求量往往不大,NRE 费用分摊到每个产品上价太高, 用户无法接受。

而对于可编程器件PLD (Programmable Logic Device) 正是可以解决上述问题的新型ASIC, PLD 以其操作灵活、使用方便、开发迅速、投资风险小等突出优点, 特别适合于产品开发初期、科研样品研制或小批量的产品. FPGA 是一种新型的PLD, 其除了具有PLD 的优点外, 其规模比一般的PLD 的规模大。

目前,Xilinx 推出的XC4025 可以达到25000 门的规模,Altera 公司的FLEX10K100 系列芯片可达到十万门的规模,完全可以满足用户的一般设计需要。

FPGA 的主要特点是: 寄存器数目多, 采用查找表计数,适合时序逻辑设计。

但是互连复杂, 由于互连采用开关矩阵,因而使得延时估计往往不十分准确。

FPGA 也有其自身的局限性, 其一就是器件规模的限制,其二就是单元延迟比较大。

所以, 在设计者选定某一FPGA器件后, 要求设计者对器件的结构、性能作深入的了解, 在体系结构设计时, 就必须考虑到器件本身的结构及性能, 尽可能使设计的结构满足器件本身的要求. 这样就增加了设计的难度。

51单片机8X8点阵滚动显示 - C51源代码

51单片机8X8点阵滚动显示 - C51源代码

51单片机8X8点阵滚动显示- C51源代码51单片机8X8点阵滚动显示- C51源代码/*--------------------------------------------------------------*///LED8*8滚动显示//列扫描,低电平有效/*--------------------------------------------------------------*///包含头文件#include <reg52.h>#include "74HC595.H"/*--------------------------------------------------------------*///全局变量定义unsigned char i;unsigned int m,n;/*--------------------------------------------------------------*///代码库#define num sizeof(table) //代码长度unsigned char codeaa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code table[]= {//取模方式阴码列扫描逆向0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/0x00,0x7F,0x7F,0x39,0x6F,0x46,0x00,0x00,/*"R",1 */0x00,0x41,0x7F,0x7F,0x41,0x00,0x00,0x00,/*"I",2 */0x00,0x3E,0x7F,0x41,0x63,0x22,0x00,0x00,/*"C",3 */0x00,0x7F,0x7F,0x08,0x7F,0x7F,0x00,0x00,/*"H",4 */0x00,0x7F,0x7F,0x06,0x7F,0x7F,0x00,0x00,/*"M",5 */0x00,0x3E,0x7F,0x41,0x63,0x22,0x00,0x00,/*"C",6 */0x00,0x3F,0x7F,0x40,0x7F,0x3F,0x00,0x00,/*"U",7 */0x00,0x36,0x7F,0x49,0x7F,0x36,0x00,0x00,/*"8",9 */0x00,0x63,0x7F,0x1C,0x7F,0x63,0x00,0x00,/*"X",1 0*/1*/0x00,0x01,0x7F,0x7F,0x01,0x01,0x00,0x00,/*"T",1 3*/0x00,0x7F,0x7F,0x49,0x49,0x41,0x00,0x00,/*"E",1 4*/0x00,0x26,0x6F,0x49,0x7B,0x32,0x00,0x00,/*"S",1 5*/0x00,0x01,0x7F,0x7F,0x01,0x01,0x00,0x00,/*"T",1 6*/0x00,0x7F,0x7F,0x39,0x6F,0x46,0x00,0x00,/*"R",1 8*/0x00,0x61,0x79,0x5D,0x4F,0x43,0x00,0x00,/*"Z",1 9*/0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x00,/*"-",2 0*/0x00,0x62,0x73,0x59,0x4F,0x46,0x00,0x00,/*"2",2 1*/0x00,0x3E,0x7F,0x41,0x7F,0x3E,0x00,0x00,/*"0",2 2*/0x00,0x3E,0x7F,0x41,0x7F,0x3E,0x00,0x00,/*"0",2 3*/4*/0x00,0x7F,0x7F,0x41,0x7F,0x3E,0x00,0x00,/*"D",2 6*/0x00,0x7F,0x7F,0x49,0x49,0x41,0x00,0x00,/*"E",2 7*/0x00,0x7F,0x7F,0x06,0x7F,0x7F,0x00,0x00,/*"M",2 8*/0x00,0x7F,0x7F,0x41,0x7F,0x7F,0x00,0x00,/*"O",2 9*/0x00,0x26,0x6F,0x49,0x7B,0x32,0x00,0x00,/*"S",3 1*/0x03,0x07,0x7C,0x7C,0x07,0x03,0x00,0x00,/*"Y",3 2*/0x00,0x26,0x6F,0x49,0x7B,0x32,0x00,0x00,/*"S",3 3*/0x00,0x01,0x7F,0x7F,0x01,0x01,0x00,0x00,/*"T",3 4*/0x00,0x7F,0x7F,0x49,0x49,0x41,0x00,0x00,/*"E",3 5*/0x00,0x7F,0x7F,0x06,0x7F,0x7F,0x00,0x00,/*"M",3 6*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",37*/};/*--------------------------------------------------------------*///显示函数void Display(void){Ser_IN((aa[i])); //列扫描数据Ser_IN(table[i + n]); //查表取出行扫描数据Par_OUT(); //输出显示i++; if(i == 8) i = 0; //循环扫描m++; if(m == 500) {m = 0; n++;} //滚动速度控制if(n == num-7) n = 0; //循环显示}/*--------------------------------------------------------------*///定时器初始化void T0_init(void){TMOD = 0xf8;TH0 = 0xcc; //5000usTL0 = 0x00;IE = 0x82;TR0 = 1;}/*--------------------------------------------------------------*///定时器中断服务void T0_intservice(void) interrupt 1 using 0 {TH0 = 0xf8;TL0 = 0xcc;Display();}/*--------------------------------------------------------------*///主函数void main (void){T0_init();while(1);}74HC595.H//Note: 74HC595驱动// __ __//Note: MR 主复位接电源正极, OE 使能端,输出有效接电源负极/*--------------------------------------------* /#ifndef __74HC595_H__#define __74HC595_H__/*--------------------------------------------* /sbit SD = P1^4; //串行数据输入sbit ST_CK = P1^5; //存储寄存器时钟输入sbit SH_CK = P1^6; //移位寄存器时钟输入/*--------------------------------------------*///数码管断码和位码的定义//unsigned char codeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00,0x ff};//0 1 2 3 4 5 6 7 8 9 a b c d e f 8 无//unsigned char codepos[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//1 2 3 4 5 6 7 8/*--------------------------------------------* ///函数声明void Ser_IN(unsigned char Data); //串行数据输入void Par_OUT(void); //串行数据输出//void Ser_Par(unsigned char Data); //串行输入,并行输出/*--------------------------------------------* ///串行数据输入void Ser_IN(unsigned char Data)unsigned char i;for(i = 0; i < 8; i++){SH_CK = 0; //CLOCK_MAX=100MHzSD = Data & 0x80;Data <<= 1;SH_CK = 1;}}/*--------------------------------------------* ///并行数据输出void Par_OUT(void){ST_CK = 0;ST_CK = 1;}/*--------------------------------------------* ///串行输入,并行输出/*void Ser_Par(unsigned char Data){Ser_IN(Data);Par_OUT();}*//*--------------------------------------------* /#endif网站统计Powered by Tiki Wiki CMS Groupware | Theme: Fivealive - Lemon。

期中测试-8×8点阵LED显示

期中测试-8×8点阵LED显示

参数
备注 单片机
8*8LED点阵
双向三态总 线驱动门
ncusc hy
1
单片机原理及应用
要求:
在 Proteus ISIS 中画出此应用电路(可以忽略复位电路和时钟电路)。ISIS 设计文件命 名格式为:“学号-QZ.DSN”,如 8000XXXXXX-QZ.DSN。(注意:中间的连接符采用半角的 减号)
U2
2 3 4 5 6 7 8 9
A0 A1 A2 A3 A4 A5 A6 A7
B0 B1 B2 B3 B4 B5 B6 B7
18 R0 17 R1 16 R2 15 R3 14 R4 13 R5 12 R6 11 R7
19 1
CE AB/BA
74LS245
C[0..7] C7 C6 C5 C4 C3 C2 C1 C0
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C51
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
元件名 AT89C51
MATRIX-8x8-GREEN
74LS245
元件清单 所 在 大类、小类 Microprocessor ICs 8051 Family Optoelectronics Dot Matrix Displays TTL 74LS Series Transceivers
预备:

8×8点阵数字滚动显示

8×8点阵数字滚动显示

项目一8×8点阵数字滚动显示LED点阵的元件符号及内部结构图:对应编码:00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;NULL00H, 00H, 3EH, 41H, 41H, 41H, 3EH, 00H ; 000H, 00H, 00H, 00H, 21H, 7FH, 01H, 00H ; 100H, 00H, 27H, 45H, 45H, 45H, 39H, 00H ; 200H, 00H, 22H, 49H, 49H, 49H, 36H, 00H ; 300H, 00H, 0CH, 14H, 24H, 7FH, 04H, 00H ; 400H, 00H, 72H, 51H, 51H, 51H, 4EH, 00H ; 500H, 00H, 3EH, 49H, 49H, 49H, 26H, 00H ; 600H, 00H, 40H, 40H, 40H, 4FH, 70H, 00H ; 700H, 00H, 36H, 49H, 49H, 49H, 36H, 00H ; 800H, 00H, 32H, 49H, 49H, 49H, 3EH, 00H ; 900H, 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 STARTORG 0BH;中断入口地址LJMP INT_T0ORG 30H;子程序入口地址START:;主程序开始MOV R0, #00H ;每列的行码起始序号置0MOV R_CNT,#00H;列:初值00送到31H单元MOV NUMB,#00H;行:初值00送到32H单元MOV TCOUNT,#00H;计数单元初值置0MOV TMOD, #01H;计数定时器选用16位的计数器,工作在方式1MOV TH0, #(65536—5000)/256;定时5ms。

  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 ﻩﻩ; 000H, 00H, 00H, 00H, 21H, 7FH,01H,00H ;12ﻩ 00H, 00H, 27H, 45H, 45H, 45H,39H, 00Hﻩﻩ;;300H, 00H, 22H,49H, 49H, 49H, 36H, 00H ﻩﻩﻩ00H, 00H, 0CH, 14H, 24H, 7FH, 04H,00H ﻩ; 45;ﻩ 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位的计数器,工作在方式1MOV TH0, #(65536-5000)/256ﻩﻩ;定时5ms。

定时器高位初值为236MOV TL0, #(65536-5000) MOD 256 ;定时器低位初值为120ﻩSETB TR0ﻩﻩ;启动C/T的定时器T0MOV 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ﻩﻩﻩ;行码地址加1NEXT1: ﻩﻩﻩﻩINC R_CNT ﻩﻩ;扫描列码地址加1MOV A, R_CNTﻩﻩ;把列地址放入A中ﻩCJNEA, #8, NEXT2ﻩ;A不等于8,转子程序NEXT2,否则往下执行ﻩMOVR_CNT, #00H;就把列码置0MOV NUMB, R0 ﻩ;行码地址送存储单元格中NEXT2:ﻩINC TCOUNT ﻩ;拉幕计数序号加1MOV 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ﻩ;不然就把行码置0NEXT3:MOV NUMB,R0;送新的一幕行码起始位给R0NEXT4:RETIﻩﻩ;中断返回TAB: ﻩ;列码码表DB0FEH, 0FDH, 0FBH, 0F7H, 0EFH, 0DFH,0BFH,7FH ;列扫描从右向左NUB:ﻩ;行码码表,字符数据DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00Hﻩ;NULLDB 00H, 00H, 3EH, 41H, 41H, 41H, 3EH, 00H ﻩ; 01;DB 00H, 00H, 00H, 00H,21H, 7FH, 01H, 00H ﻩﻩDB 00H, 00H, 27H, 45H, 45H, 45H, 39H, 00H ; 23;ﻩDB 00H, 00H, 22H, 49H, 49H, 49H, 36H, 00H ﻩﻩDB 00H, 00H, 0CH, 14H, 24H, 7FH, 04H, 00H ; 4DB 00H, 00H, 72H, 51H, 51H, 51H,4EH, 00H ;5DB 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 ﻩ; 9DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ﻩﻩ;NULLEND ﻩﻩ;结束汇编程序流图:项目一8×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脚两个机器周期的高电平时间。

A T89C51单片机的外形及引脚排列说明如后页图示。

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口相应的顺序接反了,把对应的接线顺序倒过来,才正确。

相关文档
最新文档