完整的源程序:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit K5=P1^4;
sbit K6=P1^5;
sbit D6=P2^5;
sbit D5=P2^4;
sbit D4=P2^3;
sbit D3=P2^2;
sbit D2=P2^1;
sbit D1=P2^0;
sbit speak=P2^7; // 蜂鸣器引脚定义
unsigned int table_seg[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82};
uchar a;
void delay_1ms(unsigned int ms);
void key();
void display();
void main(void)
{
unsigned char key_value=0;
uint i=5;
P0=0xff;
delay_1ms(500);
do
{
P0=table_seg[i--];
delay_1ms(1000);
}while(i>0);
speak=0;
delay_1ms(300);
speak=1;
while(1)
{
key();
display();
}
}
void delay_1ms(unsigned int ms)
{
unsigned char ns;
while( ms -- )
for(ns = 0;ns < 116;ns ++);
}
void display()
{
P0=table_seg[a];
delay_1ms(5);
}
void key()
{
if(K1==0)
{
delay_1ms(10);
if(K1==0)
{
D1=0;
a=1;
P0=table_seg[a];
speak=0;
while(!K1);
while(1);
}
}
if(K2==0)
{
delay_1ms(10);
if(K2==0)
{
D2=0;
a=2;
P0=table_seg[a];
speak=0;
while(!K2);
while(1);
}
}
if(K3==0)
{
delay_1ms(10);
if(K3==0)
{
D3=0;
a=3;
P0=table_seg[a];
speak=0;
while(!K3);
while(1);
}
}
if(K4==0)
{
delay_1ms(10);
if(K4==0)
{
D4=0;
a=4;
P0=table_seg[a];
speak=0;
while(!K4);
while(1);
}
}
if(K5==0)
{
delay_1ms(10);
if(K5==0)
{
D5=0;
a=5;
P0=table_seg[a];
speak=0;
while(!K5);
while(1);
}
}
if(K6==0)
{
delay_1ms(10);
if(K6==0)
{
D6=0;
a=6;
P0=table_seg[a];
speak=0;
while(!K6);
while(1);
}}}
|