基于單片機(jī)的GPS定位系統(tǒng)設(shè)計(jì)畢業(yè)論文_第1頁(yè)
基于單片機(jī)的GPS定位系統(tǒng)設(shè)計(jì)畢業(yè)論文_第2頁(yè)
基于單片機(jī)的GPS定位系統(tǒng)設(shè)計(jì)畢業(yè)論文_第3頁(yè)
基于單片機(jī)的GPS定位系統(tǒng)設(shè)計(jì)畢業(yè)論文_第4頁(yè)
基于單片機(jī)的GPS定位系統(tǒng)設(shè)計(jì)畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

.⑦程序中的錯(cuò)誤和警告總數(shù)包括在文件的結(jié)尾處。3.2GPS定位系統(tǒng)硬件設(shè)計(jì)3.2.1IAP15W4K58S4單片機(jī)IAP15W4K58S4是一種集上電復(fù)位、看門狗、電壓監(jiān)控和EEPROM四種功能于一身的可編程控制電路,有助于簡(jiǎn)化應(yīng)用系統(tǒng)的設(shè)計(jì)?!?上電復(fù)位當(dāng)電力被加入時(shí),內(nèi)部上電復(fù)位電路被激活,使得復(fù)位銷是有效的。可避免在系統(tǒng)中的微處理器在欠壓或不穩(wěn)定振蕩??器的情況下的情況下的信號(hào)。如果VCC超過設(shè)備的極限VTRIP,電路會(huì)釋放復(fù)位后200ms的延遲,讓系統(tǒng)開始工作?!?低電壓檢測(cè)當(dāng)工作時(shí),IAP15W4K58S4上VCC電壓監(jiān)控,如果電源電壓下降到預(yù)先設(shè)定的最小電壓時(shí),系統(tǒng)將執(zhí)行重置,這樣可以有效地解決上述微處理器斷電或斷開。后的RESET被確認(rèn),直到電壓下降到低于1VRESET信號(hào)將保持有效。而當(dāng)VCC返回并超過VTRIP為200ms,系統(tǒng)再次開始工作[17]?!?看門狗定時(shí)器看門狗定時(shí)器由WDI輸入監(jiān)視來監(jiān)視微處理器的激活。由于微處理器必須定時(shí)觸發(fā)CS/WDI引腳用于有效避免復(fù)位信號(hào)被激活和復(fù)位電路,使引腳CS/WDI必須在看門狗超時(shí)的終止是由高向低信號(hào)觸發(fā)。3.2.2按鍵模塊設(shè)計(jì)鍵盤是人機(jī)對(duì)話的紐帶,操作人員可以通過鍵盤輸入數(shù)據(jù)和命令。鍵盤可分為非編碼鍵盤和編碼鍵盤兩種,前者用軟件來識(shí)別輸入鍵和產(chǎn)生代碼,后者則用硬件來識(shí)別輸入鍵和產(chǎn)生代碼,按鍵模塊電路圖如圖3.1所示。3.2.3按鍵液晶顯示模塊51系列單片機(jī)與液晶模塊的接口方式有兩種,一種為直接訪問方式,一種為間接控制方式。直接訪問方式就是將液晶顯示模塊作為存儲(chǔ)器或I/O設(shè)備對(duì)待,直接掛在單片機(jī)總線上,單片機(jī)以訪問存儲(chǔ)器或I/O設(shè)備的方式操作液晶顯示模塊。間接控制是單片機(jī)通過軟件模擬液晶工作時(shí)序的方法實(shí)現(xiàn)與液晶顯示模塊的連接。本設(shè)計(jì)采用直接訪問方式,硬件連接圖如圖3.2所示:圖3.1按鍵模塊電路圖圖3.21602LCD連接電路圖3.2.4GPS模塊根據(jù)總體設(shè)計(jì)方案,基于單片機(jī)的GPS硬件設(shè)計(jì)主要由GPS信號(hào)接收部分〔SERFNEO-6GPS信號(hào)接收模塊、控制芯片IAP15W4K58S4單片機(jī)、顯示部分1602LCD液晶顯示模塊、電平轉(zhuǎn)換電路這幾部分構(gòu)成。GPS應(yīng)用結(jié)構(gòu)框圖如圖3.3所示。圖3.3GPS應(yīng)用結(jié)構(gòu)框圖3.2.5SERFNEO-6GPS信號(hào)接收模塊該設(shè)計(jì)中GPS信號(hào)接收模塊所選用的是SERFNEO-6GPS接收模塊,該模塊是由XX市瑟孚電子所生產(chǎn)。模塊具有12通道并行接收能力,所接收的GPS信號(hào)屬于民用頻段的L1信號(hào)〔1575.42MHz,在沒有SA干擾的情況下平均定位誤差為8米,動(dòng)態(tài)速度誤差為0.1米/秒,信號(hào)靈敏度更是高達(dá)-150dBm,冷啟動(dòng)定位時(shí)間為52秒,熱啟動(dòng)時(shí)間為34秒,重新定位時(shí)間僅僅需要10秒。單片機(jī)串口TXD、RXD分別與NEO-6的RXA、TXA進(jìn)行連接,用于對(duì)NEO-6進(jìn)行設(shè)置后,采集NEO-6的GPS定位和時(shí)間信息。EN引腳為校準(zhǔn)器使能端,接單片機(jī)的P3.6,通過其選用校準(zhǔn)器〔上電或低電壓時(shí)啟用,在2.0V到VCC之間禁用。BOOT引腳為模塊啟動(dòng)端口,與單片機(jī)的P3.7相連,VCC復(fù)位時(shí)模塊啟動(dòng)進(jìn)入特殊調(diào)試模式。硬件連接圖如圖3.4所示。圖3.4NEO-6GPS信號(hào)接收電路圖3.2.6穩(wěn)壓電路模塊穩(wěn)壓電源電路如圖3.5所示。采用集成穩(wěn)壓器LM7805,C1、C2分別為輸入端和輸出端濾波電容;輸入電壓Vin引腳可直接接入電源,穩(wěn)壓器2腳接地,輸出電壓Vout引腳即可為整個(gè)系統(tǒng)提供穩(wěn)定的5V電壓。圖3.5LM7805穩(wěn)壓電源電路4基于單片機(jī)的GPS定位系統(tǒng)的實(shí)現(xiàn)4.1硬件部分的實(shí)現(xiàn)在電路焊接中,各個(gè)子模塊焊接完成的程度會(huì)直接影響整個(gè)電路的運(yùn)行效果,電路焊接中,焊接的順序和方法都是極為重要的,所以在要注意以下幾點(diǎn)。1、呈圓焊接順序:元器件裝焊順序依次為:電阻器、電容器、二極管、三極管、集成電路、大功率管,其他元器件為先小后大。2、焊接時(shí),要使焊點(diǎn)的周圍都有錫,將其牢牢焊住,防止虛焊。3、在焊接圓形的極性電容時(shí)〔一般容值較大,其電容器的引腳分長(zhǎng)短長(zhǎng)腳應(yīng)對(duì)應(yīng)"+"號(hào)所在的孔。4、芯片在安裝前最好先兩邊的針腳稍稍彎曲,使其有利于插入底座對(duì)應(yīng)的插口中。調(diào)試的過程如下。〔1離線檢查使用萬(wàn)用表,根據(jù)電子元件的電路圖是否連接正確,檢查數(shù)據(jù)總線,地址總線和控制總線是短路故障。需要特別保護(hù)芯片,先與潛在〔或電源插座進(jìn)行了檢查確定正確的插入測(cè)試芯片。檢查硬件電路是否正常,微控制器的時(shí)鐘電路,通過檢測(cè)ALE信號(hào),以確定是否所說的晶體的正常操作?!?電源檢查加入電力之后,檢查每個(gè)插頭銷的電勢(shì),并且通常檢查GND和VCC之間的電位,如果5V-4.7V是正常的。如果有一個(gè)高的壓力,在線仿真器的調(diào)試,會(huì)損壞模擬器,有時(shí)集成塊熱損傷的應(yīng)用系統(tǒng)。在線仿真必須由仿真,示波器裝置有所發(fā)展,等等。這些工具對(duì)于單片微機(jī)開發(fā)的最基本的工具。信號(hào)線是IAP15W4K58S4和外部裝置之間的鏈路,如果信號(hào)鏈路錯(cuò)誤或失時(shí),那么將導(dǎo)致外圍電路的讀寫錯(cuò)誤。信號(hào)線IAP15W4K58S4單片機(jī)劃分為讀寫信號(hào)線,芯片選擇信號(hào)線,行時(shí)鐘信號(hào),外部程序存儲(chǔ)器讀選通信號(hào)〔PSEN,地址鎖存信號(hào)〔ALE,復(fù)位信號(hào)和幾大類。大多數(shù)這些信號(hào)是脈沖信號(hào),用于與示波器〔這里指的是一般示波器與傳統(tǒng)方法的脈沖信號(hào)是難以觀察到,必須采取一些措施觀察。應(yīng)該利用軟件編程的方法來實(shí)現(xiàn)。在焊接好電路板后就開始對(duì)電路部分進(jìn)行測(cè)試,首先在IAP15W4K58S4上寫了一個(gè)可讓液晶屏顯示數(shù)字的小程序,可是通電后發(fā)現(xiàn)液晶屏除了背光點(diǎn)亮〔通電后就會(huì)亮,根本沒有顯示。在檢查電路的過程中首先懷疑有可能電路連接有問題,使得單片機(jī)沒有工作,后用萬(wàn)用表測(cè)量晶振兩腳,發(fā)現(xiàn)起振電壓正常,說明單片機(jī)正常工作。后又懷疑單片機(jī)P0口數(shù)據(jù)電纜和液晶屏沒有連接好,又用萬(wàn)用表測(cè)試,結(jié)果都連接良好。經(jīng)過分析后覺得這個(gè)問題不應(yīng)該出在液晶屏和單片機(jī)上,而有可能是在一些輔助器件上發(fā)生了問題,果然經(jīng)過檢查后發(fā)現(xiàn)液晶模塊對(duì)比度調(diào)節(jié)電阻〔5K有問題,電阻始終很大且無法調(diào)小〔始終在1K以上,后更換一個(gè)同型號(hào)可變電阻,問題解決。4.2軟件的燒錄與調(diào)試當(dāng)電路板經(jīng)過電子工藝加工完成之后并排除基本的硬件故障以后,便進(jìn)入了系統(tǒng)軟件調(diào)試階段,調(diào)試大體可以分為以下幾步。<1>對(duì)各個(gè)模塊的程序進(jìn)行編譯、調(diào)試,逐個(gè)排除錯(cuò)誤。<2>整體調(diào)試,結(jié)合程序流程圖與系統(tǒng)資源的分配,修改程序直到實(shí)現(xiàn)系統(tǒng)總體功能。

在調(diào)試軟件的時(shí)候用到了串口調(diào)試軟件輔助軟件的調(diào)試,并且通過電腦的串口成功的向單片機(jī)發(fā)送了模擬的GPS數(shù)據(jù),單片機(jī)也成功接收并且液晶屏也有了顯示,后為了進(jìn)一步的調(diào)試軟硬件便使用了GPS信號(hào)接收模塊向單片機(jī)發(fā)送地理數(shù)據(jù),結(jié)果這時(shí)液晶屏卻沒有了顯示,開始以為是使用串口調(diào)試軟件模擬GPS輸出數(shù)據(jù)格式有誤,所以造成了使用真正的GPS模塊接收數(shù)據(jù)時(shí)程序不能匹配。分析后覺得開始的判斷不對(duì),就算模擬時(shí)格式不對(duì)也起碼應(yīng)該有顯示。之前在換用GPS模塊時(shí)對(duì)硬件有過一次改動(dòng),就是原先使用電腦串口模擬GPS向單片機(jī)發(fā)送數(shù)據(jù),單片機(jī)串口接口使用的是9針的母頭,其數(shù)據(jù)線接具體連接是串口的5號(hào)針腳連接MAX232芯片15腳〔接地,串口的3號(hào)針腳連接MAX232芯片8腳〔串口數(shù)據(jù)接收,串口的2號(hào)針腳連接MAX232芯片7腳〔串口數(shù)據(jù)發(fā)送。由于要使用GPS接收模塊[18],以為模塊的串口接口為母頭故需要將單片機(jī)接收串口接口改為公頭,在改的時(shí)候也按照了上述的連接方法,由于串口在更換公頭后接線方式應(yīng)該按照母頭接線方式鏡像連接,在實(shí)際連接時(shí)忽略了這點(diǎn)結(jié)果造成了不能接收串口數(shù)據(jù)的問題。經(jīng)重新連接后問題解決。4.3最終實(shí)現(xiàn)的功能<1>GPS模塊實(shí)現(xiàn)定位;<2>單片機(jī)通過串口控制GPS模塊,獲得定位數(shù)據(jù);<3>根據(jù)需要把定位數(shù)據(jù)存儲(chǔ)在EEPROM或在液晶顯示模塊進(jìn)行顯示;<4>鍵盤實(shí)現(xiàn)功能選擇;<5>看門狗電路確保系統(tǒng)的可靠性。結(jié)論經(jīng)歷過這次設(shè)計(jì)后,我不僅把所學(xué)的知識(shí)都復(fù)習(xí)了一遍,而且融會(huì)貫通,更加深了印象。在本系統(tǒng)是設(shè)計(jì)和論證選題中,查閱了大量的資料和文獻(xiàn),也了解到了許多的與本專業(yè)相關(guān)的信息,開拓了視野,對(duì)本專業(yè)的發(fā)展歷史和發(fā)展前景也有了一個(gè)大概的了解。在本設(shè)計(jì)過程中,遇到了許許多多奇葩的問題,更重要的是體會(huì)到了什么叫做眼高手低。思路很清晰,想的也很好,在具體實(shí)際操作時(shí)卻不知從何下手,這也就是知識(shí)匱乏的表現(xiàn)吧。由此我明白了,以前學(xué)的知識(shí)太過理論化了,缺少實(shí)際操作的鍛煉,沒有遇到真實(shí)的問題,缺少解決問題的思路。有些知識(shí)是積累的過程,只有遇到后才會(huì)懂得,在以后的工作和學(xué)習(xí)中都應(yīng)該虛心求教,認(rèn)真學(xué)習(xí),以此來提高自己各方面的能力和綜合素質(zhì)??傊?不管歷經(jīng)了多少的困難,最終還是完成了,成功的喜悅不予言表。此次的畢業(yè)設(shè)計(jì)是一個(gè)綜合性的課程設(shè)計(jì),通過設(shè)計(jì)考查了我們對(duì)單片機(jī)課程的認(rèn)識(shí)和學(xué)習(xí)程度,從中認(rèn)識(shí)到自己學(xué)習(xí)中的不足,總結(jié)自己在學(xué)習(xí)中的缺陷,從而改進(jìn)以后的學(xué)習(xí)方法。而本次的畢業(yè)設(shè)計(jì)擺脫了這種傳統(tǒng)教育的束縛,不再是死板的學(xué)習(xí)課本知識(shí),而是理論和實(shí)踐相結(jié)合的方式,用新的方式磨礪我們的動(dòng)手能力。在設(shè)計(jì)過程中,充分發(fā)揮我的主觀能動(dòng)性,提高分析問題和解決問題的能力。知識(shí)的學(xué)習(xí)過程,需要積累,然而厚積更需要薄發(fā),能把所學(xué)的知識(shí)應(yīng)用到實(shí)際中,能夠創(chuàng)造現(xiàn)實(shí)價(jià)值,這才是真正的學(xué)以致用,這次經(jīng)歷的最大收獲莫過于此。致謝本次設(shè)計(jì)完結(jié)后,首先我要感謝耐心細(xì)致、知識(shí)豐富,給我們很大幫助的李老師!在畢業(yè)設(shè)計(jì)期間,從設(shè)計(jì)題目的選擇,到資料的查找、原理的講解,再到后來畢業(yè)論文的結(jié)構(gòu)布局和報(bào)告內(nèi)容的修改都給予我們耐心的輔導(dǎo)。在這里我要向老師表示最衷心最誠(chéng)摯地感謝!我們有很多基礎(chǔ)理論知識(shí)掌握不牢,一面幫我們查漏補(bǔ)缺,一面發(fā)揮我們的特長(zhǎng),讓我們的課題能夠順利有序地進(jìn)行到滿足要求。

其次,我還要感謝我們課題組一起奮斗的同學(xué),在共同的學(xué)習(xí)中,我們互幫互助,愉快地完成了畢業(yè)設(shè)計(jì)!

在整個(gè)畢業(yè)設(shè)計(jì)過程中李老師給我很多的引導(dǎo)和幫助,為我準(zhǔn)備學(xué)習(xí)資料,指導(dǎo)設(shè)計(jì)方案,講解相關(guān)知識(shí)。李老師嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵(lì)著我。從課題的選擇到項(xiàng)目的最終完成,李老師始終給予我細(xì)心的指導(dǎo)和大力的支持。四年來,李老師不僅在學(xué)業(yè)上為我授業(yè)解惑,同時(shí)還在生活中給我以無微不至的關(guān)懷,在此謹(jǐn)向李老師致以誠(chéng)摯的謝意和崇高的敬意!最后,向在這三年期間幫助過、關(guān)心過我的老師和同學(xué)致以衷心地感謝,愿大家身體健康、工作愉快輕松、生活幸福XX!參考文獻(xiàn)[1]邱志和,王萬(wàn)義.GPS原理與應(yīng)用[M].北京:電子工業(yè)出版社,2003,3.[2]劉基余.GPS衛(wèi)星導(dǎo)航定位與方法[M].北京:科學(xué)出版社,2003.[3]劉基余,李征航.全球定位系統(tǒng)原理及其應(yīng)用[M].北京:北京測(cè)繪出版社,1998.[4]張守信.GPS衛(wèi)星測(cè)量定位理論與應(yīng)用[M].北京:國(guó)防科技大學(xué)出版社,1996.[5]張小紅等.GPS定位技術(shù)在不同領(lǐng)域的應(yīng)用[J].XX:測(cè)繪信息與工程,2001:50-60.[6]洪大永.GPS全球定位系統(tǒng)技術(shù)及應(yīng)用[M].XX:XX大學(xué)出版社,1998.[7]鄒久朋.89C51單片機(jī)實(shí)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2008,4.[8]李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,2000.[9]趙建玲.51系列單片機(jī)開發(fā)寶典[M].北京:電子工業(yè)出版社,2007.[10]Xicor.X5043/X5045CPUSupervisorwith4KSPIEEPROM[M].XicorInc,2001.[11]樓然苗,李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例[M].北京:北京航天大學(xué)出版社,2003.[12]李軍.51系列單片機(jī)高級(jí)實(shí)例開發(fā)指南[M].北京:北京航天大學(xué)出版社.2004,06.[13]黃凌.基于單片機(jī)的GPS信息處理系統(tǒng)[J].現(xiàn)代電子技術(shù),2007,<21>:60—61.[14]GSNEO-6Seriers

Operational

manual.Verison1.0.Serf

Company.2004.11.[15]

劉基余.GPS衛(wèi)星導(dǎo)航定位原理與方法[M].北京:科學(xué)出版社,2003.[16]

劉基余,李征航.全球定位系統(tǒng)原理及其應(yīng)用[M].北京:測(cè)繪出版社,1993.[17]王惠南,GPS導(dǎo)航原理與應(yīng)用[M].北京:科學(xué)出版社,2003.[18]Elliott

D.Kaplan.Understanding

GPS

Principles[M].北京:電子工業(yè)出版社,2002.[19]李宏,張家田等編著,液晶顯示器件應(yīng)用技術(shù)[M].上海:機(jī)械工業(yè)出版社,2004.[20]萬(wàn)福君,潘松峰,單片微機(jī)原理系統(tǒng)設(shè)計(jì)與應(yīng)用[M].XX:中國(guó)科技大學(xué)出版社,2004.附錄一:總體電路原理圖附錄二:實(shí)物圖附錄三:源程序GPS_MAIN.C#include"LCD1602.h"#include"intrins.h"#include"instruct_init.H"sbitLED=P1^4;unsignedcharEx0_flag;unsignedcharEx1_flag;unsignedcharrcvbuf[600];//gps數(shù)據(jù)均為ASCII字符形式//ST_FIFO_BUFGPS_data={ 600, rcvbuf, 0, 0};voidmain<>{ unsignedcharcrval;//currentvalue unsignedcharidentifier;//驗(yàn)證深度 unsignedcharWEI,XSD;//位小數(shù)點(diǎn)小數(shù)點(diǎn)深度 floatXSDSD;//小數(shù)點(diǎn)深度 floatDW_message[15];//定位信息1的存儲(chǔ)量 P0M0=0;P0M1=0; P1M0=0;P1M1=0; P2M0=0;P2M1=0; P3M0=0;P3M1=0; P4M0=0;P4M1=0; P5M0=0;P5M1=0;LCD1602_Init<>; //初始化LCD1602 LCD1602_PutStr<0,0,"ZZISTZYQGPS-D">; LCD1602_PutStr<1,1,"XH201151067">; for<DW_message[0]=0;DW_message[0]<200;DW_message[0]++>Delay10ms<>;//延時(shí)兩秒顯示信息 INT0_Init<>; INT1_Init<>; UART1_Init<>; UART2_Init<>; Delay<>; // LCD1602_PutChar<3,1,':'>;// LCD1602_PutChar<7,1,':'>; while<1> { while<GPS_data.Value_Data> { crval=FIFO_BUF_Read<&GPS_data>; uart1_send<crval>; if<crval=='$'> {identifier=1;continue;} if<identifier==1> if<crval=='G'> {identifier=2;continue;} else{identifier=0;continue;} if<identifier==2> if<crval=='P'> {identifier=3;continue;} else{identifier=0;continue;} if<identifier==3> if<crval=='G'> {identifier=4;continue;} else{identifier=0;continue;} if<identifier==4> if<crval=='G'> {identifier=5;continue;} else{identifier=0;continue;} if<identifier==5> if<crval=='A'> {identifier=6;LED=~LED;continue;} else{identifier=0;continue;} if<identifier==6> {if<crval==','>{WEI++;XSD=0;XSDSD=1;DW_message[WEI]=0.0;continue;} if<crval=='.'>{XSD=1;continue;} if<crval=='*'>{WEI=0;identifier=0;continue;}//結(jié)束本次數(shù)據(jù)解析 if<XSD==1>XSDSD/=10; if<XSDSD==1> DW_message[WEI]=DW_message[WEI]*10+crval; else{DW_message[WEI]+=crval/XSDSD;} } }//數(shù)據(jù)解析程序結(jié)尾 if<DW_message[6]==0>{LCD1602_Clear<>;LCD1602_PutStr<0,0,"NoP-M">;}//未定位顯示,沒有位置信息 else{LCD1602_PutStr<0,0,"JD-">;LCD1602_PutNum<4,0,DW_message[4]>; LCD1602_PutStr<0,0,"WD-">;LCD1602_PutNum<4,0,DW_message[2]>;} //if<Ex0_flag>LED=0; //elseLED=1; }}FIFO-BUF.H#ifndef fifo_buf_h_#define fifo_buf_h_typedef struct{ unsigned int Max_Date; //緩沖區(qū)長(zhǎng)度 unsigned char *P_buf; //緩沖區(qū)首地址 unsigned int Value_Date;//有效數(shù)據(jù)長(zhǎng)度 unsigned int Buf_Start; //起始數(shù)據(jù)距首地址距離}ST_FIFO_BUF;extern unsignedchar FIFO_BUF_Read<ST_FIFO_BUF*buf>;extern void FIFO_BUF_Write<ST_FIFO_BUF*buf,unsignedchartemp>;#endifFIFO-BUF.C/******************************************************環(huán)形FIFO緩沖區(qū),定義一個(gè)數(shù)組作為緩沖區(qū)用以下函數(shù)來實(shí)現(xiàn)環(huán)形存儲(chǔ)*****************************************************/#include "fifo_buf.h"http://#include"instruct_init.H"unsignedchar FIFO_BUF_Read<ST_FIFO_BUF*buf>{ unsignedchar *addr; addr=buf->P_buf+buf->Buf_Start; if<buf->Value_Date>0> { buf->Value_Date--; buf->Buf_Start++; if<buf->Buf_Start>=buf->Max_Date> buf->Buf_Start=0; } return *addr;}void FIFO_BUF_Write<ST_FIFO_BUF*buf,unsignedchartemp>{ unsignedchar*addr; if<buf->Value_Date<buf->Max_Date> { if<<buf->Value_Date+buf->Buf_Start>>=buf->Max_Date> addr=buf->P_buf+buf->Value_Date+buf->Buf_Start-buf->Max_Date; else addr=buf->P_buf+buf->Value_Date+buf->Buf_Start; *<addr>=temp; buf->Value_Date++; }}LCD1602.H#ifndef _LCD1602__H#define _LCD1602__H#include"stc\stc15f2k60s2.h"voidLCD1602_WriteCMD<unsignedcharcommand>; //寫命令指令voidLCD1602_WriteData<unsignedchardat>; //寫數(shù)據(jù)指令voidLCD1602_SetCursor<unsignedcharx,unsignedchary>; //設(shè)置顯示地址voidLCD1602_PutChar<unsignedx,unsignedchary,unsignedchardat>; //寫一個(gè)字符voidLCD1602_PutStr<unsignedcharx,unsignedchary,unsignedchar*s>; //寫一個(gè)字符串voidLCD1602_PutNum<unsignedcharx,unsignedchary,unsignedintintdat>; //寫無字符型整形數(shù)voidLCD1602_Init<void>; //初始化voidLCD1602_CheckBusy<void>; //LCD讀忙信號(hào)voidLCD1602_Clear<void>; //清屏voidDelay<void>; //18.432MHzsbitLCD1602_BLK=P1^2;//LCD背光,低電平使能#endifLCD1602.C#include"intrins.h"#include"LCD1602.h"http://#include"stcKU\debug\debug.h"#define MSB 0x80 //讀忙位#define LCDIO P0 //LCD1602的高四位接在P2口的高四位sbitLCD1602_RS=P1^7;//RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。sbitLCD1602_RW=P1^6;//RW為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。sbitLCD1602_EN=P1^5;//E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。#defineCMD_CLEAR 0x01voidDelay<void> //11.0592MHz{ unsignedchari,j; i=8;//i=8; j=40;//j=35; do { while<--j>; }while<--i>;}//LCD的初始化函數(shù)voidLCD1602_Init<void>{ LCD1602_WriteCMD<0x38>; //28設(shè)置四位數(shù)據(jù)線模式0c設(shè)置八位數(shù)據(jù)線模式 LCD1602_WriteCMD<0x0c>; //開顯示命原0c// LCD1602_WriteCMD<0x0f>; //設(shè)置首地址 LCD1602_WriteCMD<0x80>; LCD1602_Clear<>; //清屏 LCD1602_BLK=0;}//清屏函數(shù)voidLCD1602_Clear<void>{ LCD1602_WriteCMD<CMD_CLEAR>; //清屏命令}//檢測(cè)忙信號(hào)voidLCD1602_CheckBusy<void>{LCD1602_RS=0;LCD1602_RW=1;LCD1602_EN=1;_nop_<>;while<LCDIO&MSB>{LCD1602_EN=0;_nop_<>;LCD1602_EN=1;_nop_<>;} }//開始寫voidLCD1602_WriteStart<void>//EN端產(chǎn)生一個(gè)高電平脈沖,寫LCD{ LCD1602_EN=1; Delay<>; LCD1602_EN=0; }//寫命令voidLCD1602_WriteCMD<unsignedcharcommand>{ LCD1602_CheckBusy<>; LCDIO=command; LCD1602_RS=0; //RS0 寫命令 LCD1602_RW=0; //RW0 Delay<>; LCD1602_WriteStart<>;}//寫數(shù)據(jù)voidLCD1602_WriteData<unsignedchardat>{ LCD1602_CheckBusy<>; LCDIO=dat; LCD1602_RS=1; //RS1 寫數(shù)據(jù) LCD1602_RW=0; //RW0 Delay<>; LCD1602_WriteStart<>;}//設(shè)置顯示地址:X為橫軸<0-15>,Y為縱軸<0-1>voidLCD1602_SetCursor<unsignedcharx,unsignedchary>{ unsignedcharaddress; x&=0x0f; if<!y> address=0x80+x; else address=0xc0+x; LCD1602_WriteCMD<address>;}//寫一個(gè)字符:X為橫軸<0-15>,Y為縱軸<0-1>voidLCD1602_PutChar<unsignedx,unsignedchary,unsignedchardat>{ LCD1602_SetCursor<x,y>; LCD1602_WriteData<dat>;}//寫一個(gè)字符串:X為橫軸<0-15>,Y為縱軸<0-1>voidLCD1602_PutStr<unsignedcharx,unsignedchary,constunsignedchar*s>{ LCD1602_SetCursor<x,y>; while<*s> { LCD1602_WriteData<*s>; s++; }}//寫一個(gè)無字符整數(shù):X為橫軸<0-15>,Y為縱軸<0-1>voidLCD1602_PutNum<unsignedcharx,unsignedchary,unsignedintnum>{ unsignedchari=0,temp[5]; while<num/10||num%10> { temp[i]=num%10; num/=10; i++; } LCD1602_SetCursor<x,y>; while<i> { i--; LCD1602_WriteData<temp[i]+0x30>; }}INSTRUCT_INIT.H#ifndef _instruct_init__H#define _instruct_init__H#include"stc\stc15f2k60s2.h"#include"fifo12_buf.h"externunsignedcharEx0_flag;externunsignedcharEx1_flag;unsignedcharzjval;//中間值externST_FIFO_BUFGPS_data;externunsignedcharrcvbuf[600];voidDelay10ms<>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論