單片機(jī)出租車(chē)計(jì)價(jià)器實(shí)施方案_第1頁(yè)
單片機(jī)出租車(chē)計(jì)價(jià)器實(shí)施方案_第2頁(yè)
單片機(jī)出租車(chē)計(jì)價(jià)器實(shí)施方案_第3頁(yè)
單片機(jī)出租車(chē)計(jì)價(jià)器實(shí)施方案_第4頁(yè)
單片機(jī)出租車(chē)計(jì)價(jià)器實(shí)施方案_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

個(gè)人收集整理 僅供參考學(xué)習(xí)目錄1、任務(wù)及要求22、設(shè)計(jì)方案介紹 2b5E2RGbCAP2.1 基本工作原理2p1EanqFDPw2.2系統(tǒng)整體框圖3DXDiTa9E3d3、硬件電路設(shè)計(jì) 3RTCrpUDGiT3.1單片機(jī)最小系統(tǒng) 35PCzVD7HxA3.2A44E霍爾傳感器檢測(cè)單元 4jLBHrnAILg3.3 存儲(chǔ)單元6xHAQX74J0X3.4 鍵盤(pán)調(diào)整單元7LDAYtRyKfE3.5顯示單元8Zzz6ZB2LtkdvzfvkwMI14、軟件設(shè)計(jì)94.1系統(tǒng)主程序9rqyn14ZNXI4.2中斷程序10EmxvxOtOco4.2.1里程計(jì)數(shù)中斷程序..........................................10SixE2yXPq54.2.2中途等待終端程序...........................................106ewMyirQFL4.3計(jì)算程序10kavU42VRUs4.4y6v3ALoS89顯示程序104.5鍵盤(pán)程序10M2ub6vSTnP5、設(shè)計(jì)總結(jié)120YujCfmUCw6、參考資料12eUts8ZQVRd7、附件13sQsAEJkW5T7.1電路圖13GMsIasNXkA7.2元件清單13TIrRGchYzg7.3源程序清單147EqZcWLZNX0/26個(gè)人收集整理 僅供參考學(xué)習(xí)出租車(chē)計(jì)價(jià)器摘要:本設(shè)計(jì)是以STC89C51單片機(jī)為核心器件,附加A44E霍爾傳感器測(cè)距,實(shí)現(xiàn)對(duì)出租車(chē)地計(jì)價(jià)統(tǒng)計(jì) .采用AT24C02 實(shí)現(xiàn)在系統(tǒng)掉電時(shí)保存單價(jià)和系統(tǒng)時(shí)間等信息,輸出采用7位8段數(shù)碼顯示管.用該電路設(shè)計(jì)地計(jì)價(jià)器不但能實(shí)現(xiàn)基本地計(jì)價(jià),而且還能根據(jù)白天、黑夜、中途等待來(lái)調(diào)節(jié)單價(jià) ,同時(shí)在不計(jì)價(jià)地時(shí)候還能作為時(shí)鐘為司機(jī)提供方便 .lzq7IGf02E關(guān)鍵詞:STC89C51;霍爾傳感器;出租車(chē)計(jì)價(jià)器;數(shù)碼顯示管Abstract:ThisdesignisbasedonSTC89C51microcontrollerasthecoredevice,additionalA44Ehallsensors,realizetothetaxirangingvaluationstatistics.AT24C02realizethepowerlostinthesystempreservedwhenunitpriceandthesystemtime,theinformationsuchastheoutputforseven8digitalXianShiGuan.Withthecircuitdesignofthemetercannotonlyrealizethebasicvaluation,andstillcanaccordingtothedayandthenight,halfwaytoadjusttheunitprice,whilewaitinginthevaluationisalsocanbeusedastheclockforthedriverwitheasezvpgeqJ1hk.Keywords:STC89C51;Hallsensors;Themetertaxi;1/26個(gè)人收集整理 僅供參考學(xué)習(xí)1、任務(wù)及要求1)模擬一個(gè)檢測(cè)車(chē)輪轉(zhuǎn)動(dòng)里程地計(jì)價(jià)系統(tǒng);2)計(jì)程計(jì)價(jià)顯示功能:當(dāng)啟動(dòng)鍵被按下時(shí),系統(tǒng)開(kāi)始計(jì)程,同時(shí)顯示出起價(jià)和每公里單價(jià);在行使過(guò)程中,實(shí)時(shí)顯示已行走地里程數(shù)和當(dāng)前累計(jì)價(jià)格;當(dāng)清除鍵被按下時(shí),計(jì)程計(jì)價(jià)器清零.NrpoJac3v13)顯示采用7位靜態(tài)方式,其中價(jià)格4位,公里數(shù)3位.4)具有時(shí)鐘功能,可以通過(guò)開(kāi)關(guān)切換顯示時(shí)間和計(jì)價(jià).2、設(shè)計(jì)方案介紹2.1 基本工作原理計(jì)數(shù)器系統(tǒng)主要由五部分組成:A44E霍爾傳感器、STC89C51單片機(jī)、獨(dú)立鍵盤(pán)、EEPROMAT24C02A和顯示數(shù)碼管.1nowfTG4KI霍爾傳感器安裝在車(chē)輪上,主要檢測(cè)汽車(chē)行進(jìn)地公里數(shù),并產(chǎn)生一系列相應(yīng)地脈沖輸出,脈沖送到單片機(jī)進(jìn)行處理,單片機(jī)根據(jù)程序設(shè)定通過(guò)計(jì)算脈沖數(shù)換算出行駛公里數(shù),再根據(jù)從EEPROM中讀取地價(jià)格等相關(guān)數(shù)據(jù)進(jìn)行金額地計(jì)算,計(jì)算好地金額、里程和單價(jià)都實(shí)時(shí)地顯示在數(shù)碼管上.獨(dú)立鍵盤(pán)可以調(diào)節(jié)價(jià)格等相關(guān)數(shù)據(jù),按下相應(yīng)地按鈕,產(chǎn)生信號(hào)交由單片機(jī)處理并實(shí)時(shí)顯示出來(lái),調(diào)節(jié)好地?cái)?shù)據(jù)存儲(chǔ)到EEPROM中,掉電后可以使調(diào)好地?cái)?shù)據(jù)不丟失,下次得電后直接從EEPROM讀到單片機(jī),系統(tǒng)結(jié)構(gòu)圖如圖2.1.fjnFLDa5Zo2/26個(gè)人收集整理 僅供參考學(xué)習(xí)2.2系統(tǒng)整體框圖獨(dú)立鍵盤(pán)調(diào)整A44E霍爾STC89C51數(shù)碼管動(dòng)傳感器單片機(jī)態(tài)顯示AT24C02A存儲(chǔ)器圖2.1系統(tǒng)整體框圖3、硬件電路設(shè)計(jì)3.1單片機(jī)最小系統(tǒng)89C51是片內(nèi)有ROM/EPROM地單片機(jī),因此,這種芯片構(gòu)成地最小系統(tǒng)簡(jiǎn)單﹑可靠.用89C51單片機(jī)構(gòu)成最小應(yīng)用系統(tǒng)時(shí),只要將單片機(jī)接上時(shí)鐘電路和復(fù)位電路即可,如圖3.1單片機(jī)最小系統(tǒng)所示.由于集成度地限制,最小應(yīng)用系統(tǒng)只能用作一些小型地控制單元 .其應(yīng)用特點(diǎn):tfnNhnE6e5(1)有可供用戶使用地大量 I/O口線.(2)內(nèi)部存儲(chǔ)器容量有限.(3)應(yīng)用系統(tǒng)開(kāi)發(fā)具有特殊性.3/26個(gè)人收集整理 僅供參考學(xué)習(xí)圖3.1單片機(jī)最小系統(tǒng)STC89C51地復(fù)位端是一個(gè)史密特觸發(fā)輸入,高電平有效.RST端若由低電平上升到高電平并持續(xù)2個(gè)周期,系統(tǒng)將實(shí)現(xiàn)一次復(fù)位操作.在復(fù)位電路中,按一下復(fù)位開(kāi)關(guān)就使在RST端出現(xiàn)一段時(shí)間地高電平,外接11.0592M晶振和兩個(gè)30pF電容組成系統(tǒng)地內(nèi)部時(shí)鐘電路.HbmVN777sL3.2 A44E霍爾傳感器檢測(cè)單元A44E屬于開(kāi)關(guān)型地霍爾器件,其工作電壓范圍比較寬(4.5~18V),其輸出地信號(hào)符合TTL電平標(biāo)準(zhǔn),可以直接接到單片機(jī)地IO端口上,而且其最高檢測(cè)頻率可達(dá)到1MHZ.V7l4jRB8HsA44E集成霍耳開(kāi)關(guān)由穩(wěn)壓器A、霍耳電勢(shì)發(fā)生器(即硅霍耳片)B、差分放大器C、施密特觸發(fā)器 D和OC門(mén)輸出E五個(gè)基本部分組成.83lcPA59W9在輸入端輸入電壓Vcc,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍爾電勢(shì)發(fā)生器地兩端,根據(jù)霍爾效應(yīng)原理,當(dāng)霍爾片處在磁場(chǎng)中時(shí),在垂直于磁場(chǎng)地4/26個(gè)人收集整理 僅供參考學(xué)習(xí)方向通以電流,則與這二者相垂直地方向上將會(huì)產(chǎn)生霍爾電勢(shì)差VH輸出,該VH信號(hào)經(jīng)放大器放大后送至施密特觸發(fā)器整形,使其成為方波輸送到OC門(mén)輸出.當(dāng)施加地磁場(chǎng)達(dá)到工作點(diǎn)(即Bop)時(shí),觸發(fā)器輸出高電壓(相對(duì)于地電位),使三極管導(dǎo)通,此時(shí)OC門(mén)輸出端輸出低電壓,三極管截止,使OC門(mén)輸出高電壓,這種狀態(tài)為關(guān).這樣兩次電壓變換,使霍爾開(kāi)關(guān)完成了一次開(kāi)關(guān)動(dòng)作.A44E霍爾傳感器原理如圖3.2所示.mZkklkzaaP圖3.2A44E霍爾傳感器原理里程計(jì)算是通過(guò)安裝在車(chē)輪上地霍爾傳感器檢測(cè)到地脈沖信號(hào),送到單片機(jī)產(chǎn)生中斷,單片機(jī)再根據(jù)程序設(shè)定,計(jì)算出里程 .其原理如圖3.3所示.AVktR43bpw圖3.3A44E傳感器測(cè)距示意圖本系統(tǒng)選擇了將A44E地脈沖輸出口接到P3.3口外部中斷1作為信號(hào)地輸入端(這樣可以減少程序設(shè)計(jì)地麻煩),車(chē)輪每轉(zhuǎn)一圈(設(shè)車(chē)輪地周長(zhǎng)是1米),霍爾開(kāi)關(guān)就檢測(cè)并輸出信號(hào),引起單片機(jī)地中斷,對(duì)脈沖計(jì)數(shù),當(dāng)計(jì)數(shù)達(dá)到1000次時(shí),即1公里,單片機(jī)就控制將金額自動(dòng)增加,如圖3.4所示.ORjBnOwcEd5/26個(gè)人收集整理 僅供參考學(xué)習(xí)圖3.4 霍爾元件接線圖3.3 存儲(chǔ)單元存儲(chǔ)單元地作用是在電源斷開(kāi)地時(shí)候,存儲(chǔ)當(dāng)前設(shè)定地單價(jià)信息.AT24C02A是Ateml公司地1KB地電可擦除存儲(chǔ)芯片,采用兩線串行地總線和單片機(jī)通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10uA(5.5V),芯片內(nèi)地資料可以在斷電地情況下保存40年以上,而且采用8腳地DIP封裝,使用方便.2MiJTy0dTTAT24C02芯片引腳配置如圖3.5所示.圖3.5AT24C02A引腳圖具體電路圖3.6所示:6/26個(gè)人收集整理 僅供參考學(xué)習(xí)圖3.6 存儲(chǔ)單元電路原理圖圖中R2、R3是上拉電阻,其作用是減少AT24C02A地靜態(tài)功耗.由于AT24C02A地?cái)?shù)據(jù)線和地址線是復(fù)用地,采用串口地方式傳送數(shù)據(jù),所以只用兩根線SCL(時(shí)鐘脈沖)和SDA(數(shù)據(jù)/地址)與單片機(jī)P2.3和P2.2口連接,進(jìn)行傳送數(shù)據(jù).gIiSpiue7A每當(dāng)設(shè)定一次單價(jià),系統(tǒng)就自動(dòng)調(diào)用存儲(chǔ)程序,將單價(jià)信息保存在芯片內(nèi);當(dāng)系統(tǒng)重新上電地時(shí)候,自動(dòng)調(diào)用讀存儲(chǔ)器程序,將存儲(chǔ)器內(nèi)地單價(jià)等信息,讀到緩存單元中,供主程序使用.uEh0U1Yfmh3.4 鍵盤(pán)調(diào)整單元當(dāng)單價(jià)等信息需要進(jìn)行修改時(shí),就要用到鍵盤(pán)進(jìn)行修改.由于調(diào)節(jié)信息不多,故采用4個(gè)獨(dú)立鍵盤(pán)即可,分別實(shí)現(xiàn)清零、切換、增大、減小和功能等作用.電路原理如圖3.7所示.IAg9qLsgBXS1:接P1.0口,對(duì)上一次地計(jì)費(fèi)進(jìn)行清零,為下次載客準(zhǔn)備S2:接P1.1口,實(shí)現(xiàn)白天和夜晚單價(jià)地切換;當(dāng)功能鍵 S4按下時(shí),S2可對(duì)數(shù)據(jù)進(jìn)行增大.S3:接P1.2口,當(dāng)功能鍵S4按下時(shí),S3可對(duì)數(shù)據(jù)進(jìn)行減小.S4:接P1.3口,按1次,進(jìn)入調(diào)整白天單價(jià);按 2次,進(jìn)入調(diào)整夜晚單價(jià);按3次,進(jìn)入調(diào)整等待單價(jià);按4次,進(jìn)入調(diào)整起步價(jià);按5次,返回.WwghWvVhPE7/26個(gè)人收集整理 僅供參考學(xué)習(xí)圖3.7 鍵盤(pán)單元電路3.5 顯示單元顯示單元由7個(gè)8段共陽(yáng)數(shù)碼管組成,采用動(dòng)態(tài)掃描進(jìn)行顯示.前三個(gè)數(shù)碼管分別接P3.0、P3.1和P3.2,用于顯示總金額;中間兩個(gè)分別接P3.4和P3.5,用于顯示里程;后邊兩個(gè)分別接P3.6和P3.7,用于顯示單價(jià).電路如圖3.8所示.asfpsfpi4k圖3.8 顯示單元電路8/26個(gè)人收集整理 僅供參考學(xué)習(xí)4、軟件設(shè)計(jì)4.1系統(tǒng)主程序在主程序模塊中,需要完成對(duì)各參量和接口地初始化、出租車(chē)起價(jià)和單價(jià)地初始化以及中斷、計(jì)算、循環(huán)等工作.另外,在主程序模塊中還需要設(shè)置啟動(dòng)/清除標(biāo)志寄存器、里程寄存器和價(jià)格寄存器,并對(duì)它們進(jìn)行初始化.然后,主程序?qū)⒏鶕?jù)各標(biāo)志寄存器地內(nèi)容,分別完成啟動(dòng)、清除、計(jì)程和計(jì)價(jià)等不同地操作.ooeyYZTjj1當(dāng)汽車(chē)運(yùn)行起來(lái)時(shí),就啟動(dòng)計(jì)價(jià),根據(jù)里程寄存器中地內(nèi)容計(jì)算和判斷行駛里程是否已超過(guò)起步價(jià)公里數(shù) .若已超過(guò),則根據(jù)里程值、每公里地單價(jià)數(shù)和起步價(jià)數(shù)來(lái)計(jì)算出當(dāng)前地總金額, 并將結(jié)果存于總金額寄存器中;中途等待時(shí),無(wú)脈沖輸入,不產(chǎn)生中斷,當(dāng)時(shí)間超過(guò)等待設(shè)定值時(shí),開(kāi)始進(jìn)行計(jì)時(shí),并把等待價(jià)格加到總金額里,然后將總金額、里程和單價(jià)送數(shù)碼管顯示出來(lái) .程序流程如圖4.1所示.BkeGuInkxI開(kāi)始里程>3初始化YNN總金額=起步價(jià)切換總金額=起步價(jià)Y總金額+=(里程總金額+=等待金額計(jì)算夜間單價(jià)時(shí)間*等待單價(jià)-3)*單價(jià)顯示總金額+=等待時(shí)間*等待單價(jià)N清零返回Y結(jié)束PgdO0sRlMo圖4.1主程序流程圖 圖4.2計(jì)算程序流程圖9/26個(gè)人收集整理 僅供參考學(xué)習(xí)4.2中斷程序4.2.1里程記數(shù)中斷程序每當(dāng)霍爾傳感器輸出一個(gè)低電平信號(hào)就使單片機(jī)中斷一次,當(dāng)里程計(jì)數(shù)器對(duì)里程脈沖計(jì)滿1000次時(shí),進(jìn)入里程計(jì)數(shù)中斷服務(wù)程序中,里程變量加一.主函數(shù)中總金額也相應(yīng)地變化.3cdXwckm154.2.2 中途等待中斷程序在中途等待中斷程序中,每1ms產(chǎn)生一次中斷,將當(dāng)前里程值送入某個(gè)緩存變量,每5分鐘將緩存變量中地值和當(dāng)前里程值比較,當(dāng)汽車(chē)停止,霍爾傳感器5分鐘沒(méi)有輸出信號(hào),當(dāng)前里程值和緩存變量?jī)?nèi)地值相同,則進(jìn)入等待計(jì)時(shí),每5分鐘記一次價(jià)格.h8c52WOngM4.3 計(jì)算程序計(jì)算程序根據(jù)里程數(shù)分別進(jìn)入不同地計(jì)算公式.如果里程大于3公里,則執(zhí)行公式:總金額=起步價(jià)+(里程-3)*單價(jià)+等待時(shí)間*等待單價(jià);否則,執(zhí)行公式:總金額=起步價(jià)+等待時(shí)間*等待單價(jià).程序流程圖如圖4.2所示.v4bdyGious4.4 顯示程序顯示程序利用定時(shí)器每1ms產(chǎn)生一次中斷,相應(yīng)變量置位,點(diǎn)亮一個(gè)數(shù)碼管,顯示一位數(shù)據(jù),利用主函數(shù)內(nèi)地循環(huán),實(shí)現(xiàn)動(dòng)態(tài)掃描顯示,同時(shí)根據(jù)數(shù)碼管余輝和人眼暫留現(xiàn)象,即可實(shí)現(xiàn)顯示.J0bm4qMpJ94.5 鍵盤(pán)程序鍵盤(pán)采用查詢地方式,放在主程序中,當(dāng)沒(méi)有按鍵按下地時(shí)候,單片機(jī)循環(huán)主程序,一旦右按鍵按下,便轉(zhuǎn)向相應(yīng)地子程序處理,處理結(jié)束再返回.流程圖如圖4.3.XVauA9grYP10/26個(gè)人收集整理 僅供參考學(xué)習(xí)key3=0?YNkey3num為真返回YNNkey3num=1?YNkey1=0?key3num=2?YNY白天單價(jià)+1存儲(chǔ)白天單價(jià)key3num=3?Ykey2=0?key1=0?存儲(chǔ)夜晚單價(jià)NYYN白天單價(jià)-1夜晚單價(jià)+1key1=0?Y

