#include<REGX52.h>
unsigned char table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; /*创建数码管所显示的0-9为数组*/
sbit k1=P3^1; /*定义按键,P3^1被定义为单片机独立按键区域K1按键*/
sbit k2=P3^0; /*P3^0被定义为独立按键区域K2按键*/
sbit k3=P3^2; /*P3^2被定义为独立按键区域K3按键*/
void Delay(unsigned char xms) /*定义延时函数*/
{
while(xms--)
{
unsigned char i,j;
i=2;
j=239;
do
{
while(--j);
}while(--i);
}
}
void choosesmg(unsigned char Location,led) /*定义具体某个数码管显示某个特定图形*/
{
switch(Location)
{
case 0:
P2_4=1;P2_3=1;P2_2=1;break;
case 1:
P2_4=1;P2_3=1;P2_2=0;break;
case 2:
P2_4=1;P2_3=0;P2_2=1;break;
case 3:
P2_4=1;P2_3=0;P2_2=0;break;
case 4:
P2_4=0;P2_3=1;P2_2=1;break;
case 5:
P2_4=0;P2_3=1;P2_2=0;break;
case 6:
P2_4=0;P2_3=0;P2_2=1;break;
case 7:
P2_4=0;P2_3=0;P2_2=0;break;
}
P0=table[led];
}
void main()
{
unsigned int i=0,j=0,k=0;
unsigned char a;
while(1)
{
for(a=0;a<36;a++)
{
choosesmg(2,i);
Delay(5);
choosesmg(1,j);
Delay(5);
choosesmg(0,k);
Delay(5);
}
if(k1==0&&i<=9) /*当按键按下时为低电平,故K1==0*/
i++;
if(k1==0&&i==10){
i=0;
j++;
if(j==10){
j=0;
k++;
}
if(k==10)
k=0;
}
if(k2==0&&j<=9)
j++;
if(k2==0&&j==10)
{
j=0;
k++;
if(k==10)
k=0;
}
if(k3==0&&k<=9)
k++;
if(k3==0&&k==10)
k=0;
}
}