仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (221.14 KB, 下載次數: 45)
下載附件
2023-5-31 16:07 上傳
Dingtalk_20230531101152.jpg (145.16 KB, 下載次數: 53)
下載附件
2023-5-31 10:12 上傳
本設計的是一個基于單片機AT89C51的出租車自動設計,附有復位電路,時鐘電路,鍵盤電路等。復位電路是單片機的初始化操作,除了正常的初始化外,為擺脫困境,通過復位電路可以重新開始。時鐘電路采用12MHz的晶振,作為系統的時鐘源,具有較高的準確性。
在上電時四位共陽極74EG-MPX4-CA數碼管顯示最初的起步價,里程,汽車行駛時間,通過按鍵可以切換起步價,里程,汽車行駛時間。通過按鍵模擬出租車的運行,暫停,停止。在74EG-MPX4-CA液晶上可以顯示運行的時間,運行時暫停的時間,以及所用的。在這里主要是以AT89C51單片機為核心控制器,P3口接74EG-MPX4-CA液晶顯示模塊,P0口接按鍵的,通過按鍵輸入。
傳感器知識面廣,如果在實踐技能的鍛煉上下功夫,單憑課堂理論課學習,勢必出現理論與實踐脫節的局面。任隨書本上把單片機技術介紹得多么重要、多么實用多么好用,同學們仍然會感到那只是空中樓閣,離自己十分遙遠,或者會感到對它失去興趣,或者會感到它高深莫測無從下手,這些情況都會令課堂教學的效果大打折扣。
本次設計的目的就是讓我們在理論學習的基礎上,通過完成一個傳感品器件的設計,使我們學生不但能夠將課堂上學到的理論知識與實際應用結合起來,而且能夠對電子電路、電子元器件、印制電路板等方面的知識進一步加深認識,同時在軟件編程、排版調試、焊接技術、相關儀器設備的使用技能等方面得到較全面的鍛煉和提高。
出租車計價器是出租車營運的專用智能化儀表,隨著電子技術的發展,出租車計價器技術也在不斷進步和提高。國內出租車計價器已經經歷了4 個階段的發展。從傳統的全部由機械元器件組成的機械式,到半電子式即用電子線路代替部分機械元器件的出租車計價器;再從集成電路式到目前的單片機系統設計的出租車計價器。出租車計價器是否準確、出租車司機是否作弊才是乘客最關心的問題,而計價器營運數據的管理是否方便才是出租車司機最關注的。因此怎樣設計出一種既能有效防止司機作弊又能方便司機的計價器尤為重要。因此, 本文以單片機A T89C51 為核心設計一款多功能出租車計價器,該計價器能實現按時間和里程綜合計算車價,能顯示時間、總車價等相關信息顯示。它比市場上的一些計價器使用更方便,功能更全,還具有有效防止司機作弊和系統穩定性好的優點。
2 系統設計簡介
2.1出租車計價器簡介
以單片機AT89C51為核心設計一款多功能出租車計價器,該計價器能實現按時間和里程綜合計算車價,能顯示時間、總車價等相關信息顯示。它比市場上的一些計價器使用更方便,功能更全,還具有有效防止司機作弊和系統穩定性好的優點。
2.2 設計要求
基于單片機的出租車計價器系統設計,基本實現出租車計價器的部分功能。
2.3 設計方案論證
根據系統的設計要求,用時間模擬路程設計出租車計價器,選擇單片機AT89C51為測控系統的核心來完成數據采集、處理、顯示等功能。選用時間模擬路程省卻了采樣/保持電路、運放、數/模轉換電路以及進行長距離傳輸時的串/并轉換電路,簡化了電路,縮短了系統的工作時間,降低了系統的硬件成本。
該系統的總體設計思路如下:將設計好的時間間隔發送到單片機上,經過51單片機處理,將把時間和價在顯示電路上顯示,本系統顯示器用4位共陽LED數碼管以動態掃描法實現。
按照系統設計功能的要求,確定系統由5個模塊組成:主控制器、時鐘電路,復位電路,振蕩電路和顯示電路。
本課題以是AT89C51單片機為核心設計的一種出租車計價器,系統整體硬件電路包括,時鐘電路,復位電路,振蕩電路和顯示電路,單片機主板電路等組成。
系統框圖主要由主控制器、單片機復位、時鐘振蕩、LED顯示、總體電路結構框圖如圖2.3所示。
圖2.3 出租車計價器總體電路結構框圖 2.4 硬件設計電路本設計電路圖如圖2.4所示。本系統控制器使用單片機AT89C51,顯示器用4位共陽LED數碼管以動態掃描法實現。 圖2.4 出租車計價器總電路圖
3 設計語言及軟件介紹 3.1 C語言介紹C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,適于編寫系統軟件,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。 3.2 Keil uVision4軟件介紹Keil uVision4是一款與51系列兼容單片機匯編和C語言的軟件開發系統,該軟件提供了豐富的庫函數和功能強大的集成開發調試工具,全Windows界面。它的集成開發環境集成了一個項目管理器和一個功能豐富 有錯誤提示的編輯器,以及設置選項,生成工具,在線幫助等功能。利用Keil uVision4可以編譯C、匯編、C和匯編的混合編程源程序,并把它們組織到一個能確定的目標應用的項目中去。Keil uVision4會自動編譯,匯編,連接嵌入式應用,并為你的開發提供一個單一的焦點。 4 系統軟件設計 4.1 概述 整個系統的功能是由硬件電路配合軟件來實現的,當硬件基本定型后,軟件的功能也就基本定下來了。從軟件的功能不同可分為兩大類:一是監控軟件(主程序),它是整個控制系統的核心,專門用來協調各執行模塊和操作者的關系。二是執行軟件(子程序),它是用來完成各種實質性的功能如測量、計算、顯示、通訊等。每一個執行軟件是一個小的功能執行模塊。這里將各執行模塊一一列出,并為每一個執行模塊進行功能定義和接口定義。各執行模塊規劃好后,就可以規劃監控程序了。首先要根據系統的總體功能選擇一種最合適的監控程序結構,然后根據實時性的要求,合理地安排監控軟件和各執行模塊之間地調度關系。用C語言完成對設計的軟件編程,程序開始首先定義幾個函數,以及幾個初值;然后通過延時程序連接顯示電路和AT89C51,然后編寫價程序和時間程序,同時設計一個中斷程序,還有體現按鍵功能的程序寫入及讀取數據子程序,之后再經過數據轉換,由數碼管顯示出來,不斷循環。
4.2 系統程序設計模塊系統程序主要包括主程序,延時子子程序,鍵盤掃描子程序,價計算顯示子程序和時間顯示子程序,中斷子程序等。 4.2.1主程序主程序的主要功能是實現整個計價器系統的實時顯示,時間價的轉換,按鍵控制功能。主程序流程圖如圖4.2.1所示。 圖4.2.1 主程序流程圖 4.2.2延時子程序延時程序的主要功能是對單片機和顯示數碼管之間的延時轉換,以及按鍵和數碼管之間的延時作用。延時子程序流程圖如圖4.2.2所示。 圖4.2.2 延時子程序流程圖 4.2.3鍵盤掃描子程序 鍵盤掃描子程序主要是對暫停播放,時間價的轉換和清零鍵的控制。鍵盤掃描子程序圖4.2.3所示。 圖4.2.3 鍵盤掃描子程序流程圖 4.2.4價計算顯示子程序 價計算顯示子程序將對出租車行駛的價計算和數碼管對價的顯示。其流程圖如圖4.2.4所示。
圖4.2.4 價計算顯示子程序圖 4.2.5時間顯示子程序 時間顯示子程序主要是對出租車行駛中時間的顯示操作。時間顯示子程序流程圖如圖4.2.5所示。 圖4.2.5 時間顯示子程序圖
4.2.6中斷子程序 中斷子程序主要是對出租車系統中每個中斷環節的控制盒實現。中斷子程序流程圖如圖4.2.6所示。
圖4.2.6 中斷示子程序圖
4.3 控制源C語言程序#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}; //數碼管譯碼表: { 0 , 1 , 2 , 3 , 4 ,5 6 7 8 9 0 . } P} uchar jps,ks,key_do;//鍵盤緩存,上次有按鍵按下標志位,按鍵已處理標志位 uint count_10ms=0,second=0; float cost; // void delay(uint tt) //延時函數 { 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() //鍵盤掃描函數 { 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() //價計算 { 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) // 價顯示 { 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) // 時間顯示 { 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中斷函數 { 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++; // 時間價顯示轉換 if(jps==3) // 清零鍵 { count_10ms=0; second=0; cost=0; } } ks=keyscan(); if(ks==0) key_do=0;
}
main() { TMOD=0x01; //Time0為16計數器 TH0=(0xffff-10000)/256; TL0=(0xffff-10000)%256; TR0=1; //打開定時器 IE=0x82; //EA=1 ET0=1 打開中斷
while(1) { ledshow();
} } ;
4. 4 調試及仿真經軟件調試-仿真器proteus調試通過,并燒錄芯片,得到所要求的設計結果。如下圖,試驗成功。 圖4.4.1價(一) 圖4.4.2時間(一)
圖4.4.3價(二) 圖4.4.4時間(二)
圖4.4.5價(三) 圖4.4.6時間(三)
圖4.4.7價(四) 圖4.4.8時間(四)
圖4.4.9價(五) 圖4.4.10時間(五)
結 論 本文介紹了基于AT89C51單片機的數字溫度計控制系統的設計,對整個硬件電和軟件程序設計做了分析,文中介紹了數字溫度計的現狀及發展,介紹了仿真軟件Proteus及Keil的基本知識,一個月來,經過我們的努力,基本上完成了設計要求的內容,在系統可行性分析、原理圖設計等方面都作了許多實際工作,取得了一些成績,也遇到了一些問題,存在一些不足。經過這一個月的學習,我們在理論知識方面還是在動手能力方面都有了不小的進步,受益匪淺。這次設計很好的把以前學到的理論知識應用于實踐,使我們認識到理論知識與實踐之間有一定的差距,只有通過不斷的努力學習和實踐才能很好的把理論知識應用到實踐當中,也只有通過不斷的實踐才能對理論知識的理解。 通過這次設計不僅學會了如何去查找相關資料,更重要的是通過查找資料和翻閱書籍學到了不少知識,擴大了知識面,提高了知識水平。經過單元設計和系統設計鞏固了以前所學的專業知識,真正認識到理論聯系實際的重要性,為以后的學習和工作提供了很多有價值的經驗。通過這次設計不僅增強了動腦能力和動手能力,也提高了我們思考問題、分析問題、解決問題的能力,更重要的是學會用工程化的思想來解決問題。 這次設計使我們認識到完整、嚴謹、科學分析問題、解決問題的思想是多么的重要,只有擁有了科學的態度才能設計出有用的產品。另外通過本次設計,也使我們認識到自己理論知識的應用能力有很大的欠缺,需要在以后的學習中進一步提高。
51hei.png (5.3 KB, 下載次數: 51)
下載附件
2023-5-31 18:20 上傳
Keil代碼與Proteus仿真下載(注意要先按暫停后再按轉換):
出租車計價器.7z
(502.72 KB, 下載次數: 68)
2023-5-31 16:01 上傳
點擊文件名下載附件
仿真+程序+文檔 下載積分: 黑幣 -5
|