帶校時和音樂報時功能實時時鐘的設(shè)計與實現(xiàn)_第1頁
帶校時和音樂報時功能實時時鐘的設(shè)計與實現(xiàn)_第2頁
帶校時和音樂報時功能實時時鐘的設(shè)計與實現(xiàn)_第3頁
帶校時和音樂報時功能實時時鐘的設(shè)計與實現(xiàn)_第4頁
帶校時和音樂報時功能實時時鐘的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、帶校時和音樂報時功能實時時鐘的設(shè)計與實現(xiàn)1)硬件電路硬件電路如圖11-2所示,PA 口為LED數(shù)碼管的8段碼輸出,PC0-PC5共6個I/O 口, 作為控制時間顯示的6個LED數(shù)碼管的位掃描線。PC6、PC7分別接連接兩個按鍵,用于設(shè) 置時鐘的工作狀態(tài)和校時時間的設(shè)置。圖中音樂報時電路部分(未畫出)與第8章中的圖 8-20相同,由端口 PD5輸出產(chǎn)生音樂的脈沖信號,經(jīng)三極管驅(qū)動蜂鳴器發(fā)聲。(ADCO)PAO (ADCl)PAl (ADC2)PA2 (ADC3)PA3 (ADC4)PA4 (ADC5)PA5 )(ADC6)PA6 (ADC7)PA7 AREF GND AVcc (TOSC2)PC

2、7 (TOSC1)PC6 (TDI)PC5 (TDO)PC4 (TMS)PC3 (TCK)PC2)(SDA)PC1 ) (SCL)PCO (OC2)PD7圖11-2帶校時功能的實時時鐘電路圖3938373635343332311329282726 25 j24 Xj23 722 721 70.0.0.0.0.0.LlPlod DPlod DPlod OPlod 心 P;Cjd DPlodATmegal6定義兩個按鍵的功能為:K1用于設(shè)置轉(zhuǎn)換時鐘工作狀態(tài),K2用于設(shè)置校時時間(加1 操作)。時鐘工作狀態(tài)轉(zhuǎn)換圖如圖11-3所示,具體每個狀態(tài)的定義和功能如下:/ 平時時鐘工作在時鐘顯示狀態(tài),每按一下

3、K1鍵,時鐘依次進(jìn)入校時時間的設(shè)置狀 態(tài)。/ 時鐘由“時鐘顯示”進(jìn)入“秒低位設(shè)置”時,校時時間的初始值為轉(zhuǎn)換時刻的時鐘 值。/ 時鐘由“時高位設(shè)置”回到(K1作用下)“時鐘顯示”時,時鐘時間由校時時間代 替,確認(rèn)完成校時的設(shè)置。/ 當(dāng)時鐘處在時間設(shè)置的6個狀態(tài)時,每按一次K2鍵,相應(yīng)的位上的數(shù)值加1,并 且要能根據(jù)具體所在的位置自動做相應(yīng)的調(diào)整。如秒高位的數(shù)字只能在0-5之間, 而時高位的數(shù)值要限制在0、1、2 (時個位數(shù)小于3時),或時高位的數(shù)值要限制 在0、1(時個位數(shù)大于3時)。/ 當(dāng)時鐘處在時間設(shè)置的6個狀態(tài)時,在20秒內(nèi)無任何鍵按下,系統(tǒng)自動返回“時 間顯示”狀態(tài),設(shè)置的時間無效,不

4、改變原時鐘的計時時間。/ 在效時時間設(shè)置的操作過程中,時鐘不停止其前時間的計時過程,除非當(dāng)時鐘由“時 高位設(shè)置”回到(K1作用下)“時鐘顯示”時,時鐘的計時時間由確認(rèn)的校時時間 代替而改變。/ 時鐘顯示亮度均勻、無閃爍。當(dāng)設(shè)置相應(yīng)時間位時,該位應(yīng)閃爍提示。圖11-3時鐘工作狀態(tài)轉(zhuǎn)換圖2)軟件設(shè)計本示例的程序是在前幾章所給例子的綜合應(yīng)用基礎(chǔ)上實現(xiàn)的,代碼中也給出了相應(yīng)的解 釋,因此本節(jié)中不再做更多的說明,留給讀者去自行分析。希望能在真正掌握了前幾章內(nèi)容 的基礎(chǔ)上,慢慢的去品味和體會,掌握如何更好的綜合使用AVR硬件的功能,以及程序設(shè)計 的方法與技巧。File name:demo_11_4.cCh

5、ip type:ATmega16Program type:ApplicationClock frequency:1.000000 MHzMemory model: SmallExternal SRAM size: 0Data Stack size:256#include flash char led_710 = 0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F;flash char position6 = 0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf;flash unsigned int t9 =

6、0,956,865,759,716,638,568,506,470;flash unsigned char d9 = 0,105,116,132,140,157,176,198,209;#define Max_note 32flash unsigned char musicMax_note=5,2,8,2,5,2,4,2,3,2,2,2,1,4,1,2,1,2,2,2,3,2,3,2,1,2,3,2,4,2,5,8;unsigned char note_n;unsigned int int_n;bit play_on;char time3,time_set3;/時、分、秒計數(shù)和設(shè)置單元char

7、 dis_buff6;/顯示緩沖區(qū),存放要顯示的6個字符的段碼值char time_counter,key_stime_counter; / 時間計數(shù)單元,char clock_state = 6,return_time;bit point_on,set_on,time_1s_ok,key_stime_ok;void display(void)/ 6位LED數(shù)管動態(tài)掃描函數(shù)static char posit=0;PORTC = 0 xff;PORTA = led_7dis_buffposit;if (set_on & (posit=clock_state) PORTA= 0 x00;/ 校時閃

8、爍if (point_on & (posit=2|posit=4) PORTA |= 0 x80;/ 秒閃爍PORTC = positionposit; if (+posit =6 ) posit = 0; / Timer 0比較匹配中斷服務(wù),2ms定時interrupt TIM0_COMP void timer0_comp_isr(void) display();/ LED 掃描顯示if (+key_stime_counter =5) key_stime_counter = 0; key_stime_ok = 1;/ 10ms 到if (!(+time_counter % 25) set_o

9、n = !set_on; / 設(shè)置校時閃爍標(biāo)志 if (time_counter = 100) time_counter = 0; time_1s_ok = 1;/ 1s 到 / T/C1比較匹配A中斷服務(wù) interrupt TIM1_COMPA void timer1_compa_isr(void) if (!play_on) note_n = 0; int_n = 1; play_on = 1; else if (-int_n = 0) TCCR1B = 0 x08; if (note_n Max_note) OCR1A = tmusicnote_n; int_n = dmusicnot

10、e_n; note_n+; int_n = int_n * musicnote_n; note_n+; TCCR1B = 0 x09;elseplay_on = 0;void time_to_disbuffer(char *time)/時鐘時間送顯示緩沖區(qū)函數(shù)char i,j=0;for (i=0;i= 60)time0 = 0;(!play_on) TCCR1B =(+time1 = 60)/秒閃爍標(biāo)志/秒加1,以下為時間調(diào)整ifif0 x09;/ 1分鐘到,播放音樂time1 = 0;if (+time2 = 24) time2 = 0;if (+return_time = 20) & (

11、clock_state != 6) clock_state = 6;if (clock_state = 6) time_to_disbuffer(time);if (key_stime_ok)/ 10ms 到,鍵處理key_stime_ok = 0;/調(diào)用按鍵接口程序/確認(rèn)有鍵按下key_temp = read_key();if (key_temp)return_time = 0;if (key_temp = key_k1) / K1 鍵按下,狀態(tài)轉(zhuǎn)換if (+clock_state = 7) clock_state = 0;if (clock_state = 0)for (i=0;i=2;i+) time_seti = 0;time_to_disbuffer(time_

溫馨提示

  • 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

提交評論