單片機課程設(shè)計---基于STC89C52的旋轉(zhuǎn)LED時鐘_第1頁
單片機課程設(shè)計---基于STC89C52的旋轉(zhuǎn)LED時鐘_第2頁
單片機課程設(shè)計---基于STC89C52的旋轉(zhuǎn)LED時鐘_第3頁
單片機課程設(shè)計---基于STC89C52的旋轉(zhuǎn)LED時鐘_第4頁
單片機課程設(shè)計---基于STC89C52的旋轉(zhuǎn)LED時鐘_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、材料與能源學(xué)院微電子學(xué)課程設(shè)計廣東工業(yè)大學(xué)課程設(shè)計任務(wù)書題目名稱基于STC89C52的旋轉(zhuǎn)LED時鐘學(xué)生學(xué)院材料與能源學(xué)院專業(yè)班級微電子學(xué)2班姓 名黃楚敏 何俊鑫 黃達(dá) 黃樹恒學(xué) 號3110007484 3110007483 3110007485 3110007486一、課程設(shè)計的內(nèi)容用STC89C52單片機制作一測溫儀旋轉(zhuǎn)LED時鐘:1.設(shè)計并繪制硬件電路圖;2.焊接好元器件;3.編寫程序并將調(diào)試好的程序固化到單片機中。二、課程設(shè)計的要求與數(shù)據(jù)單片機采用STC89C52芯片,時鐘芯片采用DS1302。用電機帶動驅(qū)動板旋轉(zhuǎn)系統(tǒng)上電后,驅(qū)動板的LED將會在電機帶動下動態(tài)掃描出時鐘畫面,并且可以用

2、紅外遙控調(diào)時。三、課程設(shè)計應(yīng)完成的工作1. 完成軟件、硬件的設(shè)計,并進(jìn)行硬件的焊接制作,并將調(diào)試成功的程序固化到單片機中,最后進(jìn)行硬件與軟件的調(diào)試;2.撰寫設(shè)計說明書。四、課程設(shè)計進(jìn)程安排序號設(shè)計各階段內(nèi)容地點起止日期1硬件、軟件設(shè)計宿舍12月26日2焊接電路板宿舍12月27日至28日3軟件、硬件調(diào)試宿舍12月29至1月2日4撰寫說明書宿舍1月3日至5日5答辯工3-3171月7日五、應(yīng)收集的資料及主要參考文獻(xiàn)譚浩強.C語言程序設(shè)計(第二版)。北京:清華大學(xué)出版社,1999年12月發(fā)出任務(wù)書日期: 年 月 日 指導(dǎo)教師簽名:計劃完成日期: 年 月 日 基層教學(xué)單位責(zé)任人簽章:主管院長簽章:目 錄

3、廣東工業(yè)大學(xué)課程設(shè)計任務(wù)書1摘要4一、課題設(shè)計的要求及目的51.1設(shè)計要求51.2課程設(shè)計目的5二、設(shè)計方案5三、系統(tǒng)框圖與工作原理83.1單片機系統(tǒng)工作架構(gòu)83.2系統(tǒng)工作原理10四、設(shè)計元器件說明10 4.1 PLCC STC89C52RC簡介104.2 74HC573芯片與光電傳感器簡介124.3 紅外簡介134.4 DS1302、LM7805芯片簡介154.5 LED 動態(tài)顯示原理17五、系統(tǒng)硬件電路設(shè)計18六、系統(tǒng)軟件設(shè)計19 6.1 單片機解碼紅外信號程序196.2 單片機讀寫DS1302程序22 6.3 自適應(yīng)轉(zhuǎn)速256.4 數(shù)字顯示模式266.5 指針顯示模式26七、總結(jié)與體會

