下面是51单片机数码管显现模块的代码,详细阐明在注释里表达得比较清楚。
#include < reg52.h >
#define uchar unsigned char
#defind uintunsigned int
sbit seg_oe=P1^3;//数码管显现使能端,低电平有用
sbit duanxuan=P1^4;//数码管的段选端
sbit weixuan=P1^5;//数码管的位选端
uchar code smg_duan[30]={//数码管段选码表,咱们的数码管是共阴极数码管
0x3F,0x06,0x5B,0x4F,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71, }; //这是共阴极数码管0-E的显现码表
uchar code smg_wei[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//挑选亮哪一个数码管,也便是数码管的位选信号
void seg_disp(uchar wei,uchar duan)//单个数码管的显现
{
weixuan=1;
P0=smg_wei[wei];
weixuan=0;
duanxuan=1;
P0=smg_duan[duan];
duanxuan=0;
seg_oe=0;
delay10ms();
seg_oe=1;
}
void delay10ms() //延时子程序
{
uchari,j;
for(i=1;i<40;i++)
for(j=1;j<40;j--);
}