NNkey3num=4?Ykey3num=5?存儲(chǔ)等待單價(jià)N Ykey2=0? 等待單價(jià)+1

key1=0?

key3num=0YN夜晚單價(jià)-1key2=0?Y等待單價(jià)-1顯示key3=0?NYkey3num++

Y N起步價(jià)+1 存儲(chǔ)起步價(jià)Nkey2=0?Y N起步價(jià)+1NbR9C6TJscw圖4.3鍵盤(pán)程序流程圖11/26.pN9LBDdtrd個(gè)人收集整理 僅供參考學(xué)習(xí)5、設(shè)計(jì)總結(jié)經(jīng)過(guò)這些天有關(guān)于出租車(chē)計(jì)價(jià)器地課程設(shè)計(jì), 使我對(duì)單片機(jī)地應(yīng)用有了更深地了解.在課程設(shè)計(jì)地過(guò)程中,還是碰到了許多地問(wèn)題 .比如,對(duì)于數(shù)碼管動(dòng)態(tài)掃描顯示和鍵盤(pán)地延時(shí)防抖地綜合編程不能較好地解決;對(duì)于代碼地前后順序及調(diào)用掌握得還不夠好; 對(duì)于一些相關(guān)地應(yīng)用軟件沒(méi)能熟練掌握 .通過(guò)這幾天晚上地苦想和反復(fù)調(diào)試,以及參考網(wǎng)上地程序,最終還是把問(wèn)題解決了通過(guò)這次課程設(shè)計(jì),我最大地收獲就是自己地動(dòng)手能力和獨(dú)立解決問(wèn)題地能力得到了很大地提高,也充分體會(huì)到了自己設(shè)計(jì)東西地樂(lè)趣、學(xué)會(huì)查閱資料和對(duì)別人地東西融會(huì)變通地重要性,也明白了很多知識(shí)光靠趴在書(shū)本上學(xué)是學(xué)不到其中地精髓地,必須親自去試著實(shí)踐,親自去經(jīng)歷才能對(duì)它們真正地掌握,凡事都要自己去動(dòng)下手,去實(shí)踐一下,遇到困難,永遠(yuǎn)不要沮喪氣餒.在動(dòng)手地過(guò)程中,不僅能增強(qiáng)實(shí)踐能力,而且在理論上可以有更深地認(rèn)識(shí);這次設(shè)計(jì)給了我極大地鼓舞和信心,相信在以后地學(xué)習(xí)中可以通過(guò)不斷地摸索和實(shí)踐來(lái)提高其他方面地知識(shí).DJ8T7nHuGT6、參考資料(1)李光飛 單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo) [M] 北京北京航空航天大學(xué)出版社;2)馬淑華,王鳳文,張美金編著.單片機(jī)原理與接口技術(shù)(第二版).北京:北京郵電大學(xué)出版社,2007;QF81D7bvUA3)譚浩強(qiáng)著.C程序設(shè)計(jì)(第三版).北京:清華大學(xué)出版社,2005;4)靳達(dá)編單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航[M]北京人民郵電出版社;12/26個(gè)人收集整理 僅供參考學(xué)習(xí)7、附件7.1電路圖VCCQ1Q2Q3Q4Q5Q6Q7PNPPNPPNPPNPPNPPNPPNPR4R5R6R7R8R9R101K1K1K1K1K1K1KP3.0DS19P3.1DS29P3.2DS39P3.4DS49P3.5DS59P3.6DS69P3.7DS791aDPY1aDPY1aDPY1aDPY1aDPY1aDPY1aDPY22ba2ba2baba2ba2ba2ba3cfb3cfb3cfb3cfgb3cfb3cfb3cfb4dg4dg4dg4d4dg4g4dgd5eec5eec5eec5eec5eec5eec5eec6fd6fd6fd6fd6fd6d6fddpf7gdp7gdp7gdp7g7gdp7dp7gdp8g8dp8dp8dpdp8dp8dp8dpDPY_7-SEG_DPDPY_7-SEG_DPDPY_7-SEG_DPDPY_7-SEG_DPDPY_7-SEG_DPDPY_7-SEG_DPDPY_7-SEG_DPVCCHRVCCS1U1P1.0P1.01403P1.0Vcc2SW-PBP1.1239P3.3P1.1P0.01S2P1.2338P1.2P0.1P1.1P1.3437A44E+C1P1.3P0.2SW-PB536S5P1.4P0.3S310uF/16V635VCCP1.5P0.4P1.2SW-SPST734P1.6P0.5SW-PB833P1.7P0.6S4932RSTP0.7P1.3P3.01031P3.0/RXDEASW-PBP3.11130R1P3.1/TXDALE/PROGR2R3U2P3.2122910KP3.313P3.2/INT0PSEN285.1k5.1k5VCCNC1P3.414P3.3/INT1P2.727P3.4/T0P2.6P3.5152662P3.5/T1P2.5WPNCP3.61625P3.6/WRP2.4P3.7172473P3.7/RDP2.3SCLNC1823XTAL2P2.2192284XTAL1P2.1SDAGNDC22021VssP2.030pFAT24C02AY1STC89C5111.0592MHzC330pF4B7a9QFw9h7.2元件清單元件名稱封裝數(shù)量編號(hào)(值)電阻AXIAL0.31R1(10K)電阻AXIAL0.32R2,R3(5.1K)電阻AXIAL0.37R4~R10(1K)電容RAD0.12C2,C3(30Pf)電解電容RB.2/.41C1(10uF/16V)三極管TO92A7Q1~Q7(PNP)STC89C51單片機(jī)DIP401U1AT24C02ADIP81U2開(kāi)關(guān)SW-PB5S1~S513/26個(gè)人收集整理 僅供參考學(xué)習(xí)晶振XTAL11Y1(11.0592MHz)LED數(shù)碼管7DS1~DS7A44E霍爾元件1J17.3源程序清單#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#definedelayNOP();{_nop_();_nop_();_nop_();_nop_();_nop_();}; ix6iFA8xoXucharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};wt6qbkCyDEsbitexter=P3^3; //外部中斷sbitkey0=P1^0; //清零sbitkey1=P1^1; //切換/+sbitkey2=P1^2; //-sbitkey3=P1^3; //功能鍵sbitp30=P3^0; //數(shù)碼管各位控制sbitp31=P3^1;sbitp32=P3^2;sbitp34=P3^4;sbitp35=P3^5;sbitp36=P3^6;sbitp37=P3^7;sbitSDA=P2^2; //IIC引腳sbitSCL=P2^3;uintinter,aa,bb,temp,temp1;uintzongjine,licheng,dengdai;uintkey3num,qiehuantemp,delaytemp;uchardanjia1,danjia2,danjia3,danjia,qibu;voiddelay(uintx)//延時(shí)時(shí)基為1msKp5zH46zRk{inti,j;for(i=x;i>0;i--)for(j=340;j>0;j--);}voidstart()//IIC開(kāi)始位{SDA=1;SCL=1;delayNOP();14/26個(gè)人收集整理 僅供參考學(xué)習(xí)SDA=0;delayNOP();SCL=0;}voidstop()//IIC停止位{SDA=0;delayNOP();SCL=1;delayNOP();SDA=1;}voidrespons()//IIC應(yīng)答位{uchari;SCL=1;delayNOP();while((SDA==1)&&(i<250))i++;SCL=0;delayNOP();}ucharread_byte()//從EEPROM讀到MCUYl4HdOAA61{uchari,j;for(i=0;i<8;i++){SCL=1;j<<=1;j|=SDA;SCL=0;}return(j);}voidwrite_byte(uchardate)//ch4PJx4BlI從MCU寫(xiě)到EEPROM{uchari,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;15/26個(gè)人收集整理 僅供參考學(xué)習(xí)SCL=0;delayNOP();SDA=CY;delayNOP();SCL=1;delayNOP();}SCL=0;delayNOP();SDA=1;delayNOP();}void write_data(uchar addr,uchar date) // 在指定地址 addr 處寫(xiě)入數(shù)據(jù)dateqd3YfhxCzo{start();write_byte(0xa0);respons();write_byte(addr);respons();write_byte(date);respons();stop();}ucharread_data(ucharaddr) // 在指定地址 addr讀取數(shù)據(jù)E836L11DO5{uchardate;start();write_byte(0xa0);respons();write_byte(addr);respons();start();write_byte(0xa1);respons();date=read_byte();stop();returndate;}void display(uint zongjine0,uint licheng0,uint danjia0) //數(shù)碼管顯示S42ehLvE3M16/26個(gè)人收集整理 僅供參考學(xué)習(xí){uintjbai,jshi,jge,lshi,lge,dshi,dge;uintnumwei,numshu;數(shù)碼管位置分配jbai=zongjine0/100;jshi=zongjine0%100/10;jge=zongjine0%100%10;lshi=licheng0/10;lge=licheng0%10;dshi=danjia0/10;dge=danjia0%10;數(shù)碼管動(dòng)態(tài)顯示if(aa){aa=0;numshu++;if(numshu==7)numshu=0;P3=0xff;switch(numwei){case0:p30=0;P0=table[jbai];break;case1:p31=0;P0=table[jshi]&0x7f;break;case2:p32=0;P0=table[jge];break;case3:p34=0;P0=table[lshi];break;case4:p35=0;P0=table[lge];break;case5:p36=0;P0=table[dshi]&0x7f;break;case6:p37=0;P0=table[dge];break;}numwei++;if(numwei==7)numwei=0;}}voidkeyscan() //鍵盤(pán)掃描{if(key3==0) //功能鍵調(diào)節(jié) 501nNvZFis{delay(5);if(key3==0){17/26個(gè)人收集整理 僅供參考學(xué)習(xí)key3num=1;while(!key3);delay(5);while(!key3);while(key3num){if(key3num==1) //調(diào)白天單價(jià){if(key1==0){delay(5);if(key1==0){danjia1++;if(danjia1==100)danjia1=0;while(!key1);delay(5);while(!key1);}}if(key2==0){delay(5);if(key2==0){danjia1--;if(danjia1==-1)danjia1=99;while(!key2);delay(5);while(!key2);}}display(1,0,danjia1);}if(key3num==2)調(diào)夜晚單價(jià){write_data(1,danjia1);if(key1==0){delay(5);18/26個(gè)人收集整理 僅供參考學(xué)習(xí)if(key1==0){danjia2++;if(danjia2==100)danjia2=0;while(!key1);delay(5);while(!key1);}}if(key2==0){delay(5);if(key2==0){danjia2--;if(danjia2==-1)danjia2=99;while(!key2);delay(5);while(!key2);}}display(2,0,danjia2);}if(key3num==3)調(diào)等待單價(jià){write_data(2,danjia2);if(key1==0){delay(5);if(key1==0){danjia3++;if(danjia3==100)danjia3=0;while(!key1);delay(5);while(!key1);}19/26個(gè)人收集整理 僅供參考學(xué)習(xí)}if(key2==0){delay(5);if(key2==0){danjia3--;if(danjia3==-1)danjia3=99;while(!key2);delay(5);while(!key2);}}display(3,0,danjia3);}if(key3num==4) //調(diào)起步價(jià){write_data(3,danjia3);if(key1==0){delay(5);if(key1==0){qibu++;if(qibu==100)qibu=0;while(!key1);delay(5);while(!key1);}}if(key2==0){delay(5);if(key2==0){qibu--;if(qibu==-1)qibu=99;while(!key2);delay(5);while(!key2);20/26個(gè)人收集整理 僅供參考學(xué)習(xí)}}display(4,0,qibu);}if(key3num==5) //退出功能鍵{write_data(4,qibu);key3num=0;}if(key3==0){delay(5);if(key3==0){key3num++;while(!key3);delay(5);while(!key3);}}}}}}voidinit(){SDA=1;SCL=1;zongjine=0;licheng=0;dengdai=0;danjia1=read_data(1);danjia2=read_data(2);danjia3=read_data(3);qibu=read_data(4);aa=0; //數(shù)碼管動(dòng)態(tài)掃描地定時(shí)器時(shí)基個(gè)數(shù)bb=0; //判斷是否等待地時(shí)基個(gè)數(shù)inter=0;EA=1; //開(kāi)總中斷EX1=1; //開(kāi)外部中斷 1IT1=1; //觸發(fā)方式下降沿TMOD=0x01;21/26個(gè)人收集整理 僅供參考學(xué)習(xí)TH0=(65536-1000)/256;TL0=(65536-1000)%256;ET0=1; //開(kāi)定時(shí)器 T0中斷TR0=1; //開(kāi)定時(shí)器 T0P3=0x08;P0=table[0];}voidjisuan(){if(licheng>3)zongjine=qibu+(licheng-3)*danjia+dengdai*danjia3; //金額計(jì)算 jW1viftGw9elsezongjine=qibu+dengdai*danjia3; //起步公里內(nèi)金額計(jì)算 xS0DOYWHLP}voidqiehuan(){if(key1==0) //白天夜晚切換{delay(5); //鍵盤(pán)防抖if(key1==0)qiehuantemp=!qiehuantemp;while(!key1);delay(5);while(!key1);}if(qiehuantemp==0)danjia=danjia2;if(qiehuantemp==1)danjia=danjia1;}voidmain(){init();qiehuantemp=1;key3num=0;while(1){qiehuan(); //切換白天夜晚單價(jià)jisuan(); //計(jì)算總金額display(zongjine,licheng,danjia);keyscan();22/26個(gè)人收集整理 僅供參考學(xué)習(xí)if(key0==0) //清零鍵init();}}voidinter1()interrupt2 //脈沖中斷{delay(5); //if(exter==0) //{ //IT1=1;inter++;if(inter==5){inter=0;licheng++;}} //while(!exter); //delay(5); //while(!exter); //}voidtimer0()interrupt1{TH0=(65536-1000)/256;TL0=(65536-1000)%256;aa+

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論