4、27八、參考文獻(xiàn)27附錄A 完整源程序28附錄B 實物圖41 摘 要旋轉(zhuǎn)LED鐘,在國外一般稱為“螺旋槳時鐘”(propeller clock),是利用“視覺暫留”原理制作而成。將單片機控制的LED流水燈設(shè)備稍作改進(jìn),讓它動起來,就能神奇地顯示各種字符或圖案,其效果如浮在空中一般。旋轉(zhuǎn)LED顯示是利用機械轉(zhuǎn)動動態(tài)掃描代替?zhèn)鹘y(tǒng)逐行掃描方式,顯示屏其實質(zhì)就是與機械轉(zhuǎn)動配合起來的動態(tài)掃描顯示技術(shù)。本設(shè)計利用高速旋轉(zhuǎn)中控制LED燈的亮滅,進(jìn)行字符的顯示,控制器采用STC89C52單片機,借助人的視覺暫留效果,通過LED燈的機械掃描方式來顯示各種字符和圖像。 LED旋轉(zhuǎn)時鐘正是基于機械轉(zhuǎn)動動態(tài)掃描技術(shù),

5、以及人的視覺暫留效果做成的,它主要包括單片機STC89C52、時鐘芯片DS1302、光電耦合器件等。 我們做的這個時鐘具有兩種顯示模式:一種是字符式數(shù)字顯示模式,可在一個屏上顯示年月日和時分秒信息;另一種是指針式模擬顯示模式,可仿真指針式鐘表顯示時分秒信息。同時還設(shè)有紅外遙控功能,可通過遙控器改變顯示模式和調(diào)整時鐘的時值。關(guān)鍵詞:視覺暫留 旋轉(zhuǎn)時鐘 動態(tài)掃描一、課題設(shè)計的要求及目的 1.1 設(shè)計要求(1)驅(qū)動板在電機的旋轉(zhuǎn)帶動下能夠顯示時鐘畫面,并能夠自動計時。(2)由于電機工作電壓,環(huán)境因素的影響下,電機轉(zhuǎn)速不穩(wěn)定使時鐘畫面不穩(wěn)定,所以要求程序能夠自適應(yīng)調(diào)整轉(zhuǎn)速,使時鐘畫面基本穩(wěn)定不變。(3

6、)要求能夠通過紅外遙控實現(xiàn)數(shù)字時鐘和指針時鐘2種模式間轉(zhuǎn)換(4)要求能夠通過紅外遙控設(shè)置時間。 1.2 課程設(shè)計目的(1)訓(xùn)練正確地應(yīng)用單片微機,培養(yǎng)解決工業(yè)控制、工業(yè)檢測等領(lǐng)域具體問題的初步能力。(2)該設(shè)計熟悉單片微機應(yīng)用系統(tǒng)開發(fā)、研制的過程,軟硬件設(shè)計的工作方法、工作內(nèi)容、工作步驟。(3)提高學(xué)生理論與實踐結(jié)合的能力,將理論知識運用到實踐中來,能更好的掌握課本理論知識。二、設(shè)計方案(1)供電方式選擇1、常見的供電方式根據(jù)調(diào)查的結(jié)果,指針板的供電方式一般有以下三種:1)自感應(yīng)發(fā)電這種方法,就是從驅(qū)動板上引出導(dǎo)線,接入到電機內(nèi)部繞在轉(zhuǎn)子上,電機旋轉(zhuǎn)時該導(dǎo)線切割磁場產(chǎn)生感應(yīng)電動勢,經(jīng)過整流后作

7、為指針板上的電源。 A、這種方式的優(yōu)點是: 設(shè)計很巧妙,無機械磨損。 更巧妙的是,由于感應(yīng)出來的電動勢是交流的,所以可以利用該過零 信號來定位,不必另外準(zhǔn)備定位信號了。B、這種方式的缺點是: 提供的電流有限,只能適合 LED 較少的旋轉(zhuǎn)時鐘,當(dāng) LED 數(shù)量較多時,需要更多的電流,這種方式就不能滿足了。 其次,這種方式要對電機本身進(jìn)行改造,也有一定的難度。并不是所有的電機都適合這種改造。而且這種改造可能會給電機帶來損害。 另外還有一個問題,就是這種方式,只有在電機旋轉(zhuǎn)時才能發(fā)電給驅(qū)動板供電,一旦停止轉(zhuǎn)動,供電也就無以為繼了,這樣要實現(xiàn)旋轉(zhuǎn)時鐘的不間斷走時,還得另加備用電池并采用低功耗設(shè)計。 2

