小白学习51单片机(第一天) 关于数码管

1.静态数码管显示(单个数码管和四位一体数码管)

 

·公共端选中给电平 位选端逐个点亮

·根据共阳共阴(箭头对的是阴极,一般51都是共阴)选择

·在同个时刻 只有一个数码管可以被点亮 即使有多个被点亮也只能是一样的数字,若想显示多个不同数字则需要动态显示数码管 根据人眼跳动时间

·1.公共端:译码器LS138 三位输入 八位输出 节约单片机的L口

GN是使能端 表示能够正常工作

CBA由高位到低位 由二进制到十进制转换至输出

C

B

A

Y

0

0

0

Y0-(01111111)

1

0

0

Y4-(11110111)

0

1

1

Y3-(11101111)

此时注意译码器输出是低电平有效

                                            

 

2.位选端:双向数据缓冲器用来提高驱动能力  P口变成控制信号了而不是驱动,此时根据芯片的电源给力驱

LE是高电平 就将左边数据送到右边 否则则读出右边数据

高电平驱动能力弱 低电平能力更强

·滤波电容 104=10 0000pf稳定电源 确保电路稳定性

·限流电阻

总结:首先确定第几位数码管亮灯即确定Y0-,再通过译码器确定输入的CBA电平,再选择位选端呈现数字(数据高位对端口高位 由于数码管位选端g是高位 故对P0_7)

   可通过数组或者选择循环来优化程序,达到便利控制

 

2.动态数码管:需要消影  

·位选 段选 位选 段选 位选 段选(串位)------位选 段选 清零 位选 段选 位选 段选

优化程序 需要延迟 否则数码管会比较暗

·数码管驱动方式:单片机直接扫描(耗费CPU时间)+专用驱动芯片(TM1640)

#include <REGX52.H>

unsigned char NixieTable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

void Delay(unsigned int xms)		//@12.000MHz
{
	unsigned char i, j;
	while(xms--)
	{
	i = 2;
	j = 239;
	do
	{
		while (--j);
	} while (--i);
	}
}

void Nixie(unsigned char Location,Number)//位置 显示的数字
{
	switch(Location)
	{
		case 1:P2_4=1,P2_3=1,P2_2=1;break;
		case 2:P2_4=1,P2_3=1,P2_2=0;break;
		case 3:P2_4=1,P2_3=0,P2_2=1;break;
		case 4:P2_4=1,P2_3=0,P2_2=0;break;
		case 5:P2_4=0,P2_3=1,P2_2=1;break;
		case 6:P2_4=0,P2_3=1,P2_2=0;break;
		case 7:P2_4=0,P2_3=0,P2_2=1;break;
		case 8:P2_4=0,P2_3=0,P2_2=0;break;
	}
	P0=NixieTable[Number];//调用子程序,如果数字是0,刚好是第0个变量
	Delay(1);//延迟1ms再清零,否则数码管会变暗
	P0=0x00;//进行清零
}

void main()
{
	while(1)
	{
		Nixie(1,1);
//		Delay(20);
		Nixie(2,2);
//		Delay(20);
		Nixie(3,3);//不断扫描 是个循环过程
//		Delay(20);延时200ms的时候会快速闪动,延迟20ms的时候慢速闪动导致会串位现象很明显,因此需要进行消影
	}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值