基于單片機(jī)出租車計(jì)價(jià)器課題設(shè)計(jì)(c語言編寫)_第1頁
基于單片機(jī)出租車計(jì)價(jià)器課題設(shè)計(jì)(c語言編寫)_第2頁
基于單片機(jī)出租車計(jì)價(jià)器課題設(shè)計(jì)(c語言編寫)_第3頁
基于單片機(jī)出租車計(jì)價(jià)器課題設(shè)計(jì)(c語言編寫)_第4頁
基于單片機(jī)出租車計(jì)價(jià)器課題設(shè)計(jì)(c語言編寫)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告完成日期:完成日期:2010 年年 12 月月 28 日日 系:電子信息工程系專 業(yè):通信工程班 級:071 班設(shè)計(jì)題目:出租車計(jì)價(jià)器學(xué)生姓名:謝明七 王勉指導(dǎo)教師:董玉華、許爽 目目 錄錄一、一、設(shè)計(jì)設(shè)計(jì)任任務(wù)務(wù)和性能指和性能指標(biāo)標(biāo).31.1 設(shè)計(jì)任務(wù).31.2 性能指標(biāo).3二、二、設(shè)計(jì)設(shè)計(jì)方案方案.42.1 任務(wù)分析.42.2 系統(tǒng)設(shè)計(jì).5三三 系系統(tǒng)統(tǒng)硬件硬件設(shè)計(jì)設(shè)計(jì).73.1 電源電路.73.2 單片機(jī)的最小系統(tǒng).83.3 DS1302 時(shí)鐘電路.93.4 顯示電路的設(shè)計(jì) .103.5 按鍵控制的設(shè)計(jì) .113.7 復(fù)位電路.13四、系四、系

2、統(tǒng)軟統(tǒng)軟件件設(shè)計(jì)設(shè)計(jì) .144.1 主程序設(shè)計(jì).144.2 子程序設(shè)計(jì).154.2.1 DS1302 子程序.154.2.1 DS1302 子程序流程圖.154.2.2 顯示子程序 .174.2.2 顯示子程序流程圖.194.3 修改時(shí)間子程序.20五、五、調(diào)試調(diào)試及性能分析及性能分析.215.1調(diào)試步驟.215.1.1 硬件調(diào)試.215.1.2 軟件調(diào)試:.215.2 性能分析.21六、心得體會六、心得體會.23七、參考文獻(xiàn)七、參考文獻(xiàn).24八、附八、附錄錄.25附錄 1、程序清單.25附錄 2 系統(tǒng)硬件電路圖 .35一、設(shè)計(jì)任務(wù)和性能指標(biāo)一、設(shè)計(jì)任務(wù)和性能指標(biāo)1.11.1 設(shè)計(jì)任務(wù)設(shè)計(jì)任務(wù)

3、出租車計(jì)價(jià)器是乘客與司機(jī)雙方的交易準(zhǔn)則,它是出租車行業(yè)發(fā)展的重要標(biāo)志,是出租車中最重要的工具。它關(guān)系著交易雙方的利益。具有良好性能的計(jì)價(jià)器無論是對廣大出租車司機(jī)朋友還是乘客來說都是很必要的。出租車計(jì)價(jià)器的主要功能是計(jì)價(jià)顯示、時(shí)鐘顯示、根據(jù)白天、黑夜、途中等待來調(diào)節(jié)營運(yùn)參數(shù)、計(jì)量數(shù)據(jù)查詢等。要求用 Protel 畫出系統(tǒng)的電路原理圖(要求以最少組件,實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)所要求的功能),印刷電路板(要求布局合理,線路清晰),繪出程序流程圖,并給出程序清單(要求思路清晰,盡量簡潔,主程序和子程序分開,使程序有較強(qiáng)的可讀性)。1.21.2 性能指標(biāo)性能指標(biāo)1.不同情況具有不同收費(fèi)標(biāo)準(zhǔn):白天、晚上、途中等待(1

4、0min 開始收費(fèi)) ;2.數(shù)據(jù)輸出:單價(jià)輸出、路程輸出、總金額輸出;3.按鍵:啟動計(jì)時(shí)開關(guān)、數(shù)據(jù)顯示切換、白天/晚上切換、復(fù)位;4.能手動進(jìn)行修改單價(jià),但單價(jià)設(shè)定需密碼進(jìn)入。二、設(shè)計(jì)方案二、設(shè)計(jì)方案2.12.1 任務(wù)分析任務(wù)分析出租車計(jì)價(jià)器基本功能部分是根據(jù)里程數(shù)來完成總金額的輸出。實(shí)現(xiàn)方法有兩種。方案一:采用數(shù)字電路控制。其原理方框圖如圖 2.1 所示。采用傳感器件,輸出脈沖信號,經(jīng)過放大整形作為移位寄存器的脈沖,實(shí)現(xiàn)計(jì)價(jià),但是考慮到這種電路過于簡單,性能不夠穩(wěn)定,而且不能調(diào)節(jié)單價(jià),也不能根據(jù)天氣調(diào)節(jié)計(jì)費(fèi)標(biāo)準(zhǔn),電路不夠?qū)嵱?。移移位位寄寄存存器器電電路路里里程程傳傳感感器器金金額額顯顯示示單

