#include <STC15F2K60S2.H>
sbit HC138_A=P2^5;
sbit HC138_B=P2^6;
sbit HC138_C=P2^7;
sbit buzz_1= P0^6;
sbit jdq_2= P0^4;
sbit H1=P3^0;
sbit H2=P3^1;
sbit H3=P3^2;
sbit H4=P3^3;
sbit L1=P4^4;
sbit L2=P4^2;
sbit L3=P3^5;
sbit L4=P3^4;
unsigned char code SMG_duanma[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,0xbf,0x7f};//有第零个位置
void Delay(unsigned int num)
{
unsigned int i;
while(num--)
for(i=0; i<628; i++);
}
void Init_HC138(unsigned char n)
{
switch (n)
{
case 4:
HC138_A=0;
HC138_B=0;
HC138_C=1;
break;
case 5:
HC138_A=1;
HC138_B=0;
HC138_C=1;
break;
case 6:
HC138_A=0;
HC138_B=1;
HC138_C=1;
break;
case 7:
HC138_A=1;
HC138_B=1;
HC138_C=1;
break;
}
}
void led_disp()
{
Init_HC138(4);
P0=0xff;
}
void close_buzz()
{
Init_HC138(5);
buzz_1=0;//0是关闭
jdq_2=0;//0是关闭
}
void smg_show_bit(unsigned char dat,unsigned char pos)
{
Init_HC138(6);//数码管的位置
P0=0x01<<pos;
Init_HC138(7);//数码管的内容
P0=dat;
}
void scan_key()
{//第一行
H1=0;H2=H3=H4=1;
L1=L2=L3=L4=1;
if(L1==0)
{
while(L1==0);//非常重要的一步
smg_show_bit(SMG_duanma[0],0);
}
else if(L2==0)
{
while(L2==0);//非常重要的一步
smg_show_bit(SMG_duanma[1],1);
}
else if(L3==0)
{
while(L3==0);//非常重要的一步
smg_show_bit(SMG_duanma[2],2);
}
else if(L4==0)
{
while(L4==0);//非常重要的一步
smg_show_bit(SMG_duanma[3],3);
}
//第二行
H2=0;H1=H3=H4=1;
L1=L2=L3=L4=1;
if(L1==0)
{
while(L1==0);//非常重要的一步
smg_show_bit(SMG_duanma[4],4);
}
else if(L2==0)
{
while(L2==0);//非常重要的一步
smg_show_bit(SMG_duanma[5],5);
}
else if(L3==0)
{
while(L3==0);//非常重要的一步
smg_show_bit(SMG_duanma[6],6);
}
else if(L4==0)
{
while(L4==0);//非常重要的一步
smg_show_bit(SMG_duanma[7],7);
}
}
void main()
{
close_buzz();
led_disp();
while(1)
{
scan_key();
}
}