C語言編寫微控制器萬年曆系統課程設計報告98分

2022-10-27 03:45:07 字數 3906 閱讀 8684

多功能電腦時鐘設計報告

微控制器的使用領域已十分廣泛,如智慧型儀器儀表、實時工控、通訊裝置、導航系統、家用電器等。「學好微控制器,工作就不成問題了。」老師說,可見學好單片意義之重大。

微控制器作為一門基礎學科,既是對前期學習c語言的綜合運用,也是理論與實踐相結合的一大體現。電腦時鐘有效地檢驗了對ds1302時鐘晶元,stc89c52微控制器中斷,獨立鍵盤,數碼管,蜂鳴器,led燈的控制,同時提高了學生的工程系統設計能力。led數字顯示的日曆鐘顯示清晰直觀、走時準確、可以進行夜視,並且還可以擴充套件出多種功能。

所以,電子萬年曆無論作為比賽題目還是練習題目都是很有價值。通過此次微控制器系統綜合訓練,不僅要讓學生認識了解它,而且增強學生學科積極性。

要求設計的電腦時鐘完成以下功能:

1.基本功能

①實時顯示當前時間(4位數碼管顯示,2位顯示小時,2位顯示分鐘,第2位小數點0.5秒亮,0.5秒滅)。

②能用一按鍵依次切換顯示年及月日。

③能修改當前時鐘。

④具有秒錶功能,顯示秒和百分秒。

2. 擴充套件功能

①微控制器與pc機的通訊(可選)

②可設定初值的倒計時功能(可選)③鬧鐘及報時功能(可選)。④顯示星期(可選)。

根據系統功能要求,可將系統組成結構分成四大部分:ds1302時鐘晶元讀資料寫資料模組,數碼管顯示模組,按鍵設定調節時間模組,秒錶功能模組,。硬體電路接線圖如後圖,本系統採用ds1302時鐘晶元,四位數碼管顯示年月,日星期,時分,以及秒和百分秒。

其中年月日,時分秒和星期採用ds1302的資料顯示,秒錶採用微控制器定時中斷實現。本系統共用到四個按鍵,且均為獨立對地按鍵,分別用於顯示切換,修改切換,修改加一,修改減一,秒錶啟動暫停和資料清零。

選用stc89c52晶元,頻率為11.0592mhz;由於系統要求顯示年月日小時和分鐘,採用四位led數碼管顯示即可;按鍵是用來設定北京時間或鬧鐘時間或啟動秒錶等功能的,設定三個按鍵:顯示切換模式鍵(key3)、修改資料鍵(key0)、加一鍵(key1)、減一鍵(key2)。

ds1302時鐘晶元。

常見的led顯示具有清晰明亮的特點。是顯示介面也是絕大多數微控制器應用系統必備的部件之一。

發光二極體組成的顯示器是微控制器應用產品中最常用的廉價輸出裝置。它由若干個發光二極體按一定的規律排列而成。當某乙個發光二極體導通時,相應的乙個點或一筆畫被點亮,控制不同組合的二極體導通,就能顯出各種字元。

1. 顯示器的結構

常用的7段顯示器的結構如圖所示,發光二極體的陽極連在一起的稱為共陽極顯示器,陰極連在一起的成為共陰顯示器。1位顯示器由8個發光二極體組成,其中7個發光二極體a~g控制7個筆畫的亮或暗,另乙個控制乙個小數點的亮和暗,這種筆畫的七段顯示器能顯示的字元較少,字元的形狀有些失真,但失控簡單,使用方便。

微控制器功能系統圖見附錄 1,。微控制器最小系統由stc89c51微控制器、復位電路、晶振電路組成。如圖3.1所示

圖3.1 微控制器最小系統圖

系統**電路圖

ds1302與微控制器連線圖

按鍵、電頻轉換晶元、rs232串列埠通訊及電源電路等設計,如圖3.3所示

圖3.3 附屬電路設計圖

主程式採用定時器0對程式進行掃瞄執行。分別執行ds1302晶元初始化子程式,寫資料子程式,將最初的值寫入晶元中,採用while迴圈迴圈執行鍵盤掃瞄子程式。

main()

display();

}此子程式分為初始化程式,讀資料程式,寫資料程式,一些資料程式為例;

void ds1302_write_byte(unsigned char addr, unsigned char d)

分別寫入位址,再寫入資料。

時間調整子程式採用的是對key1按的次數不同來進行對年月日時分及星期的設定。

void zongshi(void)

} }else} k=1時,調整年份,key1為加,key2為減

void keyscank=2時,調整月份,key1為加,key2為減

k=3時,調整日份,key1為加,key2為減

displayk=4時,調整星期,key1為加,key2為減

if(!key)

}電子成年曆是多功能的數字型,可以看當前日期(陰、陽曆),時間,還有溫度的儀器。電子成年曆功能很多,所以對於它的程式也較為複雜,所以在編寫程式和除錯時出現了相對較多的問題。最後經過多次的模組子程式的修改,一步一步的完成,最終解決了軟體。

在軟體的除錯過程中主要遇到的問題如下:

1.燒入程式後,led數碼管顯示閃動,而且亮度不均勻。

解決:首先對呼叫的延時進行逐漸修改,可以解決顯示閃動問題。其次,由於本作品使作動態掃瞄方式顯示的數字,動態掃瞄很快,人的肉眼是無法看出,但是呼叫的顯示程式時,如果不在反回時遮蔽掉最後的附值,則會出現很亮的現象,所以在顯示的後面加了遮蔽子令,最後解決了此問題。