5、單價(jià)價(jià)顯顯示示電電源源電電路路及及保保護(hù)護(hù)電電路路圖 2.1 數(shù)字電路實(shí)現(xiàn)框圖方案二:采用單片機(jī)控制。利用單片機(jī)豐富的 IO 端口,及其控制的靈活性,實(shí)現(xiàn)基本的里程計(jì)價(jià)功能和價(jià)格調(diào)節(jié)、時(shí)鐘顯示功能。本方案有較大的活動空間,不但能實(shí)現(xiàn)所要求的功能而且能在很大的程度上擴(kuò)展功能,而且還可以方便的對系統(tǒng)進(jìn)行升級,所以我們采用后一種方案。2.22.2 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)鍵盤電路掉電保護(hù)單片機(jī)顯示電路里程輸入圖 2.1 電路系統(tǒng)構(gòu)成框圖主控芯片使用 51 系列 AT89C52 單片機(jī),采用高性能的靜態(tài) 80C51 設(shè)計(jì),由先進(jìn)工藝制造,并帶有非易失性 Flash 程序存儲器。它是一種高性能、低功耗的 8 位

6、 COMS 微處理芯片,市場應(yīng)用最多。時(shí)鐘芯片使用美國 DALLAS 公司推出的一種高性能、低功耗、帶 RAM 的實(shí)時(shí)時(shí)鐘芯片 DS1302。采用 DS1302 作為主要計(jì)時(shí)芯片、可以做到計(jì)時(shí)準(zhǔn)確。更重要的是,DS1302 可以在很小的電流的后備電源(2.55.5V 電源,在 2.5V時(shí)耗電小于 300nA)下繼續(xù)計(jì)時(shí),并可編程選擇多種充電電流對后備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電。采用串行數(shù)據(jù)傳輸,與單片機(jī)硬件連接簡單,如果使用時(shí)鐘芯片 DS12887,將采用并行數(shù)據(jù)傳輸,占用更多的硬件資源。因此為節(jié)省單片機(jī)端口,時(shí)鐘芯片采用 DS1302。它們可以檢測磁場及其變化,可在各種與磁

7、場有關(guān)的場合中使用?;魻柶骷曰魻栃?yīng)為其工作基礎(chǔ)?;魻柶骷哂性S多優(yōu)點(diǎn),它們的結(jié)構(gòu)牢固,體積小,重量輕,壽命長,安裝方便,功耗小,頻率高(可達(dá) 1MHZ),耐振動,不怕灰塵、油污、水汽及鹽霧等的污染或腐蝕?;顑含F(xiàn)行器件的精度高、線性度好;霍爾開關(guān)器件無觸點(diǎn)、無磨損、輸出波形清晰、無抖動、無回跳、無知重復(fù)精度高(可達(dá) Im 級)。采用了各種步長和保護(hù)措施的霍爾器件的工作溫度范圍寬,可達(dá)-55 攝氏度150 攝氏度。數(shù)據(jù)顯示模塊采用的是 LED 數(shù)碼管顯示,LCD 雖然也能實(shí)現(xiàn)顯示功能,但在距屏幕 1 米之外就無法看清數(shù)據(jù),不能滿足要求,而且在白天其對比度也不能滿足要求,因此建議采用 LED 數(shù)

