版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 專業(yè)綜合設(shè)計(jì)</b></p><p> 基于單片機(jī)的流水燈的設(shè)計(jì)與制作</p><p><b> 專業(yè)綜合設(shè)計(jì)任務(wù)書</b></p><p> 一、設(shè)計(jì)題目:基于單片機(jī)的炫彩流水燈的設(shè)計(jì)與制作</p><p><b> 二、設(shè)計(jì)目的</b>
2、;</p><p> 1、掌握單片機(jī)的的基本原理及利用I/O口輸入輸出功能 ;</p><p> 2、掌握LCD動態(tài)掃描顯示驅(qū)動電路設(shè)計(jì)的方法;</p><p> 3、掌握利用proteus進(jìn)行軟件仿真及對單片機(jī)器件進(jìn)行程序下載的方法。</p><p><b> 三、設(shè)計(jì)任務(wù)及要求</b></p>
3、<p> 設(shè)計(jì)并實(shí)現(xiàn)流水燈。下載芯片:AT89C52。流水燈具有以下基本功能:</p><p> 1、從P1.0-1.7逐個(gè)點(diǎn)亮,再由P1.7-P1.0逐個(gè)點(diǎn)亮,進(jìn)入2模式;</p><p> 2、從P1.0、P1.1-P1.6、1.7兩兩點(diǎn)亮,并返回P1.0,進(jìn)入3模式;</p><p> 3、從p1.0、P1.7一起向中間點(diǎn)亮直到全亮,再由中間
4、2個(gè)先滅,直到全滅,返回1模式;</p><p> 4、利用LCD顯示學(xué)號姓名;</p><p> 四、設(shè)計(jì)時(shí)間及進(jìn)度安排</p><p> 設(shè)計(jì)時(shí)間共三周(2011.12.20-2012.1.6),具體安排如下表:</p><p> 五、指導(dǎo)教師評語及學(xué)生成績</p><p><b> 目錄&l
5、t;/b></p><p> 專業(yè)綜合設(shè)計(jì)任務(wù)書I</p><p> 第一章專業(yè)綜合設(shè)計(jì)的目的- 1 -</p><p> 第二章 任務(wù)描述及設(shè)計(jì)方案- 1 -</p><p> 2.1任務(wù)描述- 1 -</p><p> 2.2設(shè)計(jì)方案- 1 -</p><p>
6、 第三章 硬件設(shè)計(jì)方案- 2 -</p><p> 3.1流水燈控制系統(tǒng)電路原理圖- 2 -</p><p> 3.2 單片機(jī)功能說明- 2 -</p><p> 第四章 程序設(shè)計(jì)方案- 5 -</p><p> 4.1 程序流程圖- 5 -</p><p> 4.2 仿真電路圖- 5 -<
7、/p><p><b> 結(jié)論- 6 -</b></p><p> 參考文獻(xiàn)- 7 -</p><p> 附件1 PCB電路圖- 7 -</p><p> 附錄2 源程序清單- 7 -</p><p><b> 專業(yè)綜合設(shè)計(jì)的目的</b></p>&
8、lt;p> 設(shè)計(jì)是學(xué)生理論聯(lián)系實(shí)際的重要實(shí)踐教學(xué)環(huán)節(jié),是對學(xué)生進(jìn)行的一次綜合性專業(yè)設(shè)計(jì)訓(xùn)練。通過專業(yè)綜合設(shè)計(jì)使學(xué)生獲得以下幾方面能力,為畢業(yè)設(shè)計(jì)(論文)奠定基礎(chǔ)。</p><p> 1、進(jìn)一步鞏固和加深學(xué)生所學(xué)一門或幾門相關(guān)專業(yè)課(或?qū)I(yè)基礎(chǔ)課)理論知識,培養(yǎng)學(xué)生設(shè)計(jì)、計(jì)算、繪圖、計(jì)算機(jī)應(yīng)用、文獻(xiàn)查閱、報(bào)告撰寫等基本技能;</p><p> 2、培養(yǎng)學(xué)生實(shí)踐動手能力及獨(dú)立分析和
9、解決工程實(shí)際問題的能力;</p><p> 3、培養(yǎng)學(xué)生的團(tuán)隊(duì)協(xié)作精神、創(chuàng)新意識、嚴(yán)肅認(rèn)真的治學(xué)態(tài)度和嚴(yán)謹(jǐn)求實(shí)的工作作風(fēng)。</p><p> 一個(gè)新技術(shù)層出不窮的時(shí)代,在電子領(lǐng)域尤其是自動化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構(gòu)成的控制系統(tǒng),正以前所未見的速度被單片機(jī)智能控制系統(tǒng)所取代。單片機(jī)具有體積小、功能強(qiáng)、成本低、應(yīng)用面廣等優(yōu)點(diǎn),可以說,智能控制與自動控制的核心就是單片機(jī)。
10、</p><p> 學(xué)習(xí)單片機(jī)的最有效方法就是理論與實(shí)踐并重,現(xiàn)在我把單片機(jī)流水燈設(shè)計(jì)作為一個(gè)課程設(shè)計(jì),需要更深的去了解單片機(jī)的很多功能,努力的去查找資料,當(dāng)今時(shí)代是一個(gè)新技術(shù)層出不窮的時(shí)代,在電子領(lǐng)域尤其是自動化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構(gòu)成的控制系統(tǒng),正以前所未見的速度被單片機(jī)智能控制系統(tǒng)所取代。</p><p> 第二章 任務(wù)描述及設(shè)計(jì)方案</p>
11、<p><b> 2.1任務(wù)描述</b></p><p> 設(shè)計(jì)并實(shí)現(xiàn)流水燈。下載芯片:AT89C52。流水燈具有以下基本功能:</p><p> 1、從P1.0-1.7逐個(gè)點(diǎn)亮,再由P1.7-P1.0逐個(gè)點(diǎn)亮,進(jìn)入2模式;</p><p> 2、從P1.0、P1.1-P1.6、1.7兩兩點(diǎn)亮,并返回P1.0,進(jìn)入3模式;&l
12、t;/p><p> 3、從p1.0、P1.7一起向中間點(diǎn)亮直到全亮,再由中間2個(gè)先滅,直到全滅,返回1模式;</p><p> 4、利用LCD顯示學(xué)號姓名;</p><p><b> 2.2設(shè)計(jì)方案</b></p><p> 實(shí)現(xiàn)此功能有兩種方案,一種是使用傳統(tǒng)的模擬電路,另一種是用單片機(jī)控制的電路。我們選擇單片機(jī)控
13、制系統(tǒng)。其中系統(tǒng)工作原理為:</p><p> 在上個(gè)程序中我們是逐個(gè)控制P1端口的每個(gè)位來實(shí)現(xiàn)的,因此程序顯得有點(diǎn)復(fù)雜,下面我們利用循環(huán)移位指令,采用循環(huán)程序結(jié)構(gòu)進(jìn)行編程。我們在程序一開始就給P1口送一個(gè)數(shù),這個(gè)數(shù)本身就讓P1.0先低,其他位為高,然后延時(shí)一段時(shí)間,再讓這個(gè)數(shù)據(jù)向高位移動,然后再輸出至P1口,這樣就實(shí)現(xiàn)“流水”效果啦。由于8051系列單片機(jī)的指令中只有對累加器ACC中數(shù)據(jù)左移或右移的指令,因此
14、實(shí)際編程中我們應(yīng)把需移動的數(shù)據(jù)先放到ACC中,讓其移動,然后將ACC移動后的數(shù)據(jù)再轉(zhuǎn)送到P1口,這樣就可以實(shí)現(xiàn)“流水”效果。</p><p> 第三章 硬件設(shè)計(jì)方案</p><p> 如果要讓接在P1.0口的LED1亮起來,那么只要把P1.0口的電平變?yōu)榈碗娖骄涂梢粤?;相反,如果要接在P1.0口的LED1熄滅,就要把P1.0口的電平變?yōu)楦唠娖?;同理,接在P1.1~P1.7口的其他7個(gè)
15、LED的點(diǎn)亮和熄滅的方法同LED1。因此,要實(shí)現(xiàn)流水燈功能,我們只要將發(fā)光二極管LED1~LED8依次點(diǎn)亮、熄滅,8只LED燈便會一亮一暗的做流水燈了。在此我們還應(yīng)注意一點(diǎn),由于人眼的視覺暫留效應(yīng)以及單片機(jī)執(zhí)行每條指令的時(shí)間很短,我們在控制二極管亮滅的時(shí)候應(yīng)該延時(shí)一段時(shí)間,否則我們就看不到“流水”效果了。</p><p> 3.1流水燈控制系統(tǒng)電路原理圖</p><p> 圖 3-1
16、流水燈系統(tǒng)工作原理圖</p><p> 3.2 單片機(jī)功能說明</p><p> 按照單片機(jī)系統(tǒng)擴(kuò)展與系統(tǒng)配置狀況,單片機(jī)應(yīng)用系統(tǒng)可分為最小系統(tǒng)、最小功耗系統(tǒng)及典型系統(tǒng)等。AT89C51單片機(jī)是美國ATMEL公司生產(chǎn)的低電壓、高性能CMOS 8位單片機(jī),具有豐富的內(nèi)部資源:4kB閃存、128BRAM、32根I/O口線、2個(gè)16位定時(shí)/計(jì)數(shù)器、5個(gè)向量兩級中斷結(jié)構(gòu)、2個(gè)全雙工的串行口,具
17、有4.25~5.50V的電壓工作范圍和0~24MHz工作頻率,使用AT89C51單片機(jī)時(shí)無須外擴(kuò)存儲器。因此,本流水燈實(shí)際上就是一個(gè)帶有八個(gè)發(fā)光二極管的單片機(jī)最小應(yīng)用系統(tǒng),即為由發(fā)光二極管、晶振、復(fù)位、電源等電路和必要的硬件組成的單個(gè)單片機(jī)。其具體硬件組成如圖3-1所示。</p><p> 單片機(jī)時(shí)鐘電路通常有兩種形式:</p><p> 3.2.1、內(nèi)部振蕩方式:MCS-51單片機(jī)片
18、內(nèi)有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。把放大器與作為反饋元件的晶體振蕩器或陶瓷諧振器連接,就構(gòu)成了內(nèi)部自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖(如圖3-1所示)。</p><p> 3.2.2、外部振蕩方式:外部振蕩方式就是把外部已有的時(shí)鐘信號引入單片機(jī)內(nèi)(如圖3-2所示)。 </p><p> 圖3-1 內(nèi)部振蕩方式圖
19、 圖3-2 外部振蕩方式</p><p> 3.2.3、兩種復(fù)位電路</p><p> 單片機(jī)復(fù)位電路包括片內(nèi)、片外兩部分。外部復(fù)位電路就是為內(nèi)部復(fù)位電路提供兩個(gè)機(jī)器周期以上的高電平而設(shè)計(jì)的。MCS-51單片機(jī)通常采用上電自動復(fù)位和按鍵手動復(fù)位兩種方式。如圖3-3所示。</p><p> 3.2.4、單片機(jī)復(fù)位后的狀態(tài)</p&
20、gt;<p> 單片機(jī)運(yùn)行出錯(cuò)或進(jìn)入死循環(huán)時(shí),可按復(fù)位鍵重新運(yùn)行。 </p><p> 圖3-3 幾種復(fù)位電路</p><p> 3.2.5、時(shí)鐘電路</p><p> 系統(tǒng)的時(shí)鐘電路設(shè)計(jì)是采用的內(nèi)部方式,即利用芯片內(nèi)部的振蕩電路。AT89單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出
21、端。這個(gè)放大器與作為反饋元件的片外晶體諧振器一起構(gòu)成一個(gè)自激振蕩器。外接晶體諧振器以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中。對外接電容的值雖然沒有嚴(yán)格的要求,但電容的大小會影響震蕩器頻率的高低、震蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。因此,此系統(tǒng)電路的晶體振蕩器的值為12MHz,電容應(yīng)盡可能的選擇陶瓷電容,電容值約為22μF。在焊接刷電路板時(shí),晶體振蕩器和電容應(yīng)盡可能安裝得與單片機(jī)芯片靠近,以減少寄生電容,更好地保
22、證震蕩器穩(wěn)定和可靠地工作。</p><p> 3.2.6、復(fù)位電路</p><p> 復(fù)位是由外部的復(fù)位電路來實(shí)現(xiàn)的。片內(nèi)復(fù)位電路是復(fù)位引腳RST通過一個(gè)斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來抑制噪聲,它的輸出在每個(gè)機(jī)器周期的S5P2,由復(fù)位電路采樣一次。復(fù)位電路通常采用上電自動復(fù)位和按鈕復(fù)位兩種方式,此電路系統(tǒng)采用的是上電與按鈕復(fù)位電路,如圖所示。當(dāng)時(shí)鐘頻率選用6MHz時(shí),C取
23、22μF,Rs約為200Ω,Rk約為1K。</p><p> 3.2.7、中斷服務(wù)程序說明 </p><p> 與每類I/O設(shè)備相關(guān)的進(jìn)程都有一個(gè)靠近內(nèi)存底部的地址,稱作中斷向量。 它包括中斷服務(wù)程序的入口地址。中斷服務(wù)程序:處理器處理“急件”,可理解為是一種服務(wù),是通過執(zhí)行事先編好的某個(gè)特定的程序來完成的,這種處理“急件”的程序被稱為——中斷服務(wù)程序。當(dāng)中央處理器正在處理內(nèi)部數(shù)據(jù)時(shí),
24、外界發(fā)生了緊急情況,要求CPU暫停當(dāng)前的工作轉(zhuǎn)去處理這個(gè)緊急事件。處理完畢后,再回到原來被中斷的地址,繼續(xù)原來的工作,這樣的過程稱為中斷。實(shí)現(xiàn)這一功能的部件稱為中斷系統(tǒng),申請CPU中斷的請求源稱為中斷源,單片機(jī)的中斷系統(tǒng)一般允許多個(gè)中斷源,當(dāng)多個(gè)中斷源同時(shí)向CPU請求中斷時(shí),就存在一個(gè)中斷優(yōu)先權(quán)的問題。通常根據(jù)中斷源的優(yōu)先級別,優(yōu)先處理最緊急事件的中斷請求源,即最先響應(yīng)級別最高的中斷請求。 </p><p>
25、 中斷處理過程: </p><p> ?。?)保護(hù)被中斷進(jìn)程現(xiàn)場。為了在中斷處理結(jié)束后能夠使進(jìn)程準(zhǔn)確地返回到中斷點(diǎn),系統(tǒng)必須保存當(dāng)前處理機(jī)程序狀態(tài)字PSW和程序計(jì)數(shù)器PC等的值。 </p><p> ?。?)分析中斷原因,轉(zhuǎn)去執(zhí)行相應(yīng)的中斷處理程序。在多個(gè)中斷請求同時(shí)發(fā)生時(shí),處理優(yōu)先級最高的中斷源發(fā)出的中斷請求。 </p><p> ?。?)恢復(fù)被中斷進(jìn)
26、程的現(xiàn)場,CPU繼續(xù)執(zhí)行原來被中斷的進(jìn)程。</p><p> 3.2.8、C51 定時(shí)器0說明</p><p> M/機(jī)器周期=初值;</p><p> TH0=(65536-初值)/256; </p><p> TL0=(65536-初值)%256;</p><p> 將(65536-初值)
27、所得的值化成16進(jìn)制,其高位就是TH0的值,低位為TL0的值</p><p> 例如用12M晶振做1ms定時(shí)計(jì)算如下:</p><p> 機(jī)器周期=12/12*10^6=1us(微秒)</p><p> 定時(shí)初值=(1*10^-3)/(1*10^-6)=1000;</p><p> 所以:TH0=(65536-1000)/256;(求
28、模運(yùn)算,即可求出高八位的值)</p><p> TL0=(65536-1000)%256;(求余運(yùn)算,因?yàn)榈桶宋蛔畲竽苎b255)</p><p> 將65536-1000=64536化為16進(jìn)制為:0xFC18</p><p><b> TH0=0xFC;</b></p><p><b> TL0=0X
29、18;</b></p><p> 如流水燈初值設(shè)置:12MHz除12為1MHz,也就是說一秒=1000000次機(jī)器周期。50ms=50000次 機(jī)器周期。</p><p> 65536-50000=15536(3cb0)</p><p> TH0=0x3c,TL0=0xb0.</p><p> 第四章 程序設(shè)計(jì)方案<
30、;/p><p><b> 4.1 程序流程圖</b></p><p> 圖 4-1 主程序流程圖</p><p><b> 4.2 仿真電路圖</b></p><p> 在proteus軟件仿真之前必須在Proteus里面畫出硬件的外部接線圖,接下來裝入程序,然后組建生成HEX文件,接下來就可以
31、運(yùn)行仿真了,如圖4-2。</p><p><b> 圖4-2仿真圖</b></p><p><b> 結(jié)論</b></p><p> 通過這次課程設(shè)計(jì),我拓寬了知識面,鍛煉了能力,綜合素質(zhì)得到較大提高。而安排課程設(shè)計(jì)的基本目的,是在于通過理論與實(shí)際的結(jié)合、人與人的溝通,進(jìn)一步提高思想覺悟和領(lǐng)悟力。尤其是觀察、分析和解
32、決問題的實(shí)際工作能力。它的一個(gè)重要功能,在于運(yùn)用學(xué)習(xí)成果,檢驗(yàn)學(xué)習(xí)成果。運(yùn)用學(xué)習(xí)成果,把課堂上學(xué)到的系統(tǒng)化的理論知識,嘗試性地應(yīng)用于實(shí)際設(shè)計(jì)工作,并從理論的高度對設(shè)計(jì)工作的現(xiàn)代化提出一些有針對性的建議和設(shè)想。檢驗(yàn)學(xué)習(xí)成果,看一看課堂學(xué)習(xí)與實(shí)際工作到底有多大距離,并通過綜合分析,找出學(xué)習(xí)中存在的不足,以便為完善學(xué)習(xí)計(jì)劃,改變學(xué)習(xí)內(nèi)容與方法提供實(shí)踐依據(jù)。實(shí)際能力的培養(yǎng)至關(guān)重要,而這種實(shí)際能力的培養(yǎng)單靠課堂教學(xué)是遠(yuǎn)遠(yuǎn)不夠的,必須從課堂走向?qū)嵺`
33、。這也是一次預(yù)演和準(zhǔn)備畢業(yè)設(shè)計(jì)工作。通過課程設(shè)計(jì),讓我們找出自身狀況與實(shí)際需要的差距,并在以后的學(xué)習(xí)期間及時(shí)補(bǔ)充相關(guān)知識,為求職與正式工作做好充分的知識、能力準(zhǔn)備,從而縮短從校園走向社會的心理轉(zhuǎn)型期。課程設(shè)計(jì)促進(jìn)了我系人才培養(yǎng)計(jì)劃的完善和課程設(shè)置的調(diào)整。課程設(shè)計(jì)之后,我們普遍感到不僅實(shí)際動手說,這應(yīng)該是個(gè)警示,在剩下的大學(xué)生活里,我應(yīng)該好好珍惜,好好學(xué)習(xí)各方面的知識。在單片</p><p><b>
34、參考文獻(xiàn)</b></p><p> [1] 李華,王思明.單片機(jī)原理及應(yīng)用.蘭州:蘭州大學(xué)出版社,2001.5</p><p> [2] 陳寧.單片機(jī)技術(shù)項(xiàng)目教程. 南京:南京東南大學(xué)出版社,2008.4</p><p> [3] 胡輝.單片機(jī)原理及應(yīng)用設(shè)計(jì).中國水利水電出版社,2006.6</p><p> [4] 何立
35、民.單片機(jī)高級教程.北京:北京航空航天大學(xué)出版社, 2000.</p><p> [5] 王幸之,鐘愛群.AT89系列單片機(jī)原理與接El技術(shù).北京:北京航空航天大學(xué)出版社.2004</p><p> [6]萬文略,趙利.單片機(jī)原理.重慶:重慶大學(xué)出版社,2010.4.</p><p> 附件1 PCB電路圖</p><p><b&
36、gt; 附錄2 源程序清單</b></p><p> #include <at89x51.h></p><p> //#include <intrins.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned
37、int</p><p> #define lcm P1 </p><p> sbit p_csl=P2^4;</p><p> sbit p_csr=P2^3;</p><p> sbit p_di=P2^2; </p><p> sbit p_rw=P2^1;</p>&
38、lt;p> sbit p_e=P2^0;</p><p> sbit p_rst=P2^7;</p><p> uchar code HZ[];</p><p> uchar code Ez[];</p><p> unsigned char t=0,i=0;</p><p> code unsig
39、ned char LED[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,</p><p> 0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,</p><p> 0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e};</p><p> /*****函數(shù)聲明********/<
40、/p><p> void delay(uint k);</p><p> void wcode(uchar c,uchar csl,uchar csr);</p><p> void wdata(uchar c,uchar csl,uchar csr);</p><p> void set_statrline(uchar i);</
41、p><p> void set_xy(uchar x,uchar y);</p><p> void dison_off(uchar o);</p><p> void reset();</p><p> void lcd_init(void);</p><p> void lw(uchar x,uchar y,
42、uchar dd);//寫數(shù)據(jù)函數(shù)</p><p> void disp_Hz(uchar xx,uchar yy,uchar n,uchar fb);</p><p> void disp_Ez(uchar xx,uchar yy,uchar n,uchar fb);</p><p> void disp_num(unsigned long num);<
43、;/p><p> void disp_name(unsigned char n);</p><p><b> //延時(shí)</b></p><p> void delay(uint k)</p><p><b> {uint i;</b></p><p> for(;k&
44、gt;0;k--)</p><p> {for(i=0;i<124;i++)</p><p><b> {;}</b></p><p><b> }</b></p><p><b> }</b></p><p><b> //
45、LCM忙判斷</b></p><p> void lcd_busy(void)</p><p><b> {p_di=0;</b></p><p><b> p_rw=1;</b></p><p> /*lcm=0xff;</p><p><b&g
46、t; while(1)</b></p><p><b> { p_e=1;</b></p><p> if(lcm<0x80)</p><p><b> break;</b></p><p><b> p_e=0;</b></p>&
47、lt;p><b> }</b></p><p><b> p_e=0;*/</b></p><p><b> }</b></p><p><b> //寫指令到LCM</b></p><p> void wcode(uchar c,ucha
48、r csl,uchar csr)</p><p> {p_csl=csl;</p><p> p_csr=csr;</p><p> lcd_busy();</p><p><b> p_di=0;</b></p><p><b> p_rw=0;</b><
49、/p><p> lcm=c;//將變量C賦予LCM</p><p><b> p_e=1;</b></p><p><b> p_e=0;</b></p><p><b> }</b></p><p> //寫數(shù)據(jù)到LCM子函數(shù)</p>
50、<p> void wdata(uchar c,uchar csl,uchar csr)</p><p> {p_csl=csl;</p><p> p_csr=csr;</p><p> lcd_busy();</p><p><b> p_di=1;</b></p><p
51、><b> p_rw=0;</b></p><p> lcm=c;//將變量C賦予LCM</p><p><b> p_e=1;</b></p><p><b> p_e=0;</b></p><p><b> }</b></p>
52、;<p><b> //設(shè)定起始行</b></p><p> void set_startline(uchar i)</p><p> {i=0xc0+i;</p><p> wcode(i,1,1);</p><p><b> }</b></p><p
53、> //定位X方向,Y方向</p><p> void set_xy(uchar x,uchar y)</p><p> {x=x+0x40;</p><p><b> y=y+0xb8;</b></p><p> wcode(x,1,1);</p><p> wcode(y,
54、1,1);</p><p><b> }</b></p><p><b> //屏幕開啟、關(guān)閉</b></p><p> void dison_off(uchar o)</p><p> {o=o+0x3e; </p><p> wcode(o,1,1);<
55、;/p><p><b> }</b></p><p><b> //復(fù)位子函數(shù)</b></p><p> void reset()</p><p> {//delay(1000);</p><p><b> p_rst=0;</b></p&g
56、t;<p> delay(20);</p><p><b> p_rst=1;</b></p><p> delay(20);</p><p><b> }</b></p><p><b> //LCM初始化</b></p><p&g
57、t; void lcd_init(void)</p><p> {uchar x,y;</p><p><b> reset();</b></p><p> dison_off(0);</p><p> for(y=0;y<8;y++) </p><p> { for(x=0;
58、x<128;x++)</p><p> lw(x,y,0);</p><p><b> }</b></p><p> dison_off(1);</p><p> set_startline(0);</p><p><b> }</b></p>
59、<p><b> //寫數(shù)據(jù)到LCM</b></p><p> void lw(uchar x,uchar y,uchar dd)</p><p> {if(x>=64)</p><p> { set_xy(x-64,y);</p><p> wdata(dd,0,1);</p>
60、<p><b> }</b></p><p><b> else</b></p><p> { set_xy(x,y);</p><p> wdata(dd,1,0);</p><p><b> }</b></p><p><
61、b> }</b></p><p><b> //顯示漢字子函數(shù)</b></p><p> void disp_Hz(uchar xx,uchar yy,uchar n,uchar fb)//xx為該行第xx個(gè)字,共8字,yy為第幾行,共8行。</p><p> {uchar i,dx;</p><
62、p> for(i=0;i<16;i++)</p><p> {dx=HZ[2*i+n*32]; //2*i為選擇偶數(shù)行,因其為列掃描</p><p><b> if(fb)</b></p><p> dx=255-dx;//反白顯示</p><p> lw(xx*16+i,yy,dx);</
63、p><p> dx=HZ[(2*i+1)+n*32];</p><p><b> if(fb)</b></p><p> dx=255-dx;</p><p> lw(xx*16+i,yy+1,dx);</p><p><b> }</b></p><
64、;p><b> }</b></p><p> void disp_Ez(uchar xx,uchar yy,uchar n,uchar fb)//顯示數(shù)字或英語</p><p> { uchar i,dx;</p><p> for(i=0;i<8;i++)</p><p> {dx=Ez[2*
65、i+n*16];</p><p><b> if(fb)</b></p><p> dx=255-dx;</p><p> lw(xx*8+i,yy,dx);//</p><p> dx=Ez[(2*i+1)+n*16];</p><p><b> if(fb)</b&g
66、t;</p><p> dx=255-dx;</p><p> lw(xx*8+i,yy+1,dx);</p><p><b> }</b></p><p><b> }</b></p><p> /*****主函數(shù)****/</p><p>
67、; void main()</p><p> {lcd_init();</p><p> disp_name(3); //</p><p> disp_num(807050223);</p><p> TMOD=0x11;//定時(shí)器0在模式1</p><p> TL0=(-50000)
68、%256;//定時(shí)器每50ms產(chǎn)生一次溢出</p><p> TH0=(-50000)/256;</p><p> ET0=1;//使能定時(shí)器0中斷</p><p> EA=1;//使能總中斷</p><p> TR0=1;//開始計(jì)時(shí)</p><p><b> whil
69、e(1);</b></p><p><b> }</b></p><p> void tiemerO() interrupt 1 </p><p><b> { </b></p><p> TL0=(-50000)%256;//定時(shí)器</p><p>
70、 TH0=(-50000)/256;</p><p><b> t++;</b></p><p> if((t==20))</p><p><b> {</b></p><p><b> t=0;</b></p><p> P3=LED[i]
71、;</p><p> if(i++==21)</p><p><b> {</b></p><p><b> i=0;</b></p><p><b> }</b></p><p><b> }</b></p>
72、<p><b> }</b></p><p> uchar code HZ[]=</p><p> {0x00,0x40,0x00,0x30,0xFC,0x0F,0x44,0x00,0x54,0x7D,0x54,0x25,0x54,0x25,0x55,0x25,</p><p> 0xFE,0x27,0x54,0x25,0
73、x54,0x25,0xF4,0x7D,0x44,0x00,0x44,0x00,0x00,0x00,0x00,0x00,/*"",0*/</p><p> 0x00,0x40,0x00,0x30,0xFE,0x0F,0x12,0x21,0x12,0x41,0xFE,0x3F,0x20,0x20,0x1C,0x21,</p><p> 0x10,0x21,0x10,0x
74、21,0xFF,0x3F,0x10,0x21,0x10,0x21,0x10,0x21,0x00,0x20,0x00,0x00,/*"",1*/</p><p> 0x00,0x00,0xFE,0xFF,0x02,0x04,0x22,0x08,0x5A,0x04,0x86,0x03,0x00,0x00,0xFE,0x3F,</p><p> 0x42,0x10,0x4
75、2,0x10,0x42,0x10,0x42,0x10,0x42,0x10,0xFE,0x3F,0x00,0x00,0x00,0x00/*"",2*/</p><p><b> };</b></p><p><b> //數(shù)字</b></p><p> uchar code Ez[]={</p
76、><p> 0x00,0x00,0xE0,0x0F,0x10,0x10,0x08,0x20,0x08,0x20,0x10,0x10,0xE0,0x0F,0x00,0x00,/*"0",0*/</p><p> 0x00,0x00,0x10,0x20,0x10,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/
77、*"1",1*/</p><p> 0x00,0x00,0x70,0x30,0x08,0x28,0x08,0x24,0x08,0x22,0x88,0x21,0x70,0x30,0x00,0x00,/*"2",2*/</p><p> 0x00,0x00,0x30,0x18,0x08,0x20,0x88,0x20,0x88,0x20,0x48,0x
78、11,0x30,0x0E,0x00,0x00,/*"3",3*/</p><p> 0x00,0x00,0x00,0x07,0xC0,0x04,0x20,0x24,0x10,0x24,0xF8,0x3F,0x00,0x24,0x00,0x00,/*"4",4*/</p><p> 0x00,0x00,0xF8,0x19,0x08,0x21,0x8
79、8,0x20,0x88,0x20,0x08,0x11,0x08,0x0E,0x00,0x00,/*"5",5*/</p><p> 0x00,0x00,0xE0,0x0F,0x10,0x11,0x88,0x20,0x88,0x20,0x18,0x11,0x00,0x0E,0x00,0x00,/*"6",6*/</p><p> 0x00,0x00
80、,0x38,0x00,0x08,0x00,0x08,0x3F,0xC8,0x00,0x38,0x00,0x08,0x00,0x00,0x00,/*"7",7*/</p><p> 0x00,0x00,0x70,0x1C,0x88,0x22,0x08,0x21,0x08,0x21,0x88,0x22,0x70,0x1C,0x00,0x00,/*"8",8*/</p&g
81、t;<p> 0x00,0x00,0xE0,0x00,0x10,0x31,0x08,0x22,0x08,0x22,0x10,0x11,0xE0,0x0F,0x00,0x00,/*"9",9*/</p><p> 0x00,0x00,0x00,0x60,0x00,0x18,0x00,0x06,0x80,0x01,0x60,0x00,0x18,0x00,0x04,0x00,/*&
82、quot;/",10*/</p><p><b> };</b></p><p> void disp_num(unsigned long num)</p><p><b> {</b></p><p> unsigned char tab[11];</p><
83、p> unsigned char loop;</p><p> tab[0]= 1;/*num/10000000000;*/</p><p> tab[1]=(num%10000000000)/1000000000;</p><p> tab[2]=(num%1000000000)/100000000;</p><p> ta
84、b[3]=(num%100000000)/10000000;</p><p> tab[4]=(num%10000000)/1000000;</p><p> tab[5]=(num%1000000)/100000;</p><p> tab[6]=(num%100000)/10000;</p><p> tab[7]=(num%10
85、000)/1000;</p><p> tab[8]=(num%1000)/100;</p><p> tab[9]=(num%100)/10;</p><p> tab[10]=num%10;</p><p> for(loop=0;loop<11;loop++)</p><p><b>
86、{</b></p><p> disp_Ez(loop+1,2,tab[loop],0); </p><p><b> }</b></p><p><b> }</b></p><p> void disp_name(unsigned char n)</p>
87、<p> { unsigned char loop;</p><p> for(loop=0;loop<n;loop++)//</p><p><b> {</b></p><p> disp_Hz(loop+2,0,loop,0);</p><p><b> }</b>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)的流水燈設(shè)計(jì)
- 單片機(jī)控制的花樣流水燈畢業(yè)設(shè)計(jì)
- 51單片機(jī)流水燈畢業(yè)設(shè)計(jì)論文
- 用單片機(jī)實(shí)現(xiàn)流水燈的控制畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的流水燈系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- led流水燈單片機(jī)的設(shè)計(jì)畢業(yè)論文
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的led流水燈系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的音樂流水燈
- 畢業(yè)論文—led流水燈單片機(jī)的設(shè)計(jì)
- 畢業(yè)論文---led流水燈單片機(jī)的設(shè)計(jì)
- 課程設(shè)計(jì)-基于單片機(jī)的led流水燈設(shè)計(jì)
- 課程設(shè)計(jì)-- 基于單片機(jī)的雙向流水燈
- 課程設(shè)計(jì)-- 基于單片機(jī)的雙向流水燈
- 基于51單片機(jī)led流水燈設(shè)計(jì)畢業(yè)論文
- 單片機(jī)流水燈課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---流水燈
- 單片機(jī)控制的花樣流水燈設(shè)計(jì)畢業(yè)論文
- 單片機(jī)控制的花樣流水燈設(shè)計(jì)畢業(yè)論文
- 單片機(jī)控制的花樣流水燈設(shè)計(jì)畢業(yè)論文
- 單片機(jī)控制的花樣流水燈設(shè)計(jì)畢業(yè)論文
評論
0/150
提交評論