LED数码管显示原理详解

描述

基础知识:

单片机系统中常用的显示器有:

发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、TFT液晶显示器等。LED显示器有两种显示结构:段显示 (7段、米字型等) 和点阵显示 (5X8、8X8点阵等)

LED数码管根据LED的不同接法可以分为2类:共阴和共阳。

单片机

共阴极接法:将八个LED的负极全部接到0V,只有当我们给出一个正极1的信号才会亮。

共阳极接法:将八个LED的负极全部接到+5V,只有当我们给出一个0的信号才会亮。

使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。

LED数码管显示原理

举例说明一下:

假如我们需要显示一个2,那么对应的就要点亮途中的a,b,d,e,g,其他的全部都要熄灭,这样显示出来的数码管才是我们想要的结果。(假设八位LED刚好全部对应接到一个P口,而且还是从dp算最高位、a为最低为的接法)

所以对于共阴极接法来说,那么就要输出一个0101 1011的信号,转换成16进制的话,就是0x5B

而对于共阳极接法的话,那么就要输出1010 0100,转换成16进制的话就是0xA4

单片机

LED数码管静态显示的原理:

静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高

技能进阶:(数组)

单片机的数组结构是一种用来存储多个相同类型数据的数据结构,它可以用一组连续的内存空间来存储数据,也可以用指针来连接一组零散的内存块。数组结构可以方便地通过下标来访问数组中的元素,也可以通过结构体来封装数组和相关的函数,实现更高级的功能。

使用数组结构的方法有以下几点:

定义数组时,需要指定数组的类型、名称和大小,例如 int array[10]; 定义了一个有10个整数元素的数组。

初始化数组时,可以用花括号包含一组初始值,例如 int array[10] = {1,2,3,4,5,6,7,8,9,10}; 初始化了一个数组,每个元素的值等于其下标加一。

访问数组时,可以用数组名和下标来表示一个元素,例如 array[3] 表示数组中第四个元素,其值为4。注意下标从0开始计数。

修改数组时,可以用赋值语句来改变某个元素的值,例如 array[3] = 5; 将第四个元素的值改为5。

遍历数组时,可以用循环语句来依次访问每个元素,例如 for(i=0;i<10;i++) printf("%d ",array[i]); 将打印出数组中所有元素的值。

使用结构体时,可以将数组和相关的函数定义为一个新的数据类型,例如 struct LED { unsigned char array[8]; void (*on)(int); void (*off)(int); }; 定义了一个LED结构体,包含一个8位的数组和两个函数指针。这样可以方便地对外设进行操作,例如 LED led; led.on(3); 将点亮第四个LED灯。

程序编写:

#include

unsigned char code sunduan[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

//创建一个数组的结构,此时采用的是共阳极接法,将0-F的显示使用了数组的结构创建出来

void main()

{

P2=sunduan[0]; //要显示一个0,即在P2口上接入了一个LED数码管之后,需要显示的数值,直接从编辑号的数组中挑选出来即可。

}

仿真展示:

可以看到,当我们启动仿真时,这个时候,就会在P2组管脚上的输出情况(P2.0 ~ P2.5全输出0,P2.6 ~ P2.7输出1)因为LED数码管采用的是共阳极接法,所以a~f全部点亮,g和dp都熄灭,这样展示出来的效果就是一个0的数字。

程序除了上述的数组结构之外,其实还可以直接通过点亮单片机的输出管脚单独控制。

单片机

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分