89c51单片机控制的LED点阵显示系统
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的片选使能端,低电平有效。
LED点阵屏显示数字(韩余)详解

目录1 设计目的 (1)1.1设计目的 (1)1.2设计内容和要求 (1)1.3设计思路 (1)2 设计原理分析 (2)2.1定时器控制8×8LED点阵屏显示数字系统设计 (2)2.2定时器控制8×8LED点阵屏显示数字系统的功能要求 (2)2.2.1计时显示 (2)2.2.2中断设置 (2)2.38×8LED点阵屏显示数字系统的根本构成及原理 (2)3 系统硬件电路的设计 (3)3.1系统硬件总电路构成及原理 (3)3.2主控制局部――AT89C51单片机简介 (3)3.2.1 AT89C51的内部结构功能 (4)3.2.2 51单片机的串行接口工作方式 (5)3.3其它器件 (6)3.4定时器控制8×8LED点阵屏显示数字系统原理图 (7)3.5设计的连线图: (8)3.5.1单片机实物图: (8)3.6硬件资源及其分配 (8)3.7运行步骤 (8)3.8检测与调试 (9)3.8.1硬件调试: (9)3.8.2软件调试: (10)4 系统软件程序的简单设计 (11)4.1程序框图 (11)4.2程序流程图及程序 (12)4.2.1程序流程图: (12)4.2.2程序清单: (12)4.2.3仿真结果图: (14)结论 (15)参考文献 (16)1 设计目的1.1设计目的1、通过单片机课程设计,熟练掌握C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
2、通过8×8LED点阵屏显示数字系统的设计,掌握数码管的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。
1.2设计内容和要求内容:设计一个8×8LED点阵屏显示数字。
要求:利用单片机的中断系统,令8×8LED点阵屏循环显示数字0—9。
1.3 设计思路1.先熟悉实验原理,了解8×8LED点阵屏显示数字的工作过程,以及所需要的组件。
2.通过单片机的各个引脚的输出控制8×8LED点阵屏显示数字。
8点阵LED字符显示

摘要单片机全称叫单片微型计算机, 是一种集成在芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。
对于字符显示设计的数字显示电路,通常采用液晶显示或数码管显示。
利用数组将各数字字符的编码存放在寄存器中,在执行显示过程中从寄存器中将对应数字或字符编码的数组一一轮流调出即可实现动态。
关键词:单片机寄存器半导体汇编目录1 课程设计的目的和要求 (1)1.1 设计目的 (1)1.2 课程设计题目 (1)1.3 设计任务 (1)2系统概述 (2)2.1设计思路 (2)2.2元器件清单 (2)3系统设计 (3)4系统硬件设计与分析 (4)4.1单片机的选择 (4)4.2 元器件及其作用 (5)4.3 原理图设计 (7)5系统软件设计 (8)5.1设计实现方式 (8)5.2 程序流程图 (8)5.3数字的编码 (8)6软件仿真调试 (12)6.1软件调试 (12)6.2 Keil、preoteus联调效果图 (12)7结束语 (13)8参考文献 (14)1 课程设计的目的和要求1.1 设计目的1、学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。
2、掌握汇编语言程序设计方法。
3、巩固单片机硬件系统的设计及软件系统的编程,通过设计将平时所学知识付诸实践,提高动手能力。
1.2 课程设计题目8*8点阵LED字符显示。
1.3 设计任务利用8*8LED点阵显示数字0~9的字样。
采用AT89C51单片机作为整个控制搭电路的核心,并编制软件程序,实现动态轮流显示。
2系统概述2.1设计思路LED点阵显示系统中各模块的显示方式有静态和动态显示两种。
静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息。
LED点阵显示