8、)自備電池這種方式,就是在驅(qū)動板上安裝電池,由電池供電。一般是用兩到三節(jié) 7 號電池。 A、這種方式的優(yōu)點是: .不用擔(dān)心電壓波動。 .也不存在機械磨損,不用擔(dān)心接觸不良之類問題的困擾。 B、這種方式的缺點是: .很費電池,三天兩頭換電池,既不經(jīng)濟(jì)也不環(huán)保,還很麻煩! .電池很重,一般的電機帶不動,必須用很大很大的電機哦。這也意味了成本的上升。 3)機械傳導(dǎo)供電也就是采用滑環(huán)和電刷,通過機械接觸傳導(dǎo)電流。A、這種方式的優(yōu)點是: 能夠提供比較大的工作電流。B、這種方式的缺點是: .有機械摩擦,會產(chǎn)生磨損。因此要求滑環(huán)和電刷材料要耐磨,經(jīng)得起折騰。另外,還得有足夠的彈性,并且要耐銹,否則會導(dǎo)致接觸

9、不良。 .有機械阻力,因此要求電機有比較大一點的功率。 .有機械噪音。4)感應(yīng)供電原理和變壓器原理相當(dāng),就是在2個相距很近的線圈中,一只線圈作為電能發(fā)送端,另一只線圈作為電能接收端,發(fā)送端接入交變電流,在相距很近的接收端就能同時感應(yīng)到交變電流。 A、這種方式的優(yōu)點是: 無機械噪音。B、這種方式的缺點是: .線圈耦合度低,供電效率低。 .制作難度大。 .需增加震蕩電路和濾波整流電路。 綜合以上三種:第一種,雖然優(yōu)點多,但難度很大,并且成本很高;第二種,沒有太多的擔(dān)心,可是使用起來相當(dāng)?shù)穆闊?,可能還會因為更換電池不及時而導(dǎo)致其中其他的零件受損;第三種,雖然會產(chǎn)生些摩擦,但是能提供較大電流,而摩擦的

10、問題可以采用其他方法來彌補。第四種,雖不產(chǎn)生機械噪音,但是需要在驅(qū)動板上加上濾波整流電路,增加驅(qū)動板重量。所以我們采用的是第三種機械傳導(dǎo)供電。(2)過零信號產(chǎn)生電路選擇 1)霍爾傳感器霍爾傳感器處于工作狀態(tài)時輸出總是處于高電平狀態(tài),當(dāng)磁鋼N極接近傳感器正面的有效距離,輸出端變?yōu)榈碗娖?。?dāng)磁鋼撤離傳感器有效距離。輸出端又顯示低電平,從而產(chǎn)生下降沿,是單片機中斷口接收到下降沿,從而產(chǎn)生中斷。 2)光電開關(guān)光電開關(guān)處于工作狀態(tài)時輸出總是處于高電平狀態(tài),當(dāng)光電開關(guān)經(jīng)過擋片時,輸出端變?yōu)榈碗娖?。?dāng)光電開關(guān)離開擋片時,輸出端又顯示低電平,從而產(chǎn)生下降沿,是單片機中斷口接收到下降沿,從而產(chǎn)生中斷。光電開關(guān)利

11、用光敏二極管對光的敏感性原理制作的,反應(yīng)較靈敏,且低電平時間由擋片的寬度決定,控制方便。而霍爾傳感器利用磁場對電場的作用原理制作的,反應(yīng)較遲緩,且感應(yīng)磁鋼的距離遠(yuǎn),當(dāng)轉(zhuǎn)速較快時難以控制。故該設(shè)計采用光電開關(guān)。(3)LED選擇 由于旋轉(zhuǎn)LED要求時鐘的分辨率高且重量輕,長度短,故該設(shè)計選用貼片LED發(fā)光二極管(4)單片機選擇由于旋轉(zhuǎn)LED驅(qū)動板上包括較多元器件和芯片,空間不足,所以該設(shè)計選用PLCC封裝的單片機,這種封裝的單片機為正方形,面積小,質(zhì)量輕。三、系統(tǒng)框圖與工作原理3.1單片機系統(tǒng)工作架構(gòu) 圖3.1.1 系統(tǒng)框圖 圖3.1.2 外部中斷1流程圖 圖3.1.3 定時器1流程圖3.3系統(tǒng)工

