自動控制的時鐘設計方案較多,利用中小規模積體電路設計,或利用專用的時鐘晶元設計,也可以利用微控制器進行設計等,且各有特點。其中利用微控制器實現時鐘的設計方法,具有電路簡單、程式設計靈活、便於擴充套件、精確度高、穩定性好等優點,本文介紹一種選擇利用微控制器程式設計六位數碼自動控制鐘的設計。
在選擇微控制器時,考慮到at89c2051體積較小、價效比較高,在家電產品、工業控制、計算機產品、醫療器械、****、智慧型儀器等應用領域已成為使用者降低成本的首選產品。所以,該設計選用at89c2051作為時鐘的中心控制單元,結合相關外圍電路,實現了時間顯示、時鐘調整、鬧鐘設定、整點報時及省電等多種功能。
1 自控鐘的系統設計
1.1定時器工作方式選擇
時鐘設計的關鍵問題是秒訊號的產生,在使用mcs51的定時器/計數器生成秒訊號時,若選用12 mhz晶振,選擇工作方式0時,最大定時時間為8.19 ms;選擇工作方式1時,最大定時時間為65.54 ms;選擇工作方式2,3時,最大定時時間為0.26 ms。因為進入中斷要做很多判斷,如果中斷時間太短則不能完成任務,導致時鐘誤差增大,所以選擇中斷時間最長的工作方式1。這時定時器最大定時時間只能達到65.5 ms,離1 s還相差甚遠。因此,該設計採用硬體定時和軟體計數相結合的方式實現秒訊號的,即把秒定時時間定為50 ms,軟體計數20次為1 s。
1.2定時初值的計算
mcs51系列微控制器的定時器為加法計數器計滿溢位時申請中斷,所以在給定時器賦初值時,不能直接輸入所需的計數值,而應輸入定時器的計數最大值與需要定時值的差值。採用定時器/計數器0,選擇工作方式1,在選用12 mhz系統晶振時,要得到50 ms定時,設定時初值為x,則有如下等式:(216-x)�?=50 000
計算得定時初值x=15 536,二進位制表示為1110010110000b,16進製表示為3cb0h。
為了實現調整時間時的閃爍顯示功能,採用t1定時器,定時初值仍可延用上面計算結果。
1.3儲存單元的設定
為了方便實現其他附加功能,將計時儲存單元、顯示儲存單元與鬧鐘時間儲存單元分開。其中顯示裝置是用6位led數碼管,時鐘的時、分和秒各佔2位。在鬧鐘設定時顯示鬧鐘時間,其餘時間顯示時鐘。
2 自控鐘的電路設計
2.1時鐘電路原理圖
數碼管時鐘電路以at89c2051微控制器最小系統為基礎,顯示採用led動態掃瞄方式實現,p3.7口接設定按鈕,用來實現調時鐘、調鬧鐘、省電3種狀態的轉換,在鬧鐘和時鐘調整時為上翻鍵,也是關閉鬧鐘的按鍵。為了提供led數碼管的驅動電流,用三極體9012作輸出驅動。為了提高秒計時精確度,系統選用12 mhz晶振,即電路主要是由微控制器、復位電路、振盪電路和顯示電路4部分組成。復位電路採用上電復位,振盪電路選用12 mhz中晶振和2個30 pf的瓷介電容。(圖略)
2.2 at89c2051晶元簡介
at89c2051是atmel公司生產的帶2 kb flash儲存器(perom)的8 位微控制器,它具有如下主要特性:與mcs51相容;內部帶2 kb可程式設計flash儲存器;工作電壓範圍為2.7~6 v;全靜態工作頻率為0 hz~24 mhz;128�?位內部ram;2個16位定時器/計數器;片內振盪器和時鐘電路;片內精確模擬比較器;低功耗的休眠和掉點模式。
at89c2051減少了兩個外部埠,因而晶元的外部引腳大大減少,晶元尺寸很小。它是乙個有20引腳雙列直插式的晶元。
2.3顯示電路
時鐘採用6個共陽極的數碼管完成時、分、秒的顯示,p3口的低6位分別通過5.6 k的限流電阻與相應的驅動三極體的連線,三極體的導通與否決定對應位是否顯示。其中數碼管引腳與微控制器引腳的連線關係如表1所示,數碼管的顯示**如表2所示:
表1數碼管引腳與微控制器引腳的連線關係
表2數碼管的顯示**
3 自控鐘的軟體設計
3.1主程式
主程式主要完成系統的初始化和按鍵的捕獲,在鍵沒有被按下時呼叫顯示子程式。
3.2 顯示程式
需要顯示時,從p1口送出時鐘的顯示段碼,從p3口低6位送出時鐘的位選訊號,通過動態掃瞄的方式實現時鐘的顯示功能。應該注意的是,16進製制數所表示的共陽極的段碼最高位都為1,這樣在顯示時它將p1.7強行置1,即直接關閉響鈴,所以在顯示資料送給p1口之前要進行判斷,如果p1.7為0,則將顯示資料與立即數7fh邏輯與;如果p1.7為1,則不做任何,直接輸出處理。這樣,顯示時就不會影響響鈴的正常進行。
3.3 t1中斷服務程式
t1中斷服務程式用來實現閃爍顯示功能。在調整時鐘或設定鬧鐘的狀態下,使對應顯示單元的資料在時間資料和「熄滅符」資料(#0ah)之間以0.3 s為間隔交替顯示,這樣,對應的調整單元資料就會閃爍,以便於調整。
3.4 調時程式
首先需要說明長按和短按的標準,其標誌是鈴聲,當在鈴響之前放開按鍵則是短按,之後放開則是長按。調時程式的設計方法是:2次連續短按進入省電狀態(時鐘繼續,但數碼管不亮);第一次短按,第二次長按進入調時狀態,此時關閉t0,時鐘停止,開始調整時間,短按實現分鐘加1操作,分鐘調整完畢後,若長按則進入小時調整狀態,同樣,短按實現小時加1操作,當小時調整好後長按則退出時間調整,開啟t0,啟動時鐘。
在響鬧鈴的時候,有按鍵按下,其作用是關閉鬧鈴,不進入調時狀態。
3.5 鬧鐘調整程式
一次長按進入鬧鐘調整程式。其中鬧鐘調整和時鐘調整的方法完全相同,只是時鐘調整時關閉t0,而在鬧鐘調整程式中t0需要繼續工作。另外,要設定不同的標誌,以實現鬧鐘調整時閃爍的資料是鬧鐘。
總之,在應用微控制器設計的電路中,程式設計很重要,尤其是硬體電路比較簡單的情況下,這就需要軟體完成和補充其他功能。主要思想為將總體功能分解成若干個模組,每個功能模組完成特定的功能,並且確定各模組之間的關係,最終完成設計的所有功能。
文章**於網路
神奇六位數
有乙個6位的正整數,它有個很神奇的性質 分別用2 3 4 5 6去乘它,得到的仍然是6位數,並且乘積中所包含的數字與這個6位數完全一樣!只不過是它們的順序重新排列了而已。請計算出這個6位數。這是乙個整數,請通過瀏覽器提交答案,不要填寫任何多餘的內容 比如說明性的文字 142857 include i...
數論 魔幻六位數
感覺就是很難的那種題 網上搜不到題解 自己又笨 只能到處問大神 我直接說思路了 顯然的,我們發現暴力很萎 雖然可以剪枝,但太複雜 我們就列舉最後一位,因為最後一位一定不會進製,所以我們就可以得出所有的數字了 然後是輪換排列,所以每個位子上會每個數會出現一次 那我們把列舉最後一位時所得到的一組數字加起...
VS2013產生隨機六位數
完整 include include includevoid main 很多教程裡會說要包含標頭檔案 include include include 但我在做乙個mfc的伺服器,沒用該標頭檔案也生成了隨機的六位數。srand time 0 srand函式是隨機 發生器的初始化 函式,srand函式在...