单片机之动态数码管篇

Irisa ·
更新时间:2024-09-20
· 661 次阅读

思来想去还是决定要出这期教程,因为我看很多同学在这个数码管的问题上都还是有点迷惑,特别是这个动态数码管的工作原理,以及这个相应代码该如何编写,那么教程来了~

首先看一下一位数码管内部原理,以及各个引脚的标识
使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。实验板用共阴LED显示器,根据电路连接图显示16进制数的编码见下方:

共阳数码管显示数组=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86, 0x8e};//显示0~F的值

共阴数码管显示数组={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值

多位数码管的工作原理与一位相同,不同的是多为数码管相较于一位数码管多了位选,连接时只需要把各个位选连接不同的单片机引脚,再写好程序加以控制就行,下面是四位数码管的引脚标识
在这里插入图片描述
这次主要是想给大家分享一个关于动态数码管的教程,所以咱们需要8位数码管,实际焊接中可以选用两个四位数码管组成,阴极阳极都可以,编程时代码显示不要出错就好了,我这里仿真用的是八位阴极数码管,仿真电路如下:
在这里插入图片描述
动态数码管显示程序代码如下:

#include"reg52.h" //头文件 typedef unsigned char uchar; typedef unsigned int uint; unsigned char z; //定义无符号字符型变量z unsigned char code duan_xuan[10]= //数码管段选 { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f }; unsigned char code wei_xuan[8]= //数码管位选 { 0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F }; unsigned char dat[8]={8,7,6,5,4,3,2,1}; //数码管显示字符12345678 void delay(unsigned int x) //调用延时函数delay { unsigned char i; while(x--) { for(i=0;i<120;i++); } } void main() //主函数 { P2=0x00; //初始化数码管 while(1) { for(z=0;z<8;z++) //利用for循环一次让数码管显示数字1~8 { P2=duan_xuan[dat[z]]; P1=wei_xuan[z]; P1=0XFF; delay(5); } } }

希望对大家有所帮助,能帮到大家那就非常开心了,喜欢的话可以关注我,记得帮忙点个赞哦 !o( ̄▽ ̄)ブ 非常非常感谢❤❤❤


作者:朽木自雕i



数码管 动态 数码 单片机

需要 登录 后方可回复, 如果你还没有账号请 注册新账号