|
/********************************************************************
立体车库程序
*********************************************************************/
#include<reg52.h> //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型
/********************************************************************
初始定义
*********************************************************************/
sbit P20=P2^0; //定义
sbit P21=P2^1; //定义
sbit P22=P2^2; //定义
sbit P23=P2^3; //定义
sbit P24=P2^4; //定义
sbit P25=P2^5; //定义
sbit P26=P2^6; //定义
sbit P27=P2^7; //定义
sbit P30=P3^0; //定义
sbit P31=P3^1; //定义
sbit P32=P3^2; //定义
sbit P33=P3^3; //定义
sbit P34=P3^4; //定义
sbit P35=P3^5; //定义
sbit P36=P3^6; //定义
sbit P37=P3^7; //定义
sbit P10=P1^0; //定义
sbit P11=P1^1; //定义
sbit P12=P1^2; //定义
sbit P13=P1^3; //定义
sbit P14=P1^4; //定义
sbit P15=P1^5; //定义
sbit P16=P1^6; //定义
sbit P17=P1^7; //定义
uchar k=40;
uchar ge=0;
uchar shi=0;
uchar bai=0;
uchar qian=0;
uint date=0;
bit bz1=0;
bit bz2=0;
bit bz3=0;
bit bz4=0;
bit bz5=0;
bit bz6=0;
bit bz7=0;
bit bz8=0;
bit bz9=0;
bit bz10=0;
bit bz11=0;
bit bz12=0;
bit bz13=0;
bit bz14=0;
bit bz15=0;
bit bz16=0;
uchar jsj=0;
/********************************************************************
初始定义
*********************************************************************/
code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //显示段码 数码管字跟
/********************************************************************
初始定义
*********************************************************************/
uchar sec; //定义计数值,每过1/10 秒,sec 加一
uint tcnt; //键值判断
uchar k;
bit bzw1=0;
bit bzw2=0;
/********************************************************************
延时函数
*********************************************************************/
void delay(uchar t)
{
uchar i,j;
for(i=0;i<t;i++)
{
for(j=13;j>0;j--);
{ ;
}
}
}
/********************************************************************
汽车移除函数
*********************************************************************/
void key()
{
if((P30==0)&&(bz1==0)){bz1=1;date++;}if((P30==1)&&(bz1==1)){bz1=0;delay(k);}
if((P31==0)&&(bz2==0)){bz2=1;date++;}if((P31==1)&&(bz2==1)){bz2=0;delay(k);}
if((P32==0)&&(bz3==0)){bz3=1;date++;}if((P32==1)&&(bz3==1)){bz3=0;delay(k);}
if((P33==0)&&(bz4==0)){bz4=1;date++;}if((P33==1)&&(bz4==1)){bz4=0;delay(k);}
if((P34==0)&&(bz5==0)){bz5=1;date++;}if((P34==1)&&(bz5==1)){bz5=0;delay(k);}
if((P35==0)&&(bz6==0)){bz6=1;date++;}if((P35==1)&&(bz6==1)){bz6=0;delay(k);}
if((P36==0)&&(bz7==0)){bz7=1;date++;}if((P36==1)&&(bz7==1)){bz7=0;delay(k);}
if((P37==0)&&(bz8==0)){bz8=1;date++;}if((P37==1)&&(bz8==1)){bz8=0;delay(k);}
if((P14==0)&&(bz9==0)){bz9=1;date++;}if((P14==1)&&(bz9==1)){bz9=0;delay(k);}
if((P15==0)&&(bz10==0)){bz10=1;date++;}if((P15==1)&&(bz10==1)){bz10=0;delay(k);}
if((P16==0)&&(bz11==0)){bz11=1;date++;}if((P16==1)&&(bz11==1)){bz11=0;delay(k);}
if((P17==0)&&(bz12==0)){bz12=1;date++;}if((P17==1)&&(bz12==1)){bz12=0;delay(k);}
if((P20==0)&&(bz13==0)){bz13=1;date=0;}if((P20==1)&&(bz13==1)){bz13=0;delay(k);}
if((P21==0)&&(bz14==0)){bz14=1;date++;}if((P21==1)&&(bz14==1)){bz14=0;delay(k);}
}
/********************************************************************
功能:串口初始化,波特率9600,方式1
*********************************************************************/
void initTimer(void)
{
TMOD=0x2;
TH0=0x1b;
TL0=0x1b;
}
/********************************************************************
主函数
*********************************************************************/
void main()
{
initTimer();
TR0=1;
ET0=1;
EA=1;
while(1)
{
KEY();
}
}
/********************************************************************
定时中断服务函数
*********************************************************************/
void t0(void) interrupt 1 using 0 //定时中断服务函数
{
qian=date/1000; //求千位
bai=date%1000/100; //求百位
shi=date%100/10; //求十位
ge=date%10; //求个位
tcnt++;
if(date>=100){P12=P11=0;}
switch(tcnt)
{
case 1:P23=1;P24=1;P25=1;P26=1;P0=seg7code[qian];P23=0;break;
case 2:P23=1;P24=1;P25=1;P26=1;P0=seg7code[bai];P24=0;break;
case 3:P23=1;P24=1;P25=1;P26=1;P0=seg7code[shi];P25=0;break;
case 4:P23=1;P24=1;P25=1;P26=1;P0=seg7code[ge];P26=0;break;
default: tcnt=0; break;
}
}
/********************************************************************
结束
*********************************************************************/
|
|