【51单片机】数码管显示

数码管

普中-2&普中-3&普中-4开发板原理图

两个四位共阴极数码管

74HC138译码器(三线控八线,节省单片机I/O口占用)

点亮一个数码管,只需给I/O口一个高电平,一个低电平,由于此单片机(型号:STC89C52RC)数码管是共阴极连接,我们只需给I/O口一个高电平(即给1),就可以点亮了

晶体管LED从左边到右边依次为LED8、LED7……LED1

138译码器P2_4、P2_3、P2_2由高位到低位,如下编码就是选中LED位置(段选)

8(111) 7(110) 6(101) 5(100) 4(011) 3(010) 2(001) 1(000)

switch (location) { //选中LED位置
		
		case 0:P2_4 = 1;P2_3 = 1;P2_2 = 1;break;//第一位数码管
		case 1:P2_4 = 1;P2_3 = 1;P2_2 = 0;break;
		case 2:P2_4 = 1;P2_3 = 0;P2_2 = 1;break;
		case 3:P2_4 = 1;P2_3 = 0;P2_2 = 0;break;
		case 4:P2_4 = 0;P2_3 = 1;P2_2 = 1;break;
		case 5:P2_4 = 0;P2_3 = 1;P2_2 = 0;break;
		case 6:P2_4 = 0;P2_3 = 0;P2_2 = 1;break;
		case 7:P2_4 = 0;P2_3 = 0;P2_2 = 0;break;//第八位数码管
	}

为了在对应位置显示想要的数字和字母,我们要把数字字母写出来

先截取一位数码管原理图,相当于由八个发光二极管组成 ,对应的数字或字母,给 1 是亮

 选中的顺序依次为dp.g.f.e.d.c.b.a

 总结一下:

//共阴极数码管段码表
char NixieTable[20]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};
	       //number    0    1    2    3    4    5    6    7    8    9    A    B    C   D    E    F
 // 空 0x00


//共阴极数码管段码或上一个0x80,就带小数点了( |0x80 )

//带小数点  共阴数码管段码
unsigned char code Pnumber[] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1}; 

 数码管函数

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


void Nixie(int location,int number)//(位置,数字)
{
	switch(location)//选中LED位置,位选
	{
		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];//数字
	Delay(1);P0=0x00;//消影清零
}

然后在while(1)里调用此函数即可

Nixie(1,1);
Nixie(2,0);
Nixie(3,2);
Nixie(4,4);
Nixie(5,1);
Nixie(6,0);
Nixie(7,2);
Nixie(8,4);

这样数码管上就会显示1024 1024,想要修改显示内容,自己修改即可了~

有兴趣学习具体原理的童鞋可以学习江科大自化协的课程~

51单片机入门教程-2020版 程序全程纯手打 从零开始入门_哔哩哔哩_bilibili

  • 2
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

北国无红豆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值