LED 点阵屏的显示林元桂林元桂 指导老师:郭海燕指导老师:郭海燕指导老师:郭海燕 (漳州师范学院物理系(漳州师范学院物理系 9905219 9905219 9905219))摘 要 介绍一种介绍一种LED 显示屏单片机控制系统设计方法,给出了有关的硬件电路框图和软件程序流程图给出了有关的硬件电路框图和软件程序流程图. . 关键词 单片机单片机 LED LED LED 显示屏显示屏显示屏LED 电子显示屏作为一个城市、一个地区的商业发达程度的标志之一,已广泛地出现于车站、码头、大型商场等公共场所,是一个理想的新闻、广告和信息媒体。
媒体。
其中小型的其中小型的LED 文字显示屏由于价格便宜、文字显示屏由于价格便宜、功能比较专一、功能比较专一、功能比较专一、工作稳定可靠工作稳定可靠等诸多的优点,因此,在银行、宾馆、机场、车站等场所广泛应用。
这种小型的LED 文字显示屏通常是一屏能显示8个汉字或16个汉字,因此显示内容有限,信息传递比较慢,局限性比较大。
本文介绍一种利用89C51单片机实现能显示4行汉字,每行8个汉字的LED 显示屏设计方法,给出有关的硬件电路框图和软件流程图。
流程图。
1.1. 系统总体结构系统总体结构控制系统主要有一片AT89C51-24单片机(它是一种与8031系列完全兼容的系列完全兼容的 单片机,主要区别是它内部有4kbitd 的ROM ROM));一片27C04027C040((512K 512K))EPROM EPROM,作,作为字库;一片62646264((8K 8K))RAM RAM,作为数据存储器和显示数据缓冲区等组成(如图,作为数据存储器和显示数据缓冲区等组成(如图一所示)。
显示驱动电路主要由128片74HC595串并转换集成电路,8片74HC138译码器等组成(如图二所示);利用串行口接收微机送来的汉字代码,串行口采用RS-485通信。
用AT89C51单片机接收到的汉字代码后,单片机接收到的汉字代码后,查找对应的点阵字库,查找对应的点阵字库,经过字库转换之后经过数据总线直接送往显示驱动电路,经过字库转换之后经过数据总线直接送往显示驱动电路,其电路如图三所示,其电路如图三所示,时序图如图所示。
基于AT-89C51的LED彩灯控制器

基于AT-89C51的LED彩灯控制器摘要随着人们生活环境的不断改善和美化,在许多场合可以看到彩色弥红灯。
LED彩灯由于其具有防腐的灯光色彩,低廉的造价及控制简单等特点而得到广泛应用,用彩灯来装饰接到和城市建筑物已成为一种时尚。
但目前市场上各式样的LED彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一但制作成品只能按照固定的模式闪亮,不能柑橘不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。
这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。
此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。
因此有必要对现有的彩灯控制器进行改进。
本设计提出一种基于AT-89C51单片机的彩灯控制方案,实现对LED彩灯的控制。
本方案以AT-89C51单片机作为主控核心,与按键、显示、驱动等模块组成核心主控制模块。
在主控模块上设置3个按键和1一个八段码LED显示器,根据用户需求可以编写若干种亮灯模式,利用其内部定时器实现一个基本单位时间的定时中断,根据各种亮灯的时间不同需求,在不同时刻输出灯亮或灯灭的控制信号,然后驱动各种颜色的灯亮或灭,实现不同色彩之间的变幻。
关键词:AT-89C51;彩色发光;三基色;色彩合成;白平衡Based on AT-89C51 comtrller's LED lightsAbstractAs people's living environment of continuous improvement and landscaping,in many cases you can see the color red Mi.LED lights have a preservative because of its light color,low cost and easy control characteristics and are widely used,with lights to decorate buildings in cities receiving and has become a fashion. However,the model currently on the market most of the LED lights comtroller with full hardware circuit,circuit complexity,single function,but making sych a product only in accordance with a fixed pattern of flashes,can not citrus different occasions,different time periods need to adjust the lighting time,mode,flicker frequency and other dynamic parameters.This lantern controller structure tend to have too many chips,circuit complexity,power consymption and large defects.In addition,results from a functional point of view,;ight pattern and style less monotonous,lacl of user operability,affect lighting effects.Therefore it is necessary to improve the existing lights controller.The design is porposed based on AT-89C51 microcontroller lights control programs to achieve control of the LED lights .The program for AT-89C51 microcontroller core as master ,and keys,dispiay,drive the core modules such as the main control module.set on the mastre module 3 buttons and a LED dispaly on a eight out code,according to user needs to write several lighting modes,using its internal timer,a timer inrerrupt the basic unit pf time,according to the time of light different needs at different times light outpit or lamp off of the control signal,and then drive a variety of colored lights on or off,changing different colors to achieve.Keywords:AT-89C51;color light;Three promary;clor synthesis;white balance第一章绪论 (1)1.1课题的开发背景 (1)1.1.1背景设计 (1)1.1.2研究的目的及意义 (2)1.2 LED国内现状及发展 (2)1.2.1 LED的现状与发展 (2)1.2.2上游芯片产业 (2)1.2.3中游LED封装 (3)1.2.4下游LED应用 (6)1.3课题实现的功能 (8)第二章LED的结构及发光原理 (9)2.1LED的分类及光源的特点 (9)2.2LED使用注意事项 (11)第三章控制系统组成 (12)3.1系统原理设计框图 (12)3.2电路组成原理 (12)第四章系统的软件设计 (15)第五章灯箱设计 (16)5.1有机玻璃 (16)5.2LED侧光设计 (17)5.2.1设计理念 (17)5.2.2微细导光管出关面网点排布方式 (18)5.3LED背光设计 (19)5.3.1背光各个部分的功能 (20)5.4LED投射光设计 (23)5.5光和色的基本知识 (23)5.5.1电磁波与可见光 (23)5.5.2可见光谱与白光源 (24)5.5.3彩色三要素 (25)5.5.4景物的彩色 (25)5.5.5色彩对比的规律 (25)5.5.6强化对比效果的方法 (25)5.5.7抑制对比效果的方法 (25)5.6控制器所要实现的色彩变幻 (26)5.6.1三基色原理 (26)5.2.2配色实验 (27)5.2.3色度图 (28)结论 (29)附录 (30)参考文献 (31)致谢 (32)第一章绪论1.1课题的开发背景1.1.1背景设计照明离不开灯具,灯具是照明的集中反映。
LED灯实验报告

mcs-51单片机接口技术实验适用:电气类专业本科学生实验报告实验一熟悉proteus仿真模拟器,led花样表演一、实验目的掌握以下方法:1.在proteus的环境下,设计硬件原理图;2.在keilc集成环境下设计c51语言程序;2.在proteus的环境下,将硬件原理图与软件联接仿真运行。
二、实验环境1.个人微机,windows操作系统2.proteus仿真模拟器3.keilc编程三、实验题目基本题:使用8051的并口带动8个led发光二极管显示一种花样表演。
提高题:使用一个键切换实现3种以上花样表演。
四、实验类型:学习、模仿与简单设计型。
五、实验步骤:0、进入isis,先选择需要的元件,然后设计电原理图,保存文件;1、在keilc软件集成环境下编写源程序,编译工程文件;2、将所设计的硬件原理图与目标代码程序相联接;4、按play键,仿真运行程序。
附,可能用到的元件名称:cpu:at89c51或任一种mcs-51家族cpu;晶振:crystal;电容器:capacitors,选22pf 电解电容:cap-elec或genelect10u16v 复位电阻:minres10k限流电阻:minres330r按键:buttonled:led-blue/red/yellow或diode-led (一)接线图如下:(二).基础花样(四)程序流程图(五)c程序#include <reg52.h>#define uint unsigned int#define uchar unsigned char const tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, /*正向流水灯*/ 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,};/*反向流水灯*/ const tab2[]={0xff,0x00,0xff,0x00,0xff,0x00,}; void delay(){uint i,j;for(i=0;i<256;i++)for(j=0;j<256;j++){;}}void int1() interrupt 0{uchar i;for (i=0;i<6;i++){ p0=tab2[i];delay();}}void main(void){ex0=1;it0=1;ea=1; while(1){uchar x;for(x=0;x<15;x++){ p0=tab1[x];delay();}}} (六)总结本次实验让我能够熟练的掌握和使用keil和proteus等软件进行编程和仿真,也对流水灯的原理和硬件结构有了更加深刻的认识。
基于单片机89C51和89C2051点阵LED图文显示

1 8
工 程 地 质 计 算 机 应 用
20 0 6年 第 4 期
总 4 4期
E R M( 7 40 、 P O M2C 0 1 并行口) 的字库中提取相应的汉字( ~组3 字节的数据) 对应于显示屏 2 , 排列好存贮到片外R M ( Y 2 4 6K i A C 66 , 4 b )中,重复上述过程将所有 的汉字都提取出并排列 t 存储好,最后 8C 1 A 9 5将R M中的数据经P l 3 输出给显示驱动 电路。 l 和P 1 E 3 汉字库的制备与普通程序存储器的烧录并无区别。将汉字库文件 以二进制形式打开, 通 过 编 程 器 烧 录 到 M2 C 0 1中 即 可 【 7 40 ¨。
该脚作为I / o口。而后8C 1 9 5响应该中断,并通过P 口接收来 自8C 0 1 1 1 9 25 P 口的数据。 在P 机 内部,汉字是以机内码的形式存储的,每个汉字 占两个字节 。单片机8C 1 C 9 5将采
集来的数据放到串行E P O (4 S 2 2 R M 2L 3 )中,P . D 和P . C 。所 以在没有与计算 3 接S A 3 接S L 3 4
状 态.本文详细说 明了该电路 的工作原理及编程 思路.
【 关键词 l8 C 1 8C 0 1R 一 3 9 5 9 2 5 S 2 2点阵 L D实时时钟 E
1 LD点阵显示系统简介 E
随着 图形点阵L D E 显示模块在各行各业的逐步使用 , 使得人机界面变得越来越直观形象 ,
钟芯片时间数据时,单片机8C 1 9 5 通过A 0 D 地址数据复用引脚来选通地址并读写数据。 D  ̄A 7 22 . 显示驱动部分f ’ 1
三 Ⅵ V 优
LD E 点阵选用2 4 X 模块,每4 块排列成一
基于51单片机的16×32点阵显示设计说明书

单片机原理及接口技术课程设计报告题目:基于51单片机的16*32点阵显示设计学院:专业班级:学生姓名:学号:指导教师:日期:一、设计题目与要求点阵屏以其醒目、快速换字等特点,已经进入了我们的生活,大街小巷每个地方都能看到点阵式广告屏,本课题设计一个基于51单片机的16*32点阵屏,能够实现2个字的静态显示、滚屏显示等。
二、总体设计方案本设计以AT89C51单片机为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HCl54、74HC04)、行驱动电路(74HC245)、键盘、16×16LED点阵7部分组成。
将LED点阵的16条行线经行驱动电路与P2口和P3口连接,而LED点阵的32条列线则与5—32线译码器相连,列扫描信号由P1输出到译码器,P0号与键盘相连。
这样,单片机89C51按照设定的程序在P2和P3口输出与内部汉字对应的代码电平送至LED点阵的行选线(高电平驱动),同时在P1.1,P1.2,P1.3,P1.4,P1.5接口输出列选扫描信号(低电平驱动),从而选中相应的像素LED发光,并利用人眼的视觉暂留特性合成整个汉字的显示。
三、各模块电路设计1、16×32LED点阵16×32LED点阵可以用2个16×16LED点阵拼成,把2个16×16LED点阵相同的行连在一起就是1个16×32LED点阵。
LED点阵结构图如下:2、单片机最小系统单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。
对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。
3、列扫描驱动电路列扫描驱动电路是由反相器、译码器组成的5线—32线译码器。
译码器采用74HC154 4线—16线译码器,74HC154译码器可接受4位高电平有效二进制地址输入,并提供16个互斥的低有效输出。
反相器采用74HC04。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
89c51单片机控制的LED点阵显示系统+Keil C源程序+电路图
附Keil C的源程序:
#include <AT89x51.H>
unsigned int zimo,xx=0; //zimo是字模计数器,xx为分屏显示的时候的字数。
unsigned char yid,h; //yid为移动计数器,h为行段计数器
unsigned char code hanzi[]; //汉字字模
unsigned char BUFF[18],BUFF2[18]; //左移显示的缓存
void qing(void); void xianshi(void);
void fen(void); void zuo(void);
void in_data(void); //调整数据
void rxd_data(void); //左移发送数据
void out_rxd(unsigned char *d); //分屏、上移发送数据
char code sw[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x00}; /*8行段码*/
/***********主程序******************/
void main(void)
{ unsigned char ee;
SCON=0;P1=0;yid=0;zimo=0;
while(1)
{ fen(); //分屏显示
for(ee=30;ee>0;ee--)//清屏幕3秒
{qing();}
zuo(); //左移显示
for(ee=30;ee>0;ee--)
{qing();}
}
}
/**********清屏幕*******************/
void qing (void)
{ unsigned char zz,xx=0x0ff;
for (zz=33;zz>0;zz--)
{out_rxd(&xx);}
P1=0xff; P1=0; //锁存为高,74HC595锁存信号
P2=0; //清74LS138的使能端
}
/**********分屏显示***********/
void fen(void)
{ do{ xianshi(); }while(xx++<=5); //调用单屏显示
xx=0;
}
/************单屏显示*************/
void xianshi(void)
{ unsigned char ii,jj; unsigned int kk,aa;
for (kk=500;kk>0;kk--) //每屏显示500次
{for(ii=1;ii<16;ii+=2) //每个汉字分8行扫描
{for (jj=0;jj<8;jj++) //每次要发送8个汉字的2个字节,发送8次{ aa=(xx*8+jj)*32+ii;
out_rxd(&hanzi[aa]); //从串口输出第1个字的第1字节。
out_rxd(&hanzi[aa-1]); //从串口输出第1个字的第1字节。
}
for (jj=0;jj<8;jj++) //每次要发送8个汉字的2个字节,发送8次
{ aa=(xx*8+jj)*32+ii;
out_rxd(&hanzi[aa+16]); //从串口输出第1个字的第17字节。
out_rxd(&hanzi[aa+15]); //从串口输出第1个字的第18字节}
P2=0x0ff;
P1=0xff; P1=0; //锁存为高,74HC595锁存信号
P2=sw[h]; //输出行信号
h++; //行加一
if(h==8)h=0;
}
}
}
/***************左移显示************/
void zuo(void)
{ unsigned char i,d=5; //d为移动的时候一个汉字的扫描显示次数xianshi(); //调用单屏显示
while(zimo<=1450)
{while(yid<16) //数据移位。
{for(i=0;i<d;i++) //移动速度
{for(h=0;h<8;h++) //8行扫描
{ in_data(); //调整数据
rxd_data(); //串口发送数据
P2=sw[h]; //送段码
P1=0xff; //锁存为高,595锁存信号
P1=0;
}
}
yid++; //移动一步
}
yid=0;zimo=zimo+32; //后移一个字,
}
zimo=0;
}
/*************分屏显示的数据发送************/
void out_rxd(unsigned char *d) /*从串口发送数据*/
{ SBUF=*d; while(!TI); //等待发送完毕
TI=0;
}
/*******左移显示读取数据并调整**************/
void in_data(void)
{ char s,w; unsigned int qqq;
for(s=8;s>=0;s--)
{ w=s+s;
qqq=zimo+h+h+s*32;
BUFF[w+1]=hanzi[qqq];
BUFF[w]=hanzi[qqq+1];
BUFF2[w+1]=hanzi[qqq+16];
BUFF2[w]=hanzi[qqq+17];
}
}
/**********左移显示的数据调整发送***************/
void rxd_data(void) //串行发送数据
{unsigned char inc,s,tempyid,temp;
if(yid<8) inc=0;
else inc=1;
for(s=0+inc;s<16+inc;s++) //发送数据
{ if(yid<8) tempyid=yid;
else tempyid=yid-8;
temp=(BUFF[s]>>tempyid)|(BUFF[s+1]<<(8-tempyid));
SBUF=temp; //把BUFF中的字节从大到小移位相或后发送输出。
while(!TI);TI=0; //等待发送中断
}
for(s=0+inc;s<16+inc;s++) //发送8字节数据
{ if(yid<8) tempyid=yid;
else tempyid=yid-8;
temp=(BUFF2[s]>>tempyid)|(BUFF2[s+1]<<(8-tempyid));
SBUF=temp; //把BUFF中的字节从大到小移位相或后发送输出。
while(!TI);TI=0; //等待发送中断
}
}
unsigned char code hanzi[]={/*自己的汉字编码请放在这里*/};。