笔记:51单片机——静态数码管和动态数码管的分别

本文介绍了单片机如何使用138译码器控制8个数码管进行显示,通过位选择和段选实现数字的显示。数码管的亮灭通过位选和段选电平控制,显示数组对应8421码来设定段码。动态扫描则是通过快速切换数码管亮灭,给人造成同时亮起的假象。文中还提供了一段包含延迟函数和数码管选择函数的示例代码,解释了动态扫描中防止闪烁的延迟原因。
摘要由CSDN通过智能技术生成

单片机的机子上有8个数码管,当需要用到的时候可以看到这个管每次选择哪个亮的时候,数电课本上都知道138译码器是比较好的位选择器。就是当我们需要选择哪个数码管亮的时候,分别对应的就给138译码器的三个引脚位给电平,

138译码器译码规则从上往下是低位到高位1 2 4 ,右边的引脚就对应这LED位位选择端,当需要选择哪个数码管亮的时候,就给这个译码器选择就好了。

然后选择好位之后就到段选了,因为选择了数码管就有给亮的数字是多少,这里可以定义一个数组然后赋值给P0端口,数组就是两个8421码,对应着a b c d e f g dp。8421 8421这样子。然后16进制码就是在右边往左边读,就好像让数码管亮数字2就是  a b g e d 点亮就给电平,然后16进制是0x5d

选择的原理大概是这样,

这个是数组显示0-15的

#include <reg52.h>
#include "led.h"


sbit LED=P2^2;     //定义138译码管脚
sbit LED1=P2^3;
sbit LED2=P2^4;

u16 code number[]={0x3f,0x06,0x5b,0x4f,0x66,
                   0x6d,0x7d,0x07,0x7f,0x6f,
				   0x77,0x7c,0x39,0x5e,0x79,0x71};  //0~15    10~15显示abcdef

下面是选择

void delay(unsigned int xms)	  //延迟函数  1表示1ms
{
	unsigned char i, j;
	while(xms--){
	i = 2;
	j = 239;
	do
	{
	  while (--j);
	} while (--i); }


}

void led(u8 s,u8 chr)
{
   	 switch(s)
	 {
      	case 1:LED=1;LED1=1;LED2=1;break;   //选择左边往右数第一个,下面依次往右数
		case 2:LED=0;LED1=1;LED2=1;break;
		case 3:LED=1;LED1=0;LED2=1;break;
		case 4:LED=0;LED1=0;LED2=1;break;
		case 5:LED=1;LED1=1;LED2=0;break;
		case 6:LED=0;LED1=1;LED2=0;break;
		case 7:LED=1;LED1=0;LED2=0;break;
		case 8:LED=0;LED1=0;LED2=0;break;
	 }
	  P0=number[chr];   //选择数码管显示的数字数组第几个。
	  delay(10);
	  //P0=0x00;	   //消隐用于同时显示多个数字出现的时候就需要把注释去掉
}

说到这里有一个注释的P0=0x00就是动态数码管和静态数码管的区别了,正常显示只能让一个数码管亮的,并不能让多个同时亮。当然可以这样,先亮一个然后灭掉,再让另一个亮,这样子只有闪的够快就能骗过人的眼睛。这样子就能让人以为是同时有多个数码管亮。其不然还是一个时间里只有一个亮,只是亮灭的够快,就好像同时亮一样。这里需要延迟一下是因为,当位选  段选   灭,位选  段选   灭,位选  段选   灭 这里执行的时间一样,会导致出现一种错觉就是,会不会下次出现的是 段选   灭 位选 或者    灭  位选  段选,所以需要给一定的机械延迟,让单片机识别出来这样时间段是不同的执行规则。给它一定的反应时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c-tion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值