c语言数码管,数码管原理

1.分类

数码管分 共阳数码管 和 共阴数码管。

数码管其实就是8个段的发光二极管,只点亮其中的几个段即可显示出数字或字母用来表达信息。

共阳数码管:把8段LED的正极并在一起作为公共端连接在5V上(共阳极),然后8个LED通过单片机的8个IO端口输出高低电平使其决定点亮哪几个段。原理跟第二章的8盏LED硬件连接一样。

共阴数码管的介绍参考《手把手教你学51单片机》文档5.3.1节即可,因为我们的开发板用的是共阳数码管,所以共阴数码管在这里就不讲解了。

2.硬件连接

我们先拿一个数码管进行简单讲解

8108be5b468531515e2267ee281f33f8.png

上图是开发板上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);

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值