




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 日月28完成日期:2010年12 電子信息工程系系: 通信工程業(yè):專(zhuān) 班071級(jí):班 出租車(chē)計(jì)價(jià)器設(shè)計(jì)題目: 王勉謝明七 學(xué)生姓名: 董玉華、許爽指導(dǎo)教師: 目 錄 一、設(shè)計(jì)任務(wù)和性能指標(biāo) . 3 . 31.1設(shè)計(jì)任務(wù) . 31.2性能指標(biāo)二、設(shè)計(jì)方案 . 4 . 42.1任務(wù)分析 . 42.2系統(tǒng)設(shè)計(jì)三 系統(tǒng)硬件設(shè)計(jì) . 6 . 6電源電路3.1 . 6單片機(jī)的最小系統(tǒng)3.2 . 7時(shí)鐘電路3.3 DS1302 . 7顯示電路的設(shè)計(jì)3.4 . 8按鍵控制的設(shè)計(jì)3.5 . 9復(fù)位電路3.7四、系統(tǒng)軟件設(shè)計(jì) . 11 . 114.1主程序設(shè)計(jì) . 12子程序設(shè)計(jì) 4.2 . 12子程序 4.2
2、.1 DS1302 . 12子程序流程圖4.2.1 DS1302 . 14 4.2.2 顯示子程序 . 15 4.2.2 顯示子程序流程圖 . 17修改時(shí)間子程序4.3 五、調(diào)試及性能分析 . 18 . 18 5.1 調(diào)試步驟 . 18硬件調(diào)試5.1.1 . 185.1.2軟件調(diào)試: . 18性能分析5.2六、心得體會(huì) . 20 七、參考文獻(xiàn) . 20 八、附錄 . 21 . 21 附錄1、程序清單 . 312 附錄系統(tǒng)硬件電路圖 一、設(shè)計(jì)任務(wù)和性能指標(biāo) 1.1設(shè)計(jì)任務(wù) 出租車(chē)計(jì)價(jià)器是乘客與司機(jī)雙方的交易準(zhǔn)則,它是出租車(chē)行業(yè)發(fā)展的重要標(biāo)志,是出租車(chē)中最重要的工具。它關(guān)系著交易雙方的利益。具有良
3、好性能的計(jì)價(jià)器無(wú)論是對(duì)廣大出 租車(chē)司機(jī)朋友還是乘客來(lái)說(shuō)都是很必要的。出租車(chē)計(jì)價(jià)器的主要功能是計(jì)價(jià)顯示、時(shí)鐘顯示、根據(jù)白天、黑夜、途中等待來(lái)調(diào)節(jié)營(yíng)運(yùn)參數(shù)、計(jì)量數(shù)據(jù)查詢等。要求用Protel 畫(huà)出系統(tǒng)的電路原理圖(要求以最少組件,實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)所要求的功能),印刷電路板(要求布局合理,線路清晰),繪出程序流程圖,并給出程序清單(要求思路清晰,盡量簡(jiǎn)潔,主程序和子程序分開(kāi),使程序有較強(qiáng)的 可讀性)。1.2性能指標(biāo) 1. 開(kāi)始收費(fèi));>10min不同情況具有不同收費(fèi)標(biāo)準(zhǔn):白天、晚上、途中等待(2. 數(shù)據(jù)輸出:?jiǎn)蝺r(jià)輸出、路程輸出、總金額輸出;3. 晚上切換、復(fù)位;按鍵:?jiǎn)?dòng)計(jì)時(shí)開(kāi)關(guān)、數(shù)據(jù)顯示切換、白
4、天/4. 能手動(dòng)進(jìn)行修改單價(jià),但單價(jià)設(shè)定需密碼進(jìn)入。 二、設(shè)計(jì)方案 任務(wù)分析2.1 出租車(chē)計(jì)價(jià)器基本功能部分是根據(jù)里程數(shù)來(lái)完成總金額的輸出。實(shí)現(xiàn)方法有兩種。所示。采用傳感器件,輸出脈沖2.1方案一:采用數(shù)字電路控制。其原理方框圖如圖信號(hào),經(jīng)過(guò)放大整形作為移位寄存器的脈沖,實(shí)現(xiàn)計(jì)價(jià),但是考慮到這種電路過(guò)于簡(jiǎn)單, 性能不夠穩(wěn)定,而且不能調(diào)節(jié)單價(jià),也不能根據(jù)天氣調(diào)節(jié)計(jì)費(fèi)標(biāo)準(zhǔn),電路不夠?qū)嵱谩=痤~顯電源電路及示保護(hù)電路移位寄存器單價(jià)顯里程傳感器電路示 數(shù)字電路實(shí)現(xiàn)框圖圖2.1 方案二:采用單片機(jī)控制。利用單片機(jī)豐富的IO端口,及其控制的靈活性,實(shí)現(xiàn)基本的里程計(jì)價(jià)功能和價(jià)格調(diào)節(jié)、時(shí)鐘顯示功能。本方案有較大
5、的活動(dòng)空間,不但能實(shí)現(xiàn)所要求的功能而且能在很大的程度上擴(kuò)展功能,而且還可以方便的對(duì)系統(tǒng)進(jìn)行升級(jí),所以我們 采用后一種方案。2.2系統(tǒng)設(shè)計(jì) 鍵盤(pán)電路 單片機(jī) 掉電保護(hù) 里程輸入 i+;i>8 ? Y 結(jié)束P > 12 ? Y 結(jié)束 X00011 測(cè)量溫度 X00101 測(cè)量濕度顯示電路 圖2.1電路系統(tǒng)構(gòu)成框圖 主控芯片使用51系列AT89C52單片機(jī),采用高性能的靜態(tài)80C51設(shè)計(jì),由先進(jìn)工藝制造,并帶有非易失性Flash程序存儲(chǔ)器。它是一種高性能、低功耗的8位COMS微處理 芯片,市場(chǎng)應(yīng)用最多。時(shí)鐘芯片使用美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片DS1
6、302。采用DS1302作為主要計(jì)時(shí)芯片、可以做到計(jì)時(shí)準(zhǔn)確。更重要的是,DS1302可以在很小的電流的后備電源(2.55.5V電源,在2.5V時(shí)耗電小于300nA)下繼續(xù)計(jì)時(shí),并可編程選擇多種充電電流對(duì)后備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電。采用串行數(shù)據(jù)傳輸,與單片機(jī)硬件連接簡(jiǎn)單,如果使用時(shí)鐘芯片DS12887,將采用并行數(shù)據(jù) 。DS1302傳輸,占用更多的硬件資源。因此為節(jié)省單片機(jī)端口,時(shí)鐘芯片采用它們可以檢測(cè)磁場(chǎng)及其變化,可在各種與磁場(chǎng)有關(guān)的場(chǎng)合中使用。霍爾器件以霍爾效應(yīng)為其工作基礎(chǔ)。霍爾器件具有許多優(yōu)點(diǎn),它們的結(jié)構(gòu)牢固,體積小,重量輕,壽命長(zhǎng),安裝方便,功耗小,頻率高(可達(dá)1M
7、HZ),耐振動(dòng),不怕灰塵、油污、水汽及鹽霧等的污染或腐蝕。活兒現(xiàn)行器件的精度高、線性度好;霍爾開(kāi)關(guān)器件無(wú)觸點(diǎn)、無(wú)磨損、輸出波形清晰、無(wú)抖動(dòng)、無(wú)回跳、無(wú)知重復(fù)精度高(可達(dá)Im級(jí))。采用了各種步長(zhǎng)和保護(hù)措施 攝氏度。攝氏度150的霍爾器件的工作溫度范圍寬,可達(dá)-55數(shù)據(jù)顯示模塊采用的是LED數(shù)碼管顯示,LCD雖然也能實(shí)現(xiàn)顯示功能,但在距屏幕1M之外就無(wú)法看清數(shù)據(jù),不能滿足要求,而且在白天其對(duì)比度也不能滿足要求,因此建議采用LED數(shù)碼管顯示。數(shù)碼管總共用了12個(gè),其中第一行顯示小時(shí)和分鐘,第二行第 個(gè)顯示里程數(shù),最后一行顯示總價(jià)。一個(gè)顯示單價(jià),后面3按鍵控制模塊使用了3個(gè)脈沖開(kāi)關(guān),其中一個(gè)開(kāi)關(guān)負(fù)責(zé)換
8、位,另一個(gè)負(fù)責(zé)改數(shù),第三 個(gè)按鍵負(fù)責(zé)切換至等待時(shí)間。 三 系統(tǒng)硬件設(shè)計(jì) 3.1電源電路 因?yàn)槌鲎廛?chē)上的電壓時(shí)12V,而芯片所需供電電壓是5V,所以選擇LM7805的經(jīng)典電 所示:3.1轉(zhuǎn)12V5V的目的。電源電路圖如下圖路電源電路完成 電源電路圖3.1圖3.2單片機(jī)的最小系統(tǒng) 單片機(jī)最小系統(tǒng)采用的是STC89C54芯片,STC89C54是一種低功耗、高新能CMOS 8為微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用Atmel公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51鏟平指令和引腳完全兼容。偏上FLASH允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有平橋的8為CPU
9、何在系統(tǒng)可編程Flash, 為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。使得STC89C54STC89C54具有以下標(biāo)準(zhǔn)功能:8K字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門(mén)狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16為定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)終端結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52可降至0HZ靜態(tài)邏輯操作,支持2中軟件可選擇節(jié)點(diǎn)模式。空閑模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、終端繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到 所示:3.2下一個(gè)中斷或硬件復(fù)位為止。單片機(jī)最小系統(tǒng)電路圖如下圖 單片機(jī)
10、最小系統(tǒng)電路圖3.2圖 3.3 DS1302時(shí)鐘電路 若采用單片機(jī)計(jì)時(shí),一方面需要采用計(jì)數(shù)器,占用陰間資源,另一方面需要設(shè)置終端、查詢等,同樣耗費(fèi)單片機(jī)的資源,并且使用單片機(jī)的時(shí)鐘誤差比較大,當(dāng)長(zhǎng)時(shí)間使用后會(huì),會(huì)出現(xiàn)很大錯(cuò)誤,而在系統(tǒng)中采用DS1302則能很好的解決這個(gè)問(wèn)題。DS1302時(shí)鐘 所示:電路圖如圖3.3 時(shí)鐘電路圖3.3 DS1302圖3.4顯示電路的設(shè)計(jì) 在顯示模塊需要對(duì)時(shí)間、單價(jià)、總價(jià)、路程、等待時(shí)間進(jìn)行顯示,采用的是數(shù)碼管,數(shù)碼管總共用了12個(gè),其中第一行顯示小時(shí)和分鐘,第二行第一個(gè)顯示單 個(gè)顯示里程數(shù),最后一行顯示總價(jià)。3價(jià),后面 所示:3.4顯示電路圖(一個(gè)數(shù)碼管)如下圖
11、 顯示電路圖3.4 圖 3.5按鍵控制的設(shè)計(jì) 按鍵的設(shè)置是為了能夠手動(dòng)更改時(shí)間和單價(jià),還有就是手動(dòng)切換到等待時(shí)間的地方,按鍵采用的是脈沖按鍵。 所示:3.5按鍵設(shè)置電路圖如圖 按鍵控制電路圖圖3.5 掉電保護(hù)3.6掉電存儲(chǔ)單元的作用是在電源斷開(kāi)的時(shí)候,存儲(chǔ)當(dāng)前設(shè)定的單價(jià)信息。掉電保護(hù)的芯片較多,如AT24C02 是ATMEL 公司的2KB 字節(jié)的電可擦除存儲(chǔ)芯片,采用兩線串行的總線和單片機(jī)通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10Ua(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存40年以上,而且采用8 腳的DIP 封裝,使用方便。掉電 所示:保護(hù)電路圖如下圖3.6 掉電保護(hù)
12、電路圖3.6 圖 3.7復(fù)位電路 復(fù)位功能采用的是MAX813L芯片。MAX813L是具有監(jiān)控電路的微處理芯片,它具有4個(gè)功能:1具有獨(dú)立的看門(mén)狗計(jì)時(shí)器,如果看門(mén)狗輸入在1.6秒內(nèi)無(wú)變化,就會(huì)產(chǎn)生看門(mén)狗輸出;2掉電或電源電壓低于1.25V時(shí),產(chǎn)生掉電輸出;3上電時(shí)能自動(dòng)產(chǎn)生200ms寬的 具有人工復(fù)位功能,當(dāng)人工復(fù)位端輸入低電平時(shí),產(chǎn)生復(fù)位信號(hào)輸出。4復(fù)位脈沖; 所示:復(fù)位電路如圖3.7 復(fù)位電路圖3.7圖 四、系統(tǒng)軟件設(shè)計(jì) 4.1主程序設(shè)計(jì) 程序的難度主要就是在數(shù)碼管的顯示和外部脈沖的采集部分,分別采用74LS273芯片對(duì)數(shù)碼管進(jìn)行段選,使數(shù)碼管顯示對(duì)應(yīng)的數(shù),另外使用74LS154對(duì)數(shù)碼管進(jìn)
13、行位選,選擇哪個(gè)數(shù)碼管亮,采用的是動(dòng)態(tài)顯示。還有外部脈沖的收集,需要對(duì)里程數(shù)進(jìn)行顯示,所以 必須要先進(jìn)行脈沖的采集。 所示:程序流程圖如圖4.1 程序流程圖4.1圖4.2 子程序設(shè)計(jì) 4.2.1 DS1302子程序 4.2.1 DS1302子程序流程圖 顯示單價(jià)、總價(jià)、路程、時(shí)間等數(shù)據(jù),循環(huán)掃描進(jìn)行顯示。(如果在一分鐘內(nèi)沒(méi)有脈 沖,開(kāi)啟終端,顯示秒分子程序。 所示:4.2.1子程序流程圖如DS1302 開(kāi)始addr 寫(xiě)入實(shí)參數(shù)CE=1 SCLK=0 I=0 ADDR低位取 Addr右移一位是否是上升N 沿N Y 上升沿等待上升沿Sclk 子程序流程圖圖4.2.1 DS1302 4.2.2 顯示
14、子程序 顯示等待時(shí)間及單價(jià)、總價(jià)、路程子程序void sett() / 。TAB0=Read1302(0x83)/10 。TAB1=Read1302(0x83)_x0010_ 。TAB7=Read1302(0x81)/10 。TAB8=3TAB6=Read1302(0x81)_x0010_。 。TAB3=Coo/10_x0010_TAB2=Coo/100。 。TAB4=Coo_x0010_ if(TAB4<=3&&TAB2=0&&TAB3=0) 。TAB11=8 else TAB11=(8+(Coo-3)*TAB8)_x0010_。 。TAB5=TAB2*
15、TAB8/10 。TAB9=Coo/100*TAB8+Coo_x0010_0*TAB8/100 TAB10=(Coo/10*TAB8+Coo_x0010_*TAB8/10)_x0010_。 顯示時(shí)間子程序void mmm() / 。 TAB0=Read1302(0x85)/10 。 TAB1=Read1302(0x85)_x0010_ 。 TAB7=Read1302(0x83)/10 TAB8=3。 TAB6=Read1302(0x83)_x0010_ TAB11=(8+(Coo-3)*TAB8)_x0010_。 。TAB5=TAB2*TAB8/10 。TAB9=Coo/100*TAB8+Co
16、o_x0010_0*TAB8/100 。TAB10=(Coo/10*TAB8+Coo_x0010_*TAB8/10)_x0010_ 非計(jì)價(jià)時(shí)的顯示時(shí)間void mm() / 。TAB0=Read1302(0x85)/10 。TAB1=Read1302(0x85)_x0010_ 。TAB7=Read1302(0x83)/10 。TAB8=3TAB6=Read1302(0x83)_x0010_。 。TAB3=Coo/10_x0010_TAB2=Coo/100。 。TAB4=Coo_x0010_ if(TAB4<=3&&TAB2=0&&TAB3=0) TAB11
17、=8。 else 。TAB11=(8+(Coo-3)*TAB8)_x0010_ 。TAB5=TAB2*TAB8/10 。TAB9=Coo/100*TAB8+Coo_x0010_0*TAB8/100 。TAB10=(Coo/10*TAB8+Coo_x0010_*TAB8/10)_x0010_4.2.2 顯示子程序流程圖 :4.2.2顯示子程序流程圖如圖所示 開(kāi)始*p 定義指針TAB 將指針指向數(shù)組 值displaytab數(shù)組位賦DET將將P賦值給DET,給賦TMP值將P0, N 顯示子程序流程圖圖4.2.2 4.3 修改時(shí)間子程序 修改TAB數(shù)組里的前5位數(shù)據(jù),分別為小時(shí)、分鐘、單價(jià). 五、調(diào)試
18、及性能分析 5.1 調(diào)試步驟 5.1.1硬件調(diào)試 腳弄混32腳和錯(cuò)誤1:LM7805封裝時(shí) 腳手工矯正3LM78052腳和解決辦法:1、將 、利用飛線重新手工焊接 2錯(cuò)誤2:進(jìn)行原理圖設(shè)計(jì)時(shí),電源網(wǎng)絡(luò)標(biāo)號(hào)不一致(74LS14、74HC154電源網(wǎng)絡(luò)標(biāo)號(hào) 與其他的不一致) 解決辦法:利用飛線,將錯(cuò)誤的網(wǎng)絡(luò)標(biāo)號(hào)和正確的網(wǎng)絡(luò)標(biāo)號(hào)進(jìn)行手工焊接。 排阻焊反1K*9錯(cuò)誤3: 解決辦法:手工拔出,重新焊接 錯(cuò)誤四:在焊接時(shí),由于焊接時(shí)間過(guò)長(zhǎng),造成三極管燒壞 解決辦法:手工拔出重新焊接 :有些器件焊接次數(shù)過(guò)于頻繁,造成印刷板上焊盤(pán)和導(dǎo)線脫落5錯(cuò)誤 解決辦法:利用飛線將對(duì)應(yīng)的網(wǎng)絡(luò)標(biāo)號(hào)進(jìn)行連接5.1.2軟件調(diào)試:
19、 在軟件編程時(shí),應(yīng)充分利用原理圖,不然會(huì)在編程時(shí)導(dǎo)致硬件與軟件不能對(duì)應(yīng)起來(lái),使程序無(wú)法實(shí)現(xiàn)功能,還有在編程時(shí)子程序的名稱(chēng)應(yīng)與其功能對(duì)應(yīng),否則會(huì)使別人在讀程序的時(shí)候不能及時(shí)理解程序含義,而且在軟件調(diào)試時(shí)邏輯一定要清晰,不然在找錯(cuò)時(shí)會(huì)浪 費(fèi)很多時(shí)間,5.2性能分析 通過(guò)軟件調(diào)試后,最終能實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘顯示、里程數(shù)的顯示、單價(jià)的顯示、總價(jià)的顯 示、時(shí)間的調(diào)整、等待時(shí)間的顯示。時(shí)間顯示模塊使用的是時(shí)鐘芯片DS1302,它精確度高,功能強(qiáng)大,使用它能降低單片 機(jī)的負(fù)荷,減小誤差。里程數(shù)收集模塊由于條件限制,所以我們使用一個(gè)外部脈沖信號(hào)作為里程數(shù)的收集, 公里。256用一個(gè)脈沖表示一公里,最大的里程數(shù)可達(dá)電
20、源模塊部分由于經(jīng)驗(yàn)問(wèn)題,沒(méi)有在PCB板上加上串口和USB口,使得電源不穩(wěn), 只能用導(dǎo)線在外部加一個(gè)5V電壓,而且由于7805的封裝引腳分配有錯(cuò)誤,導(dǎo)致在最初調(diào) 電壓。+5V試的時(shí)候芯片燒壞,所以最終放棄7805的電壓轉(zhuǎn)換,而直接使用顯示模塊使用LED數(shù)碼管,通過(guò)軟件調(diào)試,12個(gè)數(shù)碼管能顯示時(shí)間、總路程、單價(jià)、總價(jià)及等待時(shí)間的自動(dòng)切換。 六、心得體會(huì) 由于初次進(jìn)行硬件電路設(shè)計(jì),出現(xiàn)了很多簡(jiǎn)單又致命的錯(cuò)誤(見(jiàn)硬件調(diào)試)。5個(gè)錯(cuò)誤在一塊線路密集并且已經(jīng)焊好器件的電路板上無(wú)疑是大海撈針。像器件焊反之類(lèi)的錯(cuò)誤 還比較好排除。而器件損壞和網(wǎng)絡(luò)標(biāo)號(hào)不一致這樣的錯(cuò)誤就很讓人頭疼。僅僅只是網(wǎng)絡(luò)標(biāo)號(hào)不一致這個(gè)錯(cuò)誤
21、就讓我們整整測(cè)試了一天才發(fā)現(xiàn)。所以下次設(shè)計(jì)硬 件電路的時(shí)候一定要找?guī)讉€(gè)人仔細(xì)檢查電路圖,不能再輕易犯這樣的錯(cuò)誤。像印刷板上導(dǎo)線斷裂這樣的錯(cuò)誤也比較難找。而這種錯(cuò)誤往往是焊接時(shí)溫度過(guò)高或者 是焊接過(guò)于頻繁造成的,所以以后焊接的時(shí)候一定不會(huì)再犯這樣的錯(cuò)誤了。而且由于當(dāng)初設(shè)計(jì)USB口和串行口,為軟件調(diào)試造成了很大的麻煩(每天不停地拔單片機(jī))。再做學(xué)生實(shí)驗(yàn)的時(shí)候不能太過(guò)于追求趨近于真實(shí)產(chǎn)品。過(guò)于追求真實(shí)會(huì)讓你的實(shí) 驗(yàn)過(guò)程變得極其困難。真的是后悔不已。當(dāng)初想利用以前做的單片機(jī)最小系統(tǒng)開(kāi)發(fā)板上的串行口進(jìn)行程序下載,但是到真正實(shí)行的時(shí)候在發(fā)現(xiàn)并不是那么回事。由于對(duì)單片機(jī)的要求達(dá)不到,雖然理論上天衣無(wú)縫,但
22、實(shí)際上根本不可能實(shí)現(xiàn)。雖然出租車(chē)上提供的電源是12V,即便在實(shí)驗(yàn)板上設(shè)計(jì)了電源電路也應(yīng)該再加上一個(gè)USB口提供5V電源。因?yàn)槌嗽趯?shí)驗(yàn)室其他地方是并不太容易找到12V電源。由于對(duì) 口的省略,對(duì)軟件調(diào)試工作造成了很大的麻煩。USB 七、參考文獻(xiàn) 1996大連:大連理工大學(xué)出版社,單片微型機(jī)原理及應(yīng)用. 徐維祥、劉旭敏1 . 2005北京:清華大學(xué)出版社 戴勝華,蔣大明 單片機(jī)原理與應(yīng)用 2004天津:天津大學(xué)出版社 李剛 新概念單片機(jī)教程王宗和 單片機(jī)實(shí)驗(yàn)與綜合訓(xùn)練 北京 高等教育出版社 2000 八、附錄 附錄1、程序清單 椣據(jù)畬敤牜來(lái)?栮 椣據(jù)畬敤尠湩牴湩?屨 #define uchar u
23、nsigned char 。uchar tmp 。uchar det 。uchar Coo 。int m 。int fuchar code DispTab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0。 /字 形碼 。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=P14 */腳脈沖的。 /*DS1302SCLKs
24、bit SCLK =P13 */IO腳數(shù)據(jù)的sbit DIO=P12。 /*DS1302 */RST腳片選的。sbit CE=P11 /*DS1302 。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 等待計(jì)時(shí)中斷void time() interrupt 1 / 。TH0=0x15int i,j。 。i
25、+TL0=0xa0。 。j+。if(i=100)i=0。 f=Coo。if(j=10)j=0 延時(shí)子程序void mDelay(unsigned int Delay) / 。 unsigned int I Delay-)Delay>0。for(。 I+)。 for(I=0。I<124 。 寫(xiě)程序void Write1302 ( unsigned char addr,dat ) /DS1302 。 unsigned char i,temp 引腳為低,數(shù)據(jù)傳送中止。 /CE CE=0 清零時(shí)鐘總線 / SCLK=0。 引腳為高,邏輯控制有效。 CE = 1 /CE 發(fā)送地址 / 次移位
26、循環(huán)。 for ( i=8 i>0 i- ) /8 。 temp = addr 每次傳輸?shù)妥止?jié)。 / DIO = (bit)(temp&0x01) 。 addr >>= 1 右移一位 / SCLK = 0。 。 SCLK = 1 發(fā)送數(shù)據(jù)/ i- ) 。 i>0 for ( i=8 。 temp = dat DIO = (bit)(temp&0x01)。 。 dat >>= 1 。 SCLK = 0 。 SCLK = 1 。 CE = 0 數(shù)據(jù)讀取子程序unsigned char Read1302 ( unsigned char addr )
27、 / 。 unsigned char i,temp,dat1,dat2 。 CE=0 。 SCLK=0 CE = 1。 發(fā)送地址 / 次移位循環(huán)。 for ( i=8 i>0 i- ) /8 。 temp = addr 每次傳輸?shù)妥止?jié)。 / DIO = (bit)(temp&0x01) 。 addr >>= 1 。 SCLK = 0 右移一位 / SCLK = 1。 讀取數(shù)據(jù) / i- ) 。 i>0 for ( i=8 。 ACC7=DIO ACC>>=1。 。 SCLK = 1 。 SCLK = 0 。 CE=0 。 dat1=ACC 數(shù)據(jù)進(jìn)制轉(zhuǎn)
28、換 dat2=dat1/16。 / 十六進(jìn)制轉(zhuǎn)十進(jìn)制。 dat1=dat1_x0016_ / 。 dat1=dat1+dat2*10 。 return (ACC) DS1302初始化void Initial() / 禁止寫(xiě)保護(hù) /。 Write1302 (0x8E,0x00) 秒位初始化 / Write1302 (0x80,0x00)。 分鐘初始化 /。 Write1302 (0x82,0x20) 。 Write1302 (0x84,0x10) 。 Write1302 (0x86,0x23) 。 Write1302 (0x88,0x05) 小時(shí)初始化 / Write1302 (0x8c,0x1
29、0)。 允許寫(xiě)保護(hù) / Write1302 (0x8E,0x80)。 修改時(shí)間void set() / 禁止寫(xiě)保護(hù) / Write1302 (0x8E,0x00)。 分鐘初始化。 / Write1302 (0x82,TAB7*16+TAB6) 。 Write1302 (0x84,TAB0*16+TAB1) Write1302 (0x8E,0x80)。 顯示子程序void ss()/ 。p=TABint i。uchar *p i+)i<1。for(i=0。 。det=*p 。tmp=DispTabdet 。P20=1。P20=0。P0=tmp 。p+P17=0。P16=0P14=0。P15
30、=0。 。det=*p 。tmp=DispTabdet 。P0=tmp 。p+。P16=0。P17=0P20=0。P20=1。P14=1。P15=0 。det=*p 。tmp=DispTabdet 。p+。P15=1。P16=0P17=0。P0=tmp。P20=0P20=1。P14=0 。det=*p 。tmp=DispTabdet 。p+P17=0P16=0P15=1P14=1P20=1P20=0P0=tmp。 。det=*p 。tmp=DispTabdet 。P0=tmp 。p+P16=1。P17=0P20=1。P14=0。P15=0。P20=0。 。det=*p 。tmp=DispTab
31、det 。p+。P17=0。P14=1。P15=0。P16=1P0=tmp。P20=0。P20=1 。det=*p 。tmp=DispTabdet 。p+P17=0。P15=1。P16=1。P0=tmp。P20=0P20=1。P14=0 。det=*p 。tmp=DispTabdet 。p+P17=0P15=1。P16=1。P0=tmp。P20=0。P20=1。P14=1。 。det=*p 。tmp=DispTabdet 。p+P16=0。P17=1。P20=0。P20=1P14=0。P15=0。P0=tmp。 。det=*p 。tmp=DispTabdet 。p+。P17=1。P14=1。P
32、15=0。P16=0P0=tmp。P20=0。P20=1 。det=*p 。tmp=DispTabdet 。p+。P16=0。P17=1。P0=tmp。P20=0。P20=1。P14=0P15=1 。det=*p 。tmp=DispTabdet 。p+P17=1。P15=1P14=1。P16=0。P20=1P0=tmp。P20=0。 。det=*p 。tmp=DispTabdet 。p+。P15=0P16=1。P17=1。P0=tmpP20=0P20=1P14=0 顯示等待時(shí)間及單價(jià)、總價(jià)、路程子程序void sett() / 。TAB0=Read1302(0x83)/10 。TAB1=Rea
33、d1302(0x83)_x0010_ 。TAB7=Read1302(0x81)/10 。TAB8=3TAB6=Read1302(0x81)_x0010_ 。TAB3=Coo/10_x0010_TAB2=Coo/100 。TAB4=Coo_x0010_ if(TAB4<=3&&TAB2=0&&TAB3=0) 。TAB11=8 else 。TAB11=(8+(Coo-3)*TAB8)_x0010_ 。TAB5=TAB2*TAB8/10 。TAB9=Coo/100*TAB8+Coo_x0010_0*TAB8/100 。TAB10=(Coo/10*TAB8+Coo
34、_x0010_*TAB8/10)_x0010_ 顯示時(shí)間子程序void mmm() / 。 TAB0=Read1302(0x85)/10 。 TAB1=Read1302(0x85)_x0010_ 。 TAB7=Read1302(0x83)/10 TAB8=3。 TAB6=Read1302(0x83)_x0010_。 修改時(shí)間、單價(jià)子程序void qie(int j) / switch(j)uchar i。 。 case 4:ss() if(P22=0) )。for(i=0。i!=1 。ss()i=P22。 。TAB8+ if(TAB8=10) 。breakTAB8=0。 。case 3:ss(
35、) if(P22=0) )。for(i=0i!=1 。i=P22ss() 。TAB6+ if(TAB6=10) 。TAB6=0break 。case 2:ss() if(P22=0) )i!=1。for(i=0。 。i=P22。ss() 。TAB7+ if(TAB7=6) 。breakTAB7=0 。case 1:ss() if(P22=0) )。for(i=0。i!=1 。ss()。i=P22 。TAB1+ if(TAB0=2&&TAB1=4)|TAB1=10) 。breakTAB1=0。 。case 0:ss() if(P22=0) )i!=1。for(i=0。 。i=P22。ss() 。TAB0+ if(TAB0=3) 。break。 default:breakTAB0=0。 修改單價(jià)位、時(shí)間位子程序oid die() /V )m<
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省濟(jì)南市長(zhǎng)清五中學(xué)2024-2025學(xué)年初三下學(xué)期第二次階段性考試化學(xué)試題試卷含解析
- 寧波工程學(xué)院《房地產(chǎn)市場(chǎng)營(yíng)銷(xiāo)》2023-2024學(xué)年第二學(xué)期期末試卷
- 三門(mén)峽社會(huì)管理職業(yè)學(xué)院《病理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 四平職業(yè)大學(xué)《中國(guó)當(dāng)代影視文學(xué)研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 荊門(mén)職業(yè)學(xué)院《結(jié)構(gòu)力學(xué)Ⅱ》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海海事大學(xué)《現(xiàn)代水文地質(zhì)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 遼東學(xué)院《城市規(guī)劃與GIS》2023-2024學(xué)年第二學(xué)期期末試卷
- 工業(yè)金屬探傷標(biāo)準(zhǔn)試塊租賃及質(zhì)量追溯協(xié)議
- 電動(dòng)汽車(chē)電機(jī)控制系統(tǒng)研發(fā)與產(chǎn)品生命周期管理合同
- 網(wǎng)紅燒烤品牌授權(quán)培訓(xùn)與咨詢服務(wù)合同
- 靜脈輸液不良反應(yīng)及處理 課件
- 鄉(xiāng)土中國(guó)的性別差異
- 高速鐵路概論單元高速鐵路發(fā)展概況課件
- 北師大版2025三年級(jí)語(yǔ)文下學(xué)期期中課堂知識(shí)檢測(cè)考試
- 寧波浙大寧波理工學(xué)院招聘13名事業(yè)編制工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 精神科醫(yī)療質(zhì)量指標(biāo)十二項(xiàng)控制評(píng)價(jià)體系
- 延安精神知識(shí)講座課件
- 企業(yè)宣傳崗試題及答案
- 上海市金山區(qū)2025屆高三高考二模地理試卷(含答案)
- 《電氣控制技術(shù)》課件-反接制動(dòng)控制
- 華為市場(chǎng)面試題及答案
評(píng)論
0/150
提交評(píng)論