基于单片机的LED数码管循环移位显示
单片机系统基础实验——LED数码管循环移位显示
- 第一部分 前言
- 第二部分 数码管的原理构成
- LED数码管的结构
- LED数码管的工作原理
- LED数码管的字形编码
- LED数码管的控制方式
- 第三部分 设计项目
- Protues仿真图
- 仿真动态结果
- 代码
第一部分 前言
本次单片机基础实验将会通过在Proteus软件中画原理图,然后Keil软件下编写源程序并编译形成可执行文件.hex,下载源程序,进行Protues和Keil的联合仿真运行,最终对单片机仿真有初步的认识。
- 通过本篇文章了解并熟悉8位数码管的电路结构、与单片机的连接方法及其应用原理
- 学习proteus构建LED数码管显示电路的方法,掌握C51中单片机控制LED数码管动态显示的原理与编程方法
第二部分 数码管的原理构成
LED数码管的结构
由8个发光二极管构成,按照一定的图形及排列封装在一起的显示器件。其中7个LED构成7笔字形,1个LED构成小数点。如图1所示。
图1 引脚定义及1位数码管实物图
只要控制数码管各段LED的亮灭即可显示相应的数字、字母或符号。
LED数码管的工作原理
- 共阳极数码管工作原理
8个发光二极管的阳极共用一个电源的正极,阴极低电平点亮。数码管显示字符的条件:
- 在VT端加正电源
- (a,b,c,d,e,f,g,dp)端接低电平或“0”电平
如图2所示
图2 共阳极LED数码管的内部结构原理图
- 共阴极数码管工作原理
8个发光二极管的阴极共用一个电源的负极,阳极高电平点亮。数码管显示字符的条件:
- 在VT端接地;
- (a,b,c,d,e,f,g,dp)端接高电平。
如图3所示
图3 共阴极LED数码管的内部结构原理图
LED数码管的字形编码
要显示各种数字或字符,只需要将不同高低的电平信号送至不同的发光二极管的引脚上,将其点亮。这些用来控制LED显示的不同电平的代码称为字符的字段码。如图所示。
共阴极与共阳极显示器的字段码是逻辑非的关系。LED字码段与引脚之间的对应关系如下表所示
字码段 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
LED字段 | dp | g | f | e | d | c | b | a |
共阴极数码管显示字段码如下表所示
显示字符 | dp | g | f | e | d | c | b | a | 十六进制 |
---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 3F |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06 |
2 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 5B |
3 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 4F |
4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 66 |
5 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 6D |
6 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 7D |
7 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 07 |
8 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 7F |
9 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 6F |
A | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 77 |
B | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 7C |
C | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 39 |
D | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 5E |
E | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 79 |
F | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 71 |
共阳极数码管显示字段码如下表所示
显示字符 | dp | g | f | e | d | c | b | a | 十六进制 |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | C0 |
1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | F9 |
2 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | A4 |
3 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | B0 |
4 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 99 |
5 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 92 |
6 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 82 |
7 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | F8 |
8 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 80 |
9 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 90 |
A | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 88 |
B | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 83 |
C | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | C6 |
D | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | A1 |
E | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 86 |
F | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 8E |
LED数码管的控制方式
LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位。LED数码管的驱动方式有:静态驱动、动态驱动。
- 静态显示驱动
也称直流驱动。每个数码管的每一个段码都由一个单片机的I/O口进行驱动。
优点:编程简单,显示亮度高;
缺点:占用I/O口多。 - 动态显示驱动
将所有数码管的段选端“a,b,c,d,e,f,g,dp ”的同名端连在一起,每个数码管的公共
极COM增加位选通控制电路,位选通由各自独立的I/O线控制。
优点:占用I/O口少;
缺点:电路设计和编程更复杂。
第三部分 设计项目
Protues仿真图
基于上述实验项目,将会设计一单片机控制的8位数码管(共阴极或是共阳极数码管均可)显示电路,编程实现一段数字的循环左移显示,本次设计将采用共阴极数码管,在Protues中为7SEG-MPX4-Cathode,因此可以得到如下图所示的原理图。
仿真动态结果
通过两个4位LED数码管实现数字的循环,利用74HC573和ULN2804对单片机的结果进行输出锁存,然后将结果通过数码管进行显示,其动态结果如下图所示。
如图所示,通过在keil中输出2020 0111 CC的16进制结果从而得到相应的结果,数码管进行移位显示。
代码
Keil代码如下:
#include<reg51.h>
#define uchar unsigned char
#define uint signed int
sbit seg=P2^0;
sbit wei=P2^1;
uchar code LED_D[]={0x5B,0x3F,0x5B,0x06,0x3F,0x06,0x06,0x06,0x39,0x39}; //改变需要输入的字段码即可改变输出的数值
uchar code LED_W[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
//延时函数,消抖
void delay(uint x)
{uchar i;while(x--)for(i=0;i<150;i++);
}
//主函数
void main()
{uchar a,b;P0=0x00;seg=0;wei=0;while(1)
{for(a=0;a<10;b++,a++)
{P0=LED_D[a];seg=1;seg=0;P0=LED_W[b];if(b==7)b=-1;wei=1;wei=0;delay(150);P0=0x00;seg=1;seg=0;wei=1;wei=0;
}
}
}
以上就是本次LED数码管显示的全部内容,希望通过本次的讲解能够加深大家对于数码管的理解。文章的内容可能存在部分不足之处,如有错误,请在评论区指出,谢谢。
基于单片机的LED数码管循环移位显示相关推荐
- 单片机控制LED数码管的显示
首先我们说说LED数码管的显示原理. LED数码管是常见的显示器件.LED数码管为"8"字形的,其计8段(包括小数点段在内)或7段(不包括小数点段),每一段对应一个发光二极管,有共 ...
- 基于单片机病房呼叫系统数码管显示房号设计-基于单片机工业生产现场的光照强度控制设计-基于单片机多功能智能台灯设计-基于单片机二维码LCD显示设计-基于单片机多功能时钟闹钟万年历控制系统设计【毕设分享】
1641基于单片机病房呼叫系统数码管显示房号设计 设计思路:此设计实现的功能通过按键模拟房号,当按键按下时会将房号编号发送到数目管上进行显示,并通过声光进行提示.包含的电路有:数码管显示电路.按键电路 ...
- c51时钟数码管显示流程图_基于单片机89C51的数码管显示时钟设计.doc
基于单片机89C51的数码管显示时钟设计 基于单片机的数字时钟 摘 要单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉.但是却很少知道它的内部结构以及工作原理.由单片 ...
- avr单片机led数码管六位动态显示时分秒c语言程序,AVR单片机控制8段LED数码管同时显示 - AVR单片机8位数码管显示的程序实现(两种方法介绍)...
AVR单片机控制8段LED数码管同时显示 这是一个简单的供单片机入门学习者练习用的8段LED数码管控制汇编程序,控制一个两位的数码管同时显示字符(动态刷新).用AVR- Studio-4 开发,在AV ...
- 单片机学习笔记-数码管的显示
单片机学习笔记-数码管的显示 数码管的显示 1.首先我们来看一下开发板的原理图 由管脚分配可知,数码管的末端(也就是LED端),是由74138译码器来控制的. 2.下面是数码管显示的函数 这里我们使用 ...
- 51单片机控制系统的人机交互接口设计【51单片机与LED数码管的动态显示接口案例分析】
本章节利用Keil uVision5和ISIS 7 Professional两个软件来进行仿真实验. [例]运用51单片机实现8位8段数码管的动态显示,LED数码管的段选数据由51单片机的P0口控制, ...
- 基于单片机的LED照明系统的设计
本设计是基于单片机的LED照明系统的设计,主要实现以下功能: 可实现LCD1602显示光照强度,灯的状态: 可实现通过按键控制LED的开关: 可实现通过光照强度控制灯光的亮度: 可实现通过人体红外控制 ...
- 单片机--4个数码管循环显示数字
单片机–4个数码管循环显示数字同时LED灯循环左移显示 这里有几个需要注意的点: 1.如果让8个数码管中几个数码管显示不同的数字,这里一定是挨个显示的,不可能同时显示不同的数字,可以让几个数码管同时显 ...
- 基于单片机的LED自适应调光系统的设计与实现 - 调光电路图
电路图简介: 本文主要介绍了基于单片机的LED自适应调光系统的设计与实现.LED自适应调光系统是一种典型的绿色照明方式,与传统照明相比,具有智能.节能.环保.寿命长.安全可靠等这些优点,这是代表着照明 ...
最新文章
- mysql用binlog恢复数据_mysql 利用 binlog 恢复数据
- realloc函数在使用上要注意什么问题
- SQLDBCompare_Rel2.0破解手记
- mysql 打印_故障分析 | MySQL:5.6大事务show engine innodb status故障一例
- sudo命令_如何在非 sudo 用户下运行 docker 命令?
- 博客转移至 https://www.babac.cn/
- 【杂题总汇】HDU-6406 Taotao Picks Apples
- 17秋 软件工程 团队第三次作业 预则立他山之石
- 【nodejs学习】0.nodejs学习第一天
- 190106每日一句
- POJ 3744 Scout YYF I:概率dp
- UML活动图案例-业务流程建模
- java-net-php-python-64jspm自主学习试题库系统录像演示2019查重计算机毕业设计程序
- PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization
- 10Easyx图形编程
- Java中Arrays数组工具类的使用全解
- 35,UC(14) .
- Windows 或 Windows 服务器上的 hyper-v 中升级虚拟机版本
- 04 面向对象之:三大特性:继承(已讲),封装,多态。
- VPC NAT(SANT,NANT)实验
热门文章
- Java 学习 Day14
- SDNUOJ 1025.马踏飞燕(DFS||BFS))
- 拼多多回应“差评”:将起诉并索赔1000万元 所涉店铺均已屏蔽
- 天涯社区是怎样一步步被人遗忘的?
- 博士申请 | 湖南大学张子兴教授课题组招收人工智能方向博士生
- 第二篇 阿基米德螺旋线 小Demo 简单 易懂 实现 vc++8.0
- Linux命令行最常用操作(避开对于初学者来说华而不实的操作)
- win10计算器rsh_Win10系统有哪些计算器快捷键?快捷键的介绍
- 16小时讲完,Spring源码解析整套笔记
- PHP校园表白墙V3.0版程序源码