版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、摘要現(xiàn)在各大中城市出租車(chē)行業(yè)都已普及自動(dòng)計(jì)價(jià)器,所以計(jì)價(jià)器技術(shù)的發(fā)展已成定局。而部分小城市尚未普及,但隨著城市建設(shè)日益加快,象征著城市面貌的出租車(chē)行業(yè)也將加速發(fā)展,計(jì)價(jià)器的普及也是毫無(wú)疑問(wèn)的,所以未來(lái)汽車(chē)計(jì)價(jià)器的市場(chǎng)還是十分有潛力的。出租車(chē)計(jì)價(jià)器是根據(jù)客戶(hù)用車(chē)情況來(lái)自動(dòng)顯示車(chē)費(fèi)的數(shù)字儀表,根據(jù)用車(chē)起步價(jià)、行車(chē)?yán)锍逃?jì)費(fèi)求得客戶(hù)用車(chē)的總費(fèi)用,并通過(guò)數(shù)碼管顯示相應(yīng)的里程及金額。本次設(shè)計(jì)中電路以AT89S51單片機(jī)為中心,附加A44E霍爾傳感器測(cè)距(本電路中用模擬開(kāi)關(guān)替代),實(shí)現(xiàn)對(duì)出租車(chē)計(jì)價(jià),采用AT24C02 實(shí)現(xiàn)在系統(tǒng)掉電的時(shí)候保存單價(jià),輸出采用8段數(shù)碼顯示管,顯示行駛總里程和總金額。 模擬出租車(chē)
2、計(jì)價(jià)器設(shè)計(jì):進(jìn)行里程顯示,預(yù)設(shè)起步價(jià)和起步公里數(shù);行程按全程收費(fèi),有復(fù)位功能和啟動(dòng)功能,啟動(dòng)后,開(kāi)始計(jì)價(jià)。我們采用單片機(jī)進(jìn)行設(shè)計(jì),可以用較少的硬件和適當(dāng)?shù)能浖嗷ヅ浜蟻?lái)實(shí)現(xiàn)設(shè)計(jì)要求,且靈活性強(qiáng),可以通過(guò)軟件編程來(lái)完成更多的附加功能,應(yīng)用前景廣闊。關(guān)鍵詞 出租車(chē)計(jì)價(jià)器 AT89S51單片機(jī) A44E霍爾傳感器 斷電保存 8段數(shù)碼顯示管目錄摘要I第1章 緒論11.1 課題背景11.2 設(shè)計(jì)目的與要求11.2.1 設(shè)計(jì)目的11.2.2 主要設(shè)計(jì)內(nèi)容及基本要求11.3 方案論證與比較1第2章 系統(tǒng)硬件設(shè)計(jì)32.1 硬件設(shè)計(jì)說(shuō)明32.2 AT89S51單片機(jī)簡(jiǎn)介32.3 硬件電路設(shè)計(jì)42.4 硬件組成5
3、2.4.1 驅(qū)動(dòng)電路52.4.2 顯示電路62.4.3 復(fù)位電路72.4.4 掉電保護(hù)電路82.4.5 時(shí)鐘電路92.4.6 按鍵電路10第3章 系統(tǒng)軟件設(shè)計(jì)113.1 軟件總體設(shè)計(jì)113.2 系統(tǒng)軟件設(shè)計(jì)11第4章 系統(tǒng)調(diào)試134.1 軟件調(diào)試134.1.1 編程工具C51語(yǔ)言134.1.2 程序調(diào)試工具KEIL134.1.3 單片機(jī)仿真軟件在線調(diào)試PROTEUS13參考文獻(xiàn)15致謝16附錄程序源代碼17附錄電路仿真圖25第1章 緒論1.1 課題背景隨著出租車(chē)行業(yè)的發(fā)展,出租車(chē)已經(jīng)是城市交通的重要組成部分,從加強(qiáng)行業(yè)管理以及減少司機(jī)與乘客的糾紛出發(fā),具有良好性能的計(jì)價(jià)器對(duì)出租車(chē)司機(jī)和乘客來(lái)說(shuō)
4、都是很必要的。 我們知道,只要乘坐的出租車(chē)啟動(dòng),隨著行駛里程的增加,就會(huì)看到司機(jī)旁邊的計(jì)價(jià)器里程數(shù)字顯示的讀數(shù)從零逐漸增大,而當(dāng)行駛到某一值時(shí)(如2KM)計(jì)費(fèi)數(shù)字顯示開(kāi)始從起步價(jià)(如4元)增加。當(dāng)乘客到站時(shí),按下停止按鍵,計(jì)費(fèi)數(shù)字顯示總里程和總金額,它可以很直觀的反映用戶(hù)使用情況。 1.2 設(shè)計(jì)目的與要求1.2.1 設(shè)計(jì)目的畢業(yè)設(shè)計(jì)是將理論與實(shí)踐相結(jié)合的教學(xué)環(huán)節(jié),通過(guò)綜合運(yùn)用教材及其他資料,使所學(xué)知識(shí)得到進(jìn)一步加深和擴(kuò)展。同時(shí)還培養(yǎng)設(shè)計(jì)能力和解決實(shí)際問(wèn)題能力,進(jìn)行基本技能的訓(xùn)練, 進(jìn)一步熟練proteus,keilC等軟件的操作。本設(shè)計(jì)的目的是在學(xué)習(xí)51系列單片機(jī)的基礎(chǔ)上,設(shè)計(jì)出符合要求的電路
5、,從而實(shí)現(xiàn)設(shè)計(jì)產(chǎn)品的計(jì)價(jià)功能。 1.2.2 主要設(shè)計(jì)內(nèi)容及基本要求利用AT89S51單片機(jī),設(shè)計(jì)簡(jiǎn)單的出租車(chē)計(jì)價(jià)器。在出租車(chē)計(jì)價(jià)器的總體設(shè)計(jì)中,我主要負(fù)責(zé)出租車(chē)計(jì)價(jià)器硬件設(shè)計(jì)。其中主要的外圍功能電路有:驅(qū)動(dòng)電路,按鍵控制電路,掉電保護(hù)電路,時(shí)鐘部分,數(shù)碼管顯示電路等。通過(guò)對(duì)以上各功能的設(shè)計(jì),制作出的出租車(chē)計(jì)價(jià)器應(yīng)具有以下功能:上電時(shí)顯示全為零,通過(guò)按下啟動(dòng)按鍵來(lái)開(kāi)始計(jì)價(jià),數(shù)碼管開(kāi)始顯示起步價(jià)和起步金額;按下模擬開(kāi)關(guān)按鍵來(lái)產(chǎn)生一個(gè)脈沖信號(hào),模擬行駛的里程;數(shù)碼管開(kāi)始顯示所走里程和所應(yīng)付的金額,并逐漸增加;按下停止按鍵,停止計(jì)價(jià),數(shù)碼管顯示所走總里程和用戶(hù)所需付總金額,按下清零按鍵,數(shù)碼管全顯示零
6、,以備下次計(jì)價(jià)。 1.3 方案論證與比較方案一:采用模擬電路和數(shù)字電路設(shè)計(jì)的計(jì)價(jià)器整體電路的規(guī)模較大,用到的器件多,造成故障率高,難調(diào)試。采用數(shù)字電路控制,采用傳感器件,輸出脈沖信號(hào),經(jīng)過(guò)放大整形作為移位寄存器的脈沖,實(shí)現(xiàn)計(jì)價(jià)??紤]到這種電路設(shè)計(jì)過(guò)于復(fù)雜,對(duì)于模式的切換需要用到機(jī)械開(kāi)關(guān),機(jī)械開(kāi)關(guān)時(shí)間久了會(huì)造成接觸不良,功能不易實(shí)現(xiàn);性能不夠穩(wěn)定,電路也不實(shí)用。方案二:采用單片機(jī)進(jìn)行的設(shè)計(jì),相對(duì)來(lái)說(shuō)功能強(qiáng)大,用較少的硬件和適當(dāng)?shù)能浖嗷ヅ浜峡梢院苋菀椎貙?shí)現(xiàn)設(shè)計(jì)要求,且靈活性強(qiáng),可以通過(guò)軟件編程來(lái)完成更多的附加功能。設(shè)計(jì)采用AT89S51單片機(jī)為主控器,以A44E霍爾傳感器測(cè)距(按鍵替代),實(shí)現(xiàn)對(duì)
7、出租車(chē)的基本的計(jì)價(jià)設(shè)計(jì),并采用AT24C02實(shí)現(xiàn)在系統(tǒng)掉電的時(shí)候保存單價(jià)等信息,輸出采用8段數(shù)碼顯示管。利用單片機(jī)豐富的I/O端口,及其控制的靈活性,實(shí)現(xiàn)基本的計(jì)價(jià)功能。系統(tǒng)結(jié)構(gòu)圖如下:89S51單片機(jī)按鍵控制復(fù)位電路時(shí)鐘電路掉電保護(hù)顯示模塊顯示總里程和總金額1.1系統(tǒng)結(jié)構(gòu)圖通過(guò)比較以上兩種方案,我們采用方案二實(shí)現(xiàn)出租車(chē)計(jì)價(jià)器的功能。本電路設(shè)計(jì)的計(jì)價(jià)器能實(shí)現(xiàn)基本的計(jì)價(jià)功能,單片機(jī)計(jì)算總價(jià)的公式為:總價(jià)=起步價(jià)+單價(jià)*(總里程-起步里程)+1。AT89S51作為一個(gè)單片微型計(jì)算系統(tǒng),靈活性高,其強(qiáng)大的控制處理功能和可擴(kuò)展功能設(shè)計(jì)電路提供了很好的選擇。第2章 系統(tǒng)硬件設(shè)計(jì)2.1 硬件設(shè)計(jì)說(shuō)明單片機(jī)
8、是單片微型計(jì)算機(jī)的簡(jiǎn)稱(chēng),單片機(jī)以其卓越的性能,得到廣泛的應(yīng)用,已經(jīng)深入到各個(gè)領(lǐng)域。在這次設(shè)計(jì)中,我們用到P0口和P2口,P0口為8位三態(tài)I/O口,此口為地址總線及數(shù)據(jù)總線分時(shí)復(fù)用;P2口為8位準(zhǔn)雙向口,與地址總線高八位復(fù)用;P0口和P2口都有一定的驅(qū)動(dòng)能力,P0口的驅(qū)動(dòng)能力較強(qiáng)。 設(shè)計(jì)中,為了能夠讓數(shù)碼管更好的正常顯示,我們采用了驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)。在本次硬件設(shè)計(jì)中,我們考慮采用芯片74LS245來(lái)驅(qū)動(dòng)數(shù)碼管顯示。 設(shè)計(jì)電路時(shí),考慮到用里程(霍爾)傳感器價(jià)格昂貴,且不便于試驗(yàn)檢測(cè),在設(shè)計(jì)中采用一個(gè)模擬開(kāi)關(guān)來(lái)代替。模擬開(kāi)關(guān)一端接在P3.4口,另一端接地,通過(guò)來(lái)回高低電平的變化,每按兩次,對(duì)應(yīng)的里程數(shù)
9、加一。通過(guò)在程序中設(shè)置的里程和金額的信息,在加上驅(qū)動(dòng)電路的設(shè)計(jì),就可以在數(shù)碼管上分別顯示總金額和總里程。 在顯示方面,可以用液晶顯示,也可以用數(shù)碼管進(jìn)行顯示。由于在這次設(shè)計(jì)中只需要顯示里程和金額信息,我們采用數(shù)碼管進(jìn)行顯示。這樣既節(jié)約了成本,又可以達(dá)到顯示的目的。同時(shí)為了減少硬件的復(fù)雜度,我們采用了動(dòng)態(tài)顯示方式,選用了共陰極數(shù)碼管。我們還設(shè)計(jì)了控制按鍵,能夠很好的對(duì)出租車(chē)計(jì)價(jià)器控制,如啟動(dòng)/停止按鍵,清零按鍵等。 2.2 AT89S51單片機(jī)簡(jiǎn)介AT89S51具有如下特點(diǎn):40個(gè)引腳,4k Bytes Flash片內(nèi)程序存儲(chǔ)器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸
10、入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門(mén)狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。P0口有二個(gè)功能: 1、外部擴(kuò)展存儲(chǔ)器時(shí),當(dāng)做數(shù)據(jù)/地址總線。 2、不擴(kuò)展時(shí),可做一般的I/O使用,但內(nèi)部無(wú)上拉電阻,作為輸入或輸出時(shí)應(yīng)在外部接上拉電阻。 P1口只做I/O口使用:其內(nèi)部有上拉電阻。 P2口有兩個(gè)功能: 1、擴(kuò)展外部存儲(chǔ)器時(shí),當(dāng)作地址總線使用。 2、做一般I/O口使用,其內(nèi)部有上拉電阻。 P3口有兩個(gè)功能:除了作為I/O使用外(其內(nèi)部有上拉電阻),還有一些特殊功能,由特殊寄存器來(lái)設(shè)置。圖2.1 AT89S51引腳圖設(shè)計(jì)中用到的單片機(jī)各管腳(圖
11、2.1)功能介紹如下:VCC:接+5V電源。 VSS:接地。 時(shí)鐘引腳:XTAL1和XTAL2兩端接晶振和30PF的電容,構(gòu)成時(shí)鐘電路。 它可以使單片機(jī)穩(wěn)定可靠的運(yùn)行。 RST:復(fù)位信號(hào)輸入端,高電平有效。當(dāng)在此引腳加兩個(gè)機(jī)器周期的高電平時(shí),就可以完成復(fù)位操作。 P1.0:接啟動(dòng)/停止按鍵,控制計(jì)價(jià)。 P1.1:接功能鍵。 P1.3:接清零鍵。 P0口接數(shù)碼管段選端,P2口接驅(qū)動(dòng)芯片。 P3.4(T0):接模擬開(kāi)關(guān)按鍵,替代了出租車(chē)計(jì)價(jià)器中的霍爾傳感器。 P3.1、P3.0口接掉電保護(hù)電路。2.3 硬件電路設(shè)計(jì)按下計(jì)價(jià)按鍵時(shí),顯示起步價(jià)和起步里程范圍,這些在程序中設(shè)置;當(dāng)?shù)扔诨虺^(guò)兩公里后,按
12、計(jì)算總價(jià)的公式為:總價(jià)=起步價(jià)+單價(jià)*(總里程-起步里程)+1進(jìn)行計(jì)價(jià)。本設(shè)計(jì)中,起步價(jià)為4元,起步里程為2公里,當(dāng)然這些數(shù)據(jù)可以在程序中改寫(xiě),以滿(mǎn)足不同時(shí)期價(jià)格調(diào)整的需要。下圖是通過(guò)在Keil C中編譯通過(guò),并生成Hex文件,在PROTEUS中仿真通過(guò)的整體硬件原理圖:圖2.2 硬件原理圖2.4 硬件組成硬件組成主要包括:驅(qū)動(dòng)電路、顯示電路、復(fù)位電路、掉電保護(hù)電路、時(shí)鐘電路、按鍵電路。2.4.1 驅(qū)動(dòng)電路74LS245是我們常用的芯片,用來(lái)驅(qū)動(dòng)led或者其他的設(shè)備??偩€驅(qū)動(dòng)器74LS244和74LS245經(jīng)常用作三態(tài)數(shù)據(jù)緩沖器,74LS244為單向三態(tài)數(shù)據(jù)緩沖器,而74LS245為雙向 三態(tài)
13、數(shù)據(jù)緩沖器。本設(shè)計(jì)用74LS245作為驅(qū)動(dòng)芯片,雙向總線發(fā)送器/接收器(3S)。 圖2.3 驅(qū)動(dòng)芯片管腳圖 74LS245主要電器特性的典型值如下: 引出端符號(hào): A A總線端 B B總線端 /G 三態(tài)允許端(低電平有效) DIR 方向控制端功能表:表2.4 功能表利用74LS245來(lái)驅(qū)動(dòng)數(shù)碼管顯示,單片機(jī)的P2.0到P2.5分別接A0到A5管腳,進(jìn)行數(shù)據(jù)的傳送,其中AB/BA接高電平,控制數(shù)據(jù)從A到B進(jìn)行傳送,B0到B5分別接數(shù)碼管的位選端,驅(qū)動(dòng)數(shù)碼管依次顯示。P2.0到P2.5的數(shù)據(jù)通過(guò)A傳送到B中的數(shù)據(jù)送到數(shù)碼管,以達(dá)到顯示數(shù)據(jù)信息的目的。2.4.2 顯示電路多數(shù)的應(yīng)用系統(tǒng),都要配輸入和
14、輸出外設(shè),LED顯示器和LCD顯示器,雖然LCD顯示效果比較好,已經(jīng)成為了一種發(fā)展趨勢(shì),但為了節(jié)約成本,我們選用了LED顯示器(圖2.5)。在顯示方面,我們選用了動(dòng)態(tài)顯示。靜態(tài)顯示雖然亮度較高,接口編程容易,但是每位的段碼線分別與一個(gè)8位的鎖存器輸出相連。占用的I/O口線比較多,在顯示位數(shù)較多的情況下,一般都采用動(dòng)態(tài)顯示方式。利用動(dòng)態(tài)顯示的方法,由于LED顯示器的余輝和人眼的視覺(jué)暫留現(xiàn)象,只要每位顯示的時(shí)間間隔足夠短,就仍能感覺(jué)到所有的數(shù)碼管都在顯示。為了簡(jiǎn)化硬件,通常將所有位的段碼線相應(yīng)段并聯(lián)在一起,由一個(gè)8位I/O口控制,在同一時(shí)刻,只讓一位選通,如此循環(huán),就可以使各位顯示出將要顯示的字符
15、。圖2.5 LED數(shù)碼管集成數(shù)碼管LED數(shù)碼有共陽(yáng)和共陰兩種,把這些LED發(fā)光二極管的正極接到一塊(一般是拼成一個(gè)8字加一個(gè)小數(shù)點(diǎn))而作為一個(gè)引腳,就叫共陽(yáng)的,相反的,就叫共陰的,那么應(yīng)用時(shí)這個(gè)腳就分別的接VCC和GND。再把多個(gè)這樣的8字裝在一起就成了多位的數(shù)碼管了。在本設(shè)計(jì)仿真中使用的是6個(gè)一組的共陰8段數(shù)碼管。找公共共陰和公共共陽(yáng)的方法:首先我們找個(gè)電源|穩(wěn)壓器(3到5伏)和1個(gè)1K(幾百歐的也行)的電阻,VCC串接個(gè)電阻后和GND接在任意2個(gè)腳上,組合有很多,但總有一個(gè)LED會(huì)發(fā)光的,找到一個(gè)就夠了,然后用GND不動(dòng),VCC(串電阻)逐個(gè)碰剩下的腳,如果有多個(gè)LED(一般是8個(gè)),那它
16、就是共陰的了。共陰極數(shù)碼管,陰極接地,當(dāng)某個(gè)發(fā)光二極管的陽(yáng)極為高電平時(shí),發(fā)光二極管點(diǎn)亮,對(duì)應(yīng)的段就顯示。2.4.3 復(fù)位電路單片機(jī)的復(fù)位是由外部的復(fù)位電路實(shí)現(xiàn)的, 復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式。上電自動(dòng)復(fù)位是通過(guò)外部復(fù)位電路的電容充電來(lái)實(shí)現(xiàn)的。除了上電復(fù)位外還需要按鍵手動(dòng)復(fù)位(圖2.6)。按鍵手動(dòng)復(fù)位有電平方式和脈沖方式兩種。其中電平復(fù)位是通過(guò)RST端經(jīng)電阻與電源VCC接通而實(shí)現(xiàn)的。單片機(jī)的復(fù)位速度比外圍I/O接口電路快為能夠保證系統(tǒng)可靠的復(fù)位,在初始化程序中應(yīng)安排一定的復(fù)位延遲時(shí)間。圖2.6復(fù)位電路2.4.4 掉電保護(hù)電路掉電保護(hù)電路中采用了存儲(chǔ)芯片AT24C02。AT24
17、C02是一個(gè)CMOS標(biāo)準(zhǔn)的EEPROM存儲(chǔ)器,是AT24CXX系列(AT24C01/02/04/08/16)成員之一,這些EEPROM存儲(chǔ)器的特點(diǎn)是功耗小、成本低、電源范圍寬,靜態(tài)電源電流約30uA110uA,具有標(biāo)準(zhǔn)的I2C總線接口,是應(yīng)用廣泛的小容量存儲(chǔ)器之一。圖2.7AT24C02 引腳圖上圖是AT24C02的引腳圖,這個(gè)芯片是一個(gè)8腳芯片,內(nèi)部存儲(chǔ)器有256字節(jié)。 引腳功能介紹如下:A0(引腳1):器件地址的A0位,是器件地址的最低位,器件地址排列是A6 A5 A4 A3A2 A1 A0 R/W。A1(引腳2):器件地址的A1位。A2(引腳3):器件地址的A2位。GND(引腳4):地線
18、。 SDA(引腳5):數(shù)據(jù)總線引腳。SCL(引腳6):時(shí)鐘總線引腳。TEST(引腳7):測(cè)試引腳。 Vcc(引腳8):電源線引腳。本設(shè)計(jì)采用掉電存儲(chǔ)電路圖如下:圖2.8 掉電存儲(chǔ)電路2.4.5 時(shí)鐘電路MCS-51單片機(jī)的各功能部件都是以時(shí)鐘控制信號(hào)為基準(zhǔn),內(nèi)部電路在時(shí)鐘信號(hào)的控制下,嚴(yán)格地按時(shí)序執(zhí)行指令進(jìn)行工作,單片機(jī)本身如同一個(gè)復(fù)雜的同步時(shí)序電路,為了保證其各個(gè)部分同步工作,電路要在唯一的時(shí)鐘信號(hào)控制下,嚴(yán)格地按照時(shí)序進(jìn)行工作。其實(shí)只需在時(shí)鐘引腳連接上外圍的定時(shí)控制元件,就可以構(gòu)成一個(gè)穩(wěn)定的自激振蕩器。為更好地保證振蕩器穩(wěn)定可靠地工作,諧振器和電容應(yīng)盡可能安裝得與單片機(jī)芯片靠近。 本設(shè)計(jì)中
19、使用的振蕩電路,由12MHZ晶體振蕩器和兩個(gè)約30PF的電容組成,在XTAL1和XTAL2兩端跨接晶體,電容的大小不會(huì)影響振蕩頻率的高低。在整個(gè)系統(tǒng)中為系統(tǒng)各個(gè)部分提供基準(zhǔn)頻率,以防因其工作頻率不穩(wěn)定而造成相關(guān)設(shè)備的工作頻率不穩(wěn)定,晶振可以在電路中產(chǎn)生振蕩電流,發(fā)出時(shí)鐘信號(hào)。如圖2.9所示。圖2.9 時(shí)鐘電路2.4.6 按鍵電路按鍵控制電路中,單片機(jī)的P1.0管腳接啟動(dòng)/停止按鍵,通過(guò)軟件編程,當(dāng)按下按鍵計(jì)數(shù)器開(kāi)始工作,開(kāi)始計(jì)價(jià);當(dāng)彈起按鍵時(shí),計(jì)數(shù)器停止工作,停止計(jì)價(jià),啟動(dòng)/停止按鍵帶自鎖功能。按下啟動(dòng)按鍵,開(kāi)關(guān)處于導(dǎo)通狀態(tài),這時(shí)給P1.0送低電平信號(hào),這時(shí)TR0=1,計(jì)數(shù)器開(kāi)始工作,調(diào)用計(jì)價(jià)
20、子程序開(kāi)始計(jì)價(jià)。清零按鍵接單片機(jī)的P1.3管腳,按下清零按鍵,P1.3為低電平,調(diào)用清零子程序,用于將顯示數(shù)據(jù)清零,在程序中給各位賦0代碼(0x3f),以達(dá)到清零的目的,方便下次計(jì)價(jià)。另外為功能鍵,控制價(jià)格調(diào)整,這個(gè)按鍵是在沒(méi)有按下啟動(dòng)/停止按鍵時(shí)有作用,計(jì)價(jià)過(guò)程中無(wú)效。圖2.10 按鍵電路第3章 系統(tǒng)軟件設(shè)計(jì)3.1 軟件總體設(shè)計(jì)51單片機(jī)的程序設(shè)計(jì)語(yǔ)言主要有兩種:一是匯編程序設(shè)計(jì);二是C語(yǔ)言編程設(shè)計(jì)。兩種程序設(shè)計(jì)語(yǔ)言都有各自的優(yōu)點(diǎn)。用匯編語(yǔ)言編寫(xiě)和高級(jí)語(yǔ)言(C語(yǔ)言)比較起來(lái)節(jié)省空間,這樣對(duì)于存儲(chǔ)空間僅4KB的芯片來(lái)說(shuō)是極之有利的,51單片機(jī)能更高速的運(yùn)行。C語(yǔ)言編寫(xiě)的程序,雖然不象匯編那樣速
21、度快、但程序簡(jiǎn)單易行、并且需要較小的存儲(chǔ)空間。C語(yǔ)言作為一種編譯型程序設(shè)計(jì)語(yǔ)言,它兼顧了多種高級(jí)語(yǔ)言的特點(diǎn),并具備匯編語(yǔ)言的功能。此外,C語(yǔ)言程序還具有完善的模塊程序結(jié)構(gòu),從而為軟件開(kāi)發(fā)中采用模塊化程序設(shè)計(jì)方法提供了有力的保障。因此,使用C語(yǔ)言進(jìn)行程序設(shè)計(jì)已成為軟件開(kāi)發(fā)的主流。 本設(shè)計(jì)就是采用C語(yǔ)言編寫(xiě)的,由于采用模塊化操作,使得程序在修改,執(zhí)行的時(shí)候顯得方便易行。3.2 系統(tǒng)軟件設(shè)計(jì)本設(shè)計(jì)中,軟件設(shè)計(jì)采用模塊化操作,利用各個(gè)模塊之間的相互聯(lián)系,在設(shè)計(jì)中采用主程序調(diào)用各個(gè)子程序的方法,使程序通俗易懂,我們?cè)O(shè)計(jì)了整體程序流程圖。 在main函數(shù)編寫(xiě)開(kāi)始,要進(jìn)行初始化,包括對(duì)系統(tǒng)初始化和對(duì)存儲(chǔ)器初
22、始化,要對(duì)硬件設(shè)備進(jìn)行初始化,并使硬件處于就緒狀態(tài)。 通過(guò)判斷是否計(jì)費(fèi),調(diào)價(jià),清零等狀態(tài),來(lái)分別調(diào)用不同的子程序,使程序在設(shè)計(jì)之前,就有了很強(qiáng)的邏輯關(guān)系。 這些對(duì)應(yīng)于硬件就是通過(guò)按下各個(gè)控制開(kāi)關(guān),來(lái)分別進(jìn)行不同的動(dòng)作,最后數(shù)碼管根據(jù)輸入的信息,來(lái)顯示不同的數(shù)據(jù)信息,這就達(dá)到了軟件控制硬件,同時(shí)輸入信息控制輸出信息的目的。整個(gè)程序的流程圖如下:圖3.1系統(tǒng)程序流程圖第4章 系統(tǒng)調(diào)試4.1 軟件調(diào)試4.1.1 編程工具C51語(yǔ)言8051單片機(jī)的應(yīng)用程序設(shè)計(jì),使用C51語(yǔ)言進(jìn)行程序設(shè)計(jì)雖然相對(duì)于匯編語(yǔ)言代碼效率有所下降,但可以方便地實(shí)現(xiàn)程序設(shè)計(jì)模塊化,代碼結(jié)構(gòu)清晰、可讀性強(qiáng),易于維護(hù)、更新和移植,適
23、合較大規(guī)模的單片機(jī)程序設(shè)計(jì)。近年來(lái),隨著C51語(yǔ)言的編譯器性能的不斷提高,在絕大多數(shù)應(yīng)用環(huán)境下,C51程序的執(zhí)行效率已經(jīng)非常接近匯編語(yǔ)言,因此,使用C51進(jìn)行單片機(jī)程序設(shè)計(jì)已經(jīng)成為單片機(jī)程序設(shè)計(jì)的主流選擇之一。4.1.2 程序調(diào)試工具KEIL本設(shè)計(jì)的軟件都是在 Keil Vision 4上進(jìn)行編寫(xiě),編譯,調(diào)試以及運(yùn)行操作。4.1.3 單片機(jī)仿真軟件在線調(diào)試PROTEUS1.打開(kāi)Proteus軟件。 2.選擇file菜單下的 open design選項(xiàng),找到所需的元器件,元器件上單擊右鍵選中,再單擊左鍵對(duì)其進(jìn)行命名和賦值,接著在編輯器左邊的一欄中,找出并繪制設(shè)計(jì)所要的各種元器件,按照電路圖連接后
24、并保存。3.將用keil編譯產(chǎn)生的hex文件下載到單片機(jī)中:雙擊51單片機(jī),在對(duì)話框中把保存過(guò)的hex文件打開(kāi),再單擊確定。 4.單擊左下角運(yùn)行按鈕,進(jìn)行軟件仿真調(diào)試,直到出現(xiàn)正確的結(jié)果。 下圖為軟件的仿真窗口圖: 圖4.1軟件仿真窗口圖 參考文獻(xiàn)1 譚浩強(qiáng).C程序設(shè)計(jì)(第二版).清華大學(xué)出版社,2003 2 胡泉、謝芳.C語(yǔ)言程序設(shè)計(jì).華中科技大學(xué)出版社,2009 3 戴 佳.51單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)實(shí)例精講.電子工業(yè)出版社,2007 4 張毅剛.單片機(jī)原理及應(yīng)用.高等教育出版社,2004 5 馬忠梅.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)(第三版).北京航空航天大學(xué)出版社,2004 6 胡漢才.單
25、片機(jī)原理及其接口技術(shù).北京:清華大學(xué)出版社,1995 7 潘永雄.新編單片機(jī)原理與應(yīng)用.西安電子科技大學(xué)出版社,2003 8 肖玲妮、袁增貴.Protel 99 SE印刷電路板設(shè)計(jì)教程.清華大學(xué)出版社,2003 9 戴梅萼 史嘉權(quán).微型計(jì)算機(jī)技術(shù)與應(yīng)用.清華大學(xué)出版社,2003 10 何立民.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).北京:北京航空航天大學(xué)出版社,1990 11 陳明熒.8051單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教材.北京:清華大學(xué)出版社,2004 12 王衛(wèi)平.電子工藝技術(shù)基礎(chǔ).電子工業(yè)出版社,2004 13 單片機(jī)學(xué)習(xí)網(wǎng). 14 電子電路網(wǎng). 15 張靖武.單片機(jī)原理 應(yīng)用與PROTEUS仿真. 電子工業(yè)出版社
26、,2009致謝本論文是在陳雷老師的悉心指導(dǎo)下完成的,陳老師的淵博學(xué)識(shí)和豐富的經(jīng)驗(yàn)給我留下了深刻的印象。作為一個(gè)專(zhuān)科生的畢業(yè)設(shè)計(jì),由于沒(méi)有足夠的經(jīng)驗(yàn),難免有諸多考慮不周的地方,好在有陳老師的指導(dǎo)和同學(xué)們的幫助,我才能按時(shí)完成任務(wù)。感謝我的指導(dǎo)老師陳雷老師,從課題的選擇到設(shè)計(jì)的最終完成,陳老師都給予了我細(xì)心的指導(dǎo)和不懈的支持。他嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我們學(xué)習(xí)中的榜樣,并將繼續(xù)影響我今后的學(xué)習(xí)和工作。在此向陳老師致以誠(chéng)摯的感謝。 畢業(yè)設(shè)計(jì)培養(yǎng)了我獨(dú)立思考問(wèn)題,分析問(wèn)題與解決問(wèn)題的能力,在設(shè)計(jì)中我明白了理論與實(shí)踐有很大的區(qū)別,理論上可以實(shí)現(xiàn)的,但要做具體的實(shí)物,卻要多方面考慮。在陳老師的指導(dǎo)下
27、,加上同組同學(xué)的討論與分析,使所遇到的問(wèn)題逐步得到解決。 我們的大學(xué)即將結(jié)束,今天的成績(jī)與一直以來(lái)關(guān)心、教導(dǎo)我的父母、老師密不可分,在此祝愿他們身體健康、工作順利、萬(wàn)事如意! 我再次感謝學(xué)校和老師給了我這次實(shí)踐鍛煉的機(jī)會(huì),以及很多同學(xué)對(duì)我的幫助,為此我將盡最大的努力,并以最好的心態(tài)來(lái)回報(bào)社會(huì),服務(wù)祖國(guó)。附錄程序源代碼#include /#include #include #define uchar unsigned char #define uint unsigned int int xscode6=0x3f,0x06,0x5b,0x4f,0x66,0x6d;/顯示存儲(chǔ)區(qū) int zxscod
28、e6=0x1f,0x2f,0x37,0x3b,0x3d,0x3e;/共陰顯示片選碼 int codetab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共陰極數(shù)碼 int i,j,flag; uchar sec; int kk=0;/路程標(biāo)志位 int jkk=0;/費(fèi)用 int jflag=0;/費(fèi)用標(biāo)志位 int kflag=0;/路程標(biāo)志位 int zdflag=0;/中斷標(biāo)志位 int kilo=0;/路程 int dj=1;/路程單價(jià)int djflag=0;/路程單價(jià)biaozhiwei; sbit key1=P10; sb
29、it key2=P11; sbit key3=P12; sbit key4=P13; sbit key5=P34; sbit SDA=P30; /IIC引腳sbit SCL=P31; void delay() ; void delay1 (xms)/延時(shí)程序子程序 uint i,j; for(i=xms;i0;i-) for(j=110;j0;j-); void start() /IIC開(kāi)始位 SDA = 1; SCL = 1; delay(); SDA = 0; delay(); void stop() / IIC停止位 SDA = 0; delay(); SCL = 1; delay();
30、 SDA = 1; void respons() /IIC應(yīng)答位 uchar i; SCL=1; delay(); while(SDA=1)&(i250) i+; SCL=0; delay(); void init() SDA=1; delay(); SCL=1; delay(); uchar read_byte() / 從EEPROM讀到MCU uchar i,j; for(i=0;i8;i+) SCL=1; j=1; j|=SDA; SCL=0; return(j); void write_byte(uchar date) / 從MCU寫(xiě)到EEPROM uchar i,temp; temp
31、=date; for(i=0;i8;i+) temp=temp1; SCL=0; delay(); SDA=CY; delay(); SCL=1; delay(); SCL=0; delay(); SDA=1; delay(); void write_data(uchar addr, uchar date) / 在指定地址addr處寫(xiě)入數(shù)據(jù)date start(); write_byte(0xa0); respons(); write_byte(addr); respons(); write_byte(date); respons(); stop(); uchar read_data(uchar addr) / 在指定地址addr讀取數(shù)據(jù) uchar date; start(); write_byte(0xa0); respons(); write_byte(addr); respons(); start(); write_byte(0xa1); respons(); date=read_byte(); stop(); return date; void xianshi()/顯示程序子程序 for(flag=0;flag6;flag+) P0= xscodeflag;/送顯示碼P2= zxscode
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高壓鈉燈內(nèi)管課程設(shè)計(jì)
- 用數(shù)組打課程設(shè)計(jì)怎么
- 鋼混課程設(shè)計(jì)內(nèi)容
- 虛幻5課程設(shè)計(jì)
- 質(zhì)量管理工程課程設(shè)計(jì)
- 移風(fēng)易俗繪畫(huà)課程設(shè)計(jì)
- 案例課程設(shè)計(jì)思路
- 高等數(shù)學(xué)課程設(shè)計(jì)可
- 純堿吸氨塔課程設(shè)計(jì)
- 采礦課程設(shè)計(jì)照片
- 2024年08月云南省農(nóng)村信用社秋季校園招考750名工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 防詐騙安全知識(shí)培訓(xùn)課件
- 心肺復(fù)蘇課件2024
- 2024年股東股權(quán)繼承轉(zhuǎn)讓協(xié)議3篇
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識(shí)
- 江蘇省建筑與裝飾工程計(jì)價(jià)定額(2014)電子表格版
- 鑄造工廠設(shè)備管理(共21頁(yè))
- 農(nóng)產(chǎn)品收購(gòu)臺(tái)賬(登記經(jīng)營(yíng)單位及個(gè)體經(jīng)營(yíng)者投售的農(nóng)產(chǎn)品
- 分紅保險(xiǎn)精算規(guī)定
- Proud-of-you中英文歌詞
- 基因的表達(dá)與調(diào)控.ppt
評(píng)論
0/150
提交評(píng)論