版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢 業(yè) 論 文</b></p><p> 基于單片機(jī)的出租車計(jì)價(jià)系統(tǒng)的設(shè)計(jì)</p><p><b> 2012年6月5日</b></p><p> 學(xué)生姓名XXX</p><p> 所 在 系XXXXX</p><p> 班 級(jí)XXXX
2、</p><p> 專 業(yè)XXXXXXX</p><p> 指導(dǎo)教師XXXXX</p><p><b> 指導(dǎo)教師評(píng)閱書</b></p><p><b> 評(píng)閱教師評(píng)閱書</b></p><p> 教研室(或答辯小組)及教學(xué)系意見</p><p
3、><b> 摘 要</b></p><p> 出租車計(jì)價(jià)器是乘客與司機(jī)雙方的交易準(zhǔn)則,他是出租車行業(yè)發(fā)展的重要標(biāo)志,是現(xiàn)代出租車不可或缺的部分。它關(guān)系著交易雙方的利益。具有良好性能的計(jì)價(jià)器,無(wú)論是對(duì)廣大出租車司機(jī)朋友還是乘客都是很必要的。因此,出租車計(jì)價(jià)器的研究也是一個(gè)具有應(yīng)用價(jià)值的研究課題。而采用模擬電路或是數(shù)字電路設(shè)計(jì)的計(jì)價(jià)器整體電路規(guī)模較大,用到的器件多,造成的故障率高,難調(diào)
4、試。相對(duì)于普通的模擬電路或數(shù)字電路,采用單片機(jī)AT89S52型號(hào)芯片進(jìn)行的設(shè)計(jì)相對(duì)來(lái)說功能強(qiáng)大,用較少的硬件和適當(dāng)?shù)能浖嗷ヅ浜峡梢院苋菀椎膶?shí)現(xiàn)設(shè)計(jì)要求,且靈活性強(qiáng),可用12864液晶顯示屏顯示,可以通過軟件編程來(lái)完成更多的附加功能。針對(duì)計(jì)費(fèi)模式的切換,通過軟件編程就可以輕易而舉的實(shí)現(xiàn)。避免了機(jī)械開關(guān)帶來(lái)的不穩(wěn)定因素。</p><p> 關(guān)鍵詞:出租車計(jì)價(jià)器, AT89S52,12864液晶顯示屏</p&
5、gt;<p><b> 錄目</b></p><p><b> 摘 要1</b></p><p><b> 第一章 緒 論1</b></p><p> 第一節(jié) 課題背景1</p><p> 第二節(jié) 課題意義1</p><p&g
6、t; 第二章 系統(tǒng)組成及功能2</p><p> 第一節(jié) 系統(tǒng)的組成2</p><p> 第二節(jié) 系統(tǒng)工作原理2</p><p> 第三節(jié) 系統(tǒng)功能的確定3</p><p> 2.3.1 基本功能3</p><p> 2.3.2 擴(kuò)展功能3</p><p> 2.3.3
7、系統(tǒng)操作說明4</p><p> 第三章 系統(tǒng)硬件設(shè)計(jì)5</p><p> 第一節(jié) 芯片的選擇5</p><p><b> 第二節(jié) 芯片圖6</b></p><p> 第三節(jié) 功能電路分析6</p><p> 3.3.1 時(shí)鐘電路6</p><p>
8、 3.3.2 復(fù)位電路7</p><p> 3.3.3 鍵盤電路7</p><p> 3.3.4 LCD12864顯示8</p><p> 第四章 系統(tǒng)軟件設(shè)計(jì)10</p><p> 第一節(jié) 主程序設(shè)計(jì)10</p><p> 第二節(jié) 定時(shí)中斷服務(wù)程序12</p><p>
9、 第三節(jié) 鍵盤服務(wù)程序12</p><p> 第五章 系統(tǒng)測(cè)試14</p><p> 第一節(jié) 硬件調(diào)試14</p><p> 第二節(jié) 軟件調(diào)試15</p><p><b> 結(jié)束語(yǔ)18</b></p><p><b> 致謝19</b></p>
10、;<p><b> 附錄A20</b></p><p> 附錄B:程序清單21</p><p><b> 參考文獻(xiàn)29</b></p><p><b> 第一章 緒 論</b></p><p> 單片機(jī)自1976年由Intel公司推出MCS-48開
11、始,迄今已有二十多年了。由于單片機(jī)集成度高、功能強(qiáng)、可靠性高、體積小、功耗低、使用方便、價(jià)格低廉等一系列優(yōu)點(diǎn),目前已經(jīng)滲入到人們工作和生活的方方面面,單片機(jī)的應(yīng)用領(lǐng)域已從面向工業(yè)控制、通訊、交通、智能儀表等迅速發(fā)展到家用消費(fèi)產(chǎn)品、辦公自動(dòng)化、汽車電子、PC機(jī)外圍以及網(wǎng)絡(luò)通訊等廣大領(lǐng)域。</p><p> 單片機(jī)有兩種基本結(jié)構(gòu):一種是在通用微型計(jì)算機(jī)中廣泛采用的,程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器共用一個(gè)存儲(chǔ)器空間的結(jié)構(gòu),稱
12、為“馮·諾依曼”(Von Neumann)結(jié)構(gòu)。另一種是將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器截然分開,分別尋址的結(jié)構(gòu),稱為“哈佛”(Harvard)結(jié)構(gòu),目前的單片機(jī)采用此種結(jié)構(gòu)為多。</p><p> 汽車計(jì)價(jià)器是乘客與司機(jī)雙方的交易準(zhǔn)則,它是出租車行業(yè)發(fā)展的重要標(biāo)志,是出租車中最重要的工具。它關(guān)系著交易雙方的利益。具有良好性能的計(jì)價(jià)器無(wú)論是對(duì)廣大出租車司機(jī)朋友還是乘客來(lái)說都是很必要的。因此,汽車計(jì)價(jià)器的研究也
13、是十分有一個(gè)應(yīng)用價(jià)值的。我國(guó)在70年代開始出現(xiàn)出租車,但那時(shí)的計(jì)費(fèi)系統(tǒng)大都是國(guó)外進(jìn)口不但不夠準(zhǔn)確,價(jià)格還十分昂貴。隨著改革開放日益深入,出租車行業(yè)的發(fā)展勢(shì)頭已十分突出,國(guó)內(nèi)各機(jī)械廠家紛紛推出國(guó)產(chǎn)計(jì)價(jià)器。出租車計(jì)價(jià)器的功能從剛開始的只顯示路程(需要司機(jī)自己定價(jià),計(jì)算后四舍五入),到能夠自主計(jì)費(fèi),以及現(xiàn)在的能夠打一發(fā)票和語(yǔ)音提示、按時(shí)間自主變動(dòng)單價(jià)等功能。隨著城市旅游業(yè)的發(fā)展,出租車行業(yè)已成為城市的窗口,象征著一個(gè)城市的文明程度。</
14、p><p> 本次設(shè)計(jì)的目的在于現(xiàn)在各大中城市出租車行業(yè)都已普及自動(dòng)計(jì)價(jià)器,所以計(jì)價(jià)器技術(shù)的發(fā)展已成定局。而部分小城市尚未普及,但隨著城市建設(shè)日益加快,象征著城市面貌的出租車行業(yè)也將加速發(fā)展,計(jì)價(jià)器的普及也是毫無(wú)疑問的,所以未來(lái)汽車計(jì)價(jià)器的市場(chǎng)還是十分有潛力的。 </p><p> 第二章 系統(tǒng)組成及功能
15、</p><p><b> 第一節(jié) 系統(tǒng)的組成</b></p><p> 本系統(tǒng)有硬件和軟件兩部分組成。</p><p> 本系統(tǒng)有硬件采用模塊化設(shè)計(jì),以AT89S52控制器為核心,與獨(dú)立鍵盤電路和顯示電路等組成出租車計(jì)價(jià)系統(tǒng)。該系統(tǒng)硬件的組成包括單片機(jī)為主控模塊、LM324、電機(jī)、光電傳感器、獨(dú)立按鍵等。單片機(jī)主控模塊完成外圍硬件的控制
16、以及一些運(yùn)算。獨(dú)立按鍵完成開始暫停等功能,單片機(jī)控制的出租車計(jì)價(jià)系統(tǒng)的硬件組成框圖如圖2-1所示:</p><p><b> 如圖2-1 </b></p><p> 第二節(jié) 系統(tǒng)工作原理</p><p> 本系統(tǒng)的工作流程圖如圖2-2所示,有電源給單片機(jī)模塊供電。單片機(jī)產(chǎn)生的數(shù)字信號(hào)送給LCD12864顯示,和單片機(jī)產(chǎn)生高低電平信號(hào)傳給
17、繼電器使電機(jī)工作,讓光電傳感器產(chǎn)生高低電平信號(hào)通過LM324放大電路放大后傳給單片機(jī)進(jìn)行相關(guān)的運(yùn)算。</p><p><b> 如圖2-1 </b></p><p> 第三節(jié) 系統(tǒng)功能的確定</p><p> 2.3.1 基本功能</p><p> ?。?)顯示:?jiǎn)纬虄r(jià)、起步價(jià)、可以顯示里程、總金額、等待時(shí)間、速
18、度。</p><p> (2)計(jì)費(fèi)功能:起步公里數(shù)為3公里,價(jià)格為8元;若實(shí)際運(yùn)行大于3公里,按單程價(jià)格為2元/公里,往返則價(jià)格為1.5元/公里,等待計(jì)費(fèi)1.5遠(yuǎn)/min。</p><p> ?。?)按鍵功能:?jiǎn)纬?往返分別由“單程” 按鍵和“往返” 按鍵設(shè)定;按“暫?!?鍵,計(jì)價(jià)器可暫停計(jì)價(jià);按“清除” 鍵,計(jì)價(jià)器能將記錄數(shù)據(jù)(里程、等待時(shí)間與金額等)自動(dòng)清0;按“查詢”鍵,能自動(dòng)顯示
19、總等待時(shí)間;按“返回”鍵,仍然顯示里程和金額。</p><p> 2.3.2 擴(kuò)展功能</p><p> 停車計(jì)費(fèi)功能:用單片機(jī)控制電機(jī)轉(zhuǎn)動(dòng),并用光電傳感器檢測(cè)轉(zhuǎn)盤轉(zhuǎn)動(dòng)模擬車速,車速與轉(zhuǎn)盤轉(zhuǎn)速成正比。車速<5公里/小時(shí)的時(shí)間累積為總等待時(shí)間,每1分鐘等待時(shí)間相當(dāng)于里程數(shù)增加1公里。</p><p> 2.3.3系統(tǒng)操作說明</p><p&g
20、t; ?。?)按鍵S1:?jiǎn)纬贪存I。按下該鍵,里程隨脈沖數(shù)成正比累加,在里程大于3公里后,金額數(shù)按單程價(jià)格為2元/公里進(jìn)行累加。</p><p> ?。?)按鍵S2:往返按鍵。按下該鍵,里程隨脈沖數(shù)成正比累加,在里程大于3公里后,金額數(shù)按單程價(jià)格為1.5元/公里進(jìn)行累加。</p><p> ?。?)按鍵S3:暫停按鍵。到達(dá)目的地后,按“暫停” 鍵,計(jì)價(jià)器可暫停計(jì)價(jià)。</p>&
21、lt;p> ?。?)按鍵S4:清除按鍵。按“清除” 鍵,計(jì)價(jià)器能將記錄數(shù)據(jù)(里程、等待時(shí)間與價(jià)格等)自動(dòng)清0。</p><p> ?。?)按鍵S5:查詢按鍵。按“查詢”鍵,能自動(dòng)顯示總等待時(shí)間。</p><p> ?。?)按鍵S6:返回按鍵。按下該鍵,回到顯示里程數(shù)、金額狀態(tài)</p><p> 第三章 系統(tǒng)硬件設(shè)計(jì)</p><p>&
22、lt;b> 第一節(jié) 芯片的選擇</b></p><p> 本設(shè)計(jì)選用AT89S52芯片,它是一種低功耗、高性能CMOS 8位微控制器,具有8K(0000H~1FFFH)在線系統(tǒng)可編程Flash存儲(chǔ)器。片上Flash允許程序存儲(chǔ)器在線編程,也適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在線系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供靈活、高效的解決方案。</
23、p><p> AT89S52具有以下標(biāo)準(zhǔn)功能:8K(0000H~1FFFH)Flash,256字節(jié)(00H~FFH)數(shù)據(jù)存儲(chǔ)器(RAM),64K(0000H~FFFFH)程序存儲(chǔ)器(ROM),32位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口內(nèi)晶振及時(shí)鐘電路。</p><p> 其中,數(shù)據(jù)存儲(chǔ)器(RAM)用于存放各種運(yùn)算的中間結(jié)果,
24、作緩存和數(shù)據(jù)暫存,以及設(shè)置特征標(biāo)志等。AT89S52的片內(nèi)數(shù)據(jù)存儲(chǔ)器用位尋址方式,最大尋址范圍為256字節(jié)(00H~FFH)。按使用情況不同可分成低128字節(jié)(00H~7FH)和高128字節(jié)(80H~FFH)。其中低128字節(jié)為真正的RAM存儲(chǔ)器,高128字節(jié)為特殊功能寄存器(SFR)區(qū),如累加器ACC、程序狀態(tài)字PSW、數(shù)據(jù)指針DPTR、程序計(jì)數(shù)器PC等。整個(gè)片內(nèi)RAM區(qū)分布如圖3-1所示。</p><p>
25、 AT89S52的引腳圖如圖3-2所示:</p><p> 圖3-2 AT89S52引腳圖</p><p> 第三節(jié) 功能電路分析</p><p> 3.3.1 時(shí)鐘電路</p><p> 實(shí)驗(yàn)板的時(shí)鐘振蕩源電路如圖3-3所示。其中JT 為11.0592MHz 的晶振,改變兩電容CB的值即可對(duì)此晶振頻率進(jìn)行調(diào)節(jié)。該電路提供單片機(jī)工
26、作所需的振蕩頻率,計(jì)算定時(shí)器初值即需此晶振頻率,在通信時(shí)也需知道晶振頻率,以對(duì)波特率進(jìn)行計(jì)算。</p><p> 3.3.2 復(fù)位電路</p><p> 如圖3-4所示為實(shí)驗(yàn)板的復(fù)位電路,當(dāng)RESET 信號(hào)為低電平時(shí),實(shí)驗(yàn)板為工作狀態(tài),當(dāng)RESET信號(hào)為高電平時(shí),實(shí)驗(yàn)板為復(fù)位或下載程序狀態(tài)。由于AT89S52具有ISP 的功能,即可以通過并口線直接將程序下載到單片機(jī)內(nèi),因此, AT89
27、S52 具有兩種狀態(tài),下載程序狀態(tài)和運(yùn)行狀態(tài)。該復(fù)位電路能實(shí)現(xiàn)上電自動(dòng)復(fù)位,也能手動(dòng)復(fù)位,一般復(fù)位時(shí)RESET應(yīng)保持20毫秒以上高電平,此復(fù)位時(shí)間由接地電容控制。</p><p> 3.3.3 鍵盤電路</p><p> 如圖3-5所示為獨(dú)立式按鍵電路,每個(gè)按鍵占用一根I/O口線,每根I/O口線上按鍵的工作狀態(tài)不會(huì)影響其它按鍵的工作狀態(tài)。這種按鍵的軟件程序簡(jiǎn)單,但占用I/O口線較多。(
28、一跟口線接一個(gè)按鍵),適用于鍵盤數(shù)較少的系統(tǒng)中。</p><p> 圖 3-5 鍵電路圖</p><p> 圖 3-6 按鍵實(shí)物圖</p><p> 3.3.4 LCD12864顯示</p><p> 通過用12864顯示出租車的單程價(jià)、起步價(jià)、可以顯示里程、總金額、等待時(shí)間、速度等?,F(xiàn)在的LCD價(jià)格便宜且適合我們做單片機(jī)的顯示屏。
29、應(yīng)用也十分廣泛。電路連接如圖3-7所示。</p><p><b> 圖 3-7顯示電路</b></p><p> 圖 3-7 LCD12864實(shí)物圖</p><p> 第四章 系統(tǒng)軟件設(shè)計(jì)</p><p><b> 第一節(jié) 主程序設(shè)計(jì)</b></p><p>
30、在主程序模塊中,需要完成對(duì)各接口芯片的初始化、出租車起價(jià)和單價(jià)的初始化、中斷向量的設(shè)計(jì)以及開中斷、循環(huán)等待等工作。另外,在主程序模塊中還需要設(shè)置啟動(dòng)/清除標(biāo)志寄存器、里程寄存器和價(jià)格寄存器,并對(duì)它們進(jìn)行初始化。然后,主程序?qū)⒏鶕?jù)各標(biāo)志寄存器的內(nèi)容,分別完成啟動(dòng)、清除、計(jì)程和計(jì)價(jià)等不同的操作。主程序流程圖如圖4.1 所示。當(dāng)按下S1時(shí),就啟動(dòng)計(jì)價(jià),將根據(jù)里程寄存器中的內(nèi)容計(jì)算和判斷出行駛里程是否已超過起價(jià)公里數(shù)。若已超過,則根據(jù)里程值、每
31、公里的單價(jià)數(shù)和起價(jià)數(shù)來(lái)計(jì)算出當(dāng)前的累計(jì)價(jià)格,并將結(jié)果存于價(jià)格寄存器中,然后將時(shí)間和當(dāng)前累計(jì)價(jià)格送顯示電路顯示出來(lái)。當(dāng)?shù)竭_(dá)目的地的時(shí)候,由于霍爾開關(guān)沒有送來(lái)脈沖信號(hào),就停止計(jì)價(jià),顯示當(dāng)前所應(yīng)該付的金額和對(duì)應(yīng)的單價(jià),到下次啟動(dòng)計(jì)價(jià)時(shí),系統(tǒng)自動(dòng)對(duì)顯示清零,并重新進(jìn)行 初始化過程。</p><p> 如圖4-1 主程序流程圖</p><p> 第二節(jié) 定時(shí)中斷服務(wù)程序</p&g
32、t;<p> 在定時(shí)中斷服務(wù)程序中,每1/40s 產(chǎn)生一次中斷,當(dāng)產(chǎn)生40 次中斷的時(shí)候,也就到了一秒,送數(shù)據(jù)到相應(yīng)的顯示緩沖單元,并調(diào)用顯示子程序?qū)崟r(shí)顯示。其程序流程如圖4-2 所示。</p><p> 圖4-2 定時(shí)中斷服務(wù)程序</p><p> 第三節(jié) 鍵盤服務(wù)程序</p><p> 鍵盤采用查詢的方式,放在主程序中,當(dāng)沒有按鍵按下的時(shí)
33、候,單片機(jī)循環(huán)主程序,一旦有按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。</p><p> 六個(gè)按鍵分別對(duì)應(yīng)六個(gè)簡(jiǎn)單的子程序。</p><p> 如果按鍵S1被按下,則調(diào)用第一個(gè)子程序:begin_signal標(biāo)志置1,將s_or_d標(biāo)志置0;表示單程開始。</p><p> 如果按鍵S2被按下,則調(diào)用第一個(gè)子程序:begin_signal標(biāo)志置1,將s
34、_or_d標(biāo)志置1; 表示往返開始。</p><p> 如果按鍵S3被按下,則調(diào)用第一個(gè)子程序:begin_signal標(biāo)志置0; 表示暫停。</p><p> 如果按鍵S4被按下,則調(diào)用第一個(gè)子程序:pulse_counter標(biāo)志置0,將t置0; 表示將顯示數(shù)據(jù)清空。</p><p> 如果按鍵S5被按下,則調(diào)用第一個(gè)子程序:dispflag標(biāo)志置1; 表示
35、進(jìn)入查詢界面。</p><p> 如果按鍵S6被按下,則調(diào)用第一個(gè)子程序:dispflag標(biāo)志置0; 表示退出查詢界面。</p><p><b> 第五章 系統(tǒng)測(cè)試</b></p><p><b> 第一節(jié) 硬件調(diào)試</b></p><p> 第一步:目測(cè),檢測(cè)外部的各元件電路是否有斷點(diǎn)。一
36、般先檢查有焊接點(diǎn)的線路,因?yàn)檫@些地方是最容易出現(xiàn)斷點(diǎn)的可用帶放大鏡的臺(tái)燈檢查更佳,如圖5-1為目測(cè)實(shí)圖。</p><p> 如圖5-1 目測(cè)實(shí)物圖</p><p> 第二步用萬(wàn)用表檢測(cè)。</p><p> 先用萬(wàn)用表復(fù)核目測(cè)中有疑問的連接點(diǎn),在檢測(cè)各種電源線與底線是否有短路現(xiàn)象。</p><p> 將萬(wàn)用表打在歐姆擋,然后將表筆接在被
37、測(cè)線路之間,看實(shí)數(shù)是否有變化,有則表明導(dǎo)通。如圖5-2為萬(wàn)用表測(cè)試實(shí)物圖。</p><p><b> 如圖5-2 </b></p><p><b> 第二節(jié) 軟件調(diào)試</b></p><p> 軟件調(diào)試是通過對(duì)用戶程序的匯編、連接、執(zhí)行來(lái)發(fā)現(xiàn)程序中存在的語(yǔ)法錯(cuò)誤與邏輯錯(cuò)誤并加以排除糾正的過程。查看程序是否有邏輯錯(cuò)誤
38、。如圖5-1程序窗口。</p><p> 如圖5-1 程序輸入窗口</p><p> 如圖5-2為程序編譯窗口。</p><p> 如圖5-2 程序編譯窗口</p><p> 如果信息欄顯示沒有錯(cuò)誤,表明沒有語(yǔ)法錯(cuò)誤,然后可以生成“*.HEX”文件下載到芯片里,與硬件聯(lián)合調(diào)試。</p><p><b>
39、; 結(jié)束語(yǔ)</b></p><p> 經(jīng)過這些天有關(guān)于出租車計(jì)價(jià)器的課程設(shè)計(jì),使我對(duì)單片機(jī)的應(yīng)用有了更深的了解。在課程設(shè)計(jì)的過程中,還是碰到了許多的問題。比如,對(duì)于數(shù)碼管動(dòng)態(tài)掃描顯示和鍵盤的延時(shí)防抖的綜合編程不能較好地解決;對(duì)于代碼的前后順序及調(diào)用掌握得還不夠好;對(duì)于一些相關(guān)的應(yīng)用軟件沒能熟練掌握。通過這幾天晚上的苦想和反復(fù)調(diào)試,以及參考網(wǎng)上的程序,最終還是沒能把問題解決。</p>
40、<p> 通過這次課程設(shè)計(jì),我最大的收獲就是自己的動(dòng)手能力和獨(dú)立解決問題的能力得到了很大的提高,也充分體會(huì)到了自己設(shè)計(jì)東西的樂趣、學(xué)會(huì)查閱資料和對(duì)別人的東西融會(huì)變通的重要性,也明白了很多知識(shí)光靠趴在書本上學(xué)是學(xué)不到其中的精髓的,必須親自去試著實(shí)踐,親自去經(jīng)歷才能對(duì)它們真正的掌握,凡事都要自己去動(dòng)下手,去實(shí)踐一下,遇到困難,永遠(yuǎn)不要沮喪氣餒。在動(dòng)手的過程中,不僅能增強(qiáng)實(shí)踐能力,而且在理論上可以有更深的認(rèn)識(shí);這次設(shè)計(jì)給了我極大的
41、鼓舞和信心,相信在以后的學(xué)習(xí)中可以通過不斷的摸索和實(shí)踐來(lái)提高其他方面的知識(shí)。通過本次課程設(shè)計(jì),又使我學(xué)到了許多書本上無(wú)法學(xué)到的知識(shí),也使也深該體會(huì)到單片機(jī)技術(shù)應(yīng)用領(lǐng)域的廣泛,不僅使我對(duì)學(xué)過的單片機(jī)知識(shí)有了很多的鞏固,同時(shí)也對(duì)單片機(jī)這一門課程產(chǎn)生了更大的</p><p><b> 致謝</b></p><p> 首先要感謝我的家人,是他們讓我能上大學(xué);在大學(xué)里,先要
42、學(xué)會(huì)學(xué)習(xí)才能學(xué)的更好,是老師教了我怎樣學(xué)習(xí),到現(xiàn)在能完成畢業(yè)設(shè)計(jì),都少不了老師的功勞;在整個(gè)設(shè)計(jì)過程中,從硬件電路圖到軟件編程,應(yīng)用了相當(dāng)多的知識(shí),包含了大學(xué)三年所學(xué)的知識(shí),在此向各位任課老師表示感謝。</p><p> 在設(shè)計(jì)過程中,指導(dǎo)老師xx老師給予了我很大幫助,xx老師對(duì)設(shè)計(jì)中出現(xiàn)的問題作了及時(shí)講解和耐心指導(dǎo),使我的設(shè)計(jì)得以順利完成。在此,特向xx等表示感謝;同時(shí),很多同學(xué)也給我提供了很多幫助,也向幫助
43、我的同學(xué)表示感謝。</p><p><b> 附錄A </b></p><p><b> 附錄B 程序清單</b></p><p> #include<reg52.h> </p><p> #define uint unsigned int </p><p
44、> #define uchar unsigned char</p><p> #define rate 15//脈沖數(shù)與里程數(shù)的比例 </p><p> sbit P20=P2^0; </p><p> sbit P21=P2^1; </p><p> sbit P22=P2^2; //接 74 LS 13
45、8 控制 數(shù)碼管 </p><p> sbit pulse_in=P1^0;</p><p> bit pulse=1;</p><p> bit dispflag;</p><p> uchar num,temp;</p><p> bit begin_signal;// 開始標(biāo)志 </p&g
46、t;<p> bit s_or_d;//單程 還是往返 標(biāo)志 </p><p> uint times; // 定時(shí)次數(shù) </p><p> uint pulse_counter;</p><p> uint record;</p><p> uint s_temple;</p><
47、p> uint s,m; //里程數(shù) s 和 金額 m </p><p> uint t; //等待時(shí)間 </p><p> char baiwei,shiwei,gewei,xiaoshu; </p><p> char keynum; //鍵盤 的鍵值 </p><p> uchar
48、 code table[]={</p><p> 0x3f,0x06,0x5b,0x4f,</p><p> 0x66,0x6d,0x7d,0x07,</p><p> 0x7f,0x6f,0x77,0x7c,</p><p> 0x39,0x5e,0x79,0x71,0x40}; //0~f and '-'的
49、字型碼(共陰) </p><p> //聲明 區(qū) </p><p> void delay(uint x); </p><p> void init();</p><p> void divide(uint counter);</p><p> void select(bit a,bit b
50、,bit c);</p><p> void debouncer(void);</p><p> uchar keyscan(void);</p><p> void delay(uint x)//延時(shí) x ms .</p><p><b> {</b></p><p><b
51、> uint i,j;</b></p><p> for(i=0;i<x;i++)</p><p> for(j=0;j<=150;j++)</p><p><b> ;</b></p><p><b> }</b></p><p>
52、 void init() // 定時(shí)器初始化 </p><p><b> {</b></p><p> TMOD=0x01;</p><p> TH0=(65536-25000)/256;// timer=1/40s</p><p> TL0=(65536-25000)%256;</p
53、><p><b> EA=1;</b></p><p><b> ET0=1;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p><p> void divide(uint
54、 counter)</p><p><b> {</b></p><p> if(dispflag==0)</p><p><b> {</b></p><p><b> P0=0x00;</b></p><p> counter=count
55、er*10/rate;</p><p> xiaoshu=counter%10;</p><p> gewei=(counter/10)%10;</p><p> shiwei=(counter/100)%10;</p><p> baiwei=(counter/1000)%10;</p><p> if(c
56、ounter<=30)m=80;</p><p><b> else</b></p><p> if(s_or_d==0)m=80+2*(counter-30)+t/300;</p><p> else m=80+1.5*(counter-30)+t/300;</p><p> select(1,
57、1,0);//顯示里程數(shù)目 </p><p> P0=table[xiaoshu];</p><p> delay(2); </p><p> select(0,1,0);</p><p> P0=table[gewei]|0x80;</p><p><b> delay(2);</b
58、></p><p> select(1,0,0);</p><p> P0=table[shiwei];</p><p><b> delay(2);</b></p><p> select(0,0,0);</p><p> P0=table[baiwei];</p>
59、<p><b> delay(2);</b></p><p> xiaoshu=m%10;</p><p> gewei=(m/10)%10;</p><p> shiwei=(m/100)%10;</p><p> baiwei=(m/1000)%10;</p><p>
60、 select(1,1,1); //顯示 金額數(shù)目 </p><p> P0=table[xiaoshu];</p><p> delay(2); </p><p> select(0,1,1);</p><p> P0=table[gewei]|0x80;</p><p><b> dela
61、y(2);</b></p><p> select(1,0,1);</p><p> P0=table[shiwei];</p><p><b> delay(2);</b></p><p> select(0,0,1);</p><p> P0=table[baiwei];
62、</p><p><b> delay(2);</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> P0=0
63、x00;</b></p><p> xiaoshu=t%10;</p><p> gewei=(t/10)%10;</p><p> shiwei=(t/100)%10;</p><p> baiwei=(t/1000)%10;</p><p> select(1,1,0);//顯示 等待時(shí)間
64、 </p><p> P0=table[xiaoshu];</p><p> delay(2); </p><p> select(0,1,0);</p><p> P0=table[gewei];</p><p><b> delay(2);</b></p>&
65、lt;p> select(1,0,0);</p><p> P0=table[shiwei];</p><p><b> delay(2);</b></p><p> select(0,0,0);</p><p> P0=table[baiwei];</p><p><b&g
66、t; delay(2);</b></p><p><b> }</b></p><p><b> }</b></p><p> void timer0() interrupt 1</p><p><b> {</b></p><p>
67、; TH0=(65536-25000)/256;</p><p> TL0=(65536-25000)%256;</p><p> if(begin_signal==1)</p><p><b> {</b></p><p> if(pulse_in!=pulse)</p><p>&l
68、t;b> {</b></p><p> delay(10);</p><p> if(pulse_in!=pulse)</p><p> {pulse=~pulse;</p><p> pulse_counter++;</p><p><b> }</b></
69、p><p><b> }</b></p><p> if (times==39)//1 s timer completed</p><p><b> {</b></p><p><b> times=0;</b></p><p> if((pul
70、se_counter-record)<5)//如果 每秒 脈沖小于 5 , 則等待時(shí)間 增加 </p><p><b> t++;</b></p><p> record=pulse_counter;</p><p><b> }</b></p><p>
71、;<b> times++;</b></p><p><b> }</b></p><p> //s_temple=pulse_counter/2;</p><p> //divide(s_temple);</p><p><b> }</b></p>
72、<p> void select(bit a,bit b,bit c)</p><p><b> {</b></p><p><b> P20=a;</b></p><p><b> P21=b;</b></p><p><b> P22=c;
73、</b></p><p><b> }</b></p><p> void debouncer(void)// 防抖動(dòng) 程序 </p><p><b> {</b></p><p><b> uint i;</b></p><
74、p> for(i=0;i<4800;i++);</p><p><b> }</b></p><p> uchar keyscan()</p><p><b> {</b></p><p><b> P3=0x7f;</b></p><
75、p><b> temp=P3;</b></p><p> temp=temp&0x0f;</p><p> while(temp!=0x0f)</p><p><b> {</b></p><p> delay(10);</p><p><b&g
76、t; temp=P3;</b></p><p> temp=temp&0x0f;</p><p> while(temp!=0x0f)</p><p><b> {</b></p><p><b> temp=P3;</b></p><p>
77、switch(temp)</p><p><b> {</b></p><p> case 0x7e:num=1;</p><p><b> break;</b></p><p> case 0x7d:num=2;</p><p><b> break;&
78、lt;/b></p><p> case 0x7b:num=3;</p><p><b> break;</b></p><p> case 0x77:num=4;</p><p><b> break;</b></p><p><b> }<
79、/b></p><p> while(temp!=0x0f)</p><p><b> {</b></p><p><b> temp=P3;</b></p><p> temp=temp&0x0f;</p><p><b> }</b
80、></p><p><b> }</b></p><p><b> }</b></p><p><b> P3=0xbf;</b></p><p><b> temp=P3;</b></p><p> temp=te
81、mp&0x0f;</p><p> while(temp!=0x0f)</p><p><b> {</b></p><p> delay(10);</p><p><b> temp=P3;</b></p><p> temp=temp&0x0f;
82、</p><p> while(temp!=0x0f)</p><p><b> {</b></p><p><b> temp=P3;</b></p><p> switch(temp)</p><p><b> {</b></p>
83、;<p> case 0xbe:num=5;</p><p><b> break;</b></p><p> case 0xbd:num=6;</p><p><b> break;</b></p><p> case 0xbb:num=7;</p><
84、p><b> break;</b></p><p> case 0xb7:num=8;</p><p><b> break;</b></p><p><b> }</b></p><p> while(temp!=0x0f)</p><p&
85、gt;<b> {</b></p><p><b> temp=P3;</b></p><p> temp=temp&0x0f;</p><p><b> }</b></p><p><b> }</b></p><p
86、><b> }</b></p><p><b> P3=0xdf;</b></p><p><b> temp=P3;</b></p><p> temp=temp&0x0f;</p><p> while(temp!=0x0f)</p>
87、<p><b> {</b></p><p> delay(10);</p><p><b> temp=P3;</b></p><p> temp=temp&0x0f;</p><p> while(temp!=0x0f)</p><p><
88、;b> {</b></p><p><b> temp=P3;</b></p><p> switch(temp)</p><p><b> {</b></p><p> case 0xde:num=9;</p><p><b> br
89、eak;</b></p><p> case 0xdd:num=10;</p><p><b> break;</b></p><p> case 0xdb:num=11;</p><p><b> break;</b></p><p> case 0x
90、d7:num=12;</p><p><b> break;</b></p><p><b> }</b></p><p> while(temp!=0x0f)</p><p><b> {</b></p><p><b> temp
91、=P3;</b></p><p> temp=temp&0x0f;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> P3=
92、0xef;</b></p><p><b> temp=P3;</b></p><p> temp=temp&0x0f;</p><p> while(temp!=0x0f)</p><p><b> {</b></p><p> delay(1
93、0);</p><p><b> temp=P3;</b></p><p> temp=temp&0x0f;</p><p> while(temp!=0x0f)</p><p><b> {</b></p><p><b> temp=P3;&l
94、t;/b></p><p> switch(temp)</p><p><b> {</b></p><p> case 0xee:num=13;</p><p><b> break;</b></p><p> case 0xed:num=14;</p
95、><p><b> break;</b></p><p> case 0xeb:num=15;</p><p><b> break;</b></p><p> case 0xe7:num=16;</p><p><b> break;</b>&l
96、t;/p><p><b> }</b></p><p> while(temp!=0x0f)</p><p><b> {</b></p><p><b> temp=P3;</b></p><p> temp=temp&0x0f;<
97、/p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> return num;</p><p><b> }</b></p><p&
98、gt; void singleway(void)// 單程 開始 函數(shù) </p><p><b> {</b></p><p> begin_signal=1;</p><p><b> s_or_d=0;</b></p><p><b> }</b></
99、p><p> void doubleway(void)//往返 開始 函數(shù) </p><p><b> {</b></p><p> begin_signal=1;</p><p><b> s_or_d=1;</b></p><p><b> }<
100、/b></p><p> void pause(void)//暫停 函數(shù) </p><p><b> {</b></p><p> begin_signal=0;</p><p><b> }</b></p><p> void clear(void)//
101、清除 函數(shù) </p><p><b> {</b></p><p> pulse_counter=0;</p><p><b> t=0;</b></p><p><b> }</b></p><p> void check(void)//
102、 查詢 函數(shù) </p><p><b> {</b></p><p> dispflag=1;</p><p><b> }</b></p><p> void check2(void)// 查詢 函數(shù) </p><p><b> {</
103、b></p><p> dispflag=0;</p><p><b> }</b></p><p> void sentence(void)// 判定鍵盤值 </p><p><b> {</b></p><p> if(keynum!=0)</
104、p><p><b> {</b></p><p> switch(keynum)</p><p><b> {</b></p><p> case 1:singleway();break;</p><p> case 2:doubleway();break;&l
105、t;/p><p> case 3:pause();break;</p><p> case 4:clear();break;</p><p> case 5:check();break;</p><p> case 6:check2();break;</p><p><b> }<
106、/b></p><p><b> }</b></p><p><b> }</b></p><p><b> main()</b></p><p><b> {</b></p><p><b> init(
107、);</b></p><p><b> while (1)</b></p><p><b> {</b></p><p> divide(pulse_counter);</p><p> keynum=keyscan();</p><p> senten
108、ce();</p><p><b> }</b></p><p><b> }</b></p><p><b> 參考文獻(xiàn)</b></p><p> [1] 胡漢才.單片機(jī)原理及接口技術(shù)[M].北京:清華大學(xué)出版社,1996.</p><p>
109、 [2] 胡健.單片機(jī)原理及接口技術(shù)[M].北京:機(jī)械工業(yè)出版社,2004.</p><p> [3] 胡健.單片機(jī)實(shí)用教程[M].北京:兵器工業(yè)出版社,2001.</p><p> [4] 周行慈.單片機(jī)應(yīng)用程序設(shè)計(jì)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,1991.</p><p> [5] 李廣弟.單片機(jī)基礎(chǔ)[M].修訂本,北京:北京航空航天大學(xué)出版社,
110、2001.</p><p> [6] 李朝青.單片機(jī)原理及接口技術(shù)[M],簡(jiǎn)明修訂版.北京:北京航空航天大學(xué)出版社,1999.</p><p> [7] 李葉紫.MCS-51單片機(jī)應(yīng)用教程[M].北京:清華大學(xué)出版社,2004.</p><p> [8] 朱定華.單片機(jī)原理及接口技術(shù)[M].北京:電子工業(yè)出版社,2001.</p><p&g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)出租車測(cè)速計(jì)價(jià)系統(tǒng)畢業(yè)論文
- 基于單片機(jī)出租車測(cè)速計(jì)價(jià)系統(tǒng)畢業(yè)論文
- 基于單片機(jī)的出租車計(jì)價(jià)系統(tǒng)的設(shè)計(jì)畢業(yè)論文
- 基于at89c51單片機(jī)的出租車計(jì)價(jià)系統(tǒng)的設(shè)計(jì)-畢業(yè)論文
- 畢業(yè)論文----基于c-51單片機(jī)出租車計(jì)價(jià)器的研究
- 基于51單片機(jī)的出租車計(jì)價(jià)器畢業(yè)設(shè)計(jì)論文
- 基于單片機(jī)的出租車計(jì)價(jià)器設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的出租車計(jì)價(jià)器設(shè)計(jì)【畢業(yè)論文】
- 畢業(yè)論文--基于單片機(jī)的出租車計(jì)價(jià)器設(shè)計(jì)
- 基于單片機(jī)出租車計(jì)費(fèi)系統(tǒng)畢業(yè)論文
- 基于51單片機(jī)的出租車計(jì)價(jià)器設(shè)計(jì)
- 畢業(yè)論文---基于單片機(jī)的出租車計(jì)價(jià)器的設(shè)計(jì)
- 畢業(yè)論文--基于51單片機(jī)設(shè)計(jì)的多功能出租車計(jì)價(jià)器
- 畢業(yè)論文(設(shè)計(jì))基于單片機(jī)的出租車計(jì)價(jià)器的設(shè)計(jì)
- 畢業(yè)論文-- 基于單片機(jī)的出租車計(jì)價(jià)器軟件設(shè)計(jì)
- 課程設(shè)計(jì)---基于51單片機(jī)的出租車計(jì)價(jià)器
- 基于單片機(jī)的出租車計(jì)價(jià)器
- 2017畢業(yè)論文-基于pic單片機(jī)的出租車計(jì)費(fèi)系統(tǒng)
- 基于at89c51單片機(jī)的出租車計(jì)價(jià)器系統(tǒng)設(shè)計(jì)
- 基于89S51單片機(jī)的出租車計(jì)價(jià)器系統(tǒng)設(shè)計(jì)論文.doc
評(píng)論
0/150
提交評(píng)論