2.修改時間、日期時沒有農曆沒有自動對應上。

解決:把不相關的程式暫時遮蔽,地農曆的子程式獨立除錯,發現在呼叫農曆自動更新時,對十進位制和十六進製制處理不好,所以會造成錯亂。最後把相應的十進位制進行修改,使得可以與十六進製制對應,最後解決了此問題.

(1).在測試中遇到發光二極體、led數碼管為不顯示時,首先使用試測儀對電路進行測試,觀察是否存在漏焊,虛焊,或者元件損壞.

(2).led 數碼管顯示不正常,還有亮度不夠,首先使用試測儀對電路進行測試,觀察電路是否存在短路現象。檢視燒寫的程式是否正確無誤,對程式進行認真修改。

(3).ds1302 與微處理器進行資料交換時,首先由微處理器向電路傳送命令位元組,命令位元組最高位msb(d7)必須為邏輯1,如果d7=0,則禁止寫ds1302,即寫保護;d6=0,指定時鐘資料,d6=1,指定ram 資料;d5~d1 指定輸入或輸出的特定暫存器;最低位lsb(d0)為邏輯0,指定寫操作(輸入), d0=1,指定讀操作(輸出)。

在ds1302 的時鐘日曆或ram 進行資料傳送時,ds1302 必須首先傳送命令位元組。若進行單位元組傳送,8 位命令位元組傳送結束之後,在下2 個sclk 週期的上公升沿輸入資料位元組,或在下8 個sclk 週期的下降沿輸出資料位元組。

ds1302 與ram 相關的暫存器分為兩類:一類是單個ram 單元,共31 個,每個單元組態為乙個8 位的位元組,其命令控制字為c0h~fdh,其中奇數為讀操作,偶數為寫操作;再一類為突發方式下的ram 暫存器,在此方式下可一次性讀、寫所有的ram 的31 個位元組。

要特別說明的是備用電源b1,可以用電池或者超級電容器(0.1f 以上)。雖然ds1302 在主電源掉電後的耗電很小,但是,如果要長時間保證時鐘正常,最好選用小型充電電池。

可以用老式電腦主機板上的3.6v 充電電池。如果斷電時間較短(幾小時或幾天)時,就可以用漏電較小的普通電解電容器代替。

100 μf 就可以保證1 小時的正常走時。ds1302 在第一次加電後,必須進行初始化操作。初始化後就可以按正常方法調整時間。

經過多次的反覆測試與分析,可以對電路的原理及功能更加熟悉,同時提高了設計能力與及對電路的分析能力.同時在軟體的程式設計方面得到更到的提高,對程式設計能力得到加強.同時對所學的知識得到很大的提高與鞏固

從大一開始接觸微控制器,簡單運用微控制器,我初步認識了微控制器。再經過這兩周的微控制器的專門學習,我對微控制器有了進一步的學習和認識,加深了我對微控制器理論知識的理解,提公升了我個人理論結合實際的實踐能力。從簡單的微控制器設計開始,一步一步的增加難度。

剛開始設計時,老師給我們的任務很簡單,可以輕鬆完成任務完成。電腦時鐘的設計,是在秒錶的基礎上慢慢的新增乙個又乙個的功能,然後乙個乙個的除錯。在除錯的過程中我們遇到了很多的問題,我們編出來的程式不是一下子就能實現我們想要的功能的,要經過不斷的修改、除錯,實現我們想要的功能。

程式設計中,定時器的應用相當廣泛,它與中斷函式構成了基本的計數環節,中斷為定時提供了條件,函式每5ms便進入中斷函式一次,並執行相應的操作與計數。條件語句為數碼管的功能顯示提供了條件。我們還進一步優化設計,比如整點報時設計對應點數報時,鬧鐘用****形式與整點報時區分開來,鬧鐘及整點(半點)可設是否開啟等。

總之,通過本次微控制器系統綜合訓練,我對微控制器的基礎知識及基本的應用技術有了深刻的了解,提公升了個人理論到實踐的運用能力。進一步為後續學習及工作有打下堅實基礎。

微控制器課程設計報告 萬年曆

一 摘要2 二 設計任務4 三 總體方案設計與論證4 1 液晶顯示模組4 2 實時時間計算模組5 3 實時環境溫度採集模組5 4 報警模組6 5 設定模組6 四 總體方案組成框圖7 五 系統硬體設計8 1 lcd顯示模組8 2 實時時間計算模組12 3 實時環境溫度檢測模組16 4 報警模組21 5...

C語言課程設計報告 萬年曆

萬年曆的設計 二 設計要求 1 能夠顯示星期 2 能夠顯示年月日 3 能夠修改 4 當系統時間變動時,能自動跳到相應的時間。三 設計目的 1.通過本項課程設計,可以培養獨立思考 綜合運用所學有關相應知識的能力,能更好的鞏固 c語言程式設計 課程學習的內容,掌握工程軟體設計的基本方法,強化上機動手程式...

C語言萬年曆課程設計報告書

萬年曆系統設計 學院 理學院 專業 資訊與計算科學 姓名指導教師 序言經過乙個學期對 c程式設計 的學習,同學們都認為真正的學到了有用知識,可能有一些人學的不夠理想,但無論如何,這些知識都為我們的下一步學習打下了堅實的基礎。做這麼乙個課程設計,一方面是為了檢查我們乙個學期來我們學習的成果,另一方面也...