经过一番探索和学习,明白了静态数码管的点亮原理。下面分享我的学习历程。
-
原理图说明
在51单片机的电路图中,有p20、p21、p22、p23的使能端,就是相当于4个开关。
P0口有8个端子分别为数码管的八段led, 也就是说控制使能端,可以控制这八个端子,不同的led亮则对应不同的数字或者是字母。
在单片机中,数码管的输出p0~p8,对应下图的P0端。
-
效果图显示
这里我令p20、p21、p22为高电平1、p23为低电平为0,即让最右边的数码管使能可以使用,显示的数字可定义一个数组存放1~9、a、b、c 、e、f。不同的单片机所使用的数码管不同(我这里的共阳极的数码管)
-
开源代码
//头文件
#include<reg51.h>
//定义数组
typedef unsigned char u16;
typedef unsigned int u18;
//单片机的管脚,分别连着对应的数码管
sbit p20=P2^0;
sbit p21=P2^1;
sbit p22=P2^2;
sbit p23=P2^3;
//共阳数码管编码表
u16 code smaguan[16] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
//主程序
void main()
{
p20=1; //数码管不亮
p21=1; //数码管不亮
p22=1; //数码管不亮
p23=0; //数码管亮
P0=smaguan[15]; //p23对应数码管显示字母"F" ,共阳数码管编码表中可查
while(1);
}