历史上的今天
今天是:2025年08月17日(星期日)
2021年08月17日 | 51单片机-数码管原理
2021-08-17 来源:eefocus
1.分类
数码管分 共阳数码管 和 共阴数码管。
数码管其实就是8个段的发光二极管,只点亮其中的几个段即可显示出数字或字母用来表达信息。
共阳数码管:把8段LED的正极并在一起作为公共端连接在5V上(共阳极),然后8个LED通过单片机的8个IO端口输出高低电平使其决定点亮哪几个段。原理跟第二章的8盏LED硬件连接一样。
共阴数码管的介绍参考《手把手教你学51单片机》文档5.3.1节即可,因为我们的开发板用的是共阳数码管,所以共阴数码管在这里就不讲解了。
2.硬件连接
我们先拿一个数码管进行简单讲解

上图是开发板上6个数码管中最右端那个的硬件连接简化图,我们叫它数码管0以好区分。引脚1和6(也就是A A)做为所有内部LED的公共端,此时IO0输出低电平三极管导通,那么这个公共端就接上了5V,而通过P0的8个IO端口中哪几个IO端口输出0数码管中的哪几个段就被点亮。
3.代码分析
我们把第二章第4讲的代码复制过来,修改三八译码器的逻辑选择,使IO0输出为0,也就是P1.2输出0,P1.1输出0,P1.0输出0。但这样之前讲的8盏小灯就不能被点亮了,因为三八译码器一次只能使其中的IOx输出低电平,其他7个IO都输出高电平了。
如果我们要让数码管显示数字0,那么看到上图所示,只需a,b,c,d,e,f段的LED点亮,剩下g段和dp段不点亮即可。
对应的二进制值为 11000000,十六进制就为0xC0。把0xC0赋值给P0即可点亮最右端的数码管0显示数字0。
#include sbit ADDR2 = P1^2; sbit ADDR1 = P1^1; sbit ADDR0 = P1^0; sbit ENLED = P1^4; sbit ADDR3 = P1^3; void main() { ADDR3 = 1;//使能三八译码器 ENLED = 0;// ADDR2 = 0;//***************************************************************************** ADDR1 = 0;//让三八译码器的IO0输出低电平。此时的小灯是不可能被点亮了,因为IO6输出高电平了 ADDR0 = 0;//***************************************************************************** P0=0xC0; //使最右端的数码管0显示数字0 while (1); }
上一篇:51单片机-无源蜂鸣器+LED
下一篇:51单片机-数组&数码管
史海拾趣
|
Q: 请问就你个人观点而言:针对模拟电路(微波、高频、低频)、数字电路(微波、高频、低频)、模拟和数字混合电路(微波、高频、低频),目前PCB设计哪一种EDA工具有较好的性能价格比(含仿真)?可否分别说明. A: 限于本人应用的了解,无法深入地比较ED ...… 查看全部问答> |
|
各位老师您好: 我的单片机使用12M晶振时用示波器看震荡波形正常,输入输出端换不同容量的电容对振幅影响不大,换22.1184M晶振后输出震荡波形没了(C1=C2=22P),我设计的单片机用一个主芯片输出直接带第二个芯片输入,第二个芯片输 ...… 查看全部问答> |
|
目前使用的平台是pxa270+wince5.0,老板要求升级到wince6.0。我以前没有做过移植的工作,原来5.0的代码也不是我写的,硬着头皮接下了这个工作,看了几天,有些茫然,因此有些问题,请有经验的高手指教,你的一句话可能就让我省好多时间,先谢谢了。 ...… 查看全部问答> |
|
怎样把.Net FrameWork Compact 2.0集成到pb5.0生成的nk.bin里面? 我程序是基于2.0的,可是PB5.0里面只有1.0的框架版本。怎样把.Net FrameWork Compact 2.0集成到pb5.0生成的nk.bin里面?… 查看全部问答> |
|
build bootrom时select a tool的下拉列表时空的该怎么解决(新手) 参考http://blog.chinaunix.net/u/21277/showart_212603.html 发现几个问题 AMD的PC-NET这个驱动解压出来config文件夹下是pc486.972而不是pcPentium,然后里面config.h里是CPU==I80486,不是PENTIUM.而且同目录下没有sysLn97xEnd.c这 ...… 查看全部问答> |
|
我做STM32和STC12LE5412的SPI通讯,STM32在接受到USART1发出的0x55后就连续发送20个字节,但是在发送第一个字节的时候要将NSS拉低(NSS脚被软件配置为用户自用),接着将剩余的19个字节发送出去。STM32为主,STC12为从。 &nb ...… 查看全部问答> |
|
msp430的串口通信时,一边用仿真器一边用专门的调试工具,能收发但都是乱码 波特率是根据专门的计算工具得到的,设置应该没错 为什么会出现这个问题?我还应该注意什么? 我是初学者… 查看全部问答> |




