原理說明
本例所設(shè)計的是一個具有報時功能及作息時間控制鐘。它利用SPCE061A單片機的2Hz時基計時,進行年歷計算,并用SPCE061A的語音功能將它報出來;在進行時間計算,分每加1時,都與規(guī)定的作息時間比較,如果相等則進行相應(yīng)的控制或動作。本例中假定某高校的作息時間如下所示:
08:00-------08:50 第一節(jié)課
09:00-------09:50 第二節(jié)課
09:52-------10:05 課間操
10:10-------11:00 第三節(jié)課
01:10-------12:00 第四節(jié)課
12:00-------13:30 午間休息
13:30-------14:20 第五節(jié)課
14:30-------15:20 第六節(jié)課
15:21-------15:50 播放歌曲
硬件電路
硬件電路由鍵盤、聲音輸出模塊和指示燈三部分組成,如圖所示。
系統(tǒng)擴展三個按鍵用于報時及校正時間。SPCE061A的DAC為電流型輸出,經(jīng)負(fù)載電阻R1、三極管Q1放大驅(qū)動揚聲器SPEAKER放音,SPEAKER可選用4Ω或8Ω揚聲器。IOA15接一個LED,到規(guī)定的作息時間用LED閃爍來表示,使用者可根據(jù)具體需要來控制電鈴、播放提示語等。凌陽芯片的工作電壓為3.3v,在圖8.2中,我們給出了獲得工作電壓兩種方法。
?。?、通過兩個二極管連續(xù)降壓使5v的電壓降至3.6v,接近3.3v供芯片使用,這種方法比較簡單,但電壓值不是很精確。
?。?、通過LM7833可獲得準(zhǔn)確的3.3V電壓。
硬件連接圖
程序說明
整個程序分為主程序、鍵盤掃描子程序、萬年歷計算子程序、校時子程序、播放語音子程序幾部分。
?。?、主程序
程序按照結(jié)構(gòu)化程序設(shè)計,所有功能都可通過調(diào)用子程序完成,主程序較簡單,流程見0。SPCE061A具有低功耗的睡眠模式,在睡眠模式下功耗電流可降到幾個μΑ,這對于用電池供電的系統(tǒng)非常重要,睡眠模式可以通過按鍵中斷喚醒。
主程序流程圖
2、鍵盤掃描程序
由于機械觸點的彈性作用,在鍵被按下或彈起時會出現(xiàn)電壓抖動,從最初按下到接觸穩(wěn)定要經(jīng)過數(shù)毫秒的彈跳時間,如錯誤!未找到引用源。所示。為保證鍵識別的準(zhǔn)確,必須進行去抖動處理,去抖動有硬件和軟件兩種方法。硬件方法就是加去抖動電路,從根本上避免抖動;軟件方法有很多種,例子程序主要是利用主程序的循環(huán)掃描,主程序循環(huán)一次,掃描一次按鍵,當(dāng)連續(xù)N次掃描到的鍵值都一樣時,則說明是穩(wěn)定的按鍵值。
3、萬年歷計算子程序
利用2Hz中斷做時鐘源進行計時,每兩次中斷秒加1,并進行年歷計算,年歷范圍從2001年到3099年。在進行年歷計算時,有平閏年計算問題。閏年的條件是:能被400整除,或者能被4整除,但不能被100整除。萬年歷調(diào)整子程序流程圖見0。
萬年歷計算子程序
4、校時子程序
系統(tǒng)擴展了三個按鍵,TIME鍵用于報時,由于時間包括年月日和時分,按一次TIME鍵,則報年月日,再按一次則報時分。當(dāng)一直按住TIME鍵3秒則進入時間校正狀態(tài),語音報當(dāng)前是XXXX年,按UP鍵年份增加,按DOWN鍵減少;按TIME鍵來切換月、日、時、分,調(diào)整完分后,按TIME鍵確認(rèn),語音報出年月日時分。時間增加的流程如0所示,時間減少的流程與增加的相同,所以不再給出時間減少的流程圖。在校正時間的狀態(tài)下,如果連續(xù)2分鐘鍵沒有被按下,則自動退出。
校時子程序
5、播放語音子程序
報時用SACM-A2000播放。