12、作原理通過光耦和外部中斷控制單片機從DS1302中讀取時鐘數(shù)據(jù)并在旋轉(zhuǎn)LED中的顯示位置,通過紅外遙控外部中斷讀取控制旋轉(zhuǎn)LED時鐘的顯示模式和時值的加減調(diào)控。四、設(shè)計元器件說明4.1 PLCC STC89C52RC簡介 圖4.1.1 PLCC STC89C52RC管腳圖 圖4.1.2 STC89C52RC單片機結(jié)構(gòu)STC89C52RC是一種帶4KB可編程可擦除只讀存儲器的低電壓,高性能微處理器,俗稱單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單

13、個芯片中,STC89C52RC是一種高效微控制器,STC89C52RC是它的一種精簡版本。STC89C52RC單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。STC89C52RC引腳即外觀如圖4.1.1所示,內(nèi)部結(jié)構(gòu)如圖4.1.2所示。P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)制用口,作為輸入口時,每位能吸收電流的方式驅(qū)動8個TTL邏輯門電路,對端口寫入“1可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期激活內(nèi)部上拉電阻。在Flash編程時,PO口接收指令節(jié),而在程序校檢時,輸出指令字節(jié),校檢時

14、,要求外接上拉電阻。 P1口:P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流I。Flash編程和程序校檢期間,P1接收低8位地址。P2口:P2口是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流I。在訪問外

15、部數(shù)據(jù)存儲器或16位地址的外部數(shù)據(jù)存儲(例如執(zhí)行MOVXDPTR指令)時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVXRI指令)時,P2口線上的內(nèi)容(也即特殊功能寄存器(SFR)區(qū)中R2寄存器的內(nèi)容),在整個訪問期間不改變。Flash編程和校檢時,P2亦接收高位地址和其他控制信號。P3口:P3口是一個帶內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作輸入端口,作輸入端時,被外部拉低的P3口將用上拉電阻,輸出電流I。P3口還接收一些用于Flash閃速存儲器編程和程序校檢的控

16、制信號。RST:復(fù)位輸入,當(dāng)震蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復(fù)位。ALE/PROG:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于所存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE乃以時鐘振動頻率的1/6輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。4.2 74HC573芯片與光電傳感器簡介 4.2.1 74HC573芯片圖 4.2.1 74HC573芯片74HC573為八進(jìn)制3 態(tài)非反轉(zhuǎn)透明鎖存器,是高性能硅門cmos器件。當(dāng)鎖存使能端LE為高時,這些器件的鎖存對于數(shù)據(jù)是

17、透明的(也就是說輸出同步)。當(dāng)鎖存使能變低時,符合建立時間和保持時間的數(shù)據(jù)會被鎖存。4.2.2 光電傳感器對射式U型槽光耦管具有,響應(yīng)塊,驅(qū)動簡單,容易安裝,易于與單片機通信等特點如上圖。上電之后光耦的光敏三極管的集電極輸出低電平,當(dāng)有物體擋住了光敏三極管的紅外光線時,光敏三極管的集電極和發(fā)射極處于高阻態(tài),所以集電極輸出高電平,當(dāng)光敏三極管再次感應(yīng)到紅外光源時,集電極再次輸出低電平,從而給單片機一個中斷信號。圖4.2.2 光電開關(guān),ITR9608-F 中間寬5MM槽式光電開關(guān)通常是標(biāo)準(zhǔn)的U字型結(jié)構(gòu),其發(fā)射器和接收器分別位于U型槽的兩邊,并形成一光軸,當(dāng)被檢測物體經(jīng)過U型槽且阻斷光軸時,光電開關(guān)

