基于单片机的LED数码管循环移位显示

您所在的位置:网站首页 16段数码管显示字母单片机 基于单片机的LED数码管循环移位显示

基于单片机的LED数码管循环移位显示

2024-07-13 20:53| 来源: 网络整理| 查看: 265

单片机系统基础实验——LED数码管循环移位显示 第一部分 前言第二部分 数码管的原理构成LED数码管的结构LED数码管的工作原理LED数码管的字形编码LED数码管的控制方式 第三部分 设计项目Protues仿真图仿真动态结果代码

第一部分 前言

  本次单片机基础实验将会通过在Proteus软件中画原理图,然后Keil软件下编写源程序并编译形成可执行文件.hex,下载源程序,进行Protues和Keil的联合仿真运行,最终对单片机仿真有初步的认识。

通过本篇文章了解并熟悉8位数码管的电路结构、与单片机的连接方法及其应用原理学习proteus构建LED数码管显示电路的方法,掌握C51中单片机控制LED数码管动态显示的原理与编程方法 第二部分 数码管的原理构成 LED数码管的结构

  由8个发光二极管构成,按照一定的图形及排列封装在一起的显示器件。其中7个LED构成7笔字形,1个LED构成小数点。如图1所示。 Alt

图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字码段与引脚之间的对应关系如下表所示

字码段D7D6D5D4D3D2D1D0LED字段dpgfedcba

  共阴极数码管显示字段码如下表所示

显示字符dpgfedcba十六进制0001111113F100000110062010110115B3010011114F401100110665011011016D6011111017D700000111078011111117F9011011116FA0111011177B011111007CC0011100139D010111105EE0111100179F0111000171

  共阳极数码管显示字段码如下表所示

显示字符dpgfedcba十六进制011000000C0111111001F9210100100A4310110000B0410011001995100100109261000001082711111000F88100000008091001000090A1000100088B1000001183C11000110C6D10100001A1E1000011086F100011108E 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 #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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3