8、碼管顯示。數(shù)碼管總共用了 12 個(gè),其中第一行顯示小時(shí)和分鐘,第二行第一個(gè)顯示單價(jià),后面 3 個(gè)顯示里程數(shù),最后一行顯示總價(jià)。 按鍵控制模塊使用了 3 個(gè)脈沖開關(guān),其中一個(gè)開關(guān)負(fù)責(zé)換位,另一個(gè)負(fù)責(zé)改數(shù),第三個(gè)按鍵負(fù)責(zé)切換至等待時(shí)間。三三 系統(tǒng)硬件設(shè)計(jì)系統(tǒng)硬件設(shè)計(jì)3.13.1 電源電路電源電路因?yàn)槌鲎廛嚿系碾妷簳r(shí) 12V,而芯片所需供電電壓是 5V,所以選擇LM7805 的經(jīng)典電路電源電路完成 12V 轉(zhuǎn) 5V 的目的。電源電路圖如下圖 3.1 所示:圖 3.1 電源電路圖3.23.2 單片機(jī)的最小系統(tǒng)單片機(jī)的最小系統(tǒng)單片機(jī)最小系統(tǒng)采用的是 STC89C54 芯片,STC89C54 是一種低功耗

9、、高新能 CMOS 8 為微控制器,具有 8K 在系統(tǒng)可編程 Flash 存儲器。使用 Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè) 80C51 鏟平指令和引腳完全兼容。偏上 FLASH 允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有平橋的 8 為 CPU 何在系統(tǒng)可編程 Flash,使得 STC89C54 為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。STC89C54 具有以下標(biāo)準(zhǔn)功能:8K 字節(jié) Flash,256 字節(jié) RAM,32 位 I/O口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè) 16 為定時(shí)器/計(jì)數(shù)器,一個(gè) 6 向量 2級終端結(jié)構(gòu),全雙工串行口,片內(nèi)

10、晶振及時(shí)鐘電路。另外,AT89S52 可降至0HZ 靜態(tài)邏輯操作,支持 2 中軟件可選擇節(jié)點(diǎn)模式??臻e模式下,CPU 停止工作,允許 RAM、定時(shí)器/計(jì)數(shù)器、串口、終端繼續(xù)工作。掉電保護(hù)方式下,RAM 內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。單片機(jī)最小系統(tǒng)電路圖如下圖 3.2 所示:圖 3.2 單片機(jī)最小系統(tǒng)電路圖3.33.3 DS1302DS1302 時(shí)鐘電路時(shí)鐘電路若采用單片機(jī)計(jì)時(shí),一方面需要采用計(jì)數(shù)器,占用陰間資源,另一方面需要設(shè)置終端、查詢等,同樣耗費(fèi)單片機(jī)的資源,并且使用單片機(jī)的時(shí)鐘誤差比較大,當(dāng)長時(shí)間使用后會,會出現(xiàn)很大錯(cuò)誤,而在系統(tǒng)中采用 DS

11、1302 則能很好的解決這個(gè)問題。DS1302 時(shí)鐘電路圖如圖 3.3 所示: 圖 3.3 DS1302 時(shí)鐘電路圖3.43.4 顯示電路的設(shè)計(jì)顯示電路的設(shè)計(jì)在顯示模塊需要對時(shí)間、單價(jià)、總價(jià)、路程、等待時(shí)間進(jìn)行顯示,采用的是數(shù)碼管,數(shù)碼管總共用了 12 個(gè),其中第一行顯示小時(shí)和分鐘,第二行第一個(gè)顯示單價(jià),后面 3 個(gè)顯示里程數(shù),最后一行顯示總價(jià)。顯示電路圖(一個(gè)數(shù)碼管)如下圖 3.4 所示:圖 3.4 顯示電路圖3.53.5 按鍵控制的設(shè)計(jì)按鍵控制的設(shè)計(jì)按鍵的設(shè)置是為了能夠手動更改時(shí)間和單價(jià),還有就是手動切換到等待時(shí)間的地方,按鍵采用的是脈沖按鍵。按鍵設(shè)置電路圖如圖 3.5 所示:圖 3.5

12、按鍵控制電路圖3.6 掉電保護(hù)掉電存儲單元的作用是在電源斷開的時(shí)候,存儲當(dāng)前設(shè)定的單價(jià)信息。掉電保護(hù)的芯片較多,如 AT24C02 是 ATMEL 公司的 2KB 字節(jié)的電可擦除存儲芯片,采用兩線串行的總線和單片機(jī)通訊,電壓最低可以到 2.5V,額定電流為1mA,靜態(tài)電流 10Ua(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存 40 年以上,而且采用 8 腳的 DIP 封裝,使用方便。掉電保護(hù)電路圖如下圖 3.6 所示:圖 3.6 掉電保護(hù)電路圖3.73.7 復(fù)位電路復(fù)位電路復(fù)位功能采用的是 MAX813L 芯片。MAX813L 是具有監(jiān)控電路的微處理芯片,它具有 4 個(gè)功能:1 具有獨(dú)立的

13、看門狗計(jì)時(shí)器,如果看門狗輸入在 1.6 秒內(nèi)無變化,就會產(chǎn)生看門狗輸出;2 掉電或電源電壓低于 1.25V 時(shí),產(chǎn)生掉電輸出;3 上電時(shí)能自動產(chǎn)生 200ms 寬的復(fù)位脈沖;4 具有人工復(fù)位功能,當(dāng)人工復(fù)位端輸入低電平時(shí),產(chǎn)生復(fù)位信號輸出。復(fù)位電路如圖 3.7 所示:圖 3.7 復(fù)位電路圖四、系統(tǒng)軟件設(shè)計(jì)四、系統(tǒng)軟件設(shè)計(jì)4.14.1 主程序設(shè)計(jì)主程序設(shè)計(jì)程序的難度主要就是在數(shù)碼管的顯示和外部脈沖的采集部分,分別采用74LS273 芯片對數(shù)碼管進(jìn)行段選,使數(shù)碼管顯示對應(yīng)的數(shù),另外使用 74LS154對數(shù)碼管進(jìn)行位選,選擇哪個(gè)數(shù)碼管亮,采用的是動態(tài)顯示。還有外部脈沖的收集,需要對里程數(shù)進(jìn)行顯示,所

14、以必須要先進(jìn)行脈沖的采集。程序流程圖如圖 4.1 所示:圖 4.1 程序流程圖4.24.2 子程序設(shè)計(jì)子程序設(shè)計(jì)4.2.14.2.1 DS1302DS1302 子程序子程序4.2.14.2.1 DS1302DS1302 子程序流程圖子程序流程圖顯示單價(jià)、總價(jià)、路程、時(shí)間等數(shù)據(jù),循環(huán)掃描進(jìn)行顯示。(如果在一分鐘內(nèi)沒有脈沖,開啟終端,顯示秒分子程序。DS1302 子程序流程圖如 4.2.1 所示:開始寫入實(shí)參數(shù) addrCE=1 SCLK=0I=0取 ADDR 低位Addr 右移一位Sclk 上升沿是否是上升沿Y等待上升沿Ni+;i8 ?結(jié)束YN圖 4.2.1 DS1302 子程序流程圖4.2.2

15、4.2.2 顯示子程序顯示子程序void sett() /顯示等待時(shí)間及單價(jià)、總價(jià)、路程子程序TAB0=Read1302(0 x83)/10;TAB1=Read1302(0 x83)%10;TAB7=Read1302(0 x81)/10;TAB6=Read1302(0 x81)%10;TAB8=3;TAB2=Coo/100;TAB3=Coo/10%10;TAB4=Coo%10;if(TAB4=3&TAB2=0&TAB3=0)TAB11=8;elseTAB11=(8+(Coo-3)*TAB8)%10;TAB5=TAB2*TAB8/10;TAB9=Coo/100*TAB8+Coo%

16、100*TAB8/100;TAB10=(Coo/10*TAB8+Coo%10*TAB8/10)%10;void mmm() /顯示時(shí)間子程序 TAB0=Read1302(0 x85)/10; TAB1=Read1302(0 x85)%10; TAB7=Read1302(0 x83)/10; TAB6=Read1302(0 x83)%10;TAB8=3;TAB11=(8+(Coo-3)*TAB8)%10;TAB5=TAB2*TAB8/10;TAB9=Coo/100*TAB8+Coo%100*TAB8/100;TAB10=(Coo/10*TAB8+Coo%10*TAB8/10)%10;void m

17、m() /非計(jì)價(jià)時(shí)的顯示時(shí)間TAB0=Read1302(0 x85)/10;TAB1=Read1302(0 x85)%10;TAB7=Read1302(0 x83)/10;TAB6=Read1302(0 x83)%10;TAB8=3;TAB2=Coo/100;TAB3=Coo/10%10;TAB4=Coo%10;if(TAB4 12 ?結(jié)束YN圖 4.2.2 顯示子程序流程圖4.34.3 修改時(shí)間子程序修改時(shí)間子程序修改 TAB 數(shù)組里的前 5 位數(shù)據(jù),分別為小時(shí)、分鐘、單價(jià).五、調(diào)試及性能分析五、調(diào)試及性能分析5.15.1調(diào)試步驟調(diào)試步驟5.1.15.1.1 硬件調(diào)試硬件調(diào)試錯(cuò)誤 1:LM7

18、805 封裝時(shí) 2 腳和 3 腳弄混解決辦法:1、將 LM78052 腳和 3 腳手工矯正 2、利用飛線重新手工焊接錯(cuò)誤 2:進(jìn)行原理圖設(shè)計(jì)時(shí),電源網(wǎng)絡(luò)標(biāo)號不一致(74LS14、74HC154 電源網(wǎng)絡(luò)標(biāo)號與其他的不一致)解決辦法:利用飛線,將錯(cuò)誤的網(wǎng)絡(luò)標(biāo)號和正確的網(wǎng)絡(luò)標(biāo)號進(jìn)行手工焊接。錯(cuò)誤 3:1K*9 排阻焊反解決辦法:手工拔出,重新焊接錯(cuò)誤四:在焊接時(shí),由于焊接時(shí)間過長,造成三極管燒壞解決辦法:手工拔出重新焊接錯(cuò)誤 5:有些器件焊接次數(shù)過于頻繁,造成印刷板上焊盤和導(dǎo)線脫落解決辦法:利用飛線將對應(yīng)的網(wǎng)絡(luò)標(biāo)號進(jìn)行連接5.1.25.1.2 軟件調(diào)試:軟件調(diào)試:在軟件編程時(shí),應(yīng)充分利用原理圖,不

19、然會在編程時(shí)導(dǎo)致硬件與軟件不能對應(yīng)起來,使程序無法實(shí)現(xiàn)功能,還有在編程時(shí)子程序的名稱應(yīng)與其功能對應(yīng),否則會使別人在讀程序的時(shí)候不能及時(shí)理解程序含義,而且在軟件調(diào)試時(shí)邏輯一定要清晰,不然在找錯(cuò)時(shí)會浪費(fèi)很多時(shí)間,5.25.2 性能分析性能分析通過軟件調(diào)試后,最終能實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘顯示、里程數(shù)的顯示、單價(jià)的顯示、總價(jià)的顯示、時(shí)間的調(diào)整、等待時(shí)間的顯示。時(shí)間顯示模塊使用的是時(shí)鐘芯片 DS1302,它精確度高,功能強(qiáng)大,使用它能降低單片機(jī)的負(fù)荷,減小誤差。里程數(shù)收集模塊由于條件限制,所以我們使用一個(gè)外部脈沖信號作為里程數(shù)的收集,用一個(gè)脈沖表示一公里,最大的里程數(shù)可達(dá) 256 公里。電源模塊部分由于經(jīng)驗(yàn)問題,

20、沒有在 PCB 板上加上串口和 USB 口,使得電源不穩(wěn),只能用導(dǎo)線在外部加一個(gè) 5V 電壓,而且由于 7805 的封裝引腳分配有錯(cuò)誤,導(dǎo)致在最初調(diào)試的時(shí)候芯片燒壞,所以最終放棄 7805 的電壓轉(zhuǎn)換,而直接使用+5V 電壓。顯示模塊使用 LED 數(shù)碼管,通過軟件調(diào)試,12 個(gè)數(shù)碼管能顯示時(shí)間、總路程、單價(jià)、總價(jià)及等待時(shí)間的自動切換。六、心得體會六、心得體會由于初次進(jìn)行硬件電路設(shè)計(jì),出現(xiàn)了很多簡單又致命的錯(cuò)誤(見硬件調(diào)試)。5 個(gè)錯(cuò)誤在一塊線路密集并且已經(jīng)焊好器件的電路板上無疑是大海撈針。像器件焊反之類的錯(cuò)誤還比較好排除。而器件損壞和網(wǎng)絡(luò)標(biāo)號不一致這樣的錯(cuò)誤就很讓人頭疼。僅僅只是網(wǎng)絡(luò)標(biāo)號不一致

21、這個(gè)錯(cuò)誤就讓我們整整測試了一天才發(fā)現(xiàn)。所以下次設(shè)計(jì)硬件電路的時(shí)候一定要找?guī)讉€(gè)人仔細(xì)檢查電路圖,不能再輕易犯這樣的錯(cuò)誤。像印刷板上導(dǎo)線斷裂這樣的錯(cuò)誤也比較難找。而這種錯(cuò)誤往往是焊接時(shí)溫度過高或者是焊接過于頻繁造成的,所以以后焊接的時(shí)候一定不會再犯這樣的錯(cuò)誤了。而且由于當(dāng)初設(shè)計(jì) USB 口和串行口,為軟件調(diào)試造成了很大的麻煩(每天不停地拔單片機(jī))。再做學(xué)生實(shí)驗(yàn)的時(shí)候不能太過于追求趨近于真實(shí)產(chǎn)品。過于追求真實(shí)會讓你的實(shí)驗(yàn)過程變得極其困難。真的是后悔不已。當(dāng)初想利用以前做的單片機(jī)最小系統(tǒng)開發(fā)板上的串行口進(jìn)行程序下載,但是到真正實(shí)行的時(shí)候在發(fā)現(xiàn)并不是那么回事。由于對單片機(jī)的要求達(dá)不到,雖然理論上天衣無縫

22、,但實(shí)際上根本不可能實(shí)現(xiàn)。雖然出租車上提供的電源是 12V,即便在實(shí)驗(yàn)板上設(shè)計(jì)了電源電路也應(yīng)該再加上一個(gè) USB 口提供 5V 電源。因?yàn)槌嗽趯?shí)驗(yàn)室其他地方是并不太容易找到 12V 電源。由于對 USB 口的省略,對軟件調(diào)試工作造成了很大的麻煩。七、參考文獻(xiàn)七、參考文獻(xiàn)1 徐維祥、劉旭敏. 單片微型機(jī)原理及應(yīng)用. 大連:大連理工大學(xué)出版社,1996戴勝華,蔣大明單片機(jī)原理與應(yīng)用北京:清華大學(xué)出版社2005李剛新概念單片機(jī)教程天津:天津大學(xué)出版社2004王宗和單片機(jī)實(shí)驗(yàn)與綜合訓(xùn)練北京高等教育出版社 2000八、附錄八、附錄附錄附錄 1 1、程序清單、程序清單#includereg51.h#in

23、clude intrins.h#define uchar unsigned charuchar tmp;uchar det;uchar Coo;int m;int f;uchar code DispTab=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xc0; /字形碼uchar TAB24;sbit P00=P00;sbit P01=P01;sbit P02=P02;sbit P03=P03;sbit P04=P04;sbit P05=P05;sbit P10=P10;sbit P27=P27;sbit P14=P

24、14;sbit SCLK =P13; /*DS1302 的 SCLK 腳脈沖*/sbit DIO=P12; /*DS1302 的 IO 腳數(shù)據(jù)*/sbit CE=P11; /*DS1302 的 RST 腳片選*/sbit P15=P15;sbit P23=P23;sbit P21=P21;sbit P16=P16;sbit P35=P35;sbit P22=P22;sbit P17=P17;sbit P20=P20;sbit P26=P26;sbit P24=P24;sbit ACC7=ACC7;sbit ACC0=ACC0;void time() interrupt 1 /等待計(jì)時(shí)中斷int

25、 i,j;TH0=0 x15;TL0=0 xa0;i+;if(i=100)i=0;j+;if(j=10)j=0;f=Coo;void mDelay(unsigned int Delay) /延時(shí)子程序 unsigned int I;for(;Delay0;Delay-) for(I=0;I0; i- ) /循環(huán) 8 次移位 temp = addr; DIO = (bit)(temp&0 x01); /每次傳輸?shù)妥止?jié) addr = 1; SCLK = 0; /右移一位 SCLK = 1; /發(fā)送數(shù)據(jù) for ( i=8; i0; i- ) temp = dat; DIO = (bit)(

26、temp&0 x01); dat = 1; SCLK = 0; SCLK = 1; CE = 0; unsigned char Read1302 ( unsigned char addr ) /數(shù)據(jù)讀取子程序 unsigned char i,temp,dat1,dat2; CE=0; SCLK=0; CE = 1; /發(fā)送地址 for ( i=8; i0; i- ) /循環(huán) 8 次移位 temp = addr; DIO = (bit)(temp&0 x01); /每次傳輸?shù)妥止?jié) addr = 1; SCLK = 0; SCLK = 1; /右移一位 /讀取數(shù)據(jù) for ( i=

27、8; i0; i- ) ACC7=DIO; ACC=1; SCLK = 1; SCLK = 0; CE=0; dat1=ACC; dat2=dat1/16; /數(shù)據(jù)進(jìn)制轉(zhuǎn)換 dat1=dat1%16; /十六進(jìn)制轉(zhuǎn)十進(jìn)制 dat1=dat1+dat2*10; return (ACC);void Initial() /初始化 DS1302 Write1302 (0 x8E,0 x00); /禁止寫保護(hù) Write1302 (0 x80,0 x00); /秒位初始化 Write1302 (0 x82,0 x20); /分鐘初始化 Write1302 (0 x84,0 x10); Write1302

28、 (0 x86,0 x23); Write1302 (0 x88,0 x05); Write1302 (0 x8c,0 x10); /小時(shí)初始化 Write1302 (0 x8E,0 x80); /允許寫保護(hù)void set() /修改時(shí)間 Write1302 (0 x8E,0 x00); /禁止寫保護(hù) Write1302 (0 x82,TAB7*16+TAB6); /分鐘初始化 Write1302 (0 x84,TAB0*16+TAB1); Write1302 (0 x8E,0 x80);void ss()/顯示子程序int i;uchar *p;p=TAB;for(i=0;i1;i+)de

29、t=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=0;P15=0;P16=0;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=1;P15=0;P16=0;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=0;P15=1;P16=0;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=1;P15=1;P16=0;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P

30、20=0;P20=1;P14=0;P15=0;P16=1;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=1;P15=0;P16=1;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=0;P15=1;P16=1;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=1;P15=1;P16=1;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=0;P15=0;P16=0

31、;P17=1;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=1;P15=0;P16=0;P17=1;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=0;P15=1;P16=0;P17=1;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=1;P15=1;P16=0;P17=1;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=0;P15=0;P16=1;P17=1;p+;void sett() /顯示等待時(shí)

32、間及單價(jià)、總價(jià)、路程子程序TAB0=Read1302(0 x83)/10;TAB1=Read1302(0 x83)%10;TAB7=Read1302(0 x81)/10;TAB6=Read1302(0 x81)%10;TAB8=3;TAB2=Coo/100;TAB3=Coo/10%10;TAB4=Coo%10;if(TAB4=3&TAB2=0&TAB3=0)TAB11=8;elseTAB11=(8+(Coo-3)*TAB8)%10;TAB5=TAB2*TAB8/10;TAB9=Coo/100*TAB8+Coo%100*TAB8/100;TAB10=(Coo/10*TAB8+Co

33、o%10*TAB8/10)%10;void mmm() /顯示時(shí)間子程序 TAB0=Read1302(0 x85)/10; TAB1=Read1302(0 x85)%10; TAB7=Read1302(0 x83)/10; TAB6=Read1302(0 x83)%10;TAB8=3;void qie(int j) /修改時(shí)間、單價(jià)子程序uchar i;switch(j) case 4:ss();if(P22=0)for(i=0;i!=1;)i=P22;ss();TAB8+;if(TAB8=10)TAB8=0;break;case 3:ss();if(P22=0)for(i=0;i!=1;)i

34、=P22;ss();TAB6+;if(TAB6=10)TAB6=0;break;case 2:ss();if(P22=0)for(i=0;i!=1;)i=P22;ss();TAB7+;if(TAB7=6)TAB7=0;break;case 1:ss();if(P22=0)for(i=0;i!=1;)i=P22;ss();TAB1+;if(TAB0=2&TAB1=4)|TAB1=10)TAB1=0;break;case 0:ss();if(P22=0)for(i=0;i!=1;)i=P22;ss();TAB0+;if(TAB0=3)TAB0=0;break; default:break;

35、Void die() /修改單價(jià)位、時(shí)間位子程序int x;for(m=0;m5;)ss();qie(m);if(P21=0)for(x=0;x1;)ss();x=P21;m+;set();void mm() /非計(jì)價(jià)時(shí)的顯示時(shí)間TAB0=Read1302(0 x85)/10;TAB1=Read1302(0 x85)%10;TAB7=Read1302(0 x83)/10;TAB6=Read1302(0 x83)%10;TAB8=3;TAB2=Coo/100;TAB3=Coo/10%10;TAB4=Coo%10;if(TAB4=3&TAB2=0&TAB3=0)TAB11=8;el

36、seTAB11=(8+(Coo-3)*TAB8)%10;TAB5=TAB2*TAB8/10;TAB9=Coo/100*TAB8+Coo%100*TAB8/100;TAB10=(Coo/10*TAB8+Coo%10*TAB8/10)%10;void count() /計(jì)價(jià)子程序int x;EA=1;if(f=Coo)sett();ss();elsemm();if(P35=0)for(x=0;x1;)ss();x=P35;Coo+;void main()int i,j;TMOD=0 x01;TH0=0 x15;TL0=0 xa0;TR0=1;ET0=1;Initial();P27=0;for(;)

37、if(P23=0)for(i=0;i1;)ss();i=P23;for(j=0;j1;)count();ss();if(P23=0)for(i=0;i1;)ss();i=P23;EA=0;j+;TAB2=TAB3=TAB11=TAB5=TAB9=TAB10=TAB4=0; else mmm();ss();if(P21=0)for(i=0;i1;)ss();i=P21;die();附錄附錄 2 2 系統(tǒng)硬件電路圖系統(tǒng)硬件電路圖IN13OUT2GNDU6LM78L05ACH220R3GNDGND+5OUTA01A12A23GND4SDA5SCL6WP7VCC8U7AT24C02GND+5+5MR1VCC2GND3PFI4PFO5WDI6RST7WDO8U9MAX813GNDC710uF1K+5GND4K7R75K1R6P25P26P25P26X12X23VCC21GND4RST5I/O6SCLK7VCC18U10DS1302Y232.768khzGND+50.1nfC812345678910DS1CON10abcdefgdpV112345678910DS2CON10abcdefgdpV212345678910DS6CON10abcdefgdpV312345678910DS7CON10abcdefgdpV412345678910DS8CON10abcdefgdpV512345678

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論