|
#include "oled.h"
#include <intrins.h>
//按鈕
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 speaker1=P1^7;
sbit speaker2=P2^0;
sbit speaker3=P2^1;
sbit speaker4=P2^2;
sbit beep=P3^7;
#define uchar unsigned char
#define uint unsigned int
//==========================================================
uchar sec=0;//定時(shí)
uchar sec2=0;
uchar mode=0;//模式
uchar flag=0;
uchar time_err=60,error=0;
uchar kahao=0;//號(hào)
uchar point=0;
uchar beep_time=0;
uchar nian=24,yue=4,ri=1,shi=12,fen=24,miao=00;
uchar flag1,flag2;
uchar danjia=10,dangqianchewei=0,shengyu=0,zongchewei=8,shijian,shijian2,jiage,jiage2;
//==========================================================
uchar *p,*q;
//==========================================================
//號(hào)顯示
void ka_disp()
{
if(kahao==1)//C1
{
OLED_ShowString(48,2,"C111");
}
if(kahao==2)//C2
{
OLED_ShowString(48,2,"C222");
}
}
void main()
{
OLED_Init(); //初始化OLED
OLED_Clear() ;
// 初始化12864
OLED_ShowCHinese(0,0,0);//
OLED_ShowCHinese(18,0,1);//
OLED_ShowCHinese(36,0,2);//
OLED_ShowCHinese(54,0,3);//
OLED_ShowCHinese(72,0,4);//
OLED_ShowCHinese(90,0,5);//
OLED_ShowCHinese(108,0,6);//
OLED_ShowCHinese(0,2,7);//zong
OLED_ShowCHinese(18,2,8);//:
OLED_ShowCHinese(0,4,9);//sheng
OLED_ShowCHinese(18,4,8);//:
//定時(shí)器初始化
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
ET0=1;//打開定時(shí)器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時(shí)器
while (1)
{
if(P1!=0xff)//蜂鳴器響
beep_time=10;
//錯(cuò)誤檢測(cè)
if(time_err>0)
{
if(!k4)
{
time_err=60;
mode=1;
error=1;
kahao=1;
}
if(!k5)
{
time_err=60;
mode=1;
error=1;
kahao=2;
}
if(!k6)
{
time_err=60;
mode=1;
error=1;
kahao=3;
}
}
if(shengyu<1)
{
beep=0;
}
//按鍵檢測(cè)
if((mode<20)&&(time_err==0))
{
if(!k4)//1
{
mode=2;
kahao=1;
while(!k4);
}
if(!k5)//2
{
mode=3;
kahao=2;
while(!k5);
}
if(!k1)//設(shè)置
{
mode=4;
if(point<8)
point++;
else
{
point=0;
mode=0;
}
while(!k1);
}
if(mode==4)
{
if(!k2)//加
{
switch(point)
{
case 1://年
nian++;
if(nian>99){nian=0;}//年
break;
case 2://月
yue++;
if(yue>12){yue=1;}//
break;
case 3://日
ri++;
if(ri>31){ri=1;}//
break;
case 4://時(shí)
shi++;
if(shi>23){shi=0;}//
break;
case 5://分
fen++;
if(fen>59){fen=0;}//
break;
case 6://秒
miao++;
if(miao>59){miao=0;}//
break;
case 7://單價(jià)
if(danjia<200)
danjia++;
break;
case 8://車位
if(zongchewei<10)
zongchewei++;
}
while(!k2);
}
if(!k3)//減
{
switch(point)
{
case 1://年
nian--;
if(nian>0){nian=99;}//
break;
case 2://月
yue--;
if(yue>0){yue=12;}//
break;
case 3://日
ri--;
if(ri>0){ri=31;}//
break;
case 4://時(shí)
shi--;
if(shi>0){shi=23;}//
break;
case 5://分
fen--;
if(fen>0){fen=59;}//
break;
case 6://秒
miao--;
if(miao>0){miao=59;}//
break;
case 7://單價(jià)
if(danjia>0)
danjia--;
break;
case 8://車位
if(zongchewei>0)
{
zongchewei--;
}
}
while(!k3);
}
}
}
}
}
//========================================================
//定時(shí)器中斷
void Timer0() interrupt 1
{
uchar i,j;
uchar k,k1;
uchar m,m1,m2,m3;
if(beep_time>0) //蜂鳴器控制
{
beep_time--;
beep=0;
}
else
beep=1;
if(time_err>0) //啟動(dòng)倒計(jì)時(shí)
time_err--;
else
{
if(error==1)
{
mode=0;
error=0;
}
if(mode==20)
mode=0;
}
if(sec2++>19)//1s
{
sec2=0;
miao++;
if(miao>59)
{
miao=0;
fen++;
if(fen>60)
{
fen=0;
shi++;
if(shi>23)
{
shi=0;
ri++;
if(ri>30)
{
ri=1;
yue++;
if(yue>12)
{
yue=1;
nian++;
if(nian>99)
{
nian=0;
}
}
}
}
}
}
}
if(sec<10)//0.5s
{
sec++;flag1++;
}
else
{
sec=0;
flag=!flag;
//初始界面
if(mode==0)
{
if(flag1>50)
{
flag1=0;
OLED_Clear();
}
speaker1=1;
speaker2=1;
speaker3=1;
speaker4=1;
OLED_ShowCHinese(0,0,0);//
OLED_ShowCHinese(18,0,1);//
OLED_ShowCHinese(36,0,2);//
OLED_ShowCHinese(54,0,3);//
OLED_ShowCHinese(72,0,4);//
OLED_ShowCHinese(90,0,5);//
OLED_ShowCHinese(108,0,6);//
OLED_ShowCHinese(0,2,7);//zong
OLED_ShowCHinese(18,2,8);//:
OLED_ShowCHinese(0,4,9);//sheng
OLED_ShowCHinese(18,4,8);//:
OLED_ShowNum(42,2,zongchewei,3,16);
shengyu=zongchewei-dangqianchewei;
OLED_ShowNum(42,4,shengyu,3,16);
// //------------------------------時(shí)間
OLED_ShowNum(0,6,20,2,16);
OLED_ShowNum(16,6,nian,2,16);
OLED_ShowString(32,6,"-");
if(yue<10)
{OLED_ShowNum(40,6,0,1,16);
OLED_ShowNum(48,6,yue%10,1,16);
}
else{OLED_ShowNum(40,6,yue,2,16); }
OLED_ShowString(56,6,"-");
if(ri<10){OLED_ShowNum(64,6,0,1,16);
OLED_ShowNum(72,6,ri%10,1,16); }
else{ OLED_ShowNum(64,6,ri,2,16); }
if(shi<10)
{ OLED_ShowNum(88,6,0,1,16);
OLED_ShowNum(96,6,shi%10,1,16); }
else { OLED_ShowNum(88,6,shi,2,16); }
OLED_ShowString(104,6,":");
if(fen<10)
{ OLED_ShowNum(108,6,0,1,16);
OLED_ShowNum(116,6,shi%10,1,16); }
else { OLED_ShowNum(108,6,fen,2,16); } }
//錯(cuò)誤界面
if(mode==1)
{
OLED_Clear(); // 清屏
OLED_ShowCHinese(0,0,0);//
OLED_ShowCHinese(18,0,1);//
OLED_ShowCHinese(36,0,2);//
OLED_ShowCHinese(54,0,3);//
OLED_ShowCHinese(72,0,4);//
OLED_ShowCHinese(90,0,5);//
OLED_ShowCHinese(108,0,6);//
OLED_ShowCHinese(0,2,10);//
OLED_ShowCHinese(16,2,11);//
OLED_ShowString(32,2,":");
ka_disp();//顯示號(hào)
//請(qǐng)重刷!
OLED_ShowCHinese(0,4,12);//
OLED_ShowCHinese(18,4,13);//
OLED_ShowCHinese(36,4,14);//
OLED_ShowString(54,4,"!");
}
if((mode>1)&&(mode<4))
{
OLED_Clear(); // 清屏
OLED_ShowCHinese(0,0,0);//
OLED_ShowCHinese(18,0,1);//
OLED_ShowCHinese(36,0,2);//
OLED_ShowCHinese(54,0,3);//
OLED_ShowCHinese(72,0,4);//
OLED_ShowCHinese(90,0,5);//
OLED_ShowCHinese(108,0,6);//
OLED_ShowCHinese(0,2,10);//
OLED_ShowCHinese(18,2,11);//
OLED_ShowString(36,2,":");
ka_disp();//顯示號(hào)
}
//1記錄、結(jié)算
if(mode==2)
{
//判斷進(jìn)出
if(k>0)//結(jié)算
{
k=0;
speaker1=1;
speaker2=1;
speaker3=1;
speaker4=0;
dangqianchewei=dangqianchewei-1;
i=shi;
j=fen;
m1=shi*60+j;
shijian=m1-m;
OLED_ShowCHinese(0,4,15);//計(jì)時(shí)
OLED_ShowCHinese(16,4,16);//
OLED_ShowString(36,4,":");
OLED_ShowNum(48,4,shijian%1000/100,1,16);
OLED_ShowNum(56,4,shijian%100/10,1,16);
OLED_ShowNum(64,4,shijian%10,1,16);
OLED_ShowCHinese(72,4,30); //分
OLED_ShowCHinese(0,6,31); //共計(jì)
OLED_ShowString(36,6,":");
jiage=shijian*danjia;//價(jià)格
OLED_ShowNum(48,6,jiage%1000/100,1,16);
OLED_ShowNum(56,6,jiage%100/10,1,16);
OLED_ShowString(64,6,".");
OLED_ShowNum(72,6,jiage%10,1,16);
OLED_ShowCHinese(88,6,29);//元
}
else//記錄
{
k=1; speaker1=0; speaker2=1; speaker3=1; speaker4=1;
dangqianchewei=dangqianchewei+1;
i=shi;
j=fen;
m=shi*60+j;
OLED_ShowCHinese(0,4,25);//單價(jià)
OLED_ShowCHinese(16,4,26);
OLED_ShowString(32,4,":");
OLED_ShowNum(40,4,danjia%100/10,2,16);
OLED_ShowString(56,4,".");
OLED_ShowNum(64,4,danjia%10,1,16);
OLED_ShowCHinese(80,4,29);//元
OLED_ShowString(96,4,"/min"); //請(qǐng)停車!
OLED_ShowCHinese(8,6,12);
OLED_ShowCHinese(24,6,0);
OLED_ShowCHinese(43,6,1); }
time_err=100;
mode=20;
}
//2記錄、結(jié)算
if(mode==3)
{ //判斷進(jìn)出
if(k1>0)//結(jié)算
{ k1=0;
speaker1=1;
speaker2=1;
speaker3=1;
speaker4=0;
dangqianchewei=dangqianchewei-1;
i=shi;
j=fen;
m2=i*60+j;
shijian2=m2-m3;
OLED_ShowCHinese(0,4,15);//計(jì)時(shí)
OLED_ShowCHinese(16,4,16);//
OLED_ShowString(36,4,":");
OLED_ShowNum(48,4,shijian2%1000/100,1,16);
OLED_ShowNum(56,4,shijian2%100/10,1,16);
OLED_ShowNum(64,4,shijian2%10,1,16);
OLED_ShowCHinese(72,4,30); //分
OLED_ShowCHinese(0,6,31); //共計(jì)
OLED_ShowString(36,6,":");
jiage2=shijian2*danjia;//價(jià)格
OLED_ShowNum(48,6,jiage2%1000/100,1,16);
OLED_ShowNum(56,6,jiage2%100/10,1,16);
OLED_ShowString(64,6,".");
OLED_ShowNum(72,6,jiage2%10,1,16);
OLED_ShowCHinese(88,6,29);//元
}
else//記錄
{
k1=1;
speaker1=1;
speaker2=0;
speaker3=1;
speaker4=1;
dangqianchewei=dangqianchewei+1;
i=shi;
j=fen;
m3=i*60+j;
OLED_ShowCHinese(0,4,25);//單價(jià)
OLED_ShowCHinese(16,4,26);
OLED_ShowString(32,4,":");
OLED_ShowNum(40,4,danjia%100/10,2,16);
OLED_ShowString(56,4,".");
OLED_ShowNum(64,4,danjia%10,1,16);
OLED_ShowCHinese(80,4,29);//元
OLED_ShowString(96,4,"/min");
//請(qǐng)停車!
OLED_ShowCHinese(8,6,12);
OLED_ShowCHinese(24,6,0);
OLED_ShowCHinese(43,6,1);
k=j*256+i-1;
}
time_err=100;
mode=20;
}
//==============================================設(shè)置
if(mode==4)
{
if(point<7)
{
OLED_ShowCHinese(0,2,17);//日期
OLED_ShowCHinese(16,2,18);//
OLED_ShowCHinese(0,4,19);//時(shí)間
OLED_ShowCHinese(16,4,20);//
OLED_ShowString(40,2,":");
OLED_ShowString(40,4,":");
OLED_ShowString(64,2,"-");
OLED_ShowString(64,4,":");
OLED_ShowString(88,2,"-");
OLED_ShowString(88,4,":");
}
else
{
OLED_ShowCHinese(18,0,21);//設(shè)置參數(shù)
OLED_ShowCHinese(36,0,22);
OLED_ShowCHinese(54,0,23);
OLED_ShowCHinese(72,0,24);
OLED_ShowCHinese(0,2,25);//單價(jià)
OLED_ShowCHinese(18,2,26);
OLED_ShowString(36,2,":");
OLED_ShowCHinese(0,4,1);//車位
OLED_ShowCHinese(18,4,27);
OLED_ShowString(36,4,":");
OLED_ShowCHinese(80,2,29);//元
OLED_ShowString(96,2,"/min");
OLED_ShowCHinese(80,4,27);//位
}
if(point<7)
{
if(point==1)//年
{
if(flag)
{
OLED_ShowNum(48,2,nian,2,16);
}
else
{
OLED_ShowString(48,2,"__");
}
}
else
{
OLED_ShowNum(48,2,nian,2,16);
}
if(point==2)//月
{
if(flag)
{
OLED_ShowNum(72,2,yue,2,16);
}
else
{
OLED_ShowString(72,2,"__");
}
}
else
{
OLED_ShowNum(72,2,yue,2,16);
}
if(point==3)//日
{
if(flag)
{
OLED_ShowNum(96,2,ri,2,16);
}
else
{
OLED_ShowString(96,2,"__");
}
}
else
{
OLED_ShowNum(96,2,ri,2,16);
}
if(point==4)//時(shí)
{
if(flag)
{
OLED_ShowNum(48,4,shi,2,16);
}
else
{
OLED_ShowString(48,4,"__");
}
}
else
{
OLED_ShowNum(48,4,shi,2,16);
}
if(point==5)//分
{
if(flag)
{
OLED_ShowNum(72,4,fen,2,16);
}
else
{
OLED_ShowString(72,4,"__");
}
}
else
{
OLED_ShowNum(72,4,fen,2,16);
}
if(point==6)//秒
{
if(flag)
{
OLED_ShowNum(96,4,miao,2,16);
}
else
{
OLED_ShowString(96,4,"__");
}
}
else
{
OLED_ShowNum(96,4,miao,2,16);
}
}
else
{
if(point==7)//單價(jià)
{
if(flag)
{
OLED_ShowNum(48,2,danjia/100,1,16);
OLED_ShowNum(56,2,danjia%100/10,1,16);
OLED_ShowString(64,2,".");
OLED_ShowNum(72,2,danjia%10,1,16);
}
else
{
OLED_ShowString(48,2,"__");
OLED_ShowString(72,2,"_");
}
}
else
{
OLED_ShowNum(48,2,danjia/100,1,16);
OLED_ShowNum(56,2,danjia%100/10,1,16);
OLED_ShowString(64,2,".");
OLED_ShowNum(72,2,danjia%10,1,16);
}
if(point==8)//車位
{
if(flag)
{
OLED_ShowNum(48,4,zongchewei%1000/100,1,16);
OLED_ShowNum(56,4,zongchewei%100/10,1,16);
OLED_ShowNum(64,4,zongchewei%10,1,16);
}
else
{
OLED_ShowString(48,4,"___");
}
}
else
{
k=j*256+i;
OLED_ShowNum(48,4,zongchewei%1000/100,1,16);
OLED_ShowNum(56,4,zongchewei%100/10,1,16);
OLED_ShowNum(64,4,zongchewei%10,1,16);
}
}
if(flag1>10)
{
flag1=0;
OLED_Clear();
}
}
}
TH0=0X3C; //重裝定時(shí)器
TL0=0XB0;
}
|
|