




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、摘要1第1章緒論2第2章系統(tǒng)設(shè)計32.1 系統(tǒng)組成32.1.1 計費及顯示32.1.2 時鐘及顯示32.1.3 計費開始提示12.2 功能模塊設(shè)計1第3章硬件及軟件實現(xiàn)33.1 傳感器33.1.1 光電傳感器電路設(shè)計3車輪光電開關(guān)檢測電路43.2 單片機43.2.1 8051 單片機功能方塊圖53.2.2 AT89S51單片機簡介73.2.3 AT89S5l與51系列單片機相比具有如下特點83.2.4 89S51的內(nèi)部框圖93.2.5 中斷控制113.2.6 單片機控制程序設(shè)計123.2.7 單片機匯編語言源程序163.3 顯示及按鍵控制系統(tǒng)313.3.1 LED數(shù)碼管313.3.2 數(shù)據(jù)顯示
2、電路的設(shè)計32第4章系統(tǒng)檢測及分析344.1 系統(tǒng)仿真/硬件驗證344.1.1 系統(tǒng)的調(diào)試方法344.1.2 系統(tǒng)的硬件驗證344.2 設(shè)計技巧分析35結(jié)論36附錄A: FPGA芯片引腳37摘 要本系統(tǒng)電源電壓為+16V,速度傳感器具有汽車每運行1提供1000個脈沖信號的特性。顯示器可以采用LED數(shù)碼管。系統(tǒng)采用單片機和FPGA的結(jié)合進行系統(tǒng)的主體設(shè)計,測控FPGA芯片通過采集傳感器脈沖信號WCLK進行里程計算,里程計費,利用外部脈沖信號SCLK產(chǎn)生標(biāo)準(zhǔn)時鐘信號,以計算等待時間,等待費用,并產(chǎn)生里程標(biāo)志(LCBZ),等待標(biāo)志(DDBZ),熄燈標(biāo)志(XDBZ)等有關(guān)控制標(biāo)志信號,同時根據(jù)單片機發(fā)
3、出的開始信號(START),時段標(biāo)志(SDBZ),傳輸數(shù)據(jù)選擇(SEL)等控制信號將有關(guān)計算結(jié)果傳送給FPGA芯片。單片機MCU除了完成鍵盤掃描,顯示控制外,還通過P0口與FPGA進行數(shù)據(jù)交換,并向測控FPGA芯片發(fā)出有關(guān)控制信號。本設(shè)計方案利用單片機和FPGA的結(jié)合,發(fā)揮它們各自的長處,分工清晰,實際使用和操作符合大眾邏輯,容易被人接受。而且,單片機豐富的I/O口和FPGA模塊化的設(shè)計為系統(tǒng)功能的擴展提供了空間和便利。關(guān)鍵詞計費系統(tǒng),單片機,F(xiàn)PGA芯片第1章 緒論出租車是現(xiàn)代人類的重要交通工具,而出租車的計費系統(tǒng)的安全性和先進性是人們普遍關(guān)心的問題,要求計費器性能穩(wěn)定,計費準(zhǔn)確,以及預(yù)防司
4、機作弊行為等等都關(guān)系到乘客的切身利益。因此,設(shè)計出符合人們普遍要求及放心的產(chǎn)品具有重要的意義。同時,設(shè)計該系統(tǒng)所應(yīng)用的知識涉及范圍廣,通過設(shè)計可以牢固掌握所學(xué)理論知識,對電子信息工程專業(yè)的就業(yè)方向有初步認識,將理論與實際有機聯(lián)系起來。應(yīng)該是對以前所學(xué)知識的一次審核吧!本設(shè)計主要介紹了出租車計費系統(tǒng)的設(shè)計思路和過程,并給出了所涉及的相關(guān)知識的詳細介紹。EDA技術(shù)應(yīng)用,單片機的功能及應(yīng)用,傳感器檢測技術(shù),VHDL編程語言及匯編語言程序,顯示系統(tǒng)設(shè)計及按鍵控制,等等。第一部分為緒論,第二部分為方案論證,第三部分為系統(tǒng)設(shè)計,第四部分是硬件及軟件實現(xiàn),第五部分系統(tǒng)檢測及分析,第六部分是結(jié)論,第七部分是附
5、錄,第八部分是參考文獻,第九部分是致謝.目前,普遍的出租車計費器僅僅具有時鐘,起步價,里程計費,等待計費及顯示幾個功能。其發(fā)展前景是可觀的,將來的產(chǎn)品除具有這些功能外,另外還可增加如下功能:防作弊功能,IC卡付費:顧客能在制定點購買一定額度的“顧客IC卡”,乘車后可用IC卡付帳,付帳是否成功有相應(yīng)的提示。車主可定期將總營業(yè)額寫入“車主IC卡”中,并據(jù)此IC卡向所屬公司領(lǐng)取報酬。車票資料打?。侯櫩透顿M后可打印發(fā)票,打印內(nèi)容包括車主信息和車費信息等??纱蛴≤囍骺偁I業(yè)額信息。語音播報:當(dāng)乘客上車時,可自動問候乘客,當(dāng)?shù)竭_目的地,自動播報乘車費用并禮貌再見,表達希望下次乘坐的意思。增加的這些功能將會更
6、好地為乘客服務(wù)。本系統(tǒng)設(shè)計也可應(yīng)用于其他計費系統(tǒng)中,如電腦計費系統(tǒng)等等,其應(yīng)用技術(shù)也有相當(dāng)范圍的應(yīng)用面,如顯示和播報部分也可應(yīng)用于智能飯卡智能電動車機器人等電子相關(guān)產(chǎn)品中??梢娬莆樟嗽撓到y(tǒng)的設(shè)計和分析可實現(xiàn)對電子專業(yè)知識的具體應(yīng)用,增強理論聯(lián)系實際的能力。除此以外,所涉及的知識面也聯(lián)系到現(xiàn)實生活中很多相關(guān)電子產(chǎn)品,也將對其他電子產(chǎn)品有一定理論基礎(chǔ)。第2章 系統(tǒng)設(shè)計2.1 系統(tǒng)組成其中系統(tǒng)電源電壓為+16V。速度傳感器不需要進行設(shè)計,假設(shè)它具有汽車每運行1提供1000個脈沖信號的特性。顯示器采用LED數(shù)碼管。具體功能要求如下:2.1.1 計費及顯示里程,即汽車行程里程,用四位數(shù)字顯示,顯示方式為
7、“”,單位為,精確到0.1。 單價,即里程單價,用三位數(shù)字顯示,顯示方式為“”,單價為元/,根據(jù)每天不同的時間段有兩種情況:當(dāng)時間段為06:0023:00時單價為1.4元/,其他時間段內(nèi)單價為1.80元/。 等候時間,用四位數(shù)字顯示分鐘和秒,顯示方式為“XX:XX”,等候的定義是:當(dāng)汽車行駛速度小于或等于12/h時為“等候”。在等候時間大于1小時的情況下,可以不顯示等候時間,但必須對等候時間進行統(tǒng)計計算。等候單價,等候單價有兩種情況:在等候時間小于1小時的情況下,等候單價為1元每5分鐘;在等候時間大于1小時的情況下,等候單價為20元每小時。 費用的計算,出租車的起價為5.00元,當(dāng)里程小于2時
8、,按起價計算費用;當(dāng)里程大于2時按下式計算費用:費用=里程*里程單價+等候時間*等候單價。費用的顯示,用五位數(shù)字顯示,顯示方式為“”,單價為元。2.1.2 時鐘及顯示當(dāng)出租車在通常運行狀態(tài)下,應(yīng)能顯示當(dāng)前的時間,在汽車熄火的情況下,時鐘必須正常運行,但是可以不顯示時鐘.2.1.3 計費開始提示當(dāng)出租車載上乘客并起步后,將空車指示牌扳倒時,空車指示牌里的指示燈熄滅,并有語音或燈光提示信號。圖2.2 總體原理框圖2.2 功能模塊設(shè)計根據(jù)系統(tǒng)的設(shè)計要求,將整個測控FPGA系統(tǒng)CZJFXT分為七個模塊,它們分別是:分頻器模塊FPQ,等待判別模塊DDPB,里程計算模塊LCJS,里程計費模塊LCJF,等待
9、計時模塊DDJS,等待計費模塊DDJF,輸出數(shù)據(jù)選擇模塊SCXZ。分頻器模塊FPQ:將外部時鐘信號SCLK(設(shè)計時假設(shè)為1024HZ)經(jīng)過適當(dāng)分頻后,產(chǎn)生1HZ的系統(tǒng)工作用基準(zhǔn)時鐘信號CLK1HZ,供給系統(tǒng)中的有關(guān)模塊計時用。等待判別模塊DDPB:根據(jù)速度傳感器脈沖信號WCLK和分頻器產(chǎn)生的基準(zhǔn)時鐘信號CLK1HZ,計算單位時間里WCLK的脈沖個數(shù)(每產(chǎn)生1000個脈沖信號,即每米產(chǎn)生1個脈沖信號),亦即出租車行駛速度,從而判別出租車是否處于等待狀態(tài),發(fā)出等待標(biāo)志信號DDBZ。當(dāng)速度大于12/H,即速度大于200M/MIN時,出租車處于運行狀態(tài),這時等待標(biāo)志DDBZ=0;當(dāng)速度小于等于12/H
10、,即速度小于等于200M/MIN時,出租車處于等待狀態(tài),這時等待標(biāo)志DDBZ=1。該模塊的VHDL程序設(shè)計可分為三個進程:60S周期性跳變信號產(chǎn)生進程,每分鐘行駛距離計算進程,等待標(biāo)志判別進程。等待標(biāo)志判別進程就是比較每分鐘WCLK脈沖個數(shù)與等待狀態(tài)WCLK脈沖臨界個數(shù)200的大小,從而確定DDBZ的賦值。里程計算模塊LCJS:根據(jù)速度傳感器脈沖信號WCLK和等待標(biāo)志DDBZ,對出租車行駛的里程數(shù)XSLC進行計算,同時發(fā)出里程標(biāo)志信號LCBZ和里程計費標(biāo)志信號JFBZ。如果LCBZ=1,說明行駛距離超過2,里程計費啟動;如果LCBZ=0,說明沒超過2,按起價計費,每行駛1應(yīng)計費1次,并且計費的
11、啟動信號應(yīng)是某一時刻,因此每行駛1,計費標(biāo)志信號JFBZ應(yīng)跳變1次。該模塊的VHDL程序設(shè)計可分為兩個進程:里程計算及標(biāo)志產(chǎn)生進程,產(chǎn)生計費信號進程。產(chǎn)生計費信號進程就是每行駛10百米(即1)JFBZ由低電平0變?yōu)?,經(jīng)過一個系統(tǒng)時鐘周期后JFBZ又回復(fù)到低電平0,里程計費模塊LCJF就是在JFBZ脈沖信號的上升沿到來時進行計費的加法操作。里程計費模塊LCJF:在計費標(biāo)志信號JFBZ,等待標(biāo)志信號DDBZ,里程標(biāo)志信號LCBZ和時段標(biāo)志信號SDBZ等信號的控制下,計算行駛里程超過2以上里程的費用LCFY。該模塊的VHDL程序是通過由多個條件控制的加法進程來完成里程計費的,里程計費的條件是在DD
12、BZ=0,并且在JFBZ的上升沿根據(jù)SDBZ分別進行加法計費操作。當(dāng)SDBZ=1時,表示在06:0023:00時段,其單價SD1為1.4元/;當(dāng)SDBZ=0時,表示其他時段,其單價SD2為1.8元/。如果LCBZ=1,說明行駛距離超過2,里程計費啟動;如果LCBZ=0,說明沒超過2,按起價計費。等待計時模塊DDJS:在等待標(biāo)志信號DDBZ和基準(zhǔn)時鐘信號CLK1HZ的控制下,進行等待時間DDSJ的計算,其中DDSJ的低8位表示等待時間的秒數(shù),DDSJ的高8位表示等待時間的分鐘數(shù),同時根據(jù)等待時間的長短發(fā)出一個熄燈標(biāo)志信號XDBZ。當(dāng)?shù)却龝r間小于等于1小時,XDBZ=0,等待時間顯示燈亮;當(dāng)?shù)却龝r
13、間大于1小時,XDBZ=1,等待時間顯示不亮。該模塊的VHDL程序是通過一個多層嵌套的加法進程來完成等待計時的。等待計費模塊DDJF:在等待標(biāo)志信號DDBZ和熄燈標(biāo)志信號XDBZ控制下,進行等待費用DDFY的計費操作。該模塊的VHDL程序包括兩個進程:60S周期性跳變信號產(chǎn)生進程,等待費用計算進程。等待費用計算的條件是在DDBZ=1并且在60S周期性跳變信號T60S的上升沿,根據(jù)XDBZ分別進行加法計費操作。當(dāng)DDBZ=1且XDBZ=0時,按1元/5分鐘,即20分/分鐘計費;當(dāng)DDBZ=0且XDBZ=1時,按20元/小時,即33分/分鐘計費。輸出數(shù)據(jù)選擇模塊SCXZ:根據(jù)單片機發(fā)出的數(shù)據(jù)傳輸選
14、擇控制信號SEL,選擇有關(guān)計算處理結(jié)果傳輸給單片機。第3章 硬件及軟件實現(xiàn)3.1 傳感器傳感器通常是指能感受并能按一定規(guī)律將所感受的被測非電量(包括物理量、化學(xué)量、生物量等)轉(zhuǎn)換成便于處理與傳輸?shù)碾娏?一般為電量,也有少數(shù)為其他物理量,如光信號)的器件或裝置。光電傳感器是把光信號轉(zhuǎn)換為電信號的傳感器,光電傳感器的種類極多。它們共同的特點是響應(yīng)速度快,易于實現(xiàn)非接觸測量,非常適于與計算機接口。3.1.1 光電傳感器電路設(shè)計光電傳感器工作時,大致應(yīng)用了三種效應(yīng):通過光子與物質(zhì)的相互作用能直接得到電信號的量子效應(yīng);光被物質(zhì)吸收變成熱量后,利用熱電轉(zhuǎn)換得到電信號的熱效應(yīng);光作為一種電磁波,直接與物質(zhì)相
15、互作用,從而感應(yīng)出電信號的波動相互作用效應(yīng)。反射式光電傳感器是用來檢測黑白線條的,如圖3.1.1(a)所示 由于黑白物體的反射系數(shù)不同,利用反射光可以使光敏三極管實現(xiàn)導(dǎo)通和斷開,調(diào)節(jié)傳感器與被測對象之間的距離,使光敏三極管只能接受到白色物體反射回來的光束。而黑色物體的反射系數(shù)小,所反射回來的光束很弱,光敏三極管無法接受到反射光。 從而實現(xiàn)對黑白線條的檢測。還要在輸出信號處加個控制電路,如圖3.1.1(b)起隔離強信號和方波整形的作用.(a)(b)圖3.1.1 反射式光電傳感器 由于要測出出租車的運行速度,每1千米產(chǎn)生1000個脈沖信號并計算出單位時間里的脈沖個數(shù),轉(zhuǎn)換成車輪所轉(zhuǎn)的圈數(shù),即產(chǎn)生脈
16、沖數(shù)的多少。在該設(shè)計中采用在車輪的轉(zhuǎn)盤上安裝一個3條黑白線均勻的圓盤,再用光電開關(guān)來檢測,如下圖4.1.2所示,當(dāng)出租車運動時,車輪轉(zhuǎn)動,光電傳感器利用接收黑白電平時輸出的高低電平,當(dāng)光電傳感器檢測到黑色條紋時,輸出高電平給單片機,相反當(dāng)檢測到白色條紋時輸出低電平,從而把連續(xù)輸出高低電平轉(zhuǎn)化為脈沖數(shù),也就把電機轉(zhuǎn)動時帶動有黑白線的圓盤黑白條數(shù)轉(zhuǎn)換成脈沖數(shù),從而測試出出租車運行速度。圖3.1.2 光電檢測電路用一張貼有黑色膠帶的白紙,讓光電傳感器離紙不到5cm的平面上與膠帶垂直經(jīng)過,看計數(shù)是否與所經(jīng)過的的膠帶數(shù)目相等,若多次測試都是吻合的,則此光電傳感器良好.3.2 單片機單片機既是一個微型的計
17、算機,它具有組成計算機系統(tǒng)的三個要素:CPU、內(nèi)存與I/O。CPU:運算或邏輯上的判斷;內(nèi)存:存放程序與數(shù)據(jù);I/O:與外界溝通的橋梁。CPU中央處理器Memory內(nèi)存I/O輸入/出設(shè)備圖3.2.1 單片機簡圖3.2.1 8051 單片機功能方塊圖SERIAL PORT4 I/O PROTBUS CONTROLOSC振蕩與時序CPU8051 COREETC(TIMER2)TIMER1TIMER0ON-CHIPRAM128/(256)BytesON-CHIPPROGRAMMEMORY4K/(8K)INTERRUPTCONTROLINT1INT0EXTRNALINTERRUPTS指令分析中斷系統(tǒng)統(tǒng)
18、控制總線串行接口并行接口TXDRXDP0P2P1P3ROMRAMALECOUNTERINPUTS定時/計數(shù)器EXTRNALINTERRUPTSTIMER0TIMER1(TIMER2)SERIAL圖3.2.2 8051 單片機功能方塊圖振蕩及時序單元(OSC): 8051內(nèi)部有晶體振蕩電路,只要在外部加上石英振蕩晶體,即可產(chǎn)生頻率非常穩(wěn)定的振蕩信號,這個振蕩信號正是8051的心臟,所有8051的時鐘序列都以此振蕩信號為基準(zhǔn)。內(nèi)部數(shù)據(jù)存儲器(Data Memory):當(dāng)程序在運行時,有些數(shù)據(jù)是經(jīng)常在變動的,例如LED的顯示狀態(tài)或顯示值等,它會因I/O測量的結(jié)果而變動,這些值就暫時放置在此區(qū)域中,供
19、其他程序進一步讀取,這也代表此區(qū)域是可以隨時讀寫的。8051系列的CPU提供128個字節(jié)可讀寫的數(shù)據(jù)存儲單元,52系列的CPU則提供256個字節(jié)的數(shù)據(jù)存儲單元,這個數(shù)據(jù)區(qū)域中有一段區(qū)域16個字節(jié)共128位是可以進行位尋址的,MCS51系列的CPU有相當(dāng)強的位處理指令,可以妥善且有效地運用該數(shù)據(jù)存儲器,使用方法將在8051的指令說明中再詳述。內(nèi)部程序存儲器(Program memory): 這段區(qū)域用于存放我們的應(yīng)用程序,而且這部分一經(jīng)確認后是永遠不做修改的。8051系列的CPU提供內(nèi)部4096個字節(jié)(4KB)的程序存儲器,8052系列的CPU則提供2倍即8192個字節(jié)(8KB)的程序存儲器,而
20、8031和8032則不含此單元。此單元可以使CPU選擇由內(nèi)部的程序區(qū)啟動或由外部的程序區(qū)啟動,內(nèi)部的程序區(qū)啟動具有保護功能,后者成本較為低廉。在8051系統(tǒng)中特地將程序區(qū)和數(shù)據(jù)區(qū)分隔開,兩者最大的差異是后者可以讀取和寫入,簡而言之,PROGRA MMEMORY就是 ROM,DATA MEMORY則是 RAM。定時/計數(shù)器(Timer/Counter):51系列的CPU有2個定時/計數(shù)器,而52系列CPU則有3個定時/計數(shù)器,每個定時/計數(shù)器又有多種模式可供選擇。串行接口(Serial Port):8051可通過此接口與外部的計算機等設(shè)備連線交換信息,也可以通過此接口進行I/O的擴充。并行輸入/
21、出端口(Parelled I/O):不論是8051或8052單片機都有4個輸入/出端口,總共有32個輸入/出,而且每個點都可以單獨定義成輸入或輸出??刂瓶偩€(Bus Control):當(dāng)程序的空間超出MSC51系列內(nèi)存程序空間的限制時,會通過本單元的控制線路向外部送出地址線信號和控制信號,同時當(dāng)程序執(zhí)行MOVX DPTR,A指令時,代表對外部數(shù)據(jù)內(nèi)存做寫入的運行,此時也要靠本單元送出必要的控制信號,才能達成外部READ與WRITE的運行請求。8051運算處理單元(Core): 這是整個單片機的控制處理核心,它讀取程序碼,經(jīng)過計算及處理后,將結(jié)果送到各個寄存器或輸入/輸出端口上,并且接受內(nèi)部和外
22、部的中斷信號,然后執(zhí)行特定的中斷服務(wù)程序。只要加入電源并且石英晶體開始運行后,本單元就一直不停地工作著,通常我們所謂的死機是指本單元跳入一個未知沒有出口的循環(huán)中執(zhí)行,而不是指CPU停止一切的運行,不再執(zhí)行任何程序。累加器(Accumulator):累加器是眾多寄存器中最重要的一個寄存器,通常以簡寫Acc代表累加器,8051的指令中有許多指令和Acc寄存器有關(guān),也有多個指令非通過Acc不可,基本上,8051的指令中賦予Acc 累加器的權(quán)限最大。Intel公司建議程序的執(zhí)行盡量以Acc為主。B寄存器(B Register): B寄存器是一個一般用途的工作寄存器,當(dāng)8051使用乘除指令時,則一定要通
23、過B寄存器來做運算。中斷優(yōu)先順序控制寄存器(IPC,Interrupt Priority Control):這個寄存器中存放中斷時的優(yōu)先順序表,若對應(yīng)的位設(shè)成1時,代表中斷有較高的中斷優(yōu)先權(quán)。允許中斷控制寄存器(IEC,Interrupt Enable Control): 此寄存器內(nèi)含系統(tǒng)允許中斷的中斷源設(shè)置值,8051共有5個中斷可供選擇,8052則有6個中斷源,IEC寄存器內(nèi)另有一個位簡稱位,若0時就禁止系統(tǒng)所有的中斷要求。串行輸出入緩沖寄存器(SBUF,Serial Buffer): 所有待送出或剛進入的串行數(shù)據(jù)值都存放在此寄存器中,8051的串行通信是非常簡單的,只要一設(shè)置完通信協(xié)議后
24、,再執(zhí)行一個MOVSBUF,A指令,就可立即將并行數(shù)據(jù)值轉(zhuǎn)化成串行數(shù)據(jù)送到外部。串行通信控制寄存器 (SCON,Serial ControL或稱UART):此寄存器主要在設(shè)置串行通信的模式,當(dāng)串行數(shù)據(jù)已經(jīng)送完或數(shù)據(jù)已收妥時,會有對應(yīng)的位被設(shè)置成1,這些位也可以當(dāng)成中斷要求信號,請求CPU執(zhí)行特定的串行中斷服務(wù)程序。定時/計數(shù)控制寄存器(TCON,Timer/Counter Control): 這個寄存器可以控制定時/計數(shù)器的打開或關(guān)閉,若一經(jīng)打開且計數(shù)到溢位時,TCON上亦有對應(yīng)的位被設(shè)成1,CPU必須針對此位的狀態(tài),決定是否重新設(shè)置定時/計數(shù)值。堆棧指標(biāo)寄存器(SP,Stack Pointe
25、r):8051利用SP指引最近一次存入堆棧內(nèi)的地址,每當(dāng)我們在程序中調(diào)用其他子程序時,原程序的返回地址就會自動存入內(nèi)部DATA MEMORY組成的堆棧(Stack)中,而當(dāng)子程序執(zhí)行到RET指令時,CPU會自動由堆棧中取回原先存入的返回地址,繼續(xù)執(zhí)行原程序。每當(dāng)CPU將8位值存入堆棧時,我們稱之為PUSH(推入),這時SP值會增加1,反之堆棧中取回8位值時,則稱之為POP(提回),此時SP值會減少1。 在寫8051單片機的控制程序時,在程序起始狀態(tài)階段一定要設(shè)置SP值,以便程序有足夠的堆??臻g,也可以利用軟件程序隨時機動調(diào)整的堆棧指標(biāo)SP的值。特殊功能寄存器區(qū)(SFR,Special Func
26、tion Register) 8051單片機內(nèi)部將多個寄存器統(tǒng)稱成SFR,代表其特定的功能,甚至Port0、Port1、Port3也都是屬SFR 的成員之一,在這些SFR 中有部分的寄存器可以進行位尋址,表 4.1是這些SFR 寄存器的整理,其中加(*)記號的寄存器可進行位尋址。表3.1 可進行位尋址的SFR 寄存器SFR 寄存器部分可進行位尋址的寄存器算術(shù)運算寄存器Acc(*)、B(*)、PSW(*)指標(biāo)類寄存器SP、DPL、DPH并行輸入/出端口P0(*)、P1(*)、P2(*)、P3(*)中斷控制寄存器IP(*)、IE(*)定時/計數(shù)寄存器TMOD、TCON(*)、TL0、TH0、TL1
27、、TH1串行通信寄存器SCON(*)、SBUF3.2.2 AT89S51單片機簡介AT89S5l是新型高檔單片機。它的主要特性是:片內(nèi)含有 32 KB的 Flash程序存儲器,擦寫周期為 1000次;片內(nèi)數(shù)據(jù)存儲器內(nèi)含512字節(jié)的RAM;具有可編程32線I/O口(P0,P1,P2和P3口);具有3個可編程定時器T0,T1和T2;中斷系統(tǒng)是具有8個中斷源、6個中斷矢量、2級中斷優(yōu)先權(quán)的中斷結(jié)構(gòu);具有一個全雙工 UART串行口;低功耗工作方式為空閑模式和掉電模式;具有雙數(shù)據(jù)指針DPTR0和DPTR1;具有3級程序鎖定位;具有硬件看門狗定時器WDT;AT89S51工作電源為4.05.5V(AT89L
28、V51RC為2.75.5V);AT89S51最高工作頻率為33MHZ(AT89LV51RC為12MHZ);具有斷電標(biāo)志POF3.2.3 AT89S5l與51系列單片機相比具有如下特點 程序存儲器由 8 KB增加到32 KB; 片內(nèi)數(shù)據(jù)存儲器由256宇節(jié)增加到512字節(jié); 數(shù)據(jù)指針由1個增加到2個; 增加了看門狗定時器,CPU在執(zhí)行程序過程中,由于瞬時的干擾使程序陷入死循環(huán)狀態(tài),WDT(Watchdog Timer)是使CPU擺脫這種困境而自動恢復(fù)的一種方法; 退出掉電方式由單純硬件復(fù)位方式增加到硬件復(fù)位和中斷兩種方式; 新增加了斷電標(biāo)志POF3.2.4 89S51的內(nèi)部框圖圖3.2.3 89S
29、51的內(nèi)部框圖引腳排列及功能:AT89S51有3種封裝形式:PDIPPLCC和TQFPPDIP封裝的引腳排列如圖所示。圖3.2.4 單片機電路板口線 P0口8位、漏極開路的雙向 1O口。 當(dāng)使用片外存儲器及外擴 IO口時,P0口作為低字節(jié)地址數(shù)據(jù)復(fù)用線。在編程時,P0口可用于接收指令代碼宇節(jié);在程序校驗時,P0口可輸出指令字節(jié)(這時需要加外部上拉電阻)。 P0口也可作通用I/O口使用但需加上拉電阻變?yōu)闇?zhǔn)雙向口。當(dāng)作為普通輸入時,應(yīng)將 輸出鎖存器置1 PO口可驅(qū)動8個 TTL負載 P1口8位、準(zhǔn)雙向IO口,具有內(nèi)部上拉電阻。P1口是為用戶準(zhǔn)備的 1O雙向口。在編程和校驗時,可用做輸入低8位地址。
30、用做輸入時,應(yīng)先將輸出鎖存器置1 P1口可驅(qū)動4個TTL負載。引腳替代功能說明T2定時器2的外部事件輸入端;可編脈沖輸出端T2EX定時器 2的捕捉重裝觸發(fā)器輸入端;定時器2的計數(shù)方向控制端 P2口8位、準(zhǔn)雙向 1O口具有內(nèi)部上位電阻 當(dāng)使用片外存儲器或外擴1O口時P2口輸出高8位地址。在編程校驗時P2口可接收高字節(jié)地址和某些控制信號。 P2口也可作普通IO口使用。用做輸入時,應(yīng)先將輸出鎖存器置1 P2口可驅(qū)動4個TTL負載。 P3口8位、準(zhǔn)雙向 1O口,具有內(nèi)部上拉電阻。 P3口可作為普通1O口。用做輸入時,應(yīng)先將輸出鎖存器置 1在編程校驗時P3口接收某些控制信號。它可驅(qū)動4個TTL負載。P3
31、口還提供各種替代功能。表3.3 P3口替代功能RXD(串行輸入口)TXD(串行輸出口)P3.2(外部中斷0)P3.3(外部中斷1)P3.4T0(記時器0外部輸入)P3.5T1(記時器1外部輸入)P3.6(外部數(shù)據(jù)存儲器寫選通)P3.7(外部數(shù)據(jù)存儲器讀選通) 控制信號線 RST復(fù)位輸入信號,高電平有效。在振蕩器穩(wěn)定工作時,在RST腳施加兩個機器周期(即24個晶振周期)以上的高電平,將器件復(fù)位。VPP外部程序存儲器訪問允許信號EA(External Access Enable)。 當(dāng)信號接地時,對ROM的讀操作限定在外部程序存儲器,地址為0000HFFFFH;當(dāng)接地時,對ROM的讀操作從內(nèi)部程序
32、存儲器開始,并可延續(xù)至外部程序存儲器。 在編程時,該引腳可接編程電壓(AT89C51的VPP為5V或12V;AT89LV51的VPP為12 V)。在編程校驗時,該引腳可接VCC。片外程序存儲器讀選通信號用PSEN(Program Store Enable),低電平有效 在片外程序存儲器取指令期間,當(dāng)有效時,程序存儲器的內(nèi)容被送至 PO口(數(shù)據(jù)總線);在訪問外部RAM時,無效。 AIE/低字節(jié)地址鎖存信號 AlE(Address latch Enable)。 在系統(tǒng)擴展時,AlE的下降沿將PO口輸出的低8位地址鎖存在外接的地址鎖存器中,以實現(xiàn)低字節(jié)地址和數(shù)據(jù)的分時傳送。此外,ALE端連續(xù)輸出正脈
33、沖頻率為晶振頻率的16,可用做外部定時脈沖使用。但要注意,每次訪問外RAM時要丟失一個ALE脈沖。 在編程期間該引腳輸入編程脈沖()。 電源線VCC電源電壓輸入。GND接地。 外部晶振引線 XTAL1片內(nèi)振蕩器反相放大器和時鐘發(fā)生線路的輸入端。使用片內(nèi)振蕩器時,連接外部石英晶體和微調(diào)電容。 XTAL2片內(nèi)振蕩器反相放大器的輸出端。當(dāng)使用片內(nèi)振蕩器時,外接石英晶體 和微調(diào)電容。 當(dāng)使用外部振蕩器時,引腳XTAL1接收外振蕩器信號,XTAIL2懸空。3.2.5 中斷控制可采用中斷的時機: 當(dāng)計數(shù)值數(shù)完時要做一個特定的動作。 當(dāng)外部信號有一個脈沖信號產(chǎn)生時要做某種特定的運算。 當(dāng)外部某些信號成立時,
34、必須立即處理。 當(dāng)收到通信界面上的一個特定值時,必須立即反應(yīng)。 當(dāng)程序必須處理數(shù)個小程序,且這些程序必須幾乎同時都在執(zhí)行中。 當(dāng)程序必須隨時更新某項數(shù)據(jù)或顯示值。 當(dāng)程序必須自動且隨時去檢查系統(tǒng)中的狀態(tài)值時。上述的情形亦可采用平常的程序,以持續(xù)或經(jīng)常詢問的寫法來應(yīng)付,但是若系統(tǒng)有多個條件要詢問時,寫法就會變得相當(dāng)?shù)膹?fù)雜。假如改用程序中斷的寫法,則程序的寫法就會變得較單純些,中斷程序通常有以下一個或一個以上的特征,假使我們的應(yīng)用中發(fā)現(xiàn)有這些特征時,在程序規(guī)劃前就要考慮是否采用中斷的寫法。特征1:每隔一個時間間隔就必須做某件特定的事情。特征2:當(dāng)某個條件(不論軟件或硬件線路)成立時,就讓CPU立即
35、處理。特征3:CPU 正以多任務(wù)(Multi-task)的模式,同時處理數(shù)個程序或信號。特征4:某項狀態(tài)可能平時均不成立,可是一成立時,CPU 必須立即停止原先的動作,馬上來處理這個狀態(tài)。3.2.6 單片機控制程序設(shè)計單片機模塊包括單片機AT89S51及其控制的顯示和鍵盤系統(tǒng),AT89S51對FPGA的數(shù)據(jù)進行計算,計算出用車總費用并送入顯示系統(tǒng)顯示,同時它接收鍵盤信息并處理顯示切換。系統(tǒng)采用6+1顯示,6個數(shù)碼管作常規(guī)顯示,一個數(shù)碼管作狀態(tài)顯示。按鍵共有5個,分別是功能切換鍵,確定鍵,修改鍵,啟動模擬鍵和空車牌壓下模擬鍵。圖3.2.5 主程序流程圖圖 3.2.6 按鍵處理流程圖圖3.2.7
36、顯示子程序流程圖圖3.2.8 里程顯示子程序流程圖圖3.2.9 乘車費用顯示子程序流程圖3.2.7 單片機匯編語言源程序LED8 EQU 7FHLED7 EQU 7EH ;時間顯緩LED6 EQU 7DHLED5 EQU 7CHLED4 EQU 7BHLED3 EQU 7AHLED2 EQU 79HLED1 EQU 78H ;功能 ;選擇 ;修改 ;運行信號(傳感器) ;載客信號-單片機(傳感器) ;載客標(biāo)志 ;送FPGA的載客標(biāo)志INT_R1 EQU 46HINT_R0 EQU 47HINT_R2 EQU 48HKEYNUM EQU 49H ;時段標(biāo)志 ;里程標(biāo)志 ;等待標(biāo)志 ;等待超過1小
37、時標(biāo)志FYDY8 EQU 3FH ;費用顯緩FYDY7 EQU 3EHFYDY6 EQU 3DHFYDY5 EQU 3CHFYDY4 EQU 3BHFYDY3 EQU 3AHFYDY2 EQU 39HFYDY1 EQU 38H;主程序START: JMP MAIN ;轉(zhuǎn)移到主程序 ORG 000BH ;中斷服務(wù)入口地址 LJMP PIT0 ORG 30HMAIN:CLEAR:MOV R0,#00H MOV R1,#128 MOV A,#00HL1: MOV R0,A INC R0 DJNZ R1,L1 MOV P2,#00H MOV SP,#60H ;開辟堆棧區(qū) MOV TMOD,#01H ;
38、定時器0,定時工作方式1,16位 MOV TL0,#0B0H ;初值為4C00H,50MS MOV TH0,#03CH SETB TR0 ;啟動定時器工作 ;中斷總允許 ;允許定時中斷 MOV 30H,#14H ;中斷循環(huán)次數(shù)初值為20次ML2:LCALL KKEYIMLL3:CJNE A,#04H,ML4 SETB RUNBZ SJMP ML2 ;調(diào)用鍵盤掃描程序ML4: CJNE A,#00H,MLL1 LCALL SJJZ LCALL KKEYI CJNE A,#00H,MLL3 LCALL LCDJDISP LCALL KKEYI CJNE A,#00H,MLL3 LJMP ML6 L
39、CALL KKEYIMLLL1:CJNE A,#00H,MLL3 LJMP ML5MLL1:JNB RUNBZ,ML2 CJNE A,#05H,ML2 SETB ZKBZ SETB SZKBZ NOPLCALL DELAY3 CLR SZKBZ ;LCALL QJDISP ;起價顯示ML5:LCALL FYDISP ;費用顯示 LCALL KKEYII JNB 28H.3,ML3 ;有鍵按下轉(zhuǎn)ML3 LJMP ML5 ;沒鍵按下繼續(xù)刷新費用顯示ML3:LJMP MLL3ML6:LCALL LCDISP LCALL KKEYII JNB 28H.3,MLLL1 LJMP ML6DDDISP: ;
40、等待時間顯示子程序 MOV FYDY8,#0DHMOV FYDY7,#12HMOV FYDY6,#12H RET;時間校正子程序SJJZ:MOV R6,#03H MOV 40H,#LED6SJL0:LCALL KKEYI CJNE A,#01H,NEXT3SJL3:LCALL KKEYISJL1:CJNE A,#02H,NEXT3 MOV A,R6 CJNE A,#03H,SL0 MOV R0,40H LCALL DAAD1 MOV A,R2 ;是否到了60S? XRL A,#24H JNZ SJL4 ;不到,轉(zhuǎn)RET1返回 LCALL CLR0 ;到了60S,則秒顯示緩沖單元清0 LJMP
41、SJL4SL0:CJNE A,#02H,SL1 MOV R0,40H LCALL DAAD1 MOV A,R2 ;是否到了60S? XRL A,#60H JNZ SJL4 ;不到,轉(zhuǎn)RET1返回 LCALL CLR0 ;到了60S,則秒顯示緩沖單元清0 LJMP SJL4SL1:CJNE A,#01H,SJL4 MOV R0,40H LCALL DAAD1 MOV A,R2 ;是否到了60S? XRL A,#60H JNZ SJL4 ;不到,轉(zhuǎn)RET1返回 LCALL CLR0 ;到了60S,則秒顯示緩沖單元清0 LJMP SJL4SJL4:LCALL KKEYI CJNE A,#01H,SJ
42、L1 DEC 40H DEC 40H DJNZ R6,SJL3NEXT3:RET;起價顯示參數(shù)子程序 MOV FYDY8,#0FH MOV FYDY7,#12H MOV FYDY6,#12H JB 28H.1,NEXT9 MOV FYDY5,#00H MOV FYDY4,#00H MOV FYDY3,#05H MOV FYDY2,#00H MOV FYDY1,#00HNEXT9:RET;里程單價顯示子程序 MOV FYDY8,#0DH MOV FYDY7,#12H MOV FYDY6,#12H MOV FYDY5,#12H MOV FYDY4,#12H JNB SDBZ,DJL1 MOV FY
43、DY3,#01H MOV FYDY2,#04H MOV FYDY1,#00H LJMP DJL2DJL1:MOV FYDY3,#01H MOV FYDY2,#08H MOV FYDY1,#00HDJL2:RETLCDISP: ANL P2,#0F8H MOV R0,#4FH ;讀入數(shù)據(jù) MOV R3,#02H ;讀3次P0口LCDL0:MOV A,P0 MOV R0,A DEC R0 MOV A,P2 INC A ;指向CPLD下一個數(shù)據(jù)ADRC ADRB ADRA= MOV P2,A DJNZ R3,LCDL0 ANL P2,#0F8HIF 1=5 MOV 4FH,#0AAH MOV 4EH
44、,#00HENDIF MOV 58H,4EH ;另存 MOV 59H,4FH MOV 22H,4DH MOV 21H,4EH MOV 20H,4FH LCALL HEXBCD2 MOV FYDY8,#13H MOV FYDY7,#12H MOV FYDY6,#12H MOV FYDY5,#12H RETFYDISP:ANL P2,#0F8H MOV R0,#4FH ;讀入數(shù)據(jù) MOV R3,#02H ;讀3次P0口FYL1:MOV A,P0 MOV R0,A DEC R0 MOV A,P2 INC A ;指向CPLD下一個數(shù)據(jù)ADRC ADRB ADRA= MOV P2,A DJNZ R3,F
45、YL1 ANL P2,#0F8HIF 1=4 MOV 4FH,#0FFH MOV 4EH,#00HENDIF MOV 58H,4EH ;另存 MOV 59H,4FH MOV 5FH,#0F4H MOV 5EH,#01H LCALL ADDMB MOV 22H,4DH MOV 21H,4EH MOV 20H,4FH MOV 4FH,#00H MOV 4EH,#00H MOV 4DH,#00H LCALL HEXBCD2 MOV FYDY8,#0FH MOV FYDY7,#12H MOV FYDY6,#12H RET;BCD轉(zhuǎn)換及送顯緩HEXBCD2:NOP ;3BYTE HEX TO 4BYTE
46、 BCD HEX(2220H)-BCD(2623H)MUBTD:MOV R0,#23H MOV R7,#04H CLR ALOPP1:MOV R0,A INC R0 DJNZ R7,LOPP1 MOV R7,#18HLOOP4:MOV R1,#20H MOV R6,#03H CLR CLOPP2:MOV A,R1 RLC A MOV R1,A INC R1 DJNZ R6,LOPP2 MOV R5,#04H MOV R0,#23HLOOP3:MOV A,R0 ADDC A,R0 DA A MOV R0,A INC R0 DJNZ R5,LOOP3 DJNZ R7,LOOP4SBCD:MOV R
47、0,#23H; MOV R1,#38H MOV R3,#04HHEX1:MOV A,R0 ANL A,#0FH MOV R1,A INC R1 MOV A,R0 ANL A,#0F0H SWAP A MOV R1,A INC R1 INC R0 DJNZ R3,HEX1NEXT2:RET;時鐘中斷處理子程序PIT0:PUSH PSW ;時鐘中斷服務(wù)開始,保護斷點 PUSH ACC ;選用1組通用寄存器 MOV TL0,#0B6H MOV TH0,#03CH MOV A,30H ;循環(huán)次數(shù)處理 DEC A ;循環(huán)次數(shù)減1 MOV 30H,A ;保存于A中 JNZ RET0 ;不滿20次轉(zhuǎn)RET1返回 MOV 30H,#14H ;滿20次,則重賦循環(huán)次數(shù)初值 MOV R0,#LED2 ;秒的十位緩沖單元 LCALL DAAD1 ;秒加1 MOV A,R2 ;是否到了60S? XRL A,#60H JNZ RET0 ;不到,轉(zhuǎn)RET1返回 LCALL CLR0 ;到了60S,則秒顯示緩沖單元清0 MOV R0,#LED4 ;分的十位顯示緩沖單元地址 LCALL DAAD1 ;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度模具行業(yè)人才培養(yǎng)與交流協(xié)議模板
- 二零二五年度工業(yè)用地土地出租環(huán)保安全協(xié)議
- 新型能源設(shè)備安裝及維護協(xié)議
- 共享農(nóng)產(chǎn)品批發(fā)市場的買賣雙方合同
- 煤炭租賃合同
- 數(shù)字醫(yī)療健康平臺推廣合作協(xié)議
- 多功能餐廳運營合同
- 餐飲行業(yè)食品安全承諾書與免責(zé)協(xié)議
- 專業(yè)資質(zhì)認證服務(wù)合同書
- 高考英語題組限時訓(xùn)練含答案解析
- 《高分子物理》配套教學(xué)課件
- 年度應(yīng)急演練計劃表
- 英語板書設(shè)計(課件)
- 三年級勞動課1ppt
- 建筑裝飾設(shè)計收費標(biāo)準(zhǔn)
- 智能中臺數(shù)據(jù)底座解決方案
- 《財政與金融》課程教學(xué)大綱
- 《國際稅收》教案
- 傳統(tǒng)體育養(yǎng)生概論
- 公益性崗位保潔員保證書
- 行政許可執(zhí)法案卷自評表
評論
0/150
提交評論