第一个数码管显示1:
#include<STC15F2K60S2.H>
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; //初始化程序
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF; //数码管初始化程序,打开第一个数码管
P0=0XF9;
while(1);
}
数码管正计时程序:
赋值一次延时一次
#include<STC15F2K60S2.H>
void Delayms(int ms);
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; //初始化程序
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF; //数码管初始化程序,打开第一个数码管
while(1)
{
P0=0XC0; //0
Delayms(1000);
P0=0XF9; //1
Delayms(1000);
P0=0XA4; //2
Delayms(1000);
P0=0XB0; //3
Delayms(1000);
P0=0X99; //4
Delayms(1000);
P0=0X92; //5
Delayms(1000);
P0=0X82; //6
Delayms(1000);
P0=0XF8; //7
Delayms(1000);
P0=0X80; //8
Delayms(1000);
P0=0X90; //9
Delayms(1000);
}
}
void Delayms(int ms)
{
int i,j;
for(i=0;i<ms;i++)
for(j=845;j>0;j--);
}
独立按键控制数码管显示:
每个独立按键对应一个数码管值
#include<STC15F2K60S2.H>
void Delayms(int ms);
void KEY_Scan(void);
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; //初始化程序
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF; //数码管初始化程序,打开第一个数码管
while(1)
{
KEY_Scan();
}
}
void Delayms(int ms)
{
int i,j;
for(i=0;i<ms;i++)
for(j=845;j>0;j--);
}
void KEY_Scan(void)
{
if(P30==0) //按下按键s7,显示1
{
Delayms(5);
if(P30==0)
{
P0=0XF9;
}
while(!P30);
}
else if(P31==0) //按下按键s6,显示2
{
Delayms(5);
if(P31==0)
{
P0=0XA4;
}
while(!P31);
}
else if(P32==0) //按下按键s5,显示3
{
Delayms(5);
if(P32==0)
{
P0=0XB0;
}
while(!P32);
}
else if(P33==0) //按下按键s4,显示4
{
Delayms(5);
if(P33==0)
{
P0=0X99;
}
while(!P33);
}
}
要想使数码管依次显示不同的值,需每次赋值P0,很不方便,故定义一个数组来保存需要的值
按键控制数码管 数码管用数组进行操作
将数码管的值存入数组tab[]中,每一个按键对应数组不同值
#include<STC15F2K60S2.H>
unsigned char tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};//定义一个数组,保存数码管显示所需的P0值
void Delayms(int ms);
void KEY_Scan(void);
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; //初始化程序
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF; //数码管初始化程序,打开第一个数码管
while(1)
{
KEY_Scan();
}
}
void KEY_Scan(void)
{
if(P30==0) //按下按键s7,显示1
{
Delayms(5);
if(P30==0)
{
P0=tab[1];
}
while(!P30);
}
else if(P31==0) //按下按键s6,显示2
{
Delayms(5);
if(P31==0)
{
P0=tab[2];
}
while(!P31);
}
else if(P32==0) //按下按键s5,显示3
{
Delayms(5);
if(P32==0)
{
P0=tab[3];
}
while(!P32);
}
else if(P33==0) //按下按键s4,显示4
{
Delayms(5);
if(P33==0)
{
P0=tab[4];
}
while(!P33);
}
}
void Delayms(int ms)
{
int i,j;
for(i=0;i<ms;i++)
for(j=845;j>0;j--);
}
数码管正计时程序 数组控制
用num指代数组中第几个值,将数组中的值赋值给P0口,赋值一次延时一次
#include<STC15F2K60S2.H>
unsigned char tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};//定义一个数组,保存数码管显示所需的P0值
unsigned char num=0;
void Delayms(int ms);
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; //初始化程序
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF; //数码管初始化程序,打开第1个数码管,其中P0=0X01控制哪些数码管显示
while(1)
{
P0=tab[num];
Delayms(1000);
num++;
if(num==10)num=0;
}
}
void Delayms(int ms)
{
int i,j;
for(i=0;i<ms;i++)
for(j=845;j>0;j--);
}
由上可以发现,使用数组将带来很大便利。