版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 河南理工大學(xué)</b></p><p> 《單片機(jī)應(yīng)用與仿真訓(xùn)練》設(shè)計(jì)報(bào)告</p><p><b> 出租車(chē)計(jì)價(jià)器</b></p><p> 姓 名: </p><p> 學(xué) 號(hào):
2、 </p><p> 專業(yè)班級(jí): 電氣09 </p><p> 指導(dǎo)老師: </p><p> 所在學(xué)院: 電氣工程與自動(dòng)化學(xué)院 </p><p> 2012年5月10日</p><p&
3、gt;<b> 摘要</b></p><p> 本設(shè)計(jì)是以AT89S52單片機(jī)為核心,以A44E霍爾傳感器為信號(hào)采集傳感器,采用AT24C02作為存儲(chǔ)芯片,加上各種外圍電路構(gòu)成的出租車(chē)計(jì)價(jià)器。本設(shè)計(jì)采用霍爾傳感器對(duì)輪胎轉(zhuǎn)數(shù)進(jìn)行計(jì)數(shù),并將采集到的脈沖信號(hào)傳輸給單片機(jī),單片機(jī)通過(guò)內(nèi)部定時(shí)器對(duì)一定時(shí)間內(nèi)的轉(zhuǎn)動(dòng)圈數(shù)進(jìn)行一次統(tǒng)計(jì),經(jīng)計(jì)算實(shí)現(xiàn)對(duì)出租車(chē)速度、里程、應(yīng)付金額等狀態(tài)信息的測(cè)量。本設(shè)計(jì)采用了
4、寄存器芯片AT24C02,實(shí)現(xiàn)系統(tǒng)對(duì)單價(jià)、里程、等待時(shí)間等信息的存儲(chǔ),采用時(shí)鐘芯片DS1302在正常及掉電的時(shí)候來(lái)顯示時(shí)間和在系統(tǒng)需要時(shí)進(jìn)行計(jì)時(shí)。本設(shè)計(jì)設(shè)置5個(gè)按鍵為輸入控制方式,分別控制查詢、功能、單雙成切換、暫停(結(jié)賬)以及清零,輸出顯示采用了兩個(gè)4段數(shù)碼管實(shí)現(xiàn)對(duì)時(shí)間、金額、里程的顯示,設(shè)置了四個(gè)LED燈,分別為空車(chē)指示燈、等待查詢指示燈、單雙程指示燈。</p><p> 關(guān)鍵詞單片機(jī)霍爾傳感器
5、出租車(chē)計(jì)價(jià)器時(shí)鐘</p><p><b> Abstract</b></p><p> This design use AT89S52 SCM as the core, with U18 Hall sensors for signal acquisition sensor, tire rotation to count, SCM calculation for
6、 a taxi speed, processing realizes such status information measurement mileage. This design used a register AT24C02 chip, and realize the system in unit price, mileage, waiting time information storage, the clock DS1302
7、chip in normal and power lost time to display the time and in the system needs to be carried out when the timer. The design for the input contr</p><p> KeywordsAT89S52 SCM Hall sensorsTaximeterClock<
8、/p><p><b> 目錄</b></p><p><b> 摘要1</b></p><p><b> 目錄2</b></p><p><b> 1概述3</b></p><p> 1.1 設(shè)計(jì)目的、意義3<
9、/p><p> 1.2 AT89S52單片機(jī)功能簡(jiǎn)介3</p><p> 2系統(tǒng)總體方案設(shè)計(jì)4</p><p> 2.1 設(shè)計(jì)要求4</p><p> 2.1.1 基本要求4</p><p> 2.1.2 發(fā)揮部分5</p><p> 2.2 設(shè)計(jì)的主要功能5</p&
10、gt;<p> 2.3 方案的選取5</p><p> 2.3.1 硬件設(shè)計(jì)方案5</p><p> 2.3.2 軟件設(shè)計(jì)方案6</p><p><b> 3硬件設(shè)計(jì)6</b></p><p> 3.1 AT89S52單片機(jī)及最小系統(tǒng)6</p><p> 3.
11、1.1 AT89S52單片機(jī)6</p><p> 3.1.2 單片機(jī)最小系統(tǒng)8</p><p> 3.2 測(cè)距單元8</p><p> 3.3 按鍵單元10</p><p> 3.4 時(shí)鐘單元11</p><p> 3.5 顯示單元11</p><p> 3.6 儲(chǔ)存單元
12、14</p><p><b> 4軟件設(shè)計(jì)15</b></p><p> 4.1 系統(tǒng)主程序15</p><p> 4.2 數(shù)據(jù)處理子程序15</p><p> 4.3 等待時(shí)間計(jì)時(shí)子程序16</p><p> 4.4 鍵盤(pán)掃描子程序17</p><p&
13、gt; 5Proteus軟件仿真18</p><p> 6課程設(shè)計(jì)體會(huì)19</p><p><b> 參考文獻(xiàn)20</b></p><p> 附1:源程序代碼20</p><p> 附2:系統(tǒng)原理圖0</p><p><b> 概述</b></
14、p><p> 1.1 設(shè)計(jì)目的、意義</p><p> 隨著經(jīng)濟(jì)的不斷發(fā)展,人們的收入得到很大提高。人們便越來(lái)越追求生活的舒適與方便,而出行方式便是關(guān)切到人們生活質(zhì)量的一個(gè)重要方面。在物價(jià)上漲的今天,相對(duì)于自己購(gòu)買(mǎi)私家車(chē),更多的人傾向于乘坐出租車(chē)出行。雖然現(xiàn)在有部分小城市尚未普及出租車(chē),但隨著城市建設(shè)日益加快,象征著城市面貌的出租車(chē)行業(yè)也將加速發(fā)展。汽車(chē)計(jì)價(jià)器作為乘客與司機(jī)雙方的交易準(zhǔn)則,
15、它是出租車(chē)行業(yè)發(fā)展的重要標(biāo)志,是出租車(chē)中最重要的工具。它關(guān)系著交易雙方的利益。具有良好性能的計(jì)價(jià)器無(wú)論是對(duì)廣大出租車(chē)司機(jī)朋友還是乘客來(lái)說(shuō)都是很必要的。因此,汽車(chē)計(jì)價(jià)器的研究也是十分有一個(gè)應(yīng)用價(jià)值的。</p><p> 本次設(shè)計(jì)的目的在于現(xiàn)在各大中城市出租車(chē)行業(yè)都已普及自動(dòng)計(jì)價(jià)器,所以計(jì)價(jià)器技術(shù)的發(fā)展已成定局。采用模擬電路和數(shù)字電路設(shè)計(jì)的計(jì)價(jià)器整體電路的規(guī)模較大,用到的器件多,造成故障率高,難調(diào)試。而采用單片機(jī)進(jìn)
16、行的設(shè)計(jì),相對(duì)來(lái)說(shuō)功能強(qiáng)大,是深化單片機(jī)應(yīng)用的良好途徑,用較少的硬件和適當(dāng)?shù)能浖嗷ヅ浜峡梢院苋菀椎貙?shí)現(xiàn)設(shè)計(jì)要求,且靈活性強(qiáng),可以通過(guò)軟件編程來(lái)完成更多的附加功能。</p><p> 1.2 AT89S52單片機(jī)功能簡(jiǎn)介</p><p> 計(jì)算機(jī)系統(tǒng)已明顯地朝巨型化、單片化、網(wǎng)絡(luò)化三個(gè)方向發(fā)展。巨型化發(fā)展的目的在于不斷提高計(jì)算機(jī)的運(yùn)算速度和處理能力,以解決復(fù)雜系統(tǒng)計(jì)算和高速數(shù)據(jù)處理,比
17、如系統(tǒng)仿真和模擬、實(shí)時(shí)運(yùn)算和處理。單片化是把計(jì)算機(jī)系統(tǒng)盡可能集成在一塊半導(dǎo)體芯片上,其目的在于計(jì)算機(jī)微型化和提高系統(tǒng)的可靠性,這種單片計(jì)算簡(jiǎn)稱單片機(jī)。單片機(jī)的內(nèi)部硬件結(jié)構(gòu)和指令系統(tǒng)主要是針對(duì)自動(dòng)控制應(yīng)用而設(shè)計(jì)的,所以單片機(jī)又稱微控制器MCU(Micro Controller Unit)。用它可以很容易地將計(jì)算機(jī)嵌入到各種儀器和現(xiàn)場(chǎng)控制設(shè)備中,因此單片機(jī)又叫做嵌入式微控制器(Embedded MCU)。單片機(jī)自20世紀(jì)70年代問(wèn)世以來(lái),以
18、其鮮明的特點(diǎn)得到迅猛發(fā)展,已廣泛應(yīng)用于家用電器、智能玩具、智能儀器儀表、工業(yè)控制、航空航天等領(lǐng)域,經(jīng)過(guò)30多年的發(fā)展,性能不斷提高,品種不斷豐富,已經(jīng)形成自動(dòng)控制的一支中堅(jiān)力量。據(jù)統(tǒng)計(jì),我國(guó)的單片機(jī)年容量已達(dá)1~3億片,且每年以大約16%的速度增長(zhǎng),但相對(duì)于國(guó)際市場(chǎng)我國(guó)的占有率還不到1%。這說(shuō)明單片機(jī)應(yīng)用在我國(guó)有著廣闊的前景。對(duì)于從事自動(dòng)控制的技術(shù)人員來(lái)講,掌握單片機(jī)原理及其應(yīng)用已經(jīng)成為必不可少的學(xué)習(xí)任務(wù)。</p><
19、;p> 單片機(jī)的應(yīng)用十分廣泛,在工業(yè)控制領(lǐng)域、家電產(chǎn)品、智能化儀器儀表、計(jì)算機(jī)外部設(shè)備,特別是機(jī)電一體化產(chǎn)品中,都有重要的用途。其主要的用途可以分為以下方面。</p><p> 顯示:通過(guò)單片機(jī)控制發(fā)光二極管或是液晶,顯示特定的圖形和字符。</p><p> 機(jī)電控制:用單片機(jī)控制機(jī)電產(chǎn)品做定時(shí)或定向的動(dòng)作。</p><p> 檢測(cè):通過(guò)單片機(jī)和傳感器
20、的聯(lián)合使用,用來(lái)檢測(cè)產(chǎn)品或者工況的意外發(fā)生。</p><p> 通信:通過(guò)RS-232串行通信或者是USB通信,傳輸數(shù)據(jù)和信號(hào)。</p><p> 科學(xué)計(jì)算:用來(lái)實(shí)現(xiàn)簡(jiǎn)單的算法。</p><p> 那么單片機(jī)是不是解決上述應(yīng)用的唯一選擇呢?淡然不是!目前,在自動(dòng)控制中,一般有三種選擇,分別是嵌入式微機(jī)、DSP和單片機(jī)。</p><p>
21、 單片機(jī)最明顯的優(yōu)點(diǎn)是價(jià)格便宜,從幾元人民幣到幾十元人民幣。這是因?yàn)檫@類芯片的生產(chǎn)量很大,技術(shù)也很成熟。</p><p> 其次,單片機(jī)的體積也遠(yuǎn)小于其他兩種方案。單片機(jī)本身一般用40引腳封裝,當(dāng)然功能多一些的單片機(jī)也有引腳比較多的,如68引腳,功能少的只有10多個(gè)或20多個(gè)引腳,有的甚至只有8只引腳。</p><p> 當(dāng)然,單片機(jī)無(wú)論在速度還是容量方面都小于其他兩種方案,但是在實(shí)
22、際工作中并不是任何需要計(jì)算機(jī)的場(chǎng)合都要求計(jì)算機(jī)有很高的性能。例如,控制電冰箱的控制器就不需要使用嵌入式系統(tǒng),用一片51就可以輕松實(shí)現(xiàn)。所以應(yīng)用的關(guān)鍵是看能否夠用,是否有很好的性能價(jià)格比。51系列的單片機(jī)已經(jīng)面世十多年,依然沒(méi)有被淘汰,還在不斷發(fā)展中,這就說(shuō)明是他有廣闊的應(yīng)用前景。</p><p><b> 系統(tǒng)總體方案設(shè)計(jì)</b></p><p><b>
23、 2.1 設(shè)計(jì)要求</b></p><p> 2.1.1 基本要求</p><p> ?。?)能顯示里程,單位為公里,最后一位為小數(shù)位。</p><p> ?。?)能顯示金額數(shù),單位為元,最后一位為小數(shù)位。</p><p> (3)可設(shè)定單程價(jià)格和往返價(jià)格,單程價(jià)格為2元/公里,往返價(jià)格為1.5元/公里。</p>
24、<p> (4)車(chē)速<5公里/小時(shí)的時(shí)間累積為總等待時(shí)間,每5分鐘等待時(shí)間相當(dāng)于里程數(shù)增加1公里。</p><p> ?。?)起步公里數(shù)為3公里,價(jià)格為5元,若實(shí)際距離大于3公里,按規(guī)則3計(jì)算價(jià)格。</p><p> ?。?)按暫停鍵,計(jì)價(jià)器可暫停計(jì)價(jià),按查詢鍵,可顯示總等待時(shí)間。</p><p> 2.1.2 發(fā)揮部分</p>
25、<p> ?。?)增加了空車(chē)指示功能,當(dāng)無(wú)客人時(shí),按下功能切換按鍵,空車(chē)指示燈亮。</p><p> (2)增加實(shí)時(shí)時(shí)間顯示,無(wú)論計(jì)價(jià)器工作或者空車(chē),都能顯示實(shí)時(shí)時(shí)間,便于時(shí)間提醒。</p><p> (3)增加信息儲(chǔ)存功能??梢詢?chǔ)存等待時(shí)間,里程和金額。</p><p> 2.2 設(shè)計(jì)的主要功能</p><p> 本設(shè)計(jì)
26、所設(shè)計(jì)的出租車(chē)數(shù)字計(jì)價(jià)器的主要功能有:金額輸出、路程輸出、數(shù)據(jù)復(fù)位、計(jì)時(shí)計(jì)價(jià)、空車(chē)顯示等。輸出采用2個(gè)4位8段共陽(yáng)數(shù)碼管,車(chē)輛行走時(shí)前4位顯示路程,后4位顯示金額。車(chē)輛候車(chē)時(shí),前4位顯示等待時(shí)間,后4位顯示等待金額??哲?chē)時(shí)顯示實(shí)時(shí)時(shí)間。儲(chǔ)存等待時(shí)間,里程和金額。</p><p><b> 2.3 方案的選取</b></p><p> 本設(shè)計(jì)是由軟件設(shè)計(jì)和硬件設(shè)計(jì)兩
27、部分組成的。軟件設(shè)計(jì)要進(jìn)行程序的編寫(xiě)和軟件仿真;硬件設(shè)計(jì)要設(shè)計(jì)電路、硬件仿真和制作電路板。</p><p> 2.3.1 硬件設(shè)計(jì)方案</p><p> 本系統(tǒng)的硬件設(shè)計(jì)主要包括單片機(jī)AT89S52、數(shù)據(jù)顯示部件、U18霍爾傳感器電路、里程計(jì)算及計(jì)價(jià)單元的設(shè)計(jì)。在硬件設(shè)計(jì)過(guò)程中,充分利用各部件的功能,實(shí)現(xiàn)多功能的出租車(chē)計(jì)價(jià)器設(shè)計(jì)。</p><p> 計(jì)價(jià)器的單
28、片機(jī)系統(tǒng)框圖如圖1所示。它由以下幾個(gè)部件組成:霍爾傳感器單元、AT89C52單片機(jī)、金額顯示、里程顯示、電源。利用單片機(jī)豐富的IO端口,及其控制的靈活性,實(shí)現(xiàn)基本的里程和價(jià)格的計(jì)算及顯示功能。</p><p> 圖1 計(jì)價(jià)器系統(tǒng)框圖</p><p> 2.3.2 軟件設(shè)計(jì)方案</p><p> 本設(shè)計(jì)程序的采取C語(yǔ)言進(jìn)行編寫(xiě),使用Keil uVision4編譯
29、和Proteus7.4a仿真軟件進(jìn)行仿真調(diào)試。其中的里程計(jì)算和費(fèi)用計(jì)算方案如下。</p><p><b> 1、里程計(jì)算</b></p><p> ?。?)霍爾傳感器對(duì)車(chē)輪進(jìn)行信號(hào)檢測(cè),產(chǎn)生并輸出脈沖信號(hào)到單片機(jī);</p><p> ?。?)單片機(jī)對(duì)傳感器輸出的脈沖信號(hào)進(jìn)行計(jì)數(shù),并進(jìn)行km計(jì)算:每一個(gè)信號(hào)代表輪胎旋轉(zhuǎn)一周,設(shè)輪胎的周長(zhǎng)為1.5
30、7m ;每km產(chǎn)生的信號(hào)數(shù)為N ,里程顯示為N × 1.57m = 1.57N(km)</p><p><b> 2、費(fèi)用計(jì)算</b></p><p> (1)出租車(chē)的起步費(fèi)為5元,并且3km內(nèi)不需額外計(jì)價(jià);</p><p> ?。?)出租車(chē)行駛3km后,單程2元/km,雙程1.5元/km。</p><p>
31、; ?。?)等待收費(fèi)的標(biāo)準(zhǔn)為5分鐘算一公里;</p><p> (4)暫停時(shí)計(jì)價(jià)器暫停計(jì)價(jià),不收費(fèi)用。</p><p><b> 硬件設(shè)計(jì)</b></p><p> 本設(shè)計(jì)的硬件設(shè)計(jì)包括單片機(jī)AT89S52單元、測(cè)距單元、顯示單元(數(shù)碼管顯示金額、等待時(shí)間和里程,指示燈對(duì)單雙程切換指示、空車(chē)指示、等待計(jì)時(shí)指示)、按鍵單元、時(shí)鐘單元和儲(chǔ)存單
32、元。</p><p> 3.1 AT89S52單片機(jī)及最小系統(tǒng)</p><p> 3.1.1 AT89S52單片機(jī)</p><p> AT89S52具有如下特點(diǎn):40個(gè)引腳,4k Bytes Flash片內(nèi)程序存儲(chǔ)器, 128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套,2個(gè)16位可編程定時(shí)計(jì)數(shù)器
33、,2個(gè)全雙工串行通信口,看門(mén)狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。</p><p><b> P0口有二個(gè)功能:</b></p><p> 1、外部擴(kuò)展存儲(chǔ)器時(shí),當(dāng)做數(shù)據(jù)/地址總線。</p><p> 2、不擴(kuò)展時(shí),可做一般的I/O使用,但內(nèi)部無(wú)上拉電阻,作為輸入或輸出時(shí)應(yīng)在外部接上拉電阻。</p><p> P1口
34、只做I/O口使用:其內(nèi)部有上拉電阻。 </p><p> P2口有兩個(gè)功能: </p><p> 1、擴(kuò)展外部存儲(chǔ)器時(shí),當(dāng)作地址總線使用。 2、做一般I/O口使用,其內(nèi)部有上拉電阻。 P3口有兩個(gè)功能:除了作為I/O使用外(其內(nèi)部有上拉電阻),還有一些特殊功能,由特殊寄存器來(lái)設(shè)置。</p><p> 圖
35、2 AT89S52引腳圖 圖3 AT89S52封裝圖</p><p> 設(shè)計(jì)中用到的單片機(jī)各管腳(圖2)功能以及與其他模塊連接介紹如下:</p><p> VCC:接+5V電源。VSS:接地。</p><p> 時(shí)鐘引腳:XTAL1和XTAL2兩端接晶振和30PF的電容,構(gòu)成時(shí)鐘電路。</p>
36、<p> 它可以使單片機(jī)穩(wěn)定可靠的運(yùn)行。</p><p> RST:復(fù)位信號(hào)輸入端,高電平有效。當(dāng)在此引腳加兩個(gè)機(jī)器周期的高電平時(shí),就可以完成復(fù)位操作。</p><p> P1.0:接功能按鍵。</p><p> P1.1:接切換鍵,表示單雙程切換。</p><p> P1.2:接查詢(上次金額)鍵。</p>
37、<p> P1.3:接清零鍵。</p><p> P1.4:接空車(chē)指示燈。</p><p> P1.5:接查詢指示燈。</p><p> P1.6:接開(kāi)始計(jì)時(shí)指示燈。</p><p> P1.7:接雙程指示燈。</p><p> P3.0:接查詢/確認(rèn)鍵。</p><p>
38、; P0口接數(shù)碼管段選端,P2口接數(shù)碼管位選段。</p><p> P3.2:接霍爾傳感器的輸出口。</p><p> P3.3:接存儲(chǔ)器的SCL口。</p><p> P3.4:接儲(chǔ)存器的SDA口。</p><p> P3.5:接時(shí)鐘電路DS1302的RST口。</p><p> P3.6:接DS1302
39、的SCLK口。</p><p> P3.7:接DS1302的I/O口。</p><p> 3.1.2 單片機(jī)最小系統(tǒng)</p><p> 復(fù)位電路和晶振電路是AT89S52工作所需的最簡(jiǎn)外圍電路。單片機(jī)最小系統(tǒng)電路圖如圖4所示。 </p><p> 圖4 單片機(jī)最小系統(tǒng)</p><p> AT89S5
40、2 的復(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í)鐘電路。</p><p><b> 3.2 測(cè)距單元</b></p><p> 本次設(shè)計(jì)我們選取了霍爾傳感器來(lái)進(jìn)行里程測(cè)量。
41、</p><p> 霍爾器件是一種磁傳感器。用它們可以檢測(cè)磁場(chǎng)及其變化,可在各種與磁場(chǎng)有關(guān)的場(chǎng)合中使用?;魻柶骷曰魻栃?yīng)為其工作基礎(chǔ)。</p><p> 霍爾器件具有許多優(yōu)點(diǎn),它們的結(jié)構(gòu)牢固,體積小,重量輕,壽命長(zhǎng),安裝方便,功耗小,頻率高,耐震動(dòng),不怕灰塵、油污、水汽及鹽霧等的污染或腐蝕。</p><p> 霍爾器件分為:霍爾元件和霍爾集成電路兩大類,前者
42、是一個(gè)簡(jiǎn)單的霍爾片,使用時(shí)常常需要將獲得的霍爾電壓進(jìn)行放大。后者將霍爾片和它的信號(hào)處理電路集成在同一個(gè)芯片上。本次設(shè)計(jì)選取了霍爾集成電路來(lái)測(cè)量里程。</p><p> 里程測(cè)量是通過(guò)將霍爾傳感器的集成電路安裝在車(chē)輪上方的鐵板上,將磁鐵安裝在車(chē)輪上,旋轉(zhuǎn)的車(chē)輪將磁鐵對(duì)準(zhǔn)集成電路時(shí),霍爾傳感器會(huì)輸出一個(gè)脈沖信號(hào),送到單片機(jī),經(jīng)過(guò)單片機(jī)的計(jì)算處理,將行駛的里程送到顯示單元并顯示出來(lái)。</p><p
43、><b> 其原理示意圖如下:</b></p><p> 圖5 傳感器測(cè)距示意圖</p><p> A44E是一種利用霍爾效應(yīng)做成的半導(dǎo)體集成電路器件,它被設(shè)計(jì)在交變磁場(chǎng)中運(yùn)行,特別是能在低電源電壓和長(zhǎng)時(shí)間運(yùn)行溫度范圍可達(dá)到125℃。這種霍爾IC可用作各種類型的傳感器(速度傳感器、位移傳感器、轉(zhuǎn)速傳感器等等),接觸開(kāi)關(guān)以及相類似的應(yīng)用場(chǎng)合。其工作電壓比較
44、寬(2.5~20V),可運(yùn)行在較大的溫度范圍內(nèi)(-20℃~125℃), 其輸出的信號(hào)符合TTL電平標(biāo)準(zhǔn),可以直接接到單片機(jī)的IO 端口上,而且其最高檢測(cè)頻率可達(dá)到1MHZ。</p><p> 霍爾傳感器的特性如圖6所示,其中BOP為工作點(diǎn)“開(kāi)”的磁感應(yīng)強(qiáng)度,BRP為釋放點(diǎn)“關(guān)”的磁感應(yīng)強(qiáng)度。當(dāng)外加的磁感應(yīng)強(qiáng)度超過(guò)動(dòng)作點(diǎn)BOP時(shí),傳感器輸出低電平,當(dāng)磁感應(yīng)強(qiáng)度降到動(dòng)作點(diǎn)BOP以下時(shí),傳感器輸出電平不變,一直要降到
45、釋放點(diǎn)BRP時(shí),傳感器才由低電平躍變?yōu)楦唠娖?。BOP與BRP之間的滯后使開(kāi)關(guān)動(dòng)作更為可靠。</p><p> U18集成霍耳開(kāi)關(guān)由穩(wěn)壓器A、霍耳電勢(shì)發(fā)生器(即硅霍耳片)B、差分放大器C、施密特觸發(fā)器D和OC門(mén)輸出E五個(gè)基本部分組成。</p><p> 在輸入端輸入電壓VCC,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍爾電勢(shì)發(fā)生器的兩端,根據(jù)霍爾效應(yīng)原理,當(dāng)霍爾片處在磁場(chǎng)中時(shí),在垂直于磁場(chǎng)的方向通以電流,則與
46、這二者相垂直的方向上將會(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)作。</p><p> 圖6 A44E霍爾傳感器和其輸出特性</p>
47、<p> A44E霍爾傳感器有3個(gè)外接口,2個(gè)是電源的正負(fù)極接口,最后一個(gè)是脈沖信號(hào)輸出口,只要將霍爾傳感器的信號(hào)輸出端接到單片機(jī)的端口上便可以實(shí)現(xiàn)距離檢測(cè)。</p><p> 其中,單片機(jī)的P3.2(INT0)引腳作為信號(hào)的輸入端,采用外部中斷0進(jìn)行計(jì)數(shù)。車(chē)輪每轉(zhuǎn)一圈,霍爾傳感器就產(chǎn)生一個(gè)脈沖信號(hào),根據(jù)霍爾效應(yīng)原理,當(dāng)霍爾片處在磁場(chǎng)中時(shí),霍爾傳感器的輸出端輸出低電平。當(dāng)車(chē)輪轉(zhuǎn)動(dòng)一圈時(shí)小磁鐵提供一個(gè)
48、磁場(chǎng),則霍爾傳感器輸出一次低電平完成一次數(shù)據(jù)采集,從而產(chǎn)生信號(hào)?;魻杺鞲衅鳈z測(cè)并輸出信號(hào)到單片機(jī)的INT0或INT1計(jì)算脈沖輸入端,引起單片機(jī)的中斷,對(duì)脈沖計(jì)數(shù),當(dāng)計(jì)數(shù)達(dá)到特定的次數(shù)時(shí),里程就會(huì)增加,單片機(jī)對(duì)里程進(jìn)行計(jì)算后,通過(guò)接口電路將計(jì)算好的結(jié)果傳送到數(shù)碼管并顯示出來(lái)。</p><p><b> 3.3 按鍵單元</b></p><p> 本設(shè)計(jì)的按鍵單元電路
49、(如圖7)有5個(gè)按鍵,功能分別是:S1是空車(chē)時(shí)查詢上次金額和里程以及等待時(shí)間,結(jié)賬時(shí)查詢本次金額和里程以及等待時(shí)間;S2功能鍵,不按時(shí)空車(chē)指示燈亮而且數(shù)碼管顯示實(shí)時(shí)時(shí)間,按下時(shí)可設(shè)置單雙程,此時(shí)再按S3可進(jìn)行單程和雙程之間切換,再按S1可確認(rèn)單雙程,雙程時(shí)雙程指示燈亮并開(kāi)始計(jì)價(jià);按下S4可對(duì)本次金額、里程以及等待時(shí)間進(jìn)行查詢;S5為清零鍵,按下時(shí)清零之前數(shù)據(jù)消除以及存儲(chǔ)本次信息。</p><p><b>
50、; 圖7 按鍵單元電路</b></p><p><b> 3.4 時(shí)鐘單元</b></p><p> 本設(shè)計(jì)采用基于DS1302的時(shí)鐘電路(如圖8)對(duì)時(shí)間進(jìn)行實(shí)時(shí)顯示,單片機(jī)掉電對(duì)其沒(méi)有影響。用數(shù)碼管表現(xiàn)出來(lái),當(dāng)出租車(chē)空車(chē)時(shí)就顯示時(shí)間,給人時(shí)間提示。</p><p><b> 圖8 時(shí)鐘電路單元</b>
51、</p><p><b> 3.5 顯示單元</b></p><p> 本設(shè)計(jì)顯示單元包括兩部分:數(shù)碼管顯示(圖11)和二極管指示顯示(圖12)。數(shù)碼管顯示部分使用兩個(gè)四位一體的LED數(shù)碼管,LED顯示器是由LED發(fā)光二極管發(fā)展過(guò)來(lái)的一種顯示器件,是發(fā)光二極管的改型。LED是發(fā)光二極管的簡(jiǎn)稱,是一種將電能轉(zhuǎn)換成光能的設(shè)備。本身也是一種光源。LED顯示器是由發(fā)光二極
52、管排列組成的顯示器件。它采用低電壓掃描驅(qū)動(dòng),具有:耗電少、使用壽命長(zhǎng)、成本低、故障少、視角大、可視距離遠(yuǎn)等特點(diǎn)。此外,它的響應(yīng)時(shí)間短(一般不超過(guò)0.1us),亮度也比較高。它的缺點(diǎn)是工作電流比較大,每一段的工作電流在10mA左右。</p><p> 其中每位數(shù)碼管是由8個(gè)發(fā)光二極管演變而來(lái),其中7個(gè)發(fā)光二極管構(gòu)成7筆字形,另一個(gè)構(gòu)成小數(shù)點(diǎn),稱為8段LED。8段LED數(shù)碼管是利用7個(gè)LED(發(fā)光二極管)外加一個(gè)小
53、數(shù)點(diǎn)的LED組合而成的顯示設(shè)備,可以顯示0~9等10個(gè)數(shù)字和小數(shù)點(diǎn),使用非常廣泛,它的外觀如圖9所示:</p><p><b> 圖9 8段數(shù)碼管</b></p><p> 這類數(shù)碼管可以分為共陽(yáng)極(8個(gè)發(fā)光二極管的陽(yáng)極接在—起)與共陰極(8個(gè)發(fā)光二極管陰極連在一起)兩種,共陽(yáng)極就是把所有LED的陽(yáng)極連接到共同接點(diǎn),而每個(gè)LED的陰極分別為a、b、c、d、e、f
54、、g及dp(小數(shù)點(diǎn));共陰極則是把所有LED的陰極連接到共同接點(diǎn),而每個(gè)LED的陽(yáng)極分別為a、b、c、d、e、f、g及dp(小數(shù)點(diǎn)),如圖10所示。</p><p> 圖10 共陽(yáng)和共陰數(shù)碼管結(jié)構(gòu)</p><p> 通過(guò)控制這個(gè)公共端,可使該位亮或暗。如共陰極端接地或共陽(yáng)極接高電平,則該位顯示器有效,反之無(wú)效。本設(shè)計(jì)采用共陰LED數(shù)碼管。</p><p>
55、數(shù)碼管有靜態(tài)顯示和動(dòng)態(tài)顯示兩種,這里采用動(dòng)態(tài)顯示。它具有低功耗、接口少等特點(diǎn)。如圖11兩個(gè)四位一體數(shù)碼管接P0口作為段選,接P2口作為位選??哲?chē)時(shí)顯示時(shí)間,開(kāi)始計(jì)價(jià)時(shí)前四位顯示路程,后四位顯示價(jià)錢(qián)。當(dāng)查詢等待時(shí)間時(shí)顯示為等待時(shí)間。</p><p> 圖11 顯示單元(數(shù)碼管顯示部分)</p><p> 二極管指示部分包括空車(chē)指示燈、等待時(shí)間查詢指示、開(kāi)始計(jì)時(shí)指示和雙程指示如圖12。這些
56、指示燈能對(duì)出租車(chē)的每一種狀態(tài)進(jìn)行指示,空車(chē)時(shí)空車(chē)指示燈亮,查詢等待時(shí)間時(shí)等待時(shí)間查詢指示燈亮,當(dāng)汽車(chē)速度小于5km/h時(shí)開(kāi)始計(jì)時(shí),計(jì)時(shí)指示燈亮。計(jì)價(jià)前如果按下雙程鍵雙程指示燈亮,表示為雙程。</p><p> 圖12 顯示單元(二極管指示部分)</p><p><b> 3.6 儲(chǔ)存單元</b></p><p> 存儲(chǔ)單元的作用是儲(chǔ)存上一
57、次的里程、金額和等待時(shí)間。AT24C02 是Atmel公司的1KB的電可擦除存儲(chǔ)芯片,采用兩線串行的總線和單片機(jī)通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10uA(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存40年以上,而且采用8 腳的DIP 封裝,使用方便。</p><p> 圖13 儲(chǔ)存單元電路</p><p> 圖中R3、R4 是上拉電阻,其作用是減少AT24C0
58、2 的靜態(tài)功耗。由于AT24C02的數(shù)據(jù)線和地址線是復(fù)用的,采用串口的方式傳送數(shù)據(jù),所以只用兩根線SCL(時(shí)鐘脈沖)和SDA(數(shù)據(jù)/地址)與單片機(jī)P3.3和P3.4口連接,進(jìn)行傳送數(shù)據(jù)。</p><p><b> 軟件設(shè)計(jì)</b></p><p> 本系統(tǒng)的軟件設(shè)計(jì)主要分為系統(tǒng)主程序、數(shù)據(jù)處理子程序、等待時(shí)間及時(shí)子程序和鍵盤(pán)掃描子程序五個(gè)模塊,下面對(duì)每一塊進(jìn)行介紹
59、。</p><p><b> 4.1 系統(tǒng)主程序</b></p><p> 本設(shè)計(jì)中,軟件設(shè)計(jì)采用模塊化操作,利用各個(gè)模塊之間的相互聯(lián)系,在設(shè)計(jì)中采用主程序調(diào)用各個(gè)子程序的方法,使程序通俗易懂,我們?cè)O(shè)計(jì)了整體程序流程圖。</p><p> 在main函數(shù)編寫(xiě)開(kāi)始,要進(jìn)行初始化,包括對(duì)系統(tǒng)初始化和對(duì)硬件設(shè)備進(jìn)行初始化,并使硬件處于就緒狀態(tài)。
60、</p><p> 在主程序模塊中,需要完成對(duì)各接口芯片的初始化、出租車(chē)起價(jià)和單價(jià)的初始化、中斷向量的設(shè)計(jì)以及開(kāi)中斷、循環(huán)等待等工作。系統(tǒng)流程圖如下圖14。</p><p> 圖14 系統(tǒng)主程序流程圖</p><p> 4.2 數(shù)據(jù)處理子程序</p><p> 每當(dāng)霍爾傳感器輸出一個(gè)低電平信號(hào)就使單片機(jī)中斷一次,在計(jì)數(shù)中斷服務(wù)程序,里
61、程和金額都相應(yīng)變化,當(dāng)然等待時(shí)間也換算成里程(當(dāng)速度小于5km/h時(shí)5分鐘想當(dāng)于1公里)。計(jì)算程序根據(jù)里程數(shù)分別進(jìn)入不同的計(jì)算公式。如果里程大于3公里,則執(zhí)行公式:金額=(里程-3)*單價(jià)+5;否則,執(zhí)行公式:總金額=起步價(jià)。程序流程圖如圖15所示。</p><p> 圖15 數(shù)據(jù)處理子程序流程圖</p><p> 4.3 等待時(shí)間計(jì)時(shí)子程序</p><p>
62、 當(dāng)出租車(chē)的速度5km/h時(shí)等待時(shí)間開(kāi)始計(jì)時(shí),并被換算里程,進(jìn)行計(jì)算顯示等待時(shí)間和金額。當(dāng)結(jié)算時(shí)停止計(jì)時(shí)和計(jì)費(fèi)并顯示金額,當(dāng)有查詢鍵按下時(shí)顯示等待時(shí)間,當(dāng)有清零鍵按下時(shí)存儲(chǔ)本次金額。如圖16:</p><p> 圖16 等待時(shí)間計(jì)時(shí)子程序</p><p> 4.4 鍵盤(pán)掃描子程序</p><p> 鍵盤(pán)采用查詢的方式,放在主程序中,當(dāng)沒(méi)有按鍵按下的時(shí)候,單片機(jī)
63、循環(huán)主程序,一旦右按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。流程圖如圖17。</p><p> 圖17 鍵盤(pán)掃描子程序</p><p> Proteus軟件仿真</p><p> 本設(shè)計(jì)需要用Keil uVision4對(duì)C51程序進(jìn)行編譯,生成“.hex”文件,如圖18 :</p><p> 圖18 Keil uVision
64、4編譯</p><p> 在Proteus軟件中畫(huà)出仿真電路(如圖19),把Keil uVision4編譯后生成的“.hex”導(dǎo)入到單片機(jī)中,按“運(yùn)行仿真”鍵進(jìn)行仿真。</p><p> 圖19 Proteus仿真</p><p><b> 課程設(shè)計(jì)體會(huì)</b></p><p> 在本次單片機(jī)課程設(shè)計(jì)中,經(jīng)過(guò)討論
65、,我們選擇的設(shè)計(jì)內(nèi)容是以AT89S52芯片為核心的出租車(chē)計(jì)價(jià)器,計(jì)價(jià)器的功能是以按鍵為輸入控制方式,實(shí)現(xiàn)對(duì)汽車(chē)運(yùn)行過(guò)程中狀態(tài)信息的測(cè)量,主要包括等待時(shí)間、金額和里程等,并實(shí)現(xiàn)對(duì)這些信息進(jìn)行存儲(chǔ)及顯示處理等功能。</p><p> 在完成整個(gè)課程設(shè)計(jì)的過(guò)程中,我們遇到了許多困難,但在解決困難的同時(shí),我們也收獲了許多,現(xiàn)在就將在整個(gè)課程設(shè)計(jì)過(guò)程中的幾點(diǎn)收獲與體會(huì)總結(jié)如下:</p><p>
66、 1、鞏固了單片機(jī)使用、C語(yǔ)言編程等專業(yè)知識(shí)</p><p> 由于單片機(jī)課程是在上學(xué)期修的,之后的這段時(shí)間也沒(méi)有使用單片機(jī)實(shí)際的做一些設(shè)計(jì),很多單片機(jī)的知識(shí)以及C語(yǔ)言的編程方法已經(jīng)不是能很熟練的應(yīng)用。因此,選題后我們便開(kāi)始復(fù)習(xí)單片機(jī)方面的知識(shí),同時(shí)也通過(guò)各種方式查閱、搜索了很多相關(guān)資料。從總體設(shè)計(jì)與具體設(shè)計(jì),從電路焊接到調(diào)試完成,在整個(gè)過(guò)程中,我們學(xué)會(huì)了基本的單片機(jī)開(kāi)發(fā)技能。</p><p
67、> 2、熟悉了Proteus、Keil uVision4、word2010、viso2010等軟件的操作</p><p> 從開(kāi)始設(shè)計(jì)到最終完成設(shè)計(jì),我們使用了仿真軟件Proteus和編程軟件Keil uVision4對(duì)電路及程序進(jìn)行調(diào)試。由于不熟練,開(kāi)始時(shí)各種問(wèn)題層出不窮,有時(shí)一個(gè)小問(wèn)題便讓我們困惑半天,我們查閱相關(guān)資料,請(qǐng)教他人最終才得以解決。通過(guò)編寫(xiě)程序,我們深刻意識(shí)到采用模塊化的設(shè)計(jì)思想的重要性
68、,它方便編寫(xiě)、修改與調(diào)試,另外加上必要的注釋,便于交流與理解。通過(guò)后期的文檔整理,我們熟悉了為我們對(duì)word2010、viso2010辦公室軟件的操作,為我們今后的工作學(xué)習(xí)打下了良好基礎(chǔ)。</p><p> 3、鍛煉了團(tuán)隊(duì)協(xié)作能力</p><p> 在整個(gè)設(shè)計(jì)的過(guò)程中,我們兩人通力合作。本著以學(xué)習(xí)知識(shí)為重,完成課程設(shè)計(jì)內(nèi)容次之的原則,先是一人做硬件設(shè)計(jì),一人做軟件設(shè)計(jì)。在對(duì)各自分工的內(nèi)
69、容有了較深的了解之后,我們便互相交流,將對(duì)各自所負(fù)責(zé)內(nèi)容的理解與遇到的問(wèn)題告訴對(duì)方,然后共同尋找問(wèn)題的解決方法。在對(duì)方遇到困難時(shí),我們互相鼓勵(lì),互相幫助,培養(yǎng)了對(duì)他人的耐心尊重與關(guān)懷。</p><p> 本次設(shè)計(jì)我們學(xué)習(xí)到不少專業(yè)內(nèi)外的知識(shí),但由于自己的理論知識(shí)水平有限,實(shí)踐知識(shí)和設(shè)計(jì)經(jīng)驗(yàn)不足,在設(shè)計(jì)過(guò)程中難免存在一些問(wèn)題。所焊實(shí)物尚有許多不足,個(gè)別功能還不能很好的實(shí)現(xiàn),主要原因是考慮問(wèn)題不周全,電路設(shè)計(jì)經(jīng)驗(yàn)少
70、,實(shí)際動(dòng)手能力不足。懇請(qǐng)各位老師批評(píng)指正,以使我們?cè)谝院蟮膶W(xué)習(xí)和實(shí)踐中加以改進(jìn)和提高。</p><p><b> 參考文獻(xiàn)</b></p><p> 戴佳,陳斌,苗龍.51單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)典型實(shí)例.中國(guó)電力出版社,2005</p><p> 余發(fā)山,王福忠.單片機(jī)原理及應(yīng)用技術(shù).中國(guó)礦業(yè)大學(xué)出版社,2008.6</p>&
71、lt;p> 侯玉寶,陳忠平,李成群.基于Proteus的51系列單片機(jī)設(shè)計(jì)與仿真.電子工業(yè)出版社,2008</p><p> 李玉梅.基于MCS-51系列單片機(jī)原理的應(yīng)用設(shè)計(jì).國(guó)防工業(yè)出版社,2006</p><p> 邊春元,李文濤,江杰.C51單片機(jī)典型模塊設(shè)計(jì)與應(yīng)用.機(jī)械工業(yè)出版社,2008</p><p> 樓然苗,胡佳文,李光飛等.單片機(jī)實(shí)驗(yàn)
72、與課程設(shè)計(jì).浙江大學(xué)出版社,2010.10</p><p> 段晨東.單片機(jī)實(shí)用技術(shù)教程.清華大學(xué)出版社,2008</p><p> 王曉明.單片機(jī)接口技術(shù).北京航空航天大學(xué)出版社,2007</p><p> 王曉敏.傳感器檢測(cè)技術(shù)及應(yīng)用.北京大學(xué)出版社,2010</p><p> 吳紅星.電機(jī)驅(qū)動(dòng)與控制專用集成電路及應(yīng)用.中國(guó)電力出
73、版社,2006</p><p><b> 附1:源程序代碼</b></p><p> #include<reg52.h></p><p> #include<intrins.h></p><p> #define uint unsigned int</p><p>
74、 #define uchar unsigned char</p><p> #define DanJia_DanCheng 20</p><p> #define DanJia_WangFan 15</p><p> #define LunJing 5 /*車(chē)輪直徑0.5m*/</p><p> #define LunCha
75、ng 1.57//m 3.14*0.5</p><p> /*************************</p><p><b> 狀態(tài)碼定義</b></p><p> **************************/</p><p> #define KongChe_flag 0
76、</p><p> #define JinEr_LiCheng_flag 1</p><p> #define ShiJian_flag 2 </p><p> #define DanJia_flag 3</p><p> /********************************
77、*****</p><p> ds1302 地址定義</p><p> *****************************************/</p><p> #define WRITE_SECOND 0x80</p><p> #define WRITE_MINUTE 0
78、x82</p><p> #define WRITE_HOUR 0x84</p><p> #define READ_SECOND 0x81</p><p> #define READ_MINUTE 0x83</p><p> #defi
79、ne READ_HOUR 0x85</p><p> #define WRITE_PROTECT 0x8E</p><p> /***************************************</p><p><b> AT24C02</b></p>
80、<p> *****************************************/</p><p> #defineOP_READ0xa1// 器件地址以及讀取操作</p><p> #defineOP_WRITE 0xa0// 器件地址以及寫(xiě)入操作</p><p> /************************
81、****</p><p><b> 引腳定義</b></p><p> *********************************/</p><p> sbit Function_Key=P1^0;</p><p> sbit QieHuan_Key=P1^1;</p><p>
82、 sbit ZanTing_Key=P1^2;</p><p> sbit Clear_Key=P1^3;</p><p> sbit ChaXun_QueRen_Key=P3^0;</p><p> sbit KongChe_Led=P1^4;</p><p> sbit ChaXun_Led=P1^5;</p>&l
83、t;p> sbit JiShi_Led=P1^6;</p><p> sbit DanShuang_Led=P1^7;</p><p> //位尋址寄存器定義</p><p> sbit ACC_7 = ACC^7;</p><p> sbit SCLK = P3^6; // DS1302時(shí)鐘信號(hào)
84、 7腳</p><p> sbit DIO= P3^7; // DS1302數(shù)據(jù)信號(hào) 6腳</p><p> sbit CE = P3^5; // DS1302片選 5腳</p><p> sbit SDA = P3^4;</p><p> sbit SCL
85、= P3^3;</p><p> uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};</p><p> uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; </p><p> uchar d
86、ata dis1[]={0x00,0x00,0x0b,0x00,0x00,0x0b,0x00,0x00}; //時(shí)分秒顯示緩沖區(qū)</p><p> uchar data chuzhi[]={0x00,0x00,0x00}; //時(shí)分秒初值</p><p> uchar data time1302[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00};&
87、lt;/p><p> uint data Count=0;</p><p> uint data Count1=0,Count2=0;</p><p> uchar data DanJia=DanJia_DanCheng; //默認(rèn)單程價(jià)格</p><p> uint data LiCheng=0;</p><p
88、> uint data JinEr=0;</p><p> uchar data Second;</p><p> uint data Minute;</p><p> uint data Speed=0;</p><p> uint data Old_Count,New_Count;</p><p
89、> uchar i=0,j=0,k=0,n=0;</p><p> uint data_temp[];</p><p> bit KaiShiFlag=0;</p><p> bit JiShiFlag=0;</p><p> bit ChaXunFlag=0;</p><p> uint ZanTi
90、ngFlag=0;</p><p> bit JinErFlag=0;</p><p> void start();</p><p> void stop();</p><p> unsigned char shin();</p><p> bit shout(uchar write_data);</p
91、><p> unsigned char read_random(uchar random_addr);</p><p> void write_byte(uchar addr, uchar write_data);</p><p> void delayms(uchar ms);</p><p> void data_process();
92、</p><p> void fill_byte(uchar fill_data,uchar n);</p><p> void delay(uint x)</p><p><b> {</b></p><p><b> uint y;</b></p><p> w
93、hile(x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> /************************************</p><p><b> at24c02程序</b></p>
94、<p> ***************************************/</p><p> void start()</p><p><b> // 開(kāi)始位</b></p><p><b> {</b></p><p><b> SDA = 1;<
95、;/b></p><p><b> SCL = 1;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> SDA = 0;</b></p>&
96、lt;p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> S
97、CL = 0;</b></p><p><b> }</b></p><p> void stop()</p><p><b> // 停止位</b></p><p><b> {</b></p><p><b> SDA
98、 = 0;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> SCL = 1;</b></p><p><b> _nop_();</b></
99、p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> SDA = 1;</b></p><p><
100、b> }</b></p><p> uchar shin()</p><p> // 從AT24Cxx移入數(shù)據(jù)到MCU</p><p><b> {</b></p><p> unsigned char i,read_data;</p><p> for(i = 0;
101、 i < 8; i++)</p><p><b> {</b></p><p><b> SCL = 1;</b></p><p> read_data <<= 1;</p><p> read_data |= (unsigned char)SDA;</p>
102、<p><b> SCL = 0;</b></p><p><b> }</b></p><p> return(read_data);</p><p><b> }</b></p><p> bit shout(unsigned char write_da
103、ta)</p><p> // 從MCU移出數(shù)據(jù)到AT24Cxx</p><p><b> {</b></p><p> unsigned char i;</p><p> bit ack_bit;</p><p> for(i = 0; i < 8; i++)// 循環(huán)移入8
104、個(gè)位</p><p><b> {</b></p><p> SDA = (bit)(write_data & 0x80);</p><p><b> _nop_();</b></p><p><b> SCL = 1;</b></p><p
105、><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> SCL = 0;</b></p><p> write_data <<= 1;</p><p><b> }</b&g
106、t;</p><p> SDA = 1;// 讀取應(yīng)答</p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> SCL = 1;</b></p><p><b&
107、gt; _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p> ack_bit = SDA;</p>
108、<p><b> SCL = 0;</b></p><p> return ack_bit;// 返回AT24Cxx應(yīng)答位</p><p><b> }</b></p><p> void write_byte(uchar addr, uchar write_data)</p>&
109、lt;p> // 在指定地址addr處寫(xiě)入數(shù)據(jù)write_data</p><p><b> {</b></p><p><b> start();</b></p><p> shout(OP_WRITE);</p><p> shout(addr);</p><
110、p> shout(write_data);</p><p><b> stop();</b></p><p> delayms(10);// 寫(xiě)入周期</p><p><b> }</b></p><p> uchar read_current()</p><
111、p> // 在當(dāng)前地址讀取</p><p><b> {</b></p><p> uchar read_data;</p><p><b> start();</b></p><p> shout(OP_READ);</p><p> read_data
112、= shin();</p><p><b> stop();</b></p><p> return read_data;</p><p><b> }</b></p><p> uchar read_random(unsigned char random_addr)</p>
113、<p> // 在指定地址讀取</p><p><b> {</b></p><p><b> start();</b></p><p> shout(OP_WRITE);</p><p> shout(random_addr);</p><p> re
114、turn(read_current());</p><p><b> }</b></p><p> void fill_byte(uchar fill_data,uchar n) // 填充數(shù)據(jù)fill_data到EEPROM內(nèi)</p><p><b> {</b></p><p>&l
115、t;b> uchar i;</b></p><p> for(i = 0; i < n; i++)</p><p><b> {</b></p><p> write_byte(i, fill_data);</p><p><b> }</b></p>
116、<p><b> }</b></p><p> void delayms(uchar ms)</p><p><b> {</b></p><p> unsigned char i;</p><p> while(ms--)</p><p><b&
117、gt; {</b></p><p> for(i = 0; i < 120; i++); </p><p><b> }</b></p><p><b> }</b></p><p> /*************************************<
118、;/p><p><b> 數(shù)碼管顯示程序</b></p><p> *******************************************/</p><p> void seg_show(uchar w,uchar dat,uchar dp)</p><p><b> {</b>
119、</p><p><b> if(w==dp)</b></p><p><b> {</b></p><p> P2=wei[w];</p><p> P0=table[dat]|0x80;</p><p><b> delay(1);</b>
120、</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> P2=wei[w];</p><p> P0=table[dat];</p><p&
121、gt; delay(1);</p><p><b> }</b></p><p><b> }</b></p><p> void show_nint(uchar w,uint dat,uchar n,uchar dp)//顯示w位:從w位顯示;dat:顯示數(shù)據(jù);// n:要顯示數(shù)據(jù)的位數(shù);dp:小數(shù)點(diǎn)顯示位;最
122、多五位數(shù)字顯示</p><p><b> { </b></p><p><b> if(n==1)</b></p><p><b> {</b></p><p> seg_show(w,dat,dp);</p><p><b&g
123、t; }</b></p><p><b> if(n==2)</b></p><p><b> {</b></p><p> seg_show(w,dat/10,dp);</p><p> seg_show((w+1),dat%10,dp);</p><p
124、><b> }</b></p><p><b> if(n==3)</b></p><p><b> {</b></p><p> seg_show(w,dat/100,dp); </p><p> seg_show((w+1),dat/10%10,d
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租車(chē)計(jì)價(jià)器課程設(shè)計(jì)
- 出租車(chē)計(jì)價(jià)器課程設(shè)計(jì)
- 出租車(chē)計(jì)價(jià)器課程設(shè)計(jì)
- 課程設(shè)計(jì)---出租車(chē)計(jì)價(jià)器設(shè)計(jì)
- 課程設(shè)計(jì)--出租車(chē)計(jì)價(jià)器設(shè)計(jì)
- 出租車(chē)計(jì)價(jià)器設(shè)計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)---出租車(chē)計(jì)價(jià)器設(shè)計(jì)
- 出租車(chē)計(jì)價(jià)器課程設(shè)計(jì)報(bào)告
- 出租車(chē)計(jì)價(jià)器課程設(shè)計(jì)論文
- 硬件課程設(shè)計(jì)----出租車(chē)計(jì)價(jià)器
- eda課程設(shè)計(jì)--出租車(chē)計(jì)價(jià)器
- eda課程設(shè)計(jì)--出租車(chē)計(jì)價(jià)器
- 接口課程設(shè)計(jì)---出租車(chē)計(jì)價(jià)器
- 課程設(shè)計(jì)---出租車(chē)計(jì)價(jià)器的設(shè)計(jì)
- 課程設(shè)計(jì)--出租車(chē)計(jì)價(jià)器的設(shè)計(jì)
- 硬件課程設(shè)計(jì)--出租車(chē)計(jì)價(jià)器系統(tǒng)
- eda課程設(shè)計(jì)報(bào)告---出租車(chē)計(jì)價(jià)器
- eda課程設(shè)計(jì)報(bào)告--出租車(chē)計(jì)價(jià)器
- arm出租車(chē)計(jì)價(jià)器系統(tǒng)課程設(shè)計(jì)
- 硬件課程設(shè)計(jì)報(bào)告--出租車(chē)計(jì)價(jià)器
評(píng)論
0/150
提交評(píng)論