基于51单片机的LED数码管动态显示
51单片机动态数码管实验报告
51单片机动态数码管实验报告一、背景动态数码管是一种常见的显示装置,它由多个LED组成,可以显示数字、字母和符号等信息。
在嵌入式系统中,动态数码管常用于显示各种信息,如温度、湿度、时间等。
本次实验旨在通过学习51单片机动态数码管的使用方法,了解动态数码管的工作原理和使用技巧。
二、分析动态数码管由多个共阴极或共阳极LED组成,每个LED都可用于显示一个数字或字符。
动态数码管的显示是通过快速切换数码管的管脚电平实现的,每个数码管显示部分的亮度和显示时间取决于刷新速度。
本次实验涉及到四位数码管,所以需要控制四个共阳极或共阴极数码管,通过快速切换显示四个数码管的方式实现动态显示效果。
实验所需要的材料有:51单片机开发板、数码管模块、面包板、杜邦线等。
以下是步骤:1.将数码管模块的共阳极或共阴极连接到51单片机开发板的IO口。
根据数码管模块的引脚连接方式,选择合适的IO口。
2.在51单片机开发板上搭建实验电路。
首先将开发板的VCC引脚连接到面包板的正电源线上,GND引脚连接到面包板的地线上。
然后将数码管模块的VCC引脚连接到面包板的正电源线上,GND引脚连接到面包板的地线上。
最后将数码管模块的信号引脚连接到51单片机开发板选择的IO口上。
3.编写程序。
使用C语言编写代码,通过控制IO口的电平和延时实现数码管的动态显示功能。
根据所需显示的数字和字符,选择合适的代码逻辑。
4.将编写好的程序下载到51单片机开发板上。
使用USB转串口工具将开发板与电脑连接,使用相应的下载软件将程序下载到开发板。
5.执行程序。
将开发板上的动态数码管模块打开,观察数码管的显示效果。
根据实际需求,调整程序中的显示内容和显示速度。
三、结果经过以上步骤,可以成功实现51单片机动态数码管的显示功能。
根据编写的程序和韦氏编码表,可以显示各种数字、字母和符号等信息。
通过调整程序中的显示内容和显示速度,可以实现不同的显示效果。
四、建议在进行实验过程中,需要注意以下几点:1.确保电路连接正确。
单片机数码管动态显示
动态显示1.掌握LED数码管显示及其一般电路结构;2.掌握LED动态显示程序的一般设计方法。
一、实验内容动态显示,也称为扫描显示。
显示器由6个共阴极LED数码管构成。
单片机的P0口输出显示段码,由一片74LS245输出给LED管;由P1口输出位码,经74LS04输出给LED显示。
二、实验步骤1、打开Proteus ISIS编辑环境,按下表所列的元件清单添加元件。
图1 动态显示实验电路原理图2、按实验要求在KeilC中创建项目,编辑、编译程序。
3、将编译生成的目标码文件(后缀为.Hex)传入Proteus的实验电路中。
4、在Proteus ISIS仿真环境中运行程序,观察实验运行结果并记录。
三、实验要求1.编写一显示程序显示201071;2.显示特殊字符good;3.调整软件延时子程序的循环初值,逐渐加大每一位LED点亮的时间,观察程序运行结果。
四、参考程序dbuf equ 30h ;置存储区首址temp equ 40h ;置缓冲区首址org 00hmov 30h,#2 ;存入数据mov 31h,#0mov 32h,#1mov 33h,#0mov 34h,#7mov 35h,#1mov r0,#dbufmov r1,#tempmov r2,#6 ;六位显示器mov dptr,#segtab ;段码表首地址dp00: mov a,@r0 ;取要显示的数据movc a,@a+dptr ;查表取段码mov @r1,a ;段码暂存inc r1inc r0djnz r2,dp00disp0: mov r0,#temp ;显示子程序mov r1,#6 ;扫描6次mov r2,#01h ;从第一位开始dp01: mov a,@r0mov p0,a ;段码输出mov a,r2 ;取位码mov p1,a ;位码输出acall delay ;调用延时mov a,r2rl amov r2,ainc r0djnz r1,dp01sjmp disp0segtab: db 3fh,06h,5bh,4fh,66hdb 6dh,7dh,07h,7fh,6fhdelay: mov r4,#03h ;延时子程序aa1: mov r5,0ffhaa: djnz r5,aadjnz r4,aa1retend实验原理MCS-51单片机内设置了两个可编程的16位定时器T0和T1,通过编程,可以设定为定时器和外部计数方式。
基于51单片机的74HC164驱动六位数码管显示程序与仿真
P2=0xff; //数码"灭"
}
}
main()
{
separateData(123456);
while(1)
{
display();
}
}
DS_data[2]=dat/100%10;
DS_data[3]=d4]=dat/10000%10;
DS_data[5]=dat/100000%10;
}
void write_164(unsigned char dat)
{
unsigned char i;
for(i=0;i<8;i++)
sbit MOSI=P1^1;//符号DSA引脚1数据输入符号DSB引脚2数据输入
unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//共阴数码管
基于51单片机的74HC164驱动六位数码管显示程序与仿真
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//74HC164
sbit CLK=P1^0;//符号CP引脚8时钟输入(低电平到高电平边沿触发)
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
基于51单片机实现LED数码管静态与动态显示的设计浅析
33第2卷 第22期产业科技创新 2020,2(22):33~34Industrial Technology Innovation 基于51单片机实现LED数码管静态与动态显示的设计浅析龙 志(广州大学松田学院,广州 增城 511370)摘要:随着社会的发展,在我们日常的生活中,数码管的应用随处可见,尤其是在电子应用设计显示等方面常常发挥着非常重要的作用,因此研究数码管的显示有非常重要的现实意义。
数码管我们可以分为静态显示和动态显示,这两种显示有着本质的区别,静态显示的特点是占用CPU 时间少,显示便于监测和控制,显示字形稳定,而动态数码管的显示,效果相对静态显示亮度差少许,但成本较低。
本设计主要是基于51单片机,先通过结合集成芯片74HC573对LED 数码管静态显示的硬件电路设计与分析,进一步拓展到采用芯片74HC138与LED 数码管动态显示的硬件电路设计与分析,最终实现两种不同的电路设计显示的方法。
关键词:LED 数码管;静态显示;动态显示;51单片机中图分类号:TP368.12 文献标识码:A 文章编号:2096-6164(2020)22-0033-02随着电子应用技术的不断发展,显示电路在电子设计应用方面更加广泛,尤其是LED 数码管显示在各行各业中的应用更加重要,如红绿交通灯显示,电子时钟显示,家电产品功能显示等方面都需要用到LED 数码管作为显示。
因此,对LED 数码管的显示控制有着非常重要的现实意义。
因此我们要实现LED 数码管的熟练显示控制,我们必须要根据数码管的特点来进行分析和设计,数码管有静态显示和动态显示的两种方法,接下对这两种电路作详细的分析与设计,最终实现对LED 数码管静态与动态的两种不同显示设计方法。
1 数码管静态显示电路设计数码管静态显示设计是利用MCS-51单片机结合两片集成芯片74HC573,实现对4个LED 数码管的显示控制。
具体设计如图1所示:图1 数码管静态显示设计电路图本电路设计主要是利用单片机的P0口来实现对数码管的位选控制与段选的控制,P0口之所以能够正确的对数码管进行位选与段选的控制,关键是在于设计中使用了芯片74HC573。
基于单片机的按键控制LED数码管共阴极动态显示电路设计报告毕业论文
基于单片机的按键控制LED数码管共阴极动态显示电路设计报告毕业论文本篇报告将详细介绍基于单片机的按键控制LED数码管共阴极动态显示电路的设计。
一、引言LED数码管是一种常用的数字显示器件,广泛应用于各种计数器、时钟和计时器等电子设备中。
本设计旨在利用单片机实现对LED数码管的动态显示,并通过按键控制显示的数字。
二、设计方案1.系统结构本系统采用基于单片机的数字显示方案,其中包括一个单片机、数码管显示模块和按键模块。
单片机负责接收按键输入信号,并根据输入信号控制数码管显示相应的数字。
2.系统设计(1)数码管显示模块:该模块由共阴极LED数码管组成,共阴极接地,通过接通不同的端口线来控制数码管显示不同的数字。
(2)按键模块:该模块由多个按键组成,用于用户输入指定的数字。
每个按键接一个IO脚,通过按下不同的按键,触发不同的端口输入。
(3)单片机:本设计选用51单片机作为控制核心,通过IO口与数码管显示模块和按键模块连接。
单片机根据按键输入信号的变化,对数码管进行动态显示。
3.设计过程(1)针对单片机的接线设计:将单片机的IO口分别与数码管显示模块和按键模块连接。
将数码管的共阳极接电源正极,数码管的各段(即a、b、c、d、e、f、g)接单片机的IO脚。
(2)针对单片机软件设计:设计单片机程序实现按键输入的检测和数码管动态显示的控制。
首先初始化IO口,设置按键引脚为输入端口,设置数码管引脚为输出端口。
然后循环检测按键的状态。
当检测到按键被按下时,根据按键的不同选择分别显示不同的数字。
4.功能要求(1)按下不同的按键,数码管能够显示相应的数字,实现动态显示。
(2)按键输入具有去抖功能,避免误触发。
(3)程序运行稳定,能够正确响应按键输入,显示正确的数字。
三、实验结果经过实验验证,本设计实现了按键控制LED数码管共阴极动态显示的功能要求。
按下不同的按键,数码管能够正确显示相应的数字,程序运行稳定,无误触发现象。
51单片机-数码管显示
} void delay(int x) {
int i,j; for(i=0;i<x;i++)
for(j=1;j<120;j++); }
LED字型显示代码表
段符号
十六进制代码
显示 dp
g
f
e
d
c
b
a 共阴极 共阳极
0
0
1
0
2
0
3
0
4
0
5
0
6
0
7
0
8
0
9
0
A0
b
0
C0
d
0
E0
F
0
H0
P0
0
1
1
1
1
1
1
3FH
C0H
0
0
0
0
1
1
0
06H
F9H
1
0
1
1
0
1
1
5BH
A4H
1
0
0
1
1
1
1
4FH
B0H
1
1
0
0
1
Hale Waihona Puke 1066H
99H
1
1
0
1
1
0
1
6DH 92H
1
1
1
1
1
0
1
7DH
1. 静态显示的特点
静态显示就是单片机将所要显示的数据送出去后,数码管始终显示 该数据(不变),到下一次显示时,再传送一次新的显示数据。
【51单片机】数码管LED显示动态2(0-99计数)
//函数声明: void display(unsigned char da);//定义显示函数,参数为显示内容,只显示两位数 void delay(void);
//主函数,C 语言的入口函数:
void main(void)
{
unsigned char i=0; unsigned char ldata;
0-9 delay();
//延时
P0=0XFF; SMG_s=1;
//清除数码管显示,因是共阳型,所以不是 0 //关闭十位数码管
SMG_g=0;
//选择个位数码管
P0=table[da%10]; //获取个位值,查表输出定义好的数码管段值与 P0 口,显示相应的
0-9 delay(); P0=0XFF; SMG_g=1;
ldata++;
//刷新完成约 1 秒,变量做加计数
else
ldata=0;
}
}
//显示函数,参数为显示内容,只显示两位数
void display(unsigned char da)
{
SMG_stable[da/10]; //获取十位值,查表输出定义好的数码管段值与 P0 口,显示相应的
/*************************************************************************** 标题: 数码管的显示 效果: 显示 00-99,动态显示+变化显示 工作于:51 开发板 说明: 此例程将数码管显示内容用一个函数打包,要显示直接调用即可。
******************************************************************************/ //头文件: #include "reg51.h"
51单片机数码管动态显示分析
51单片机数码管动态显示分析51单片机数码管动态显示是一种常见的数字显示方式,其主要通过控制不同位数的数码管,使其依次显示数字,从而实现数字动态显示的效果。
以下将从原理和实现两个方面对51单片机数码管动态显示进行分析。
一、原理分析51单片机数码管动态显示的原理主要分为两部分,分别为定时器控制和位选控制。
定时器控制:在51单片机中使用定时器是为了保证数字动态显示的稳定性。
通过定时器中断的方式来控制数码管的显示时间,使得每个数字都有足够的时间显示,并且切换速度平稳。
位选控制:在数码管动态显示过程中,需要依次控制不同位数的数码管显示数字。
这是通过位选控制器实现的,它会依次选中各位数码管,并显示出要显示的数字。
这个过程会不停地重复,从而实现数字的动态显示。
二、实现分析51单片机数码管动态显示的实现需要以下几个步骤:1. 确定使用的数码管数量及其接口:需要确定使用几个数码管以及它们的引脚分别对应的单片机IO口。
2. 编写显示函数:编写一个函数来控制数码管的动态显示,其中需要实现定时器中断以及位选控制的功能。
3. 循环调用显示函数:将编写好的显示函数放到主函数中进行调用,并不断地循环执行,从而实现数字的动态显示。
需要注意的是,在编写显示函数的过程中,需要确定定时器中断的时间间隔、位选控制的顺序以及每个数码管对应的IO口。
这些因素会直接影响到数字的显示效果,因此需要仔细调试以达到最佳的显示效果。
在实现过程中,还需要考虑到如何读取用户输入并将其显示在数码管上。
一种常见的方式是通过外部按键来读取用户输入,然后通过数码管动态显示的方式,将输入的数字依次显示出来。
总之,51单片机数码管动态显示是一种常见的数字显示方式,其实现原理和步骤相对比较简单。
需要注意的是,在实际应用中还需要结合实际需求进行相应的调整,以达到最佳的显示效果。
4个LED动态显示设计
LED动态显示设计总体设计思路如下:依题意用MCS-51单片机设计一个在四位LED数码管上动态显示出数字1、2、3、4。
一、单片机系统可分为三部分:硬件、软件、单片机最小系统(含时钟复位电路).二、单片机系统硬件原理图五、程序清单ORG 0000HLJMP MAINORG 0100H MAIN: MOV SP,#50HMOV 30H,#06HMOV 31H,#5BHMOV 32H,#4FHMOV 33H,#66HMOV 34H,#77HMOV R0,#30H DISP: MOV P3,#0FFHMOV P1,@R0MOV P3,34HMOV A,34HRR AMOV 34H,AINC R0MOV A,R0ANL A,#33HMOV R0,ALCALL DELAYSJMP DISP DELAY: MOV R2,#8D1: MOV R3,#200D2: MOV R4,#250DJNZ R4,$DJNZ R3,D2DJNZ R2,D1RET选用AT89C51系列单片机制作一个动态显示数字“1”,“2”,“3”,“4”效果。
I/O中P1口接四位数码管的BCD码笔段,分别P1.0~P1.7对应a~dp管脚端口上。
显示1~4数码管控制端依次为:P3.7、P3.6、P3.5、P3.4。
三、单片机软件设计用MCS-51单片机中的寻址方式间接寻址Mov direct, @R0,30H~33H分别存入数字1,2,3,4的BCD码。
R0寄存器寻址30H~33H。
34H存数码管控制端选择数据,采用软件延时间断显示。
四、程序流程图。
基于单片机LED数码管共阴极显示电路课程设计
物理与电子工程学院《单片机原理与接口技术》课程设计报告书设计题目:基于单片机LED数码管共阴极显示电路专业:自动化班级: 14级接本班学生姓名:李超学号: 2010140343108指导教师:成燕平2014年6月9日物理与电子工程学院课程设计任务书专业:自动化班级: 14级接本1班随着计算机技术的发展,现代的计算机都是大规模集成电路计算机它们具有功能强、结构紧凑、系统可靠等特点,其发展趋势是巨型化、微型化、网络化及智能化。
微型化是计算机发展的重要方向,也就是把计算机的运算器、控制器、存储器、I/O接口四个组成部分集成在一个硅片内,于是就出现了一个以大规模集成电路为主要组成的微型计算机即单片机(Single Chip Microcomputer)。
正是由于单片机技术的发展,才能使LED七段数码管能够在减少驱动器的情况下能够直接被驱动。
由于LED数码管显示技术的优势使得它被广泛应用在工业过程控制系统、智能仪表,智能产品等领域。
本论文重点介绍了LED(light emission diode)数码管显示技术,并且编写了这种显示技术在单片机中实现的关键编码以及提供了参考原理简图。
关键词:LED技术;计算机硬件;单片机;数码管1 引言 (1)2 设计的目的 (2)3 电路的设计与分析 (2)3.1电路的总体设计 (2)3. 2数码管的工作原理 (3)3.3电路的原理框图 (5)3.4计数电路的分析与设计 (6)4 译码显示电路的设计与分析 (7)4 .1译码电路的设计 (7)4.2译码电路的分析 (8)5调试及运行结果分析 (9)5.1调试及运行 (9)5.2结果分析 (9)5.3总电路仿真 (10)6心得体会 (11)参考文献 (12)附录 (13)1 引言用单片机驱动LED数码管有很多方法,按显示方式可分静态显示和动态(扫描)显示;按译码方式可分硬件译码和软件译码。
静态显示数据稳定,占用很少的CPU时间。
基于单片机的电子时钟6位LED数码管显示
数码管显示电子时钟设计一.功能要求1.数字电子时钟最主要是LED数码管显示功能,以24小时为一个周期,显示时间时、分、秒。
2.具有校时功能,可以对时、进行单独校对,使其校正到标准时间。
二.方案论证1.数字时钟方案数字时钟是本设计的最主要的部分。
根据需要,可利用两种方案实现。
方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。
该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。
为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。
当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。
而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:本方案完全用软件实现数字时钟。
原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。
该方案具有硬件电路简单的特点。
但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。
基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。
2.数码管显示方案方案一:静态显示。
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。
该方式每一位都需要一个8 位输出口控制。
静态显示时较小的电流能获得较高的亮度,且字符不闪烁。
但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案二:动态显示。
所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。
51单片机数码管0到F动态显示
#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit du=P2^6;sbit we=P2^7;uchar num;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delays(uint);void main(){we=1;//打开U2锁存器P0=0xc0;//送入位选信号we=0;while(1){du=1;P0=table[0];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xfe;we=0;delays(500);du=1;P0=table[1];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xfd;we=0;delays(500);du=1;P0=table[2];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xfb;we=0;delays(500);du=1;P0=table[3];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xf7;we=0;delays(500);du=1;P0=table[4];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xef;we=0;delays(500);du=1;P0=table[5];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xdf;we=0;delays(500);du=1;P0=table[6];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xfe;we=0;delays(500);du=1;P0=table[7];P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xfd;we=0;delays(500);du=1;P0=table[8];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xfb;we=0;delays(500);du=1;P0=table[9];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xf7;we=0;delays(500);du=1;P0=table[10];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xef;we=0;delays(500);du=1;P0=table[11];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;we=0;delays(500);du=1;P0=table[12];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xfe;we=0;delays(500);du=1;P0=table[13];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xfd;we=0;delays(500);du=1;P0=table[14];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xfb;we=0;delays(500);du=1;P0=table[15];du=0;P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱we=1;P0=0xf7;we=0;delays(500);}}void delays(uint xs){uint i,j;for(i=xs;i>0;i--)for(j=110;j>0;j--);//延时x秒}。
基于STC89C51单片机LED点阵显示屏的设计和开发
基于STC89C51单片机LED点阵显示屏的设计和开发摘要伴随着科技的进步,LED点阵显示屏作为一种新兴的显示器件走进我们的视野,它是由多个独立的LED发光二极管封装而成。
通过LED点阵显示屏可以显示数字、符号以及文字,通常用在广告,指示牌,公告牌上。
显示屏整机以40脚单片机STC89C51为核心,本文介绍了以STC89C51单片机为控制系统的LED点阵显示屏的动态设计和开发过程。
通过该芯片控制一个行驱动器74HC154和两个列驱动器74HC595来驱动显示屏显示。
该电子显示屏可以显示各种文字或单色图像,全屏能显示1个汉字,采用16×16点阵LED显示模块来组成16×16点阵显示屏。
显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。
文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。
单片机控制系统程序采用C语言进行编辑,通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效地控制各显示点的亮灭。
所显示字符的点阵数据可以自行编写(即直接点阵画图),也可从标准字库中提取。
LED显示以其组构方式灵活、显示稳定、功耗低、寿命长、技术成熟、成本低廉等特点用于车站、证券所、运动场馆、交通干道及各种室内外显示场合的信息发布,公益宣传,环境参数实时更新,重大活动倒计时等方面。
经实践证明,该系统显示误差小,性能稳定,结构合理,扩展能力强。
关键词:STC89C51单片机; LED;点阵显示;动态显示ABSTRACTWith advances in technology, LED dot matrix display as a display device into our new vision, it is more independent of the LED light emitting diode packages. LED dot matrix display can show by numbers, symbols and text, often used in advertising, signs, bulletin boards.The whole equipment is with the 40-pin STC89C51 MCU (Micro Controller Unit) at the core, introduced take it as the control system LED lattice electron display monitor dynamic design and the development process. Controls good driver 74HC154 and two row driver 74HC595 through this chip actuates the display monitor demonstration. The electronic screen can show all kinds of written or monochrome images, one full screen display Chinese characters, four pieces of 8×8 dot-matrix LED display modules to form the 16×16 dot matrix display mode. Show dynamic show that makes static graphic or text can be achieved, shifted out of various formats. This paper describes the hardware design of the LED dot matrix display, and the principle function of the various parts of the circuit, the corresponding software program design and the use of some such.SCM process control system used for editing MCU C language, Programming control points indicated by the corresponding LED anode and overcast extreme level. We can effectively control the defense showed bright spots. The lattice data shows characters can prepare themselves (that is, direct lattice Painting), which can also be extracted from the standard font.LED display with fabric means flexibility, stability, low power consumption, long life, mature technology, low-cost features at the station, securities, sports venues, transportation corridors and various indoor / dissemination of information on foreign shows occasions, good publicity, real-time environmental parameters, etc. countdown major activities are widely used.As the practice proves, the system possesses advantages in low shows errors, stable, rational structure and strong extensible abilities.Key words: STC89C51 Micro Controller Unit LED Lattice Display Dynamic Display目录摘要 (I)ABSTRACT (II)1 绪论 ........................................................... - 1 -1.1 课题的研究背景及意义 ...................................... - 1 -1.2 LED电子显示屏概述......................................... - 1 -1.3 LED电子显示屏的分类....................................... - 1 -1.4 国内外研究现状简述 ........................................ - 2 -1.5 设计任务 .................................................. - 3 -2 总体设计方案 ..................................................... - 4 -2.1 显示屏控制系统 ............................................ - 4 -2.1.1 显示单元的选择 ...................................... - 4 -2.1.2 滚屏方式选择 ........................................ - 4 -2.2 设计方案论证 ............................................... - 5 -2.2.1 显示模式方案 ........................................ - 5 -2.2.2 数据传输方案 ........................................ - 6 -3 系统硬件部分设计 ................................................. - 8 -3.1 电源设计 .................................................. - 8 -3.2 主控电路系统及其外围电路 .................................. - 9 -3.2.1 主控单元的选择 ...................................... - 9 -3.2.3 主控电路系统外围电路 ............................... - 12 -3.3 列驱动电路 ............................................... - 13 -3.4 行驱动电路 ............................................... - 15 -3.4.1 行驱动芯片74HC154 介绍............................. - 15 -3.4.2 行驱动电路 ......................................... - 17 -3.5 LED显示屏电路............................................ - 17 -4 系统软件部分设计 ................................................ - 20 -4.1 概述 ...................................................... - 20 -4.2 系统主程序 ............................................... - 20 -4.3 显示驱动程序 ............................................. - 21 -5 软硬件调试及性能分析 ............................................ - 23 -5.1 软件调试 ................................................. - 23 -5.2 硬件调试 ................................................. - 24 -5.3 性能分析 ................................................. - 25 - 总结 ............................................................ - 27 - 致谢 ............................................................ - 28 - 参考文献 .......................................................... - 29 - 附录一:LED点阵显示屏系统电路原理图............................... - 30 - 附录二:LED点阵显示屏源程序....................................... - 31 - 附录三:元件清单 .................................................. - 38 -1 绪论1.1 课题的研究背景及意义该课程设计使我能够掌握LED显示屏的基本显示原理和设计方法,对LED显示屏这个行业有了较为深刻的了解和认识,并且对大学期间所学习的一些理论进行了实践,使我对所学过的理论知识有了新的认识。
用单片机AT89C51设计一个2位的LED数码显示作为“秒表”—单片机课程设计
目录一、设计题目和要求: (2)二、设计目的: (2)三、设计内容: (3)四、课程设计心得体会 (25)五、参考文献 (26)六、课程设计指导教师评审标准及成绩评定 (27)附件1:秒表原理图(实际接线图) (28)附件2:仿真图1 (30)附件3:仿真图2 (31)一、设计题目和要求:题目三:秒表应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。
设计一个“复位”键,按下“复位”键后,秒表从0开始计时。
任务安排:李座负责绘制电路原理图;梁宗林负责收集资料及电子版整理;付忠林负责程序和仿真。
二、设计目的:1.进一步掌握AT89C51单片机的结构和工作原理;2.掌握单片机的接口技术及外围芯片的工作原理及控制方法;3.进一步掌握单片机程序编写及程序调试过程,掌握模块化程序设计方法;4.掌握PROTEUS仿真软件的使用方法;5.掌握LED数码管原理及使用方法。
6.掌握定时器、外部中断的设置和编程原理。
7.通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
8.该课程设计通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、复位功能,并同时可以用数码管显示。
三、设计内容:了解8051芯片的的工作原理和工作方式,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、清零功能,精确到1秒。
AT89C51单片机的主要工作特性:·内含4KB的FLASH存储器,擦写次数1000次;·内含28字节的RAM;·具有32根可编程I/O线;·具有2个16位可编程定时器;·具有6个中断源、5个中断矢量、2级优先权的中断结构;·具有1个全双工的可编程串行通信接口;·具有一个数据指针DPTR;·两种低功耗工作模式,即空闲模式和掉电模式;·具有可编程的3级程序锁定定位;AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz.AT89C51各部分的组成及功能:振荡器和时钟电路数据存储器128字节程序存储器14KBCPU 两个16位定时器计数器中断控制总线扩展控制器并行可编程I/O口可编程串行口内部总线外部中断扩展控制P0 P1 P2 P3 RXD TXD1.单片机的中央处理器(CPU )是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于51单片机的LED数码管动态显示
LED数码管动态显示就是一位一位地轮流点亮各位数码管,对于每一位LED数码管来说,每隔一段时间点亮一次,利用人眼的“视觉暂留"效应,采用循环扫描的方式,分时轮流选通各数码管的公共端,使数码管轮流导通显示。
当扫描速度达到一定程度时,人眼就分辨不出来了。
尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,认为各数码管是同时发光的。
若数码管的位数不大于8位时,只需两个8位I/O口。
1 硬件设计
利用51单片机的P0口输出段码,P2口输出位码,其电路原理图如下所示。
在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是 SP3中文版)。
单击菜单命令“文件”→“新建设计”,选择DEFAULT模板,保存文件名为“”。
在器件选择按钮中单击“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示的元件。
51单片机AT89C51 一片
晶体CRYSTAL 12MHz 一只
瓷片电容CAP 22pF 二只
电解电容CAP-ELEC 10uF 一只
电阻RES 10K 一只
电阻RES 四只
双列电阻网络 Rx8 300R(Ω) 一只
四位七段数码管7SEG-MPX4-CA 一只
三极管 PNP 四只
若用Proteus软件进行仿真,则上图中的晶振和复位电路以及U1的31脚,都可以不画,它们都是默认的。
在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER和GROUND放置电源和地。
放置好元件后,布好线。
左键双击各元件,设置相应元件参数,完成电路图的设计。
2 软件设计
LED数码管动态显示是一位一位地轮流点亮各位数码管的,因此要考虑每一位点亮的保持时间和间隔时间。
保持时间太短,则发光太弱而人眼无法看清;时间太长,则间隔时间也将太长(假设N位,则间隔时间=保持时间X(N-1)),使人眼看到的数字闪烁。
在程序中要合理的选择合适的保持时间和间隔时间。
而循环次数则正比于显示的变化速度。
LED数码管动态显示的流程如下所示。
LED数码管动态显示的详细C51程序如下。
/*****************************************
*通过P0及P2口控制四只数码管,12M晶振
*****************************************/
#include ""
#define uchar unsigned char
#define uint unsigned int
uchar code ddata[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xc0,0xf9,0xa4
}; ..F,0,1,2,3的段码
/****延时函数*******************************/
void delayms(uint t)
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
main()
{
while(1)
{
uint i,j,k;
for(k=1;k<17;k++) //16个字符
{
for(j=0;j<50;j++)//反比于字符显示变化速度
{
for(i=1;i<5;i++) //4位
{
P0=ddata[k+i-2];
switch(i)
{
case 1:P2=0XFE;break; //点亮第1位
case 2:P2=0XFD;break; //点亮第2位
case 3:P2=0XFB;break; //点亮第3位
case 4:P2=0XF7;break; //点亮第4位
}
delayms(5);
P2=0XFF; // 熄灭
}
}
}
}
}
打开Keil程序(本人使用的是中文版),执行菜单命令“工程”→“新建工程”创建“动态”项目,并选择单片机型号为AT89C51。
执行菜单命令“文件”→“新建”创建文件,输入C语言源程序,保存为“”。
在Project Workspace窗口中右击源代码组1,选择“添加文件到组‘源代码组 l’”将源程序“”添加到项目中。
在Keil中执行执行菜单命令“工程”→“创建目标”(或点击“创建目标”快捷按钮),编译源程序。
如果编译成功,则在“Output Window”的“创建”窗口中显示没有错误,并创建了“”文件。
3 仿真与调试
关于Proteus与Keil的联合仿真调试,可参见我以前所写的博文或其它参考资料。
启动Proteus的ISIS,并将其放在屏幕的右上角(可将原理图放大到合适大小);再启动Keil的μVision3,并将其放在屏幕的左下角。
在Keil中执行菜单命令“调试”→“启动/停止调试”,或直接单击图标,进入Keil调试环境。
同时,在Proteus ISIS的窗口中可看出Proteus也进入了程序调试状态。
在Keil代码编辑窗口中设置相应断点,断点的设置方法:在需要设置断点语句前双击鼠标左键,可设置断点;再次双击,可取消该断点。
在Keil中按F5键(或点击“运行”快捷按钮)运行程序。
四位LED数码管显示0123、1234、2345……CdEF、dEf0、EF01、F012……如此循环。
或可以点击单步、运行到光标处、全速运行等快捷按钮,以及同时观察工程窗口寄存器页面、存储器窗口等,来进行仿真调试。