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