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结构框图如下:图四、系统框图四、 实验总结本实验作为一个显示系统还存在很多问题,还不具备数据更新、方向调节、颜色控制等功能,只是简单的使用了任务、寄存器来实现一个字符串的循环滚动功能,但是时序的思想将会在以后的设计中作为主要的指导思想。

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、选择适当的芯片,并对其内部协议有所掌握,便于应用。

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。

点阵显示汉字滚动图解

点阵显示汉字滚动图解

点阵的汉字滚动实现其实很简单,用一句话概括就是:一边在行(列)上进行扫描,一遍循环依次取出显示代码输入到列(行)上。

以我们板上载有的8×8点阵为例,当要实现2个汉字的滚动时,我们把整个滚动的过程拆开,会发现每一次完整的滚动,点阵要显示2×8=16个状态。

我们可以把两个汉字的行(或列)扫描代码通过字模提取软件提出后保存在数组里,然后顺序循环的去取数组里的数据放到行(或列)上就可。

我们用图示来解析一下整个过程。

我们假设要显示两个汉字”人”和”天”的左右滚动。

首先我们假设在行和列的输入数据中,1代表亮,0代表灭。

数组code里保存好从字模软件中按行提取出来的扫描码,假设code[15]=A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7(A代表“人”字的列扫描码,B代表“天”字的列扫描码)思路是这样的:第1个时段T1:(完整的汉字“天”)时刻t0,R=0000_0001,L=A0,R0那一列显示;、时刻t1,R=0000_0010,L=A1,R1那一列显示;时刻t2,R=0000_0100,;L=A2,R2那一列显示;…….时刻t7,R=1000_0000,;L=A7,R7那一列显示;然后又回到时刻t0的扫描状态,循环扫描。

只要在这个T1时间段内按这样扫描的话,就形成了A0—A7所代表的数据,即汉字“人”第2个时段T2:(开始滚入“天”字)时刻t0,R=0000_0001,L=A1,R0那一列显示;、时刻t1,R=0000_0010,L=A2,R1那一列显示;时刻t2,R=0000_0100,L=A3,R2那一列显示;…….时刻t7,R=1000_0000,L=B0,R7那一列显示;“天”字第1列然后又回到时刻t0的扫描状态,循环扫描。

只要在这个T2时间段内按这样扫描的话,就形成了A1—A7和B0所代表的数据,如下图:第3个时段T3:时刻t0,R=0000_0001,L=A2,R0那一列显示;、时刻t1,R=0000_0010,L=A3,R1那一列显示;时刻t2,R=0000_0100,;L=A4,R2那一列显示;…….时刻t6,R=1000_0000,L=B0,R6那一列显示;“天”字第1列时刻t7,R=1000_0000,L=B1,R7那一列显示;“天”字第2列然后又回到时刻t0的扫描状态,循环扫描。

以单片机为核心的8×8LED点阵动态显示设计

以单片机为核心的8×8LED点阵动态显示设计

以单片机为核心的8×8LED点阵动态显示设计
 LED 电子显示屏具有投影仪器、液晶显示屏无法比拟的优点:高亮度、功耗小、工作电压低、寿命长、稳定和耐冲击等优点。

 本文所提出的即为一种基于AT89C51 系列单片机的8&TImes;8 LED点阵动态显示的设计原理。

1 8&TImes;8 LED 点阵电路及显示原理
1.1 单片机及其主控接口简介
 本文采用的AT89C51 系列单片机是8 位机,是一款很有代表性的经典单片机。

 P 口又称I /O 口,是单片机的输入输出口,其中共有4 组(P0-P3),每组都有8 根管脚。

而这里我们要用到的只有两组,P1 口和P2 口。

 P1 口是一个双向的8 位I /O 口,其内部有一个上拉电阻。

51单片机8*8点阵LED显示原理及程序

51单片机8*8点阵LED显示原理及程序

51单片机8*8点阵LED显示原理及程序更多发布时间:2008年8月16日在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();}}}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

项目一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。

定时器高位初值为236MOV TL0, #(65536-5000) MOD 256;定时器低位初值为120SETB TR0 ;启动C/T的定时器T0MOV IE, #82H;CPU开中断SJMP $ ;中断等待I NT_T0:MOV TH0, #(65536-5000)/256 ;定时5ms,设置定时器T0高位初值为236MOV TL0, #(65536-5000)/256 ; 定时器T0低位初值为120MOV DPTR, #TAB;读列码表首地址,放入DPTRMOV A, R_CNT;读列码偏移地址,放入A中MOVC A, @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中CJNE A, #8, NEXT2 ;A不等于8,转子程序NEXT2,否则往下执行MOV R_CNT, #00H ;就把列码置0MOV NUMB, R0 ;行码地址送存储单元格中NEXT2:INC TCOUNT ;拉幕计数序号加1MOV A, TCOUNT ;将幕次序号送A中CJNE A, #40, NEXT4;此序号不等于40转Next4,否则往下执行MOV TCOUNT, #00H ;把拉幕时序归0INC R0 ;行码起始地址加1CJNE R0, #88, NEXT3 ;行码自加次数不满11字符×8行/字符=88行就转Next3MOV R0, #00H ;不然就把行码置0NEXT3:MOV NUMB, R0 ;送新的一幕行码起始位给R0NEXT4:RETI;中断返回TAB: ;列码码表DB 0FEH, 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 ; 0DB 00H, 00H, 00H, 00H, 21H, 7FH, 01H, 00H ; 1DB 00H, 00H, 27H, 45H, 45H, 45H, 39H, 00H ; 2DB 00H, 00H, 22H, 49H, 49H, 49H, 36H, 00H ; 3DB 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 ; 6DB 00H, 00H, 40H, 40H, 40H, 4FH, 70H, 00H ; 7DB 00H, 00H, 36H, 49H, 49H, 49H, 36H, 00H ; 8DB 00H, 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口相应的顺序接反了,把对应的接线顺序倒过来,才正确。

相关文档
最新文档