18、就產(chǎn)生了檢測到的開關(guān)量信號。槽式光電開關(guān)比較安全可靠的適合檢測高速變化,分辨透明與半透明物體。4.3 紅外簡介4.3.1 一體化紅外遙控接收頭圖4.3.1 HS0038B SIP3 一體化紅外遙控接收頭紅外遙控信號是一連串的二進(jìn)制脈沖碼。為了使其在無線傳輸過程中免受其他紅外信號的干擾,通常都是先將其調(diào)制在特定的載波頻率上,然后再經(jīng)紅外發(fā)射二極管發(fā)射出去,而紅外線接收裝置則要濾除其他雜波,只接收該特定頻率的信號并將其還原成二進(jìn)制脈沖碼,也就是解調(diào)。目前,對于這種進(jìn)行了調(diào)制的紅外遙控信號,通常是采用一體化紅外線接收頭進(jìn)行調(diào)解。一體化紅外線接收頭將低噪音放大器,限幅器,帶通濾波器,解調(diào)器,以及整形驅(qū)

19、動電路等集成在一起。一體化紅外線接收頭體積小,靈敏度高,外接元件少,抗干擾能力強,使用十分方便。4.3.2遙控發(fā)射器圖4.3.2 紅外遙控器遙控發(fā)射器及其編碼遙控發(fā)射器專用芯片很多,根據(jù)編碼格式可以分成兩大類,這里我們以運用比較廣泛,解碼比較容易的一類來加以說明,現(xiàn)以日本NEC的uPD6121G組成發(fā)射電路為例說明編碼原理。當(dāng)發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進(jìn)

20、制的“1”,其波形如圖2所示。上述“0”和“1”組成的32位二進(jìn)制碼經(jīng)38kHz的載頻進(jìn)行二次調(diào)制以提高發(fā)射效率,達(dá)到降低電源功耗的目的。然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射,如圖3所示,連發(fā)波形如圖4所示。4.4 DS1302、LM317、LM7805芯片簡介 4.4.1 DS1302DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進(jìn)行計時,具有閏年補償功能,工作電壓為2.5V5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個318的用于臨

21、時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時提供了對后備電源進(jìn)行涓細(xì)電流充電的能力。 引腳功能及結(jié)構(gòu)DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種

22、功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc2.0V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細(xì)說明。SCLK為時鐘輸入端。 下圖為DS1302的引腳功能圖:圖4.4.1 DS1302管腳定義圖數(shù)據(jù)輸入輸出(I/O)在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入D

23、S1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。 圖4.4.2數(shù)據(jù)輸入輸出DS1302的控制字節(jié)DS1302 的控制字如圖2所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。4.4.2 LM7805三端穩(wěn)壓集成電路lm7805,組成穩(wěn)壓電源所需的外圍元件極少,電路內(nèi)部還有

24、過流、過熱及調(diào)整管的保護(hù)電路,使用起來可靠、方便,而且價格便宜。lm7805輸出電壓為正5V。圖1 LM7805封裝圖 圖2 LM7805引腳圖圖3 LM7805典型應(yīng)用電路4.5 LED 動態(tài)顯示原理LED具有低功耗,接口控制方便等優(yōu)點,而且與模塊的接口信號和操作指令具有廣泛的兼容性,能直接與單片機接口,方便實現(xiàn)各種不同的操作。旋轉(zhuǎn)LED是一種通過同步控制發(fā)光二極管的位置和點亮狀態(tài)來實現(xiàn)圖文顯示,可視角能達(dá)360度,本設(shè)計采用32個發(fā)光二級管,利用人眼的“視覺暫留效應(yīng)”顯示時間和溫度。圖4.5 Led顯示模塊五、系統(tǒng)硬件電路設(shè)計硬件電路原理圖如下:LED燈為8*4組共32顆六、系統(tǒng)軟件設(shè)計6

25、.1單片機解碼紅外信號程序圖6.1.1紅外解碼流程圖以下為單片機解碼紅外的程序:#include #define uchar unsigned char uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;#define Imax 14000 /此處為晶振為11.0592時的取值, #define Imin 8000 /如用其它頻率的晶振時,#define Inum1 1450 /要改變相應(yīng)的取值。#define Inum2 700 #define In

26、um3 3000uchar Im4=0x00,0x00,0x00,0x00; /存放4個字節(jié)32位編碼uchar show2=0,0; /存儲數(shù)據(jù)碼unsigned long m,Tc; /兩脈沖間隔 uchar flag,IrOK;void delay(uchar i) uchar j,k; for(j=i;j0;j-) for(k=125;k0;k-);void display() P1=6; P0=tableshow0; delay(5); P1=5; P0=tableshow1; delay(5);/外部中斷解碼程序void INT_1(void) interrupt 2 using

27、1 Tc=TH0*256+TL0; /提取中斷時間間隔時長 TH0=0; TL0=0; /定時中斷重新置零 if(TcImin)&(TcInum1&Tc1|0x80; m+; /1 取碼 if(TcInum2&Tc1; m+; /0 取碼 if(m=32) m=0; flag=0; if(Im2=Im3) IrOK=1; else IrOK=0; /取碼完成后判斷讀碼是否正確 /準(zhǔn)備讀下一碼 /*演示主程序*/void main(void) unsigned int a; m=0; flag=0; EA=1; IT1=1; /下降沿觸發(fā) EX1=1; /外部中斷1允許 TMOD=0x01; T

28、H0=0; TL0=0; TR0=1;/開啟定時器0 while(1) if(IrOK=1) show1=Im2 & 0x0F; /取鍵碼的低四位 show0=Im2 4; IrOK=0; if(Im2=69) P0=0x55;if(Im2=70) P0=0xaa;if(Im2=7) P0=0xff;if(Im2=9) P0=0x00; for(a=100;a0;a-) display(); 6.2單片機讀寫DS1302程序以下為典型的DS1302讀寫程序:/* * 名稱: RTInputByte* 說明: * 功能: 往DS1302寫入1Byte數(shù)據(jù)* 調(diào)用:* 輸入: ucDa 寫入的數(shù)據(jù)

29、 * 返回值: 無*/void RTInputByte(unsigned char ucDa) unsigned char i;ACC = ucDa;for(i=8; i0; i-)T_IO = ACC0; /*相當(dāng)于匯編中的 RRC */T_CLK = 1;T_CLK = 0;ACC = ACC 1; /* * 名稱: unsigned char uc_RTOutputByte* 說明: * 功能: 從DS1302讀取1Byte數(shù)據(jù)* 調(diào)用: * 輸入: * 返回值: ACC*/unsigned char uc_RTOutputByte(void) unsigned char i;for(i

30、=8; i0; i-)ACC = ACC 1; /*相當(dāng)于匯編中的 RRC */ACC7 = T_IO;T_CLK = 1;T_CLK = 0; return(ACC); /* * 名稱: W1302* 說明: 先寫地址,后寫命令/數(shù)據(jù)* 功能: 往DS1302寫入數(shù)據(jù)* 調(diào)用: RTInputByte() * 輸入: ucAddr: DS1302地址, ucDa: 要寫的數(shù)據(jù)* 返回值: 無*/void W1302(unsigned char ucAddr, unsigned char ucDa)T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr

31、); /* 地址,命令 */RTInputByte(ucDa); /* 寫1Byte數(shù)據(jù)*/T_CLK = 1;T_RST =0; /* * 名稱: uc_R1302* 說明: 先寫地址,后讀命令/數(shù)據(jù)* 功能: 讀取DS1302某地址的數(shù)據(jù)* 調(diào)用: RTInputByte() , uc_RTOutputByte()* 輸入: ucAddr: DS1302地址* 返回值: ucDa :讀取的數(shù)據(jù)*/unsigned char uc_R1302(unsigned char ucAddr)unsigned char ucDa;T_RST = 0;T_CLK = 0;T_RST = 1;RTInp

32、utByte(ucAddr); /* 地址,命令 */ucDa = uc_RTOutputByte(); /* 讀1Byte數(shù)據(jù) */T_CLK = 1;T_RST =0;return(ucDa);void Set1302(void) W1302(0x8e,0x00); /* 控制命令,WP=0,寫操作?*/W1302(0x8c,NUM2BCD(Time5);W1302(0x8a,NUM2BCD(Time6);W1302(0x88,NUM2BCD(Time4);W1302(0x86,NUM2BCD(Time3);W1302(0x84,NUM2BCD(Time2);W1302(0x82,NUM2

33、BCD(Time1);W1302(0x80,NUM2BCD(Time0);W1302(0x8e,0x80); /* 控制命令,WP=1,寫保護(hù)?*/void Get1302(void) Time5 = BCD2NUM(uc_R1302(0x8d);Time6 = BCD2NUM(uc_R1302(0x8b);Time4 = BCD2NUM(uc_R1302(0x89);Time3 = BCD2NUM(uc_R1302(0x87);Time2 = BCD2NUM(uc_R1302(0x85);Time1 = BCD2NUM(uc_R1302(0x83);Time0 = BCD2NUM(uc_R1

34、302(0x81);6.3 自適應(yīng)轉(zhuǎn)速系統(tǒng)開機后,程序先進(jìn)入測試轉(zhuǎn)速階段, 測試2次中斷之間(旋轉(zhuǎn)一圈)定時器中斷數(shù),與所需的中斷數(shù)對比,通過對比調(diào)整定時器初設(shè)值,達(dá)到改變旋轉(zhuǎn)1圈定時器中斷數(shù)的目的。/*外部中斷0處理函數(shù)*/ void intersvr0(void) interrupt 0 using 1 D=D+(S-N)*2; /修正值 Ti0=600+D; /得到定時器T0的初設(shè)值 S=0; /計數(shù)器清零,將重新計數(shù) /*定時中斷0處理函數(shù)*/ void timer0(void) interrupt 1 using 1 TH1=-Ti0/256;TL1=-Ti0%256;/設(shè)置定時器T

35、0的初設(shè)值 S+; /計數(shù) 其中S為旋轉(zhuǎn)一圈定時器1實際中斷數(shù)(既實際顯示的列數(shù)),D為調(diào)整值,N為旋轉(zhuǎn)一圈定時器所需的中斷數(shù)(既所需顯示的列數(shù))。程序分析如下:0、在外部中斷的處理程序里,先給定時器一個合適的初設(shè)值Pt。程序開始,D=0,Ti0即為600(按需設(shè)定),并得到定時器初設(shè)值。1、定時器開始計數(shù),每溢出一次S自加一次。2、完成一圈后,處理外部中斷函數(shù)。當(dāng)SN時,修正值D增大,使定時器T1的時間值增大,隨之S值減小。當(dāng)SN時,修正值D減小,使定時器T1的時間值減小,隨之S值增大。當(dāng)S=N時,修正值不產(chǎn)生變化。函數(shù)中N值是按需設(shè)定的常數(shù)。6.4 數(shù)字顯示模式時鐘的上半部分和下半部分的顯

36、示是相反的,故需要對數(shù)字顯示進(jìn)行調(diào)整。故分2步顯示,第一步顯示上半部分,正常顯示。程序如下:if(ii16) P2=0xf1;P1=nAsciiDot1jj*2+vii*16; /顯示的上半圓部分(正顯) P2=0xf2;P1=nAsciiDot11+jj*2+vii*16; 16表示顯示16個字第二步顯示下半部分,因需和上半部現(xiàn)實相反,故下半部反向顯示,程序如下:else if(ii32) P2=0xf2;P1=nAsciiDot214-jj*2+vii*16; /顯示的下半圓部分(反顯) P2=0xf1;P1=nAsciiDot215-jj*2+vii*16; 6.5 指針顯示模式顯示時,

37、由于要將12點的位置和數(shù)字模式統(tǒng)一顯示到正上方,而不是中斷發(fā)生處,故需進(jìn)行轉(zhuǎn)換:P2=0xf1;P1=(0xfe2*(ii=Tme0)&(0xfe4*(ii=Tme2); P2=0xf4;P1=(0xff*(ii!=Tme0)*(ii!=Tme1)*(ii!=Tme2); P2=0xf8;P1=(0xff*(ii!=Tme0)*(ii!=Tme1)*(ii!=Tme2);七、總結(jié)與體會回顧起此次單片機課程設(shè)計,至今我仍感慨頗多,從選題到定稿,從理論到實踐,在整整兩星期的日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到

38、過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。DS1302和單片機解碼紅外這一部份花了一天多才弄明白,深感自己對所學(xué)過的知識的理解之淺。這次的課設(shè)硬件弄的時間比較長,因為是用萬用版焊制,出現(xiàn)比較多的問題,例如芯片的管腳就因大意弄錯了序號好幾次,經(jīng)過幾次的仔

39、細(xì)查找才找出了問題的所在。程序方面倒沒有太大的錯誤發(fā)生,不過到最好作品完成的時候DS1302突然壞了,但未能及時發(fā)現(xiàn),直到花了一天的時間排查了所有硬件才最終確定了DS1302的損壞導(dǎo)致顯示出現(xiàn)亂碼,這也直接導(dǎo)致了我們的作品未能在第一天被驗收。這次單片機課程設(shè)計。我們發(fā)揮團(tuán)隊精神。相互去學(xué)習(xí),去解決問題的所在,以及一起探討。希望我們在實訓(xùn)結(jié)束后同樣能夠去更進(jìn)一步的去學(xué)習(xí)單片機,鞏固和加深對單片機的學(xué)習(xí)。八、參考文獻(xiàn)1李朝青.單片機原理及接口技術(shù)(第3版).北京航天航空大學(xué)出版社,2005 年10月2.譚浩強.C語言程序設(shè)計(第二版)北京:清華大學(xué)出版社,1999年12月3.彭偉. 單片機C語言程

40、序設(shè)計實訓(xùn)100例:基于8051+Proteus仿真 .電子工業(yè)出版社.2009年4.網(wǎng)上資料附錄A 完整源程序#include #include #include #define uchar unsigned charunsigned char code maxnum=59,23,31,12,99; /調(diào)整值最大限量unsigned char code minnum=0,0,1,1,0; /調(diào)整值最小限量unsigned char code nAsciiDot1 = / ASCII0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, / - -0x00,0x00,

41、0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x06,0x00,0x03,0x80,0x01, / -/-0xC0,0x00,0x60,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x06, / -:-0x30,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x07,0xFC,0x0F,0x04,0x09,0xC4,0x08, / -0-0x24,0x08,0xFC,0x0F,0xF8,0x07,0x00,0x00,0x00,0x00,0x

42、10,0x08,0x18,0x08,0xFC,0x0F, / -1-0xFC,0x0F,0x00,0x08,0x00,0x08,0x00,0x00,0x08,0x0E,0x0C,0x0F,0x84,0x09,0xC4,0x08, / -2-0x64,0x08,0x3C,0x0C,0x18,0x0C,0x00,0x00,0x08,0x04,0x0C,0x0C,0x44,0x08,0x44,0x08, / -3-0x44,0x08,0xFC,0x0F,0xB8,0x07,0x00,0x00,0xC0,0x00,0xE0,0x00,0xB0,0x00,0x98,0x08, / -4-0xFC,0x0

43、F,0xFC,0x0F,0x80,0x08,0x00,0x00,0x7C,0x04,0x7C,0x0C,0x44,0x08,0x44,0x08, / -5-0xC4,0x08,0xC4,0x0F,0x84,0x07,0x00,0x00,0xF0,0x07,0xF8,0x0F,0x4C,0x08,0x44,0x08, / -6-0x44,0x08,0xC0,0x0F,0x80,0x07,0x00,0x00,0x0C,0x00,0x0C,0x00,0x04,0x0F,0x84,0x0F, / -7-0xC4,0x00,0x7C,0x00,0x3C,0x00,0x00,0x00,0xB8,0x07,

44、0xFC,0x0F,0x44,0x08,0x44,0x08, / -8-0x44,0x08,0xFC,0x0F,0xB8,0x07,0x00,0x00,0x38,0x00,0x7C,0x08,0x44,0x08,0x44,0x08, / -9-0x44,0x0C,0xFC,0x07,0xF8,0x03,0x00,0x00,;unsigned char code nAsciiDot2 = / ASCII0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, / - -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x60,0x00,0xC0,0x01,0x80, / -/-0x03,0x00,0x06,0x00,0x0C,0x00,0x00,0x00,0x00,

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論