51单片机88点阵LED显示的原理及程序
51单片机驱动LED点阵扫描显示C语言程序
51单片机驱动LED点阵扫描显示C语言程序LED点阵屏发光亮度强,指示效果好,可以制作运动的发光图文,更容易吸引人的注意力,信息量大,随时更新,有着非常好的广告和告示效果。
笔者此处就LED点阵屏动态扫描显示作一个简单的介绍。
1、LED点阵屏显示原理概述图1-1为一种8x8的LED点阵单色行共阳模块的内部等效电路图,对于红光LED其工作正向电压约为1.8v,其持续工作的正向电流一般10ma左右,峰值电流可以更大。
如下图,当某一行线为高电平而某一列线为低时,其行列交叉的点就被点亮,当某一行线为低电平时,无论列线如何,对应的这一行的点全部为暗。
LED点阵屏显示就是通过一定的频率进行逐行扫描,数据端不断输入数据显示,只要扫描频率足够高,由于人眼的视觉残留效应,就可以看到完整的文字或图案信息。
通常有4、8、16线扫描方式,扫描行数越少,点阵的显示亮度越好,但相应硬件数据寄存器需求也越多。
图1-1 点阵内部原理图2、硬件设计微控制器的IO口均不能流过过大的电流,LED点亮时有约10ms 的电流,因此LED点阵引脚不要直接接单片机IO口,应先经过一个缓冲器74HC573。
单片机IO口只需很小的电流控制74HC573即可间接的控制LED点阵某一行(或某一列),而74HC573输出也能负载约10ms的电流。
设置LED每点驱动电流为ID =15ma,这个电流点亮度好,并且有一定的裕度,即使电源输出电压偏高也不会烧毁LED,限流电阻值R = (VCC- VCE – VOL – VLED) / IDVCC为5v供电,VCE为三极管C、E间饱和电压,估为0.2v,VOL为74hc573输出低电平时电压,不同灌电流,此值不一样,估为0.2v,具体查看规格书,VLED为红光驱动电压,估为1.7v,根据上式可算出限流电阻为R = 200R。
LED点阵屏需接收逐个扫描信号,扫描到相应列(或行),对应的列(或行)数据有效,即显示这一列(或行)的信息。
51单片机88点阵,使用示波器
第四周单片机任务一.实验要求1. 了解51单片机的串口使用2.了解8*8点阵3. 会使用示波器(proteus中有虚拟示波器)具体内容:1. 按下按钮,程序开始运行。
再次按下按钮,程序暂停,再次按下按钮程序接着上次暂停的部分继续运行。
2. 当第一次按下按钮后,8*8点阵按照顺序显示“1,2,3,4,5,6,7,8,9,0”这几个数字(注意,每个数字显示需要间隔2秒),当显示到0后,再从1开始。
3. 8*8点阵切换数字时是滚动效果。
4. 串口终端在按下按钮后显示出“now ,8*8 show1,2,3,4,5,6,7,8,9,0”5. 用虚拟示波器观察串口输出的波形,并截图展示程序具体流程如下:按下按钮,点阵显示1,串口终端显示“now ,8*8 show 1,2,3,4,5,6,7,8,9,0”,延时2秒(在这2秒内,点阵显示的1要滚动变成2,滚动效果就是银行门口的字从右到左连贯的切换的那种效果,可以看该网址视频/v_show/id_XMjE3OTM4NDIw.html)。
然后点阵显示2,再延时2秒(同上)。
当显示到点阵0后,再过2秒(同上,滚动变为1),此时串口终端换行再次显示“now ,8*8 show 1,2,3,4,5,6,7,8,9,0”。
如此往复二.硬件分析利用串口调试助手实现串口终端显示“now ,8*8 show 1,2,3,4,5,6,7,8,9,0”三.程序分析#include<reg52.h>char keytmp;char *p;unsigned char dat;sbit k=P3^2;char code str[]="now,8*8show1,2,3,4,5,6,7,8,9,0";char code distaba[]={ // (各数字的阳码)0x00,0x00,0x11,0x21,0x7f,0x01,0x01,0x00, //10x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00, //20x00,0x00,0x49,0x49,0x49,0x7f,0x00,0x00, //30x00,0x04,0x0c,0x14,0x24,0x5f,0x04,0x00, //4 0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00, //5 0x00,0x00,0x7f,0x49,0x49,0x49,0x4f,0x00, //6 0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00, //7 0x00,0x00,0x7f,0x49,0x49,0x49,0x7f,0x00, //8 0x00,0x00,0x79,0x49,0x49,0x49,0x7f,0x00, //9 0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00, //0 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//黑屏,表示一次显示完毕};char code scan_cona[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//列扫描控制字void delay2ms(int t){int i,j;for(i=0;i<t;i++)for(j=0;j<240;j++);}void init_com(void){TMOD=0X20;//定时器工作方式2,初值自动装入 PCON=0X00; //波特率不倍增SCON=0X40; //串行工作方式1 TH1=0xfd; //定时器初值高位,波特率9600 TL1=0xfd; //定时器初值低位 TR1=1; //启动定时器}void fun() //向左滚动显示{int m,n,h;for(h=0;h<80;h++) //控制显示字数(80/8=10个) {for(n=0;n<25;n++) //控制帧移动速度{for(m=0;m<8;m++) //显示1帧扫描(分8行,每行亮2ms) {P2=scan_cona[m];P0=distaba[m+h];delay2ms(1);}}}}void delay(void) //延时子程序{int k;for(k=0;k<600;k++);}void InitCom(void)//串口定义初始化子程序{TMOD=0x20;PCON=0x00;SCON=0x50;TH1=0xFd;TR1=1;}void send_str()//发送字符串子程序{unsigned char i=0;while(str[i]!='\0'){SBUF=str[i];while(!TI);TI=0;i++;}}void intersvr0(void)interrupt 0 using 1{send_str(); //调用发送字符串子程序}main() //主程序{EA=1;EX0=1;IT0=0;while(1){if(RI){dat=SBUF;RI=0;}fun();}}姓名:杨丹班级:1207学号:210121885。
LED点阵显示屏工作原理及驱动程序
LED点阵显示屏工作原理及驱动程序LED显示屏驱动程序几年前本人得到一块双色LED显示屏,因为没有控制器,所以对显示屏的工作原理进行了一番研究,利用手头上的元件,搭了一块电路板,编写了一段程序就放置一边了,这几天有时间,把原来的89C51汇编程序改了一下,改为AT89C2051和STC11F04E单片机能用的程序,放到博客上希望有兴趣的同行可以参考一下。
下面是显示效果图:下面是接口电路板图:下面是电路原理图:工作原理:这块显示屏是分为上下共32行LED点阵,水平有4块16*16点阵,所以能显示16*16点阵8个汉字。
工作原理是用74ls138做为行扫描,列用74ls595控制,当138扫描到某一行时,595决定哪一列该亮,就这样快速扫描,就形成了图像了。
参见下图:以单色单元板为例走线方式如下图:各信号走向如下:l JP1排针16脚信号A->74HC245的第2脚(信号放大)->74HC245的第18脚->74HC138的第1脚->JP2排针16脚l JP1排针15脚信号B->74HC245的第3脚(信号放大)->74HC245的第17脚->74HC138的第2脚->JP2排针15脚l JP1排针1脚信号OE->74HC245的第4脚(信号放大)->74HC245的第16脚->74HC04D的第1脚->74HC04D的2脚->①74HC138的第5脚->②74HC04D的3脚->74HC04D的4脚->JP2排针1脚l JP1排针11脚信号R->74HC245的第9脚(信号放大)->74HC245的第11脚->最左上角74HC595-1的第14脚->74HC595-1的9脚->74HC595-2的14脚->74HC595-2的9脚->最右下角74HC595-16的14脚->74HC595-16的9脚->JP2排针11脚我现在用的是双色板,JP1各端口含义如下:ABCD是显示屏电路板上的74LS138地址译码端,单片机寄存器R3控制行扫描,当R3从00000000到00010000增加时ABCD的变化给138译码,当R3=0FH 时正好扫描16行,当进位到10时扫描结束,OE是138的片选使能端,低电平有效。
88点阵LED显示屏的原理详解与汉字代码
首先我们看一下8*8led显示屏?的原理从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;要实现显示图形或字体,只需考虑其显示方式。
通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。
例如:要实现一根柱形的亮法,如图所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:一根竖柱:对应的列置1,而行则采用扫描的方法来实现。
一根横柱:对应的行置0,而列则采用扫描的方法来实现下图是4个8*8LED组成的显示屏。
这里我把点阵LED显示屏制作的电路原理分成两个部分来介绍即显示屏电路和显示屏驱动电路。
一、显示屏电路本人用的是共阴极的8*8点阵屏,在市场上是比较容易买到,下图是8*8点阵屏的实物图。
点阵屏有两个类型,一类为共阴极(左),另一类则为共阳极(右),下图给出了两种类型的内部电路原理及相应的管脚图。
LED阵列的显示方式是按显示编码的顺序,一行一行地显示。
每一行的显示时间大约为4ms,由于人类的视觉暂留现象,将感觉到8行LED是在同时显示的。
若显示的时间太短,则亮度不够,若显示的时间太长,将会感觉到闪烁。
本文采用低电平逐行扫描,高电平输出显示信号。
即轮流给行信号输出低电平,在任意时刻只有一行发光二极管是处于可以被点亮的状态,其它行都处于熄灭状态。
为了方便调试本文把4块8*8组成的16*16的点阵屏的行信号扫描输出管脚和列信号显示输出管脚分别引到显示屏的两边。
Protel原理图如下:如图4 所示的原理图中的Si(i=1,2,3,…,16) 代表行扫描信号输出,Di(i=1,2,3,…,16)代表列显示信号输出。
实物电路图的正反面如下:二、显示屏驱动电路显示屏驱动电路的原理图如下:显示屏驱动电路主要由主芯片控制电路、电源电路、控制信号放大电路等组成。
88点阵LED显示屏的原理详解及汉字代码
首先我们看一下8*8led显示屏?的原理从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;要实现显示图形或字体,只需考虑其显示方式。
通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。
例如:要实现一根柱形的亮法,如图所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:一根竖柱:对应的列置1,而行则采用扫描的方法来实现。
一根横柱:对应的行置0,而列则采用扫描的方法来实现下图是4个8*8LED组成的显示屏。
这里我把点阵LED显示屏制作的电路原理分成两个部分来介绍即显示屏电路和显示屏驱动电路。
一、显示屏电路本人用的是共阴极的8*8点阵屏,在市场上是比较容易买到,下图是8*8点阵屏的实物图。
点阵屏有两个类型,一类为共阴极(左),另一类则为共阳极(右),下图给出了两种类型的内部电路原理及相应的管脚图。
LED阵列的显示方式是按显示编码的顺序,一行一行地显示。
每一行的显示时间大约为4ms,由于人类的视觉暂留现象,将感觉到8行LED是在同时显示的。
若显示的时间太短,则亮度不够,若显示的时间太长,将会感觉到闪烁。
本文采用低电平逐行扫描,高电平输出显示信号。
即轮流给行信号输出低电平,在任意时刻只有一行发光二极管是处于可以被点亮的状态,其它行都处于熄灭状态。
为了方便调试本文把4块8*8组成的16*16的点阵屏的行信号扫描输出管脚和列信号显示输出管脚分别引到显示屏的两边。
Protel原理图如下:如图4 所示的原理图中的Si(i=1,2,3,…,16) 代表行扫描信号输出,Di(i=1,2,3,…,16)代表列显示信号输出。
实物电路图的正反面如下:二、显示屏驱动电路显示屏驱动电路的原理图如下:显示屏驱动电路主要由主芯片控制电路、电源电路、控制信号放大电路等组成。
基于C51单片机的8×8LED点阵屏汉字显示
单片机课程设计报告-8X 8 LED点阵屏显示“大”字第一章设计内容及要求 (3)第二章总体设计...................................32.1 系统框图.........................................3 > 42.2 设计步骤 (4)第三章各部分电路设计.................................43. 1复位电路...........................................4 、53.2时钟电路..................................... 5、6 3.3显示电扑各....................................6 > 73. 4大字取模...........................................73.5 LED引脚连接方式........................................ & 93・6总体电路9第四章程序设计 (9)4.1软件流图..................................... 9、104.2大字的模 (10)4・2主程序.................................. 10^ 114.3 C51单片机开发工具:keil 4 Proteus 使用方法…11、16第五章仿真结果 (16)第六章总结与体会.............................. 17^ 18第七章参考文献 (18)附录程序清单.................................. 19、20基于C51单片机的8X 8 LED点阵屏汉字显示一设计要求设计_个8*点阵LED电子显示屏2、要求在目测条件下LED显示屏各点亮度均匀、充足,可静态显示一个大字。
单片机 点阵led电路
单片机点阵led电路单片机点阵LED电路是一种常见的电路组成部分,用于控制点阵LED显示屏的显示效果。
本文将介绍单片机点阵LED电路的原理和应用。
一、单片机点阵LED电路的原理单片机点阵LED电路由单片机、点阵LED显示屏和相关的驱动电路组成。
单片机是整个电路的控制核心,它通过驱动电路将控制信号发送到点阵LED显示屏,从而实现对点阵LED的控制。
点阵LED显示屏是由多个LED灯组成的,每个LED灯称为一个像素点。
通过控制每个像素点的亮灭状态,可以显示出不同的图形、文字或图像。
驱动电路是将单片机输出的控制信号转换为点阵LED显示屏所需的电压和电流,并按照指定的规律将信号发送给点阵LED显示屏。
常见的驱动电路有行列式驱动和点阵扫描驱动两种。
二、单片机点阵LED电路的应用单片机点阵LED电路广泛应用于各种显示设备,如计算器、时钟、电子秤、电子游戏机等。
通过点阵LED显示屏,可以实现对各种信息的显示和提示。
以计算器为例,单片机点阵LED电路可以将计算结果以数字的形式显示在屏幕上,方便用户阅读。
同时,还可以通过点阵LED显示屏显示其他功能键、操作提示等信息,提升用户体验。
在电子游戏机中,单片机点阵LED电路可以实现游戏界面的显示,包括游戏得分、游戏关卡等信息。
通过点阵LED显示屏的高亮度和快速刷新速度,可以呈现出流畅的游戏画面,提升游戏的趣味性和可玩性。
单片机点阵LED电路还可以应用于广告牌、室内外显示屏等场合。
通过点阵LED的高亮度和可见角度大的特点,可以实现远距离观看和广告内容的清晰显示。
三、单片机点阵LED电路的优势相比传统的数码管显示方式,单片机点阵LED电路具有以下优势:1. 显示效果更丰富:通过点阵LED的组合和控制,可以显示出更多的图形、文字和图像,丰富了显示效果。
2. 可编程性强:单片机可以通过编程控制点阵LED的显示内容和显示方式,具有更强的灵活性和可扩展性。
3. 节省空间:点阵LED显示屏相对较小,可以在有限的空间内实现更多的显示信息。
基于51单片机的LED点阵显示屏系统设计方案
图2-1系统硬件组成框图
2.1.1 显示屏主控制器
控制部分是整个系统的核心部分,其功能为与上位机通信接收上位机发送的数据和控制指令处理过后控制显示部分显示内容。其常用的电子设计方法有单ห้องสมุดไป่ตู้机、DSP、及EDA技术。几种设计方法比较各有其特点:
(1)单片机
单片机是集成了CPU,ROM,RAM和I/ O口的微型计算机。它有很强的接口性能,非常适合于工业控制,因此又叫微控制器(MCU)。单片机品种齐全,型号多样 CPU 从8,16,32到64位,多采用RISC 技术,片上I/O非常丰富,有的单片机集成有A/ D,“ 看门狗”,PWM,显示驱动,函数发生器,键盘控制等。它们的价格也高低不等,这样极大地满足了开发者的选择自由。除此之外单片机还具有低电压和低功耗的特点。随着超大规模集成电路的发展,NMOS工艺单片机被CMOS代替,并开始向HMOS 过渡。供电电压由5V 降到3V,2V甚至到1V,工作电流由mA降至μA ,这在便携式产品中大有用武之地[4]。
LED显示屏是由一个一个的发光二极管点阵构成的,要构成大屏幕的LED显示屏就需要多个发光二极管。构成LED屏幕的方法有两种,一是由单个的发光二极管逐点连接起来,如图2-2所示;二是选用一些由单个发光二极管构成的LED点阵子模块构成大的LED点阵模块。目前市场上普遍采用的点阵模块有8×8、16×16几种;这两种屏幕构成方法各有有缺点,单个发光二极管构成显示屏优点在于当单个的发光二极管出现问题时只需更换一个二极管即可,检修的成本较低,缺点在于连接线路复杂;而点阵模块构成的方法却正好与之相反,模块构成省约了大量的连线,不过当一个LED出现问题时同在一个模块的所有LED都必须被更换。这就加大了维修的成本。
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。
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();}}}}。
基于51单片机的8乘8LED点阵显示屏的设计
基于51单⽚机的8乘8LED点阵显⽰屏的设计基于单⽚机的8*8LED点阵显⽰屏的设计随着单⽚机在各个领域的⼴泛应⽤,许多⽤单⽚机作控制驱动LED显⽰屏也应运产⽣。
本系统设计使⽤单⽚机MCS-51控制扫描⽅法实现LED点阵显⽰器的字符的显⽰,介绍了⽤单⽚机进⾏显⽰系统开发的⽅法,单⽚机软件、硬件调试技术,还有点阵显⽰驱动扩展的⼀般⽅法。
1.引⾔1.1 研究的⽬的、意义LED因其体积⼩,耗电量低,亮度及环保等优点⽽被⼴泛应⽤于公共场所的⼤屏显⽰上,LED点阵⼤屏可应⽤于户外⼴告,交通导航,⼤厅公告,⽐赛的多媒体实时显⽰等领域。
本设计作品的⽤途正是在于实现⼤屏显⽰的核⼼功能,即汉字的显⽰,可实际应⽤于简单的显⽰系统中,如简单的排队叫号显⽰屏,电梯显⽰屏等。
通过此次设计将单⽚机软硬件结合起来对程序进⾏编辑,校验,锻炼实践能⼒和理论联系实际的能⼒。
1.2 本设计所要做的⼯作为了完成该设计实现,经过考虑论证,决定分为以下⼏个阶段进⾏:(1)对课题进⾏全⾯的分析,明确系统要实现的功能,⼤致了解要解决的问题,制定总的设计⽅案;(2)根据论证设计硬件系统并画出电路图,并根据电路图在⾯包板上连接电路图;(3)在硬件的基础上设计软件程序;(4)利⽤仿真器编译软件程序,进⾏调试仿真;(5)把调试成功的程序利⽤烧⼊器烧⼊到芯⽚中去;(6)把固化好程序的芯⽚插⼊到实际应⽤系统,投⼊到实际使⽤。
2.系统设计⽅案2.1系统构成框图3.硬件电路设计3.1 主要器件介绍3.1.1 LED点阵LED点阵显⽰屏采⽤1个8*8共64个象素的点阵,通过LED点阵资料判断出该点阵的引脚分布,如图3.1所⽰。
8*8的LED点阵为单⾊共阳模块,单点的⼯作电压为正向(Vf)=1.8v,正向电流(if)=8-10MA。
静态点亮器件时(64点全亮)总电流为640mA。
总电压为1.8v,总功率为1.15w.动态时取决于扫描频率(1/8或1/16秒),单点瞬间电流可达80-160mA。
51单片机8x8点阵电路原理 解释说明
51单片机8x8点阵电路原理解释说明1. 引言1.1 概述本文将介绍51单片机8x8点阵电路原理。
在当前信息时代,显示技术得到了广泛应用,而点阵显示则是一种常见的显示方式。
点阵电路原理的了解对于进行嵌入式系统设计和开发至关重要。
1.2 文章结构本文主要分为五个部分:引言、51单片机8x8点阵电路原理、电路图解析、编程实现步骤以及结论。
通过这些部分的详细说明,读者可以全面了解并掌握如何设计和编程控制51单片机8x8点阵电路。
1.3 目的本文旨在提供一个清晰而详细的指南,帮助读者理解和掌握51单片机8x8点阵电路的工作原理和设计方法。
通过深入剖析相关概念和技术细节,使读者能够在自己的项目中有效地应用此类点阵电路,并能够根据特定需求进行相应扩展与优化。
以上是文章“1. 引言”部分内容的简要描述,请根据需要添加更多信息并以普通文本形式撰写完整内容。
2. 51单片机8x8点阵电路原理:2.1 单片机概述:单片机作为一种集成了处理器、存储器和各种输入输出接口的微型计算机,被广泛应用于嵌入式系统中。
51单片机是指基于Intel公司的8051系列架构开发的单片机,在工业控制、仪器仪表、家电等领域有着广泛的应用。
2.2 点阵显示原理:点阵显示技术是使用一个由多个小LED灯组成的点阵,根据不同的点亮组合来形成图像或文字。
在51单片机上实现点阵显示通常采用行列扫描方式,通过逐行或逐列地点亮和灭控制各个LED灯来实现图案或字符的显示。
2.3 电路设计要点:在设计51单片机8x8点阵电路时,需要考虑以下几个要点:- 单片机选择:选用合适型号的51单片机,并根据具体需求确定其工作频率。
- 点阵模块选择:选择合适尺寸和亮度的8x8点阵模块。
- 驱动芯片选择:针对所选定的点阵模块,选择合适的驱动芯片,如MAX7219。
- 电源设计:考虑到点阵模块和驱动芯片的供电需求,合理设计电源电压和稳压电路。
- 硬件接口连接:根据选定的单片机和驱动芯片的引脚分配,进行相应的电路连线连接。
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();}}}}。
51单片机88点阵LED显示 论文
目录1.设计背景及设计目标 (2)1.1设计背景 (2)1.2设计目标和设计方案 (2)1.2.1设计目标 (2)1.2.2设计方案 (2)1.2.3 方案比较 (3)2.设计原理及原理图 (3)3.系统硬件选择 (4)3.1 AT89C51单片机的结构 (4)3.1.1 AT89C51管脚说明 (5)3.2 振荡器特性 (5)4.硬件电路实现 (6)4.1 用8×8LED点阵构成16×16LED点阵 (6)4.2仿真效果图 (7)5.实物图 (8)6.流程图 (9)总结 (10)参考文献: (11)附表: (12)附表一:原理图 (12)附表二:源程序 (13)摘要:LED点阵显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。
它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。
LED 点阵显示屏可以显示汉字、数字或特殊符号,通常用来显示时间、速度、系统状态等。
本设计给出了一基于MCS-51单片机的16*16 点阵LED显示屏的设计方案。
包括系统具体的硬件设计方案,软件流程图和部分C语言程序等方面。
在负载范围内, 只需通过简单的级联就可以对显示屏进行扩展,是一种成本低廉的图文显示方案。
本设计主要以AT89C51单片机为核心,采用串行传输、动态扫描技术,来制作的一款拥有多功能的模块化16*16LED点阵的多功能显示屏。
关键词: MCS-51、多功能、16*16点阵1.设计背景及设计目标1.1设计背景LED(Light Emitting Diode),即发光二极管,是一种半导体固体发光器件,它是利用固体半导体芯片作为发光材料,当两端加上正向电压,半导体中的载流子发生复合引起光子发射而产生光。
LED可以直接发出红、黄、蓝、绿、青、橙、紫、白色的光。
本设计做的是一块16*16的LED点阵,通过这个点阵可以显示汉字及特定字符。
主要利用单片机原理,通过写入程序来控制单片机显示‘滕玉祥’的字样LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
51单片机点阵LED显示屏控制系统设计 汇编源程序.
51单片机点阵LED显示屏控制系统设计+汇编源程序51单片机点阵LED显示屏控制系统设计+汇编源程序LED电子显示屏是随着计算机及相关的微电子﹑光电子技术的迅猛发展而形成的一种新型信息显示媒体。
它利用发光二极管构成的点阵模块或像素单元组成可变面积的显示屏幕,以可靠性高、使用寿命长、环境适应能力强、性能价格比高、使用成本低等特点,在短短的十来年中,迅速成长为平板显示的主流产品,在信息显示领域得到了广泛的应用。
对于那些需要显示的信息量不是很大,分辨率不是很高,又需要制造成本相对比较低的场合,使用大、小屏幕LED点阵显示器是比较经济适用的,他可以显示字符、数字、汉字和简单图形,可以根据需要使用不同字号、字型,显示亮度较高,并且对环境条件要求比较低。
LED显示又可以分为单色显示和双色显示,可以按照需要的大小、形状和颜色进行组合,并用单片机控制实现各种文字或图形的变化,达到宣传和提示的目的。
本文所设计的是一个同等灰度的单色条形显示屏控制系统,该控制系统以AT89S51为控制器,采用RS-232/RS-485通信标准,可显示1个8*8点阵的字符或数字。
显示方式有左移﹑右移﹑上移﹑下移﹑替换;显示状态包括移动速度﹑停留时间等。
论文网1.2 AT89S51简介 AT89S51是美国DALLAS公司生产的与MCS-51系列完全兼容的单片微处理器产品。
它与89C51具有完全相同的封装,提供80C32具有的所有的功能,如I/O口,定时器/计数器,串行口等。
此外它还提供了另一个全双工串行接口,7个新的中断,可编程看门狗定时器,掉电中断和复位等。
在此基础上, AT89S51还增加了2个用于改善外部RAM数据存储器存取数据的功能,即双数据指针和可编程片外RAM 存取周期扩展功能。
AT89S51可以工作在1MHZ~33MHZ的频率范围内。
普通8051的CPU的每个机器周期需要12个时钟,而 AT89S51的每个机器周期只需要4个时钟。
88点阵LED显示原理的简要介绍
一根横柱:对应的行置0,而列则采用扫描的方法来实现。
2.硬件电路
3.汇编源程序
ORG 00H
START: NOP
MOV R3,#3
LOP2: MOV R4,#8
MOV R2,#0
LOP1: MOV P1,#0FFH
MOV DPTR,#TABA
MOV A,R2
{
for(i=0;i<8;i++)
{
P3=0x00;
P1=tabb[i];
delay1();
}
}
}
}
51单片机8*8点阵LED显示原理及程序
来源:国外电子元器件 作者:高健 时间:2008-04-01发布人:admin
在8X8点阵LED上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。
{
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
MOV P3,A
DEC R2
LCALL DELAY
基于51单片机的led点阵显示
项目名称:基于51单片机的LED点阵显示器目录一、项目介绍 (2)1.1 项目背景1.2 功能介绍二、电路结构 (3)三、实现模块 .................. 5••…四、运行程序 (7)一、项目介绍1.1项目背景当今世界,电子技术迅猛发展,点阵式显示器件作为现代信息显示的重要媒体,在金融证券、体育、机场、交通、商业、广告宣传、邮电电信、指挥调度、国防军事等许多领域中得到了广泛应用。
因此点阵式显示器件的研制、生产也的到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。
目前,点阵式显示器件具体包括LED显示模块和LCD显示模块等。
现在发展的LCD比较先进,LCD的优点较为明显,他体积小,容易控制,功能强,价格适宜,能够适应显示器的发展方向,因而在通信、家电、大屏幕投影等领域得到了越来越广泛的应用;随着社会经济的迅猛发展,工业生产逐渐实现了自动化,其中,设备的工作状态和生产过程状态的显示与监控起到了非常重要的作用,对于那些需要显示的信息量不是很大,分辨率不是很高,又需要制造成本相对比较低的场合,使用大、小屏幕LED点阵显示器是比较经济适用的,他可以显示字符、数字、汉字和简单图形,可以根据需要使用不同字号、字型,显示亮度较高,并且对环境条件要求比较低。
LED显示又可以分为单色显示和双色显示,可以按照需要的大小、形状和颜色进行组合,并用单片机控制实现各种文字或图形的变化,达到宣传和提示的目的。
1.2功能介绍2 本次设计的用单片机控制的显示电路使用比较简单,操作方便。
它主要是通过一个8X8点阵来显示图案,通过不同的按键来选择控制图案的种类及显示方式。
在通电以后,显示屏全亮,随后进入逐字显示状态。
按下复位键K1,系统自动复位,显示diligent,随后进入待命状态。
按键1、2、3、4分别控制不同的图案。
另外,我们可以通k5键来控制字符移动速度的快慢。
二、电路结构单片机最小系统设计2.2.1各部分具体电路1单片机的时钟电路AT89C52单片机内部的振荡电路是一个高增益反向放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。
单片机点阵动态显示原理
单片机点阵动态显示原理
单片机点阵动态显示原理:
1、原理:单片机点阵动态显示原理是利用单片机控制点阵模块,通过设置控制口,来控制点阵模块上的LED灯,从而实现动态显示,可以显示数字、字符、图形等。
2、控制原理:单片机通过控制点阵模块的控制口,来控制LED灯的亮暗,从而实现动态显示。
点阵模块上有多个控制口,每个控制口都可以控制一行或一列的LED灯,通过设置不同的控制口,可以控制不同的LED灯亮暗,从而实现动态显示。
3、应用:单片机点阵动态显示可以用于各种液晶显示器、智能仪表、智能家居等。
51单片机项目教程项目 18 8乘8点阵显示爱心
(4)扫描界限寄存器(地址0BH):该寄存器中D0~D3 位数据 设定值为0~7H,设定值表示显示器动态扫描个数位1~8。
(5)停机寄存器(地址0CH):当D0=0 时,MAX721 处于停机 状态;当D0=1 时,处于正常工作状态。 (6)显示测试寄存器(地址0FH):当D0=0时,MAX7219 按设 定模式正常工作;D0=1 时,处于测试状态。在该状态下,不管 MAX7219 处于什么模式,全部LED 将按最大亮度显示。
MAX7219介绍 MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱 动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接 条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD 编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态 RAM用来存储每一个数据。只有一个外部寄存器用来设置各个 LED的段电流。 MAX7219和单片计算机连接有三条引线(DIN、CLK、 LOAD)采用16位数据串行移位接收方式。即单片机将16位二进制 数逐位发送到DIN端,在CLK上升沿到来前准备就绪,CLK的每个上 升沿将一位数据移入MAX7219内移位寄存器,当16位数据移入 完,在LOAD引脚信号上升沿将16位数据装入MAX7219内的相应 位置,MAX7219内部硬件动态扫描显示控制电路作用下实现动态 显示。
可寻址的数据寄存器和控制寄存器 (1)内部RAM 地址01~08H 分别对应于DIG0~DIG7。 (2)译码方式寄存器(地址09H):该寄存器的8 位二进制数的 各位分别控制8 个LED 显示器的译码方式。当高电平时,选择 BCD-B 译码模式,当低电平时选择不译码模式(即送来数据为字 型码)。 (3)亮度寄存器(地址0AH):亮度可以用硬件和软件两种方法 调节。亮度寄存器中的D0~D3位可以控制LED 显示器的亮度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机8*8点阵LED显示原理及程序
更多
在8X8点阵LED上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。
1.程序设计内容
8X8点阵LED工作原理说明:8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图49所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:
一根竖柱:对应的列置1,而行则采用扫描的方法来实现。
一根横柱:对应的行置0,而列则采用扫描的方法来实现。
2.硬件电路
3.汇编源程序
ORG 00H
START: NOP
MOV R3,#3
LOP2: MOV R4,#8
MOV R2,#0
LOP1: MOV P1,#0FFH
MOV DPTR,#TABA
MOV A,R2
MOVC A,@A+DPTR MOV P3,A
INC R2
LCALL DELAY DJNZ R4,LOP1 DJNZ R3,LOP2
MOV R3,#3
LOP4: MOV R4,#8 MOV R2,#7
LOP3: MOV P1,#0FFH MOV DPTR,#TABA MOV A,R2
MOVC A,@A+DPTR MOV P3,A
DEC R2
LCALL DELAY DJNZ R4,LOP3 DJNZ R3,LOP4
MOV R3,#3
LOP6: MOV R4,#8 MOV R2,#0
LOP5: MOV P3,#00H MOV DPTR,#TABB MOV A,R2
MOVC A,@A+DPTR MOV P1,A
INC R2
LCALL DELAY DJNZ R4,LOP5 DJNZ R3,LOP6 MOV R3,#3
LOP8: MOV R4,#8 MOV R2,#7
LOP7: MOV P3,#00H MOV DPTR,#TABB MOV A,R2
MOVC A,@A+DPTR MOV P1,A
DEC R2
LCALL DELAY
DJNZ R4,LOP7
DJNZ R3,LOP8
LJMP START
DELAY: MOV R5,#10
D2: MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,D2
RET
TABA: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH TABB: DB 01H,02H,04H,08H,10H,20H,40H,80H
END
4.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();
}
}
}
}。