技术文档

单片机数码管显示数字 51单片机实例讲解,数码管显示数字“5555”程序

小编 2024-10-11 技术文档 23 0

51单片机实例讲解,数码管显示数字“5555”程序

利用单片机及某些数字电路块的结合,可以实现静态字符的显示。本例是利用74LS164八位移位寄存器(串入、并出)与单片机串行口结合,使数码管静态显示数字“5555”。

(1)数码管显示数字“5555”硬件电路(见图20)。

图20 显示字符“5555”接线原理图

在图20的电路中,74LS164的相关引脚与数码管的a、b、c、d、e、f、g引脚相连接,并且74LS164为串行输入、并行输出,所以L4LS164串行输入的数据与数码管对应字符的关系见表7。

表7 L4LS164串行输入的数据与数码管对应字符的关系表

(2)数码管显示数字“5555”硬件电路元器件(见表8)。

表8 数码管显示数字“5555”硬件电路元器件表

(3)数码管显示数字“5555”程序流程图(见图21)。

图21 显示数字“5555”程序流程图

(4)数码管显示数字“5555”程序。

单片机控制数码管显示不同数字

很多电子产品上都有用到数码管来做指示作用,比如电子秤上使用数码管来显示体重,电饭锅上面使用数码管来显示煮饭时间等等。数码管显示的数字是通过单片机控制的,本篇文章为你讲述其中的原理。

文章涉及到的电路图和程序源码大家可以私信作者获取。

想要使用单片机来控制数码管显示不同数字,那么我们先要了解数码管的内部结构以及器驱动原理。数码管可以看成是由8个发光二极管组成,我们分别给这8个数码管编号为a,b,c,d,e,f,g,SP(SP为小数点,七段数码管没有小数点),共阴极数码管就是这8个二极管的阴极连接在一起,共阳极数码管就是这8个二极管的阳极连接在一起。在控制过程中,我们把不同的二极管点亮,数码管就会给我们显示出不同的数字,例如我们把b,c两个二极管点亮,其他二极管熄灭,那么数码管显示的就是数字1;或者我们把a,b,c,d,e,f,6个数码点亮,数码管就给我们显示的是数字0.

接下来我们搭建控制电路图,添加一个7段共阴极数码管,a-g分别接单片机P2.0-P2.6.

看到电路图,我们应该就能想到,只要我们使单片机的P2口输出不同的高低电平,就可以让数码管显示不同的数字。假如我们要显示数字1,那么我们就想要点亮b,c二极管且熄灭其他二极管,所以我们需要将单片机P2.1和P2.2输出高电平,其他的输出低电平,如下图(红色代表高电平,蓝色代表低电平)。

以此类推,其他数字我们也可以显示出来,我们把P2.0-P2.7看成一个从低到高的8位数,其某一位为1则代表其对应的二极管亮,为0就代表其对应的二极管灭,那么我们就可以得到一个表格,该表格代表数码管显示0-F的值,其表格如下:

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

我们还是以1来分析,1对应表格中的数字为0x06,我们转换成二进制就是00000110(b),第2和第3位为1,其他位为0,也就是说b,c二极管会亮,其他二极管会灭,所以只要我们把这个数字赋值给P2,那么数码管就会给我显示数字1.

到这里就把共阴极数码管显示原理给大家讲解了,大家可以以此类推,得到共阳极数码管的显示表格。如有不明白的地方,可以把疑惑的地方私信给我,演示程序设有一个按键,系统上电显示0,按键每按下一次,显示的数字加1,加到最大就又回到0开始。

下面给大家讲解一下程序设计思路:定义一个变量u8SegNumber,当按键按下一次,u8SegNumber就+1,然后我们把u8SegNumber的值作为共阴数码管显示表格的下标值,最后把对应的值赋值给单片机的P2口,这样就达到了我们想要的结果。

if(pTIM_Delay(0,200)) //200ms任务

{

if(SysDataVar.u8SegNumber > 15) //防止溢出

SysDataVar.u8SegNumber = 0;

LED = SEG_ComAnodeTable[SysDataVar.u8SegNumber]; //赋值

}

if(pTIM_Delay(1,5)) //5ms任务

{

Key_Sanf(); //按键检测

}

到这里单个数码管显示数字的原理都给大家讲解清楚了,大家可以尝试显示两个数码管,其原理和显示单个数码管不太一样,我也将在下一讲为你讲解,欢迎关注作者,及时获取更新信息。

相关问答

单片机数码管显示数字 怎样不闪烁?

原因如下1、适当增加数码管的刷新频率2、看看程序是否有中断之类的,处理时间过长,导致刷新频率存在问题.看视频,应该属于此种问题的可能性大一些.测试方...

单片机数码管显示 不全解决方法?

1、先更换同型号规格新电池试试。电量不足会引起数显数字不全。更换新电池不能解决问题,就是显示器故障了。2、显示器基本没有维修价值,建议到衡器门市更换新...

关于 单片机 独立按键切换 数码管显示 不同 数字 ?

都是逐个点亮,只不过流水灯间隔时间慢一点,数码管间隔时间快一点,当后者间隔时间小于0.1s时(实际上最好小于0.01s),由于视觉暂留效应,人类就觉察不到数码...

单片机 如何关闭 数码管显示 ?

先让你的第一个数码管显示要显示的第一个数字,其他数码管关闭;然后关闭第一个数码管显示;然后让你的第二个数码管显示要显示的第二个数字,其他数码管关闭;...

C51 单片机 如何让四位 数码管 分别 显示 四位不同的 数字 ?

每一次只能让一个数码管位选,其他的关闭,给数码管赋值。重复4次就可以了。假设要显示“1234”:#include每一次只能让一个数码管位选,其他的关闭,给数码管赋...

单片机 中在六位的晶体管的1,3,5号管中 显示数字 的c程序怎么编?

首先先宏定义数组,将数码管的供养或共阴极代码写入,具体是哪种得看数码管的型号。然后将数码管的八个数据口接到单片机的其中一组p口。利用程序读取数组的对...

单片机数码管 ac是共阴还是?

单片机数码管AC是共阳,不是共阴。共阳数码管的阳极连接到电源正极,而阴极则连接到单片机的输出接口。在控制数码管显示数字时,单片机会通过输出接口控制相应的...

为什么 数码管 个位的 数字 显示 到十位上?

UIldata;//变量用作0~99计数这个变量没初始化还有就是单片机数码管接反了UIldata;//变量用作0~99计数这个变量没初始化还有就是单片机数码管接反了

数字电路 设计中遇到瓶颈采用一个半导体 数码管 作为控制器的...

[最佳回答]1,最简单是用可擦EPROM+计数器+数码管来完成.2,用二极管子矩阵也可以.3,最好还是用单片机回复:那就用第2种方法.移位寄存器加二极管矩阵1,最简单...

单片机 ,使用汇编语言使led 数码管 每隔1秒轮流 显示数字 0000-9999,这个怎么样做呀?

这是四位数的秒计数器,用四位一体共阴数码管显示,P0口输出段码,P2口输出位码。用定时器定时器50ms,采用中断方式,中断20次为1秒,显示数字加1。这是四位数的...

猜你喜欢