单片机课程设计
# include <reg51.h>
sbit resset = P1^4;
sbit redRLED = P0^0;
sbit redYLED = P0^1;
sbit blueRLED = P0^2;
sbit blueYLED = P0^3;
sbit buzz = P2^4;
#define uint unsigned int
#define uchar unsigned char
uint i,j;
uint redCount = 0, blueCount = 0;
uchar keyFlag;
uchar ledTable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint i);
void buttonChange();
void display();
void res();
void main()
{
while (1){
res();
if ((P1&0xff)!=0xff){
delay(100);
if ((P1&0xff)!=0xff){
keyFlag = (P1&0xff);
}
else{
buzz = 0;
}
}
buttonChange();
display();
}
}
void res(){
if (resset == 0){
P3 = ledTable[0];
P2 = 0x00;
redCount = blueCount = 0;
delay(5);
}
}
void delay(uint i){
for(; i>0; i--)
for(j = 200; j > 0; j--);
}
void buttonChange(){
switch(keyFlag){
case 0xfe:
{
redRLED = 0;
buzz = 1;
delay(30);
redCount += 1;
keyFlag = 0xff;
break;
}
case 0xfb:
{
blueRLED = 0;
buzz = 1;
delay(30);
blueCount += 1;
keyFlag = 0xff;
break;
}
case 0xfd:
{
redYLED = 0;
buzz = 1;
delay(30);
redCount -= 1;
keyFlag = 0xff;
break;
}
case 0xf7:
{
blueYLED = 0;
buzz = 1;
delay(30);
blueCount -= 1;
keyFlag = 0xff;
break;
}
default:
P0 = 0xff;
break;
}
}
void display(void){
P3 = ledTable[(redCount % 10)];
P2 = 0x0d;
delay(5);
P2 = 0x0f;
P3 = ledTable[(redCount / 10)];
P2 = 0x0e;
delay(5);
P2 = 0x0f;
P3 = ledTable[(blueCount % 10)];
P2 = 0x07;
delay(5);
P2 = 0x0f;
P3 = ledTable[(blueCount / 10)];
P2 = 0x0b;
delay(5);
P2 = 0x0f;
}