標(biāo)題: 單片機(jī)出租車計(jì)價(jià)器的設(shè)計(jì)+Proteus仿真+keil程序 [打印本頁(yè)]
作者: zyujun 時(shí)間: 2023-5-31 10:15
標(biāo)題: 單片機(jī)出租車計(jì)價(jià)器的設(shè)計(jì)+Proteus仿真+keil程序
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (221.14 KB, 下載次數(shù): 45)
下載附件
2023-5-31 16:07 上傳
Dingtalk_20230531101152.jpg (145.16 KB, 下載次數(shù): 53)
下載附件
2023-5-31 10:12 上傳
本設(shè)計(jì)的是一個(gè)基于單片機(jī)AT89C51的出租車自動(dòng)設(shè)計(jì),附有復(fù)位電路,時(shí)鐘電路,鍵盤電路等。復(fù)位電路是單片機(jī)的初始化操作,除了正常的初始化外,為擺脫困境,通過(guò)復(fù)位電路可以重新開始。時(shí)鐘電路采用12MHz的晶振,作為系統(tǒng)的時(shí)鐘源,具有較高的準(zhǔn)確性。
在上電時(shí)四位共陽(yáng)極74EG-MPX4-CA數(shù)碼管顯示最初的起步價(jià),里程,汽車行駛時(shí)間,通過(guò)按鍵可以切換起步價(jià),里程,汽車行駛時(shí)間。通過(guò)按鍵模擬出租車的運(yùn)行,暫停,停止。在74EG-MPX4-CA液晶上可以顯示運(yùn)行的時(shí)間,運(yùn)行時(shí)暫停的時(shí)間,以及所用的。在這里主要是以AT89C51單片機(jī)為核心控制器,P3口接74EG-MPX4-CA液晶顯示模塊,P0口接按鍵的,通過(guò)按鍵輸入。
傳感器知識(shí)面廣,如果在實(shí)踐技能的鍛煉上下功夫,單憑課堂理論課學(xué)習(xí),勢(shì)必出現(xiàn)理論與實(shí)踐脫節(jié)的局面。任隨書本上把單片機(jī)技術(shù)介紹得多么重要、多么實(shí)用多么好用,同學(xué)們?nèi)匀粫?huì)感到那只是空中樓閣,離自己十分遙遠(yuǎn),或者會(huì)感到對(duì)它失去興趣,或者會(huì)感到它高深莫測(cè)無(wú)從下手,這些情況都會(huì)令課堂教學(xué)的效果大打折扣。
本次設(shè)計(jì)的目的就是讓我們?cè)诶碚搶W(xué)習(xí)的基礎(chǔ)上,通過(guò)完成一個(gè)傳感品器件的設(shè)計(jì),使我們學(xué)生不但能夠?qū)⒄n堂上學(xué)到的理論知識(shí)與實(shí)際應(yīng)用結(jié)合起來(lái),而且能夠?qū)﹄娮与娐贰㈦娮釉骷⒂≈齐娐钒宓确矫娴闹R(shí)進(jìn)一步加深認(rèn)識(shí),同時(shí)在軟件編程、排版調(diào)試、焊接技術(shù)、相關(guān)儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。
出租車計(jì)價(jià)器是出租車營(yíng)運(yùn)的專用智能化儀表,隨著電子技術(shù)的發(fā)展,出租車計(jì)價(jià)器技術(shù)也在不斷進(jìn)步和提高。國(guó)內(nèi)出租車計(jì)價(jià)器已經(jīng)經(jīng)歷了4 個(gè)階段的發(fā)展。從傳統(tǒng)的全部由機(jī)械元器件組成的機(jī)械式,到半電子式即用電子線路代替部分機(jī)械元器件的出租車計(jì)價(jià)器;再?gòu)募呻娐肥降侥壳暗膯纹瑱C(jī)系統(tǒng)設(shè)計(jì)的出租車計(jì)價(jià)器。出租車計(jì)價(jià)器是否準(zhǔn)確、出租車司機(jī)是否作弊才是乘客最關(guān)心的問題,而計(jì)價(jià)器營(yíng)運(yùn)數(shù)據(jù)的管理是否方便才是出租車司機(jī)最關(guān)注的。因此怎樣設(shè)計(jì)出一種既能有效防止司機(jī)作弊又能方便司機(jī)的計(jì)價(jià)器尤為重要。因此, 本文以單片機(jī)A T89C51 為核心設(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 系統(tǒng)設(shè)計(jì)簡(jiǎn)介
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所示。
圖2.3 出租車計(jì)價(jià)器總體電路結(jié)構(gòu)框圖
2.4 硬件設(shè)計(jì)電路本設(shè)計(jì)電路圖如圖2.4所示。本系統(tǒng)控制器使用單片機(jī)AT89C51,顯示器用4位共陽(yáng)LED數(shù)碼管以動(dòng)態(tài)掃描法實(shí)現(xiàn)。
圖2.4 出租車計(jì)價(jià)器總電路圖
3 設(shè)計(jì)語(yǔ)言及軟件介紹
3.1 C語(yǔ)言介紹C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,它既具有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它由美國(guó)貝爾研究所的D.M.Ritchie于1972年推出,1978年后,C語(yǔ)言已先后被移植到大、中、小及微型機(jī)上,它可以作為工作系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強(qiáng)的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語(yǔ)言,適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)。
3.2 Keil uVision4軟件介紹Keil uVision4是一款與51系列兼容單片機(jī)匯編和C語(yǔ)言的軟件開發(fā)系統(tǒng),該軟件提供了豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。它的集成開發(fā)環(huán)境集成了一個(gè)項(xiàng)目管理器和一個(gè)功能豐富 有錯(cuò)誤提示的編輯器,以及設(shè)置選項(xiàng),生成工具,在線幫助等功能。利用Keil uVision4可以編譯C、匯編、C和匯編的混合編程源程序,并把它們組織到一個(gè)能確定的目標(biāo)應(yīng)用的項(xiàng)目中去。Keil uVision4會(huì)自動(dòng)編譯,匯編,連接嵌入式應(yīng)用,并為你的開發(fā)提供一個(gè)單一的焦點(diǎn)。
4 系統(tǒng)軟件設(shè)計(jì)
4.1 概述
整個(gè)系統(tǒng)的功能是由硬件電路配合軟件來(lái)實(shí)現(xiàn)的,當(dāng)硬件基本定型后,軟件的功能也就基本定下來(lái)了。從軟件的功能不同可分為兩大類:一是監(jiān)控軟件(主程序),它是整個(gè)控制系統(tǒng)的核心,專門用來(lái)協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系。二是執(zhí)行軟件(子程序),它是用來(lái)完成各種實(shí)質(zhì)性的功能如測(cè)量、計(jì)算、顯示、通訊等。每一個(gè)執(zhí)行軟件是一個(gè)小的功能執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。首先要根據(jù)系統(tǒng)的總體功能選擇一種最合適的監(jiān)控程序結(jié)構(gòu),然后根據(jù)實(shí)時(shí)性的要求,合理地安排監(jiān)控軟件和各執(zhí)行模塊之間地調(diào)度關(guān)系。用C語(yǔ)言完成對(duì)設(shè)計(jì)的軟件編程,程序開始首先定義幾個(gè)函數(shù),以及幾個(gè)初值;然后通過(guò)延時(shí)程序連接顯示電路和AT89C51,然后編寫價(jià)程序和時(shí)間程序,同時(shí)設(shè)計(jì)一個(gè)中斷程序,還有體現(xiàn)按鍵功能的程序?qū)懭爰白x取數(shù)據(jù)子程序,之后再經(jīng)過(guò)數(shù)據(jù)轉(zhuǎn)換,由數(shù)碼管顯示出來(lái),不斷循環(huán)。
4.2 系統(tǒng)程序設(shè)計(jì)模塊系統(tǒng)程序主要包括主程序,延時(shí)子子程序,鍵盤掃描子程序,價(jià)計(jì)算顯示子程序和時(shí)間顯示子程序,中斷子程序等。
4.2.1主程序主程序的主要功能是實(shí)現(xiàn)整個(gè)計(jì)價(jià)器系統(tǒng)的實(shí)時(shí)顯示,時(shí)間價(jià)的轉(zhuǎn)換,按鍵控制功能。主程序流程圖如圖4.2.1所示。
圖4.2.1 主程序流程圖
4.2.2延時(shí)子程序延時(shí)程序的主要功能是對(duì)單片機(jī)和顯示數(shù)碼管之間的延時(shí)轉(zhuǎn)換,以及按鍵和數(shù)碼管之間的延時(shí)作用。延時(shí)子程序流程圖如圖4.2.2所示。
圖4.2.2 延時(shí)子程序流程圖
4.2.3鍵盤掃描子程序
鍵盤掃描子程序主要是對(duì)暫停播放,時(shí)間價(jià)的轉(zhuǎn)換和清零鍵的控制。鍵盤掃描子程序圖4.2.3所示。
圖4.2.3 鍵盤掃描子程序流程圖
4.2.4價(jià)計(jì)算顯示子程序
價(jià)計(jì)算顯示子程序?qū)?duì)出租車行駛的價(jià)計(jì)算和數(shù)碼管對(duì)價(jià)的顯示。其流程圖如圖4.2.4所示。
圖4.2.4 價(jià)計(jì)算顯示子程序圖
4.2.5時(shí)間顯示子程序
時(shí)間顯示子程序主要是對(duì)出租車行駛中時(shí)間的顯示操作。時(shí)間顯示子程序流程圖如圖4.2.5所示。
圖4.2.5 時(shí)間顯示子程序圖
4.2.6中斷子程序
中斷子程序主要是對(duì)出租車系統(tǒng)中每個(gè)中斷環(huán)節(jié)的控制盒實(shí)現(xiàn)。中斷子程序流程圖如圖4.2.6所示。
圖4.2.6 中斷示子程序圖
4.3 控制源C語(yǔ)言程序#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; //
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=5.0;
else if(second>3) cost=5.0+0.7*(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; //打開定時(shí)器
IE=0x82; //EA=1 ET0=1 打開中斷
while(1)
{
ledshow();
}
}
;
4. 4 調(diào)試及仿真經(jīng)軟件調(diào)試-仿真器proteus調(diào)試通過(guò),并燒錄芯片,得到所要求的設(shè)計(jì)結(jié)果。如下圖,試驗(yàn)成功。
圖4.4.1價(jià)(一)
圖4.4.2時(shí)間(一)
圖4.4.3價(jià)(二)
圖4.4.4時(shí)間(二)
圖4.4.5價(jià)(三)
圖4.4.6時(shí)間(三)
圖4.4.7價(jià)(四)
圖4.4.8時(shí)間(四)
圖4.4.9價(jià)(五)
圖4.4.10時(shí)間(五)
結(jié) 論
本文介紹了基于AT89C51單片機(jī)的數(shù)字溫度計(jì)控制系統(tǒng)的設(shè)計(jì),對(duì)整個(gè)硬件電和軟件程序設(shè)計(jì)做了分析,文中介紹了數(shù)字溫度計(jì)的現(xiàn)狀及發(fā)展,介紹了仿真軟件Proteus及Keil的基本知識(shí),一個(gè)月來(lái),經(jīng)過(guò)我們的努力,基本上完成了設(shè)計(jì)要求的內(nèi)容,在系統(tǒng)可行性分析、原理圖設(shè)計(jì)等方面都作了許多實(shí)際工作,取得了一些成績(jī),也遇到了一些問題,存在一些不足。經(jīng)過(guò)這一個(gè)月的學(xué)習(xí),我們?cè)诶碚撝R(shí)方面還是在動(dòng)手能力方面都有了不小的進(jìn)步,受益匪淺。這次設(shè)計(jì)很好的把以前學(xué)到的理論知識(shí)應(yīng)用于實(shí)踐,使我們認(rèn)識(shí)到理論知識(shí)與實(shí)踐之間有一定的差距,只有通過(guò)不斷的努力學(xué)習(xí)和實(shí)踐才能很好的把理論知識(shí)應(yīng)用到實(shí)踐當(dāng)中,也只有通過(guò)不斷的實(shí)踐才能對(duì)理論知識(shí)的理解。
通過(guò)這次設(shè)計(jì)不僅學(xué)會(huì)了如何去查找相關(guān)資料,更重要的是通過(guò)查找資料和翻閱書籍學(xué)到了不少知識(shí),擴(kuò)大了知識(shí)面,提高了知識(shí)水平。經(jīng)過(guò)單元設(shè)計(jì)和系統(tǒng)設(shè)計(jì)鞏固了以前所學(xué)的專業(yè)知識(shí),真正認(rèn)識(shí)到理論聯(lián)系實(shí)際的重要性,為以后的學(xué)習(xí)和工作提供了很多有價(jià)值的經(jīng)驗(yàn)。通過(guò)這次設(shè)計(jì)不僅增強(qiáng)了動(dòng)腦能力和動(dòng)手能力,也提高了我們思考問題、分析問題、解決問題的能力,更重要的是學(xué)會(huì)用工程化的思想來(lái)解決問題。
這次設(shè)計(jì)使我們認(rèn)識(shí)到完整、嚴(yán)謹(jǐn)、科學(xué)分析問題、解決問題的思想是多么的重要,只有擁有了科學(xué)的態(tài)度才能設(shè)計(jì)出有用的產(chǎn)品。另外通過(guò)本次設(shè)計(jì),也使我們認(rèn)識(shí)到自己理論知識(shí)的應(yīng)用能力有很大的欠缺,需要在以后的學(xué)習(xí)中進(jìn)一步提高。
51hei.png (5.3 KB, 下載次數(shù): 51)
下載附件
2023-5-31 18:20 上傳
Keil代碼與Proteus仿真下載(注意要先按暫停后再按轉(zhuǎn)換):
出租車計(jì)價(jià)器.7z
(502.72 KB, 下載次數(shù): 68)
2023-5-31 16:01 上傳
點(diǎn)擊文件名下載附件
仿真+程序+文檔
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |