51單片機(jī)簡(jiǎn)易出租車計(jì)費(fèi)系統(tǒng)仿真設(shè)計(jì)( proteus仿真+程序+報(bào)告+講解視頻)
仿真圖proteus 8.9及以上
程序編譯器:keil 4/keil 5
編程語(yǔ)言:C語(yǔ)言
設(shè)計(jì)編號(hào):S0036
講解視頻
51單片機(jī)簡(jiǎn)易出租車計(jì)費(fèi)系統(tǒng)仿真設(shè)計(jì)( proteus仿真+程序+報(bào)告+講解視頻)
1.主要功能:
出租車計(jì)費(fèi)系統(tǒng)設(shè)計(jì)內(nèi)容:
1、用定時(shí)器時(shí)間模擬路程
2、前三秒以內(nèi)8.00元,若超出3秒每增加一秒,價(jià)格增加1元。
3、用數(shù)碼管顯示價(jià)錢和時(shí)間
4、創(chuàng)新內(nèi)容(用一個(gè)按鍵控制顯示時(shí)間或價(jià)錢)
以下為本設(shè)計(jì)資料展示圖:
2.仿真
開(kāi)始仿真
開(kāi)始仿真后前三秒以內(nèi)8.00元,若超出3秒每增加一秒,價(jià)格增加1元。
數(shù)碼管顯示價(jià)錢或時(shí)間,通過(guò)按鍵切換顯示。
3. 程序
部分程序代碼
#include<reg52.h>
#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 i,j;
uint code Seg[19]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x80};
//數(shù)碼管譯碼表: { 0 , 1 , 2 , 3 , 4 ,5 6 7 8 9 0 . } P}
uchar jps,ks,key_do;//鍵盤緩存,上次有按鍵按下標(biāo)志位,按鍵已處理標(biāo)志位
uint count_10ms=0,second=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 d1,uint 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*(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(2,11);
delay(5);
}
while(j%2==1) // 時(shí)間顯示
{
LED(1,second/10);
delay(5);
LED(2,second%10);
delay(5);
LED(3,count_10ms/10);
delay(5);
LED(4,count_10ms%10);
delay(5);
LED(2,11);
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; //打開(kāi)定時(shí)器
IE=0x82; //EA=1 ET0=1 打開(kāi)中斷
while(1)
{
ledshow();
}
}
4.設(shè)計(jì)報(bào)告
報(bào)告格式規(guī)范,字?jǐn)?shù)4528,含各種框圖。
部分內(nèi)容
系統(tǒng)需求及方案設(shè)計(jì)
2.1出租車計(jì)價(jià)器簡(jiǎn)介
以單片機(jī)AT89C51為核心設(shè)計(jì)一款多功能出租車計(jì)價(jià)器,該計(jì)價(jià)器能實(shí)現(xiàn)按時(shí)間和里程綜合計(jì)算車價(jià),能顯示時(shí)間、總車價(jià)等相關(guān)信息顯示。它比市場(chǎng)上的一些計(jì)價(jià)器使用更方便,功能更全,還具有有效防止司機(jī)作弊和系統(tǒng)穩(wěn)定性好的優(yōu)點(diǎn)。
2.2 設(shè)計(jì)要求
基于單片機(jī)的出租車計(jì)價(jià)器系統(tǒng)設(shè)計(jì),基本實(shí)現(xiàn)出租車計(jì)價(jià)器的部分功能。
2.3 設(shè)計(jì)方案論證
根據(jù)系統(tǒng)的設(shè)計(jì)要求,用時(shí)間模擬路程設(shè)計(jì)出租車計(jì)價(jià)器,選擇單片機(jī)AT89C51為測(cè)控系統(tǒng)的核心來(lái)完成數(shù)據(jù)采集、處理、顯示等功能。選用時(shí)間模擬路程省卻了采樣/保持電路、運(yùn)放、數(shù)/模轉(zhuǎn)換電路以及進(jìn)行長(zhǎng)距離傳輸時(shí)的串/并轉(zhuǎn)換電路,簡(jiǎn)化了電路,縮短了系統(tǒng)的工作時(shí)間,降低了系統(tǒng)的硬件成本。
該系統(tǒng)的總體設(shè)計(jì)思路如下:將設(shè)計(jì)好的時(shí)間間隔發(fā)送到單片機(jī)上,經(jīng)過(guò)51單片機(jī)處理,將把時(shí)間和價(jià)錢在顯示電路上顯示,本系統(tǒng)顯示器用4位共陽(yáng)LED數(shù)碼管以動(dòng)態(tài)掃描法實(shí)現(xiàn)。
按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)由5個(gè)模塊組成:主控制器、時(shí)鐘電路,復(fù)位電路,振蕩電路和顯示電路。
本課題以是AT89C51單片機(jī)為核心設(shè)計(jì)的一種出租車計(jì)價(jià)器,系統(tǒng)整體硬件電路包括,時(shí)鐘電路,復(fù)位電路,振蕩電路和顯示電路,單片機(jī)主板電路等組成。
系統(tǒng)框圖主要由主控制器、單片機(jī)復(fù)位、時(shí)鐘振蕩、LED顯示、總體電路結(jié)構(gòu)框圖如圖2.3所示。
5. 設(shè)計(jì)資料內(nèi)容清單
下載方式見(jiàn)文章開(kāi)頭視頻或下方鏈接
資料下載鏈接(可點(diǎn)擊):
https://docs.qq.com/doc/DS0dNclRQU1pNWFpn