資源簡介
本設(shè)計(jì)的是一個(gè)基于單片機(jī)AT89C51的出租車自動(dòng)計(jì)費(fèi)設(shè)計(jì),附有復(fù)位電路,時(shí)鐘電路,鍵盤電路等。復(fù)位電路是單片機(jī)的初始化操作,除了正常的初始化外,為擺脫困境,通過復(fù)位電路可以重新開始。時(shí)鐘電路采用12MHz的晶振,作為系統(tǒng)的時(shí)鐘源,具有較高的準(zhǔn)確性。
在上電時(shí)四位共陽極74EG-MPX4-CA數(shù)碼管顯示最初的起步價(jià),里程收費(fèi),汽車行駛時(shí)間,通過按鍵可以切換起步價(jià),里程收費(fèi),汽車行駛時(shí)間。通過按鍵模擬出租車的運(yùn)行,暫停,停止。在74EG-MPX4-CA液晶上可以顯示運(yùn)行的時(shí)間,運(yùn)行時(shí)暫停的時(shí)間,以及所用的費(fèi)用。在這里主要是以AT89C51單片機(jī)為核心控制器,P3口接74EG-MPX4-CA液晶顯示模塊,P0口接按鍵的,通過按鍵輸入。

代碼片段和文件信息
/**************************************??
???計(jì)價(jià)規(guī)則:
??用時(shí)間模擬路程,前三秒以內(nèi)8.00元,若超出3秒
每增加一秒,價(jià)格增加1元。用數(shù)碼管顯示價(jià)錢和
時(shí)間(用一個(gè)按鍵控制顯示時(shí)間或價(jià)錢)。??
**************************************/
#include
#define?uchar?unsigned?char
#define?uint??unsigned?int
sbit?p00=P0^0?;
sbit?p01=P0^1?;
sbit?p02=P0^2?;
sbit?p37=P3^7?;
uint?ij;
uint?code?Seg[19]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x000x80};
//數(shù)碼管譯碼表:???{?0??,?1?,?2?,?3?,?4??,5????6?????7???8????9????0????.?}???????P}?
uchar?jpskskey_do;//鍵盤緩存,上次有按鍵按下標(biāo)志位,按鍵已處理標(biāo)志位
uint?count_10ms=0second=0;??
float?cost;????//價(jià)錢
void?delay(uint?tt)??//延時(shí)函數(shù)
{
??uint?i;
??for(;tt>0;tt--)
????for(i=0;i<200;i++);
?}
void?LED(uint?d1uint?d2)??
{
if(d1==1)??P0=(P0|0xf0)&0x1f;
if(d1==2)??P0=(P0|0xf0)&0x2f;
if(d1==3)??P0=(P0|0xf0)&0x4f;
if(d1==4)??P0=(P0|0xf0)&0x8f;
P0=P0|0x0f;
P1=Seg[d2];
}
int?keyscan()?????//鍵盤掃描函數(shù)
{
??int?t=0;
??if(p00==0)?{?t=1;?jps=1;}
??if(p01==0)?{?t=1;?jps=2;}
??if(p02==0)?{?t=1;?jps=3;}
??return(t);
}
void?money()????//價(jià)錢計(jì)算
{
??count_10ms++;
??if(count_10ms==100)
?????{count_10ms=0;second++;}
??if(second<=3)?cost=8.0;
else?if(second>3)?cost=8.0+1.0*(second-3);
}
void?ledshow()
{???
while(j%2==0)? //??價(jià)錢顯示?
{
?LED(1(int)?(cost/10)?);
??????? ?delay(5);
??? ?????LED(2(int)?cost%10?);
??????? ?delay(5);
?LED(3(int)?(cost*10)%10?);
??????? ?delay(5);
?LED(4(int)?(cost*100)%10?);
??????? ?delay(5);
?LED(211);
?delay(5);
}?
while(j%2==1)? //????時(shí)間顯示????
???????{
LED(1second/10);
? delay(5);
LED(2second%10);
??????? delay(5);
LED(3count_10ms/10);
??????? delay(5);
LED(4count_10ms%10);
??????? delay(5);
LED(211);
??????? delay(5);
???}?
}
void?Time_fun()?interrupt?1????//10ms中斷函數(shù)
{
??uint?k;
??if(k==15)?{?k=0;?p37=1;?}
????else?k++;
??TH0=(0xffff-10000)/256;??//10ms
??TL0=(0xffff-10000)%256;??//10ms
??
??if(i%2==1)?money(); //???暫停/播放??
??if((ks==1)&&(keyscan()==1)&&(key_do==0))
?{ ?
k=0;
p37=0;???//按鍵提示音
key_do=1;
if(jps==1)?i++;??//???暫停/播放鍵?
if(jps==2)?j++;?//????時(shí)間價(jià)錢顯示轉(zhuǎn)換
if(jps==3)??//???清零鍵
{
??count_10ms=0;
??second=0;
??cost=0;?
}
?}
??ks=keyscan();
??if(ks==0)??key_do=0;
}
main()
{???
TMOD=0x01;?????//Time0為16計(jì)數(shù)器
TH0=(0xffff-10000)/256;
TL0=(0xffff-10000)%256;
TR0=1;????//打開定時(shí)器
IE=0x82;??//EA=1??ET0=1??打開中斷
while(1)
????{
ledshow();
????}
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????656696??2020-06-16?15:57??123.doc
?????文件????????2651??2013-01-08?23:35??出租車計(jì)價(jià)器.c
?????文件??????124395??2013-12-22?15:48??出租車計(jì)價(jià)器.DSN
?????文件?????????742??2013-12-22?15:48??出租車計(jì)價(jià)器.PWI
評(píng)論
共有 條評(píng)論