#include <STC12C5A60S2.H>
#include <stdio.h>
#include "delay.h"
#include "12864.h"
#include "key.h"
#include "chao.h"
#define uchar unsigned char
#define uint unsigned int
sbit led1=P1^0;
sbit led2=P1^1;
sbit fmq=P2^7;
void keyplus();
uchar txt[16];
char i,x=0,hour=22,min1,sec;
int mode=1,z=0,y=0,w=0,d=0;
float MAX=0,MIN=0.5;
void init_timer0(void)
{
TMOD|=0x01;
TH0=(65535-2000)/256;
TL0=(65535-2000)%256;
EA=1;
ET0=1;
TR0=1;
}
void init_timer1(void)
{
TMOD|=0x10;
TH1=(65535-2000)/256;
TL1=(65535-2000)%256;
EA=1;
ET1=1;
TR1=1;
}
void main()
{
initLCD();
init_timer0();
init_timer1();
// for(i=0;i<=2;i++)
// {
// dis(x,i,"HSXXCKKJ");
// dis(x,i+1,"陆壹-26");
// delay(10000);
// wcode(0x01);
// x++;
// }
dis(0,0,"HSXXCKKJ");
dis(0,1,"陆壹-26");
delay(10000);
wcode(0x01);
dis(2,1,"HSXXCKKJ");
dis(2,2,"陆壹-26");
delay(10000);
wcode(0x01);
dis(4,2,"HSXXCKKJ");
dis(4,3,"陆壹-26");
delay(10000);
wcode(0x01);
while(1)
{
keyplus();
if(mode==1)
{
dis(0,0,"非倒车模式");
led2=0;
led1=1;
sprintf(txt,"时间:%02d:%02d:%02d",(uint)hour,(uint)min1,(uint)sec);
dis(0,1,txt);
dis(0,2,"左转:");
dis(4,2,"右转:");
if(z==1)dis(3,2,"<");else dis(3,2," ");
if(y==1)dis(7,2,">");else dis(7,2," ");
dis(0,3,"雾灯:");
dis(4,3,"大灯:");
if(w==1)dis(3,3,"=");else dis(3,3," ");
if(d==1)dis(7,3,"+");else dis(7,3," ");
}
if(mode==2)
{
led2=1;
dis(0,0,"倒车模式");
chaosb();
sprintf(txt,"距离:%2.2fM ",distance);
dis(0,1,txt);
MIN=(MIN<distance)?MIN:distance;
MAX=(MAX>distance)?MAX:distance;
if(distance<1.00)//111
{
led1=1;
delay(10000);
led1=0;
fmq=0;
delay(200);
fmq=1;
if(distance<0.7)//222
{
led1=1;
delay(6000);
led1=0;
fmq=0;
delay(100);
fmq=1;
if(distance<0.4)
{
led1=1;
delay(2000);
led1=0;
fmq=0;
delay(50);
fmq=1;
if(distance<0.1)
{
led1=1;
delay(500);
led1=0;
fmq=0;
delay(10);
fmq=1;
}
}
}
}
}
if(mode==3)
{
led1=1;
led2=1;
dis(0,0,"存储模式");
chaosb();
sprintf(txt,"%2.2fM ",distance);
dis(5,0,txt);
MIN = (MIN<distance) ?MIN : distance;
MAX = (MAX>distance) ?MAX : distance;
sprintf(txt,"时间:%02d:%02d:%02d",(uint)hour,(uint)min1,(uint)sec);
dis(0,1,txt);
sprintf(txt,"MIN:%2.2fM ",MIN);
dis(0,2,txt);
sprintf(txt,"MAX:%2.2fM ",MAX);
dis(0,3,txt);
}
}
}
void keyplus()
{
switch(keypro())
{
case 0:mode++;if(mode>3)mode=1;wcode(0x01);break;
case 1:min1++;if(min1==60){hour++;min1=0;}break;
case 2:min1--;if(min1<0){min1=59;hour--;}break;
case 3:hour++;if(hour>23)hour=0;break;
case 4:hour--;if(hour<0)hour=23;break;
case 5:z++;if(z==3)z=1;break;
case 6:y++;if(y==3)y=1;break;
case 7:w++;if(w==3)w=1;break;
case 8:d++;if(d==3)d=1;break;
case 9:MIN=0.5;break;
case 10:MAX=0;break;
}
}
void timer0_isr(void) interrupt 1
{
static unsigned int j;
TH0=(65535-2000)/256;
TL0=(65535-2000)%256;
{
j++;
if(j==700)
{
j=0;
sec++;
if(sec==60)
{
sec=0;
min1++;
if(min1==60)
{
min1=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
}
}
}
void timer1_isr(void) interrupt 3
{
static unsigned int k;
TH1=(65535-2000)/256;
TL1=(65535-2000)%256;
}