




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 1 -嵌嵌入入式式系系統(tǒng)統(tǒng)開開發(fā)發(fā)課課程程設設計計專專周周報報告告題題目目:具具有有日日歷歷功功能能的的電電子子時時鐘鐘系系別別及及專專業(yè)業(yè):計計算算機機工工程程系系 計計算算機機應應用用技技術(shù)術(shù)班班級級:1 10 05 51 11 1學學生生姓姓名名:權(quán)權(quán)勝勝(1 14 4) 王王希希(0 05 5) 嚴嚴家家強強(2 23 3)指指導導老老師師:宋宋國國明明完完成成時時間間:2 20 01 12 2- -1 12 2- -2 24 4/ /2 20 01 12 2- -1 12 2- -2 28 8嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 2 -課
2、程設計(報告)課程設計(報告)、課程設計題目:具有日歷功能的電子時鐘具有日歷功能的電子時鐘、課程設計步驟及內(nèi)容一、課程設計目標一、課程設計目標 1、培養(yǎng)綜合運用知識和獨立開展實踐創(chuàng)新的能力;2、培養(yǎng)學生將理論知識與實際應用結(jié)合在一起;3、培養(yǎng)學生的自我學習能力和解決問題的能力;4、培養(yǎng)學生的協(xié)作意識和團隊合作能力;5、培養(yǎng)學生的總結(jié)經(jīng)驗的能力。二、研究方法及手段應用二、研究方法及手段應用1、問題解決模塊化,將任務分成若干模塊,分模塊調(diào)試和完成任務;2、查閱網(wǎng)上的相關(guān)素材,查閱相關(guān)論文資料,進行比較、研究;3、在獨立思考的基礎上,請教老師,和同組同學討論、學習;4、反復調(diào)試、總結(jié)經(jīng)驗、排除差錯;
3、5、連接 PC 和 EDUKIT-III ARM 嵌入式開發(fā)實驗箱,完成整個實驗環(huán)境搭建;6、運用 Vision4 和超級終端軟件進行軟件編譯和進行調(diào)試查看;7、使用 ULINK2 仿真器下載至實驗箱進行觀察、調(diào)試。三、課程設計預期效果三、課程設計預期效果1、程序啟動后,蜂鳴器響三聲,8 位 LED 數(shù)碼管顯示初始值“0” ,1 秒后顯示當前日期和時間,日期格式:*年*月*日,時間格式:*(星期)-*時*分*秒。PC 機超級終端同時顯示相關(guān)的信息。嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 3 -2、按下“D”鍵,可進行日期、時間的修改、設置:有按鍵時,把鍵值顯示到最右側(cè),后續(xù)按鍵時,把以前的按
4、鍵左移,把當前按鍵值顯示到最右側(cè)數(shù)碼管。設置完畢后,按“FUN”鍵確認,退出設置,時鐘顯示修改后的時間。3、顯示控制和鬧鐘設置:按鍵“*” ,進行數(shù)碼管閃爍/不閃爍的切換。按鍵“A” ,設置鬧鐘時間。時間到達后,鬧鈴(蜂鳴器)響,按“FUN”鍵,關(guān)閉鬧鈴。按鍵設置時,PC 的超級終端顯示相應的提示信息,同時把所按的鍵值,通過串口發(fā)送到超級終端顯示。4、鬧鈴聲音頻率及音量控制:按下“B”鍵時,進入鬧鈴聲音的設置。采集 AIN2 的 ADC 值,根據(jù) ADC 的值,控制蜂鳴器的聲音頻率??刂?PWM1 的頻率。 (為100Hz 至 1KHz,最低值和最高值可以根據(jù)實際效果調(diào)整) 。并把實際調(diào)整的頻
5、率打印到超級終端,如“100Hz” 。采集 AIN1 的 ADC 值,根據(jù) ADC 的值,控制蜂鳴器的音量??刂?PWM1 的占空比。 (為 0% 至 100%,最低值和最高值可以根據(jù)實際效果調(diào)整).并把實際調(diào)整的占空比打印到超級終端上,如“50%” 。按“FUN”鍵結(jié)束設置。學生姓名: 權(quán)勝 王希 嚴家強 專業(yè)年級: 計算機應用技術(shù) 10511 嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 4 -目錄目錄前言前言.5 5第一章系統(tǒng)設計第一章系統(tǒng)設計.6 6第一節(jié)課題目標及總體方案第一節(jié)課題目標及總體方案.6 6第二節(jié)項目設計模塊描述及流程圖第二節(jié)項目設計模塊描述及流程圖.5 51、模塊描述、模塊
6、描述.6 62、總體設計流程圖、總體設計流程圖.6 63、功能設計流程圖、功能設計流程圖.7 74、鬧鐘功能程序流程圖、鬧鐘功能程序流程圖.8 8一、主函數(shù)模塊一、主函數(shù)模塊.9 9二、功能實現(xiàn)模塊二、功能實現(xiàn)模塊.10101、8 8 個個 LEDLED 燈燈的的按位顯示程序按位顯示程序 .10102、獲取系統(tǒng)時間、獲取系統(tǒng)時間.11113、* *鍵功能實現(xiàn)鍵功能實現(xiàn).12124、按鍵判斷函數(shù)、按鍵判斷函數(shù).12125、時間及日期設置、時間及日期設置.13136、閃爍、閃爍/ /不閃爍切換函數(shù)不閃爍切換函數(shù).17177、發(fā)聲函數(shù)、發(fā)聲函數(shù).18188、鍵值對應到鍵盤函數(shù)、鍵值對應到鍵盤函數(shù).1
7、8189、中斷函數(shù)、中斷函數(shù).1919三、鬧鐘功能實現(xiàn)模塊三、鬧鐘功能實現(xiàn)模塊.20201、A A 鍵設置鬧鐘功能實現(xiàn)鍵設置鬧鐘功能實現(xiàn) .20202、鬧鐘設置函數(shù)、鬧鐘設置函數(shù).21213、鬧鈴函數(shù)、鬧鈴函數(shù).2323第二章第二章結(jié)果與顯示結(jié)果與顯示.2424結(jié)果顯示結(jié)果顯示.2424心得體會心得體會.2424參考文獻參考文獻.2525嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 5 -前前 言言近年來,隨著計算機技術(shù)及集成電路技術(shù)的發(fā)展,嵌入式技術(shù)日漸普及,在通訊、網(wǎng)絡、工控、醫(yī)療、電子等領域發(fā)揮著越來越重要的作用。嵌入式系統(tǒng)無疑成為當前最熱門最有發(fā)展前途的 IT 應用領域之一。實時時鐘(RT
8、C)器件是一種能提供日歷/時鐘、數(shù)據(jù)存儲等功能的專用集成電路,常用作各種計算機系統(tǒng)的時鐘信號源和參數(shù)設置存儲電路。RTC 具有計時準確、耗電低和體積小等特點,特別適用于在各種嵌入式系統(tǒng)忠記錄事件發(fā)生的時間和相關(guān)信息,尤其是在通信工程、電力自動化、工業(yè)控制等自動化程度較高領域的無人職守環(huán)境。隨著集成電路技術(shù)的不斷發(fā)展,RTC 器件的新品也不斷推出。這些新品不僅具有準確的 RTC,還有大容量的存儲器、溫度傳感器和 A/D 數(shù)據(jù)采集通道等,已成為集 RTC、數(shù)據(jù)采集和存儲于一體的綜合功能器件,特別適用于以微控制器為核心的嵌入式系統(tǒng)。關(guān)鍵字:嵌入式系統(tǒng)、實時時鐘 RTC嵌入式系統(tǒng)開發(fā)課程設計報告 No
9、.11- 6 -第一章系統(tǒng)設計第一章系統(tǒng)設計第一節(jié)課題目標及總體方案第一節(jié)課題目標及總體方案隨著嵌入式技術(shù)的發(fā)展,我們身邊充斥著各類各樣的嵌入式電子產(chǎn)品。實時時鐘(RTC)就是一種在現(xiàn)代電子設備中應用非常普遍,可以幫助人們實時、準確的掌握時間的器件,如手機、PDA 及一些智能儀表都提供了時鐘顯示。我們本次課題的目標就是要基于 SAMSUNG S3C2410AL-20 芯片設計出一個實時時鐘,編寫 C 語言可以通過 Vision4 和超級終端軟件調(diào)試,然后通過ULINK2 仿真器下載至實驗箱內(nèi)進行觀察。在試驗箱中的 LED 顯示燈上顯示出時間和日歷。另外,我們將要實現(xiàn)的系統(tǒng)分為三個模塊實現(xiàn),每個
10、模塊間相對獨立而又相互聯(lián)系。 第第二二節(jié)項目設計模塊描述及流程圖節(jié)項目設計模塊描述及流程圖1. .模塊描述:模塊描述:我先進行了整個系統(tǒng)的規(guī)劃,將整個系統(tǒng)分為兩大模塊:第一,主函數(shù)模塊;第二,功能實現(xiàn)模塊(進行時間和鬧鐘的設定,以及其他一些顯示功能) ;第三,鬧鐘功能實現(xiàn)模塊。 2.總體設計流程圖總體設計流程圖:嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 7 -開始課程目標確定總體方案規(guī)劃流程圖設計查閱資料模塊化設計編譯程序仿真硬件觀察調(diào)試得到預期效果優(yōu)化結(jié)束NY3、功能設計流程圖、功能設計流程圖嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 8 -開始程序主界面0 按鍵1 按鍵D 按鍵A 按鍵*按鍵
11、顯示時間顯示日期時間設置設置鬧鐘閃爍顯示按 FUN 鍵確認再按*不閃爍顯示系統(tǒng)時間結(jié)束NNNN4、鬧鐘功能程序流程圖、鬧鐘功能程序流程圖嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 9 -開始程序主界面到達鬧鈴時間設置鬧鐘FUN 鍵確定鬧鈴響FUN 鍵停止顯示系統(tǒng)時間結(jié)束A 鍵按下?NNYY嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 10 -一、主函數(shù)模塊一、主函數(shù)模塊int i;int main(int argc,char *argv)sys_init(); /初始化系統(tǒng)iic_init_8led(); /初始化 8 個 led 燈for(i=0;i8;i+)iic_write_8led(0 x7
12、0, 0 x10+i,0 xfc); /8 個燈全 0for(i=0;i29|ucChar=0) iic_init_8led(); while(1) if(rBCDYEAR=0 x99) /獲取系統(tǒng)日期及時間 g_nYear = 0 x1999; else g_nYear = 0 x2000 + rBCDYEAR; g_nMonth = rBCDMON; g_nWeekday = rBCDDAY; g_nDate = rBCDDATE; g_nHour = rBCDHOUR; g_nMin = rBCDMIN; g_nSec = rBCDSEC; if(g_nSec!=nTmp) / 相同時間
13、不顯示 節(jié)約資源 nTmp = g_nSec;嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 12 - break; 3 3、* *鍵功能實現(xiàn)鍵功能實現(xiàn)if(st2=1) /按*鍵執(zhí)行閃爍for(a=0;a8;a+)iic_write_8led(0 x70,0 x10+a,0 x00); /8 個燈熄滅delay(1000);/延時 1sdisplay_Time();/再顯示elsedisplay_Time();/未按下不變4 4、按鍵判斷函數(shù)、按鍵判斷函數(shù)void display(void)if(ucChar=0 x01) /判斷是否按下 0 鍵 uart_printf(n 按鍵 0,數(shù)碼管顯示時
14、間:n); rtc_display1();/顯示時間函數(shù) else if(ucChar=0 x02) /判斷是否按下 1 鍵 uart_printf(n 按鍵 1,數(shù)碼管顯示日期:n);rtc_display2();/顯示日期函數(shù) else if(ucChar=0 x14) /判斷是否按下 D 鍵uart_printf(n 按下鍵 D,進入日期設置,請先輸入日期(格式 年年年年月月日日)。輸入完成后按 fun 鍵確認。n);setDate();/設置時間函數(shù) else if(ucChar=0 x1c) /判斷是否按下*鍵if(st3=1) /若按下*鍵,數(shù)碼管閃爍顯示 uart_printf(
15、n 按下鍵*,數(shù)碼管停止閃爍顯示。n);st3=0;ss(); /調(diào)用閃爍/不閃爍切換else /再次按下*鍵,數(shù)碼管停止閃爍 uart_printf(n 按下鍵*,數(shù)碼管閃爍顯示。n);st3=1;ss(); else if(ucChar=0 x11) /判斷是否按下 A 鍵uart_printf(n 按下鍵 A,設置鬧鐘。請輸入鬧鐘時間,按 fun 鍵確認。n);嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 13 -isAlam=1;/已設置了鬧鐘alam_jiao();/調(diào)用鬧鈴函數(shù) else if(st1=1) /判斷當前是否顯示時間,調(diào)用顯示時間函數(shù)rtc_display1(); els
16、e if(st1=2) /判斷當前是否顯示日期,調(diào)用顯示日期函數(shù)rtc_display2();5 5、時間及日期設置函數(shù)、時間及日期設置函數(shù)void setDate(void) int i,u;ucChar=0;for(u=0;u8;u+)iic_write_8led(0 x70,0 x10+u,0 x00); /燈滅i=0;while(1) iic_init_8led(); while(g_nKeyPress-) keyboard_init(); g_nKeyPress = 0;/按鍵值置 0while(g_nKeyPress = 0);/空循環(huán),等待有鍵按下iic_read_keybd(0
17、 x70, 0 x1, &ucChar);if(i=8|i=17) /判斷日期和時間輸入完成while(1) while(g_nKeyPress-) keyboard_init();g_nKeyPress=0;while(g_nKeyPress=0);iic_read_keybd(0 x70, 0 x1, &ucChar);ucChar=key_set(ucChar);if(ucChar=0 xff) /按下 FUN 鍵確認if(i=8) uart_printf(n 完成日期設置,繼續(xù)設置時間(格式 星期-時時分分秒秒)n);else uart_printf(n 完成時間設置。n);i+; b
18、reak;嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 14 -if(i=9|i=18)/輸入超出,跳出程序 break;if(ucChar != 0)/判斷是否有鍵按下,并對應 LED 燈 8 位按位顯示ucChar= key_set(ucChar);switch(i)case 0: iic_write_8led(0 x70, 0 x10+4, numucChar); g_nYear=ucChar*4096; /設置年 i+; break; case 1: iic_write_8led(0 x70, 0 x10+5, numg_nYear/4096); iic_write_8led(0 x70,
19、 0 x10+4, numucChar); g_nYear=g_nYear+ucChar*256; i+; break;case 2: iic_write_8led(0 x70, 0 x10+6, numg_nYear/4096); iic_write_8led(0 x70, 0 x10+5, numg_nYear/256%16); iic_write_8led(0 x70, 0 x10+4, numucChar); g_nYear=g_nYear+ucChar*16; i+; break;case 3: iic_write_8led(0 x70, 0 x10+7, numg_nYear/40
20、96); iic_write_8led(0 x70, 0 x10+6, numg_nYear/256%16); iic_write_8led(0 x70, 0 x10+5, numg_nYear/16%16); iic_write_8led(0 x70, 0 x10+4, numucChar); g_nYear=g_nYear+ucChar; i+; break;case 4:iic_write_8led(0 x70, 0 x10+0, numg_nYear/4096); iic_write_8led(0 x70, 0 x10+7, numg_nYear/256%16); iic_write_
21、8led(0 x70, 0 x10+6, numg_nYear/16%16); iic_write_8led(0 x70, 0 x10+5, numg_nYear%4096%256%16); iic_write_8led(0 x70, 0 x10+4, numucChar); g_nMonth=ucChar*16;/設置月 i+;嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 15 - break;case 5:iic_write_8led(0 x70, 0 x10+1, numg_nYear/4096); iic_write_8led(0 x70, 0 x10+0, numg_nYear/256%
22、16); iic_write_8led(0 x70, 0 x10+7, numg_nYear/16%16); iic_write_8led(0 x70, 0 x10+6, numg_nYear%4096%256%16); iic_write_8led(0 x70, 0 x10+5, numg_nMonth/16); iic_write_8led(0 x70, 0 x10+4, numucChar); g_nMonth= g_nMonth+ucChar; i+; break;case 6:iic_write_8led(0 x70, 0 x10+2, numg_nYear/4096); iic_w
23、rite_8led(0 x70, 0 x10+1, numg_nYear/256%16); iic_write_8led(0 x70, 0 x10+0, numg_nYear/16%16); iic_write_8led(0 x70, 0 x10+7, numg_nYear%4096%256%16); iic_write_8led(0 x70, 0 x10+6, numg_nMonth/16); iic_write_8led(0 x70, 0 x10+5, numg_nMonth%16); iic_write_8led(0 x70, 0 x10+4, numucChar); g_nDate=u
24、cChar*16;/設置日 i+; break;case 7:iic_write_8led(0 x70, 0 x10+3, numg_nYear/4096); iic_write_8led(0 x70, 0 x10+2, numg_nYear/256%16); iic_write_8led(0 x70, 0 x10+1, numg_nYear/16%16); iic_write_8led(0 x70, 0 x10+0, numg_nYear%4096%256%16); iic_write_8led(0 x70, 0 x10+7, numg_nMonth/16); iic_write_8led(
25、0 x70, 0 x10+6, numg_nMonth%16); iic_write_8led(0 x70, 0 x10+5, numg_nDate/16); iic_write_8led(0 x70, 0 x10+4, numucChar); g_nDate=g_nDate+ucChar; i+; break; case 9: for(u=0;u8;u+)iic_write_8led(0 x70,0 x10+u,0 x00);/8 個燈滅i+;break;case 10:iic_write_8led(0 x70, 0 x10+5, numucChar);iic_write_8led(0 x7
26、0, 0 x10+4, 0 x02);嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 16 -g_nWeekday=ucChar;/設置星期i+;break;case 11:iic_write_8led(0 x70, 0 x10+6, numg_nWeekday);iic_write_8led(0 x70, 0 x10+5, 0 x02);iic_write_8led(0 x70, 0 x10+4, numucChar);g_nHour=ucChar*16;/設置小時i+;break;case 12:iic_write_8led(0 x70, 0 x10+7, numg_nWeekday);iic_
27、write_8led(0 x70, 0 x10+6, 0 x02);iic_write_8led(0 x70, 0 x10+5, numg_nHour/16);iic_write_8led(0 x70, 0 x10+4, numucChar);g_nHour=g_nHour+ucChar;i+;break;case 13:iic_write_8led(0 x70, 0 x10+0, numg_nWeekday);iic_write_8led(0 x70, 0 x10+7, 0 x02);iic_write_8led(0 x70, 0 x10+6, numg_nHour/16);iic_writ
28、e_8led(0 x70, 0 x10+5, numg_nHour%16);iic_write_8led(0 x70, 0 x10+4, numucChar);g_nMin=ucChar*16;/設置分鐘i+;break;case 14:iic_write_8led(0 x70, 0 x10+1, numg_nWeekday);iic_write_8led(0 x70, 0 x10+0, 0 x02);iic_write_8led(0 x70, 0 x10+7, numg_nHour/16);iic_write_8led(0 x70, 0 x10+6, numg_nHour%16);iic_w
29、rite_8led(0 x70, 0 x10+5, numg_nMin/16);iic_write_8led(0 x70, 0 x10+4, numucChar);g_nMin=g_nMin+ucChar;i+;break;case 15:iic_write_8led(0 x70, 0 x10+2, numg_nWeekday);iic_write_8led(0 x70, 0 x10+1, 0 x02);iic_write_8led(0 x70, 0 x10+0, numg_nHour/16);iic_write_8led(0 x70, 0 x10+7, numg_nHour%16);iic_
30、write_8led(0 x70, 0 x10+6, numg_nMin/16);iic_write_8led(0 x70, 0 x10+5, numg_nMin%16);嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 17 -iic_write_8led(0 x70, 0 x10+4, numucChar);g_nSec=ucChar*16;/設置秒鐘i+;break;case 16:iic_write_8led(0 x70, 0 x10+3, numg_nWeekday);iic_write_8led(0 x70, 0 x10+2, 0 x02);iic_write_8led(0 x70, 0
31、x10+1, numg_nHour/16);iic_write_8led(0 x70, 0 x10+0, numg_nHour%16);iic_write_8led(0 x70, 0 x10+7, numg_nMin/16);iic_write_8led(0 x70, 0 x10+6, numg_nMin%16);iic_write_8led(0 x70, 0 x10+5, numg_nSec/16);iic_write_8led(0 x70, 0 x10+4, numucChar);g_nSec=g_nSec+ucChar;i+;break;case 18:rRTCCON = rRTCCON
32、 & (0 xf) | 0 x1;/ No reset, Merge BCD counters, 1/32768, RTC Control enable rBCDYEAR = rBCDYEAR & (0 xff) | g_nYear; rBCDMON = rBCDMON & (0 x1f) | g_nMonth;rBCDDAY = rBCDDAY & (0 x7) | g_nWeekday; rBCDDATE = rBCDDATE & (0 x3f) | g_nDate; rBCDHOUR = rBCDHOUR & (0 x3f) | g_nHour; rBCDMIN = rBCDMIN &
33、(0 x7f) | g_nMin; rBCDSEC = rBCDSEC & (0 x7f) | g_nSec; rRTCCON = 0 x0;rtc_display1(); /顯示時間函數(shù)break;6 6、閃爍、閃爍/ /不閃爍切換函數(shù)不閃爍切換函數(shù)void ss(void)if(st3=0)/若按下*鍵 if(st1=1) /判斷當前是否顯示時間,調(diào)用顯示時間函數(shù)嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 18 - st2=0;rtc_display1();else if(st1=2) /判斷當前是否顯示日期,調(diào)用顯示日期函數(shù) st2=0;rtc_display2();else/未按下鍵,再
34、次判斷顯示日期還是時間,再進行調(diào)用當前顯示函數(shù) if(st1=1) st2=1;rtc_display1();else if(st1=2) st2=1;rtc_display2();7 7、發(fā)聲函數(shù)、發(fā)聲函數(shù)void jiao() int u;rGPFCON=0 x5500;rGPFUP=0; rGPBCON = rGPBCON & 0 xFFFFFC|1;rGPBDAT &= 0 xFFFFFE;rGPFDAT=0;/初始化蜂鳴器設置for(u=0;u100000;u+);rGPFDAT=0 xF0;for(u=0;u100000;u+);delay(5000);/延時 5srGPBDAT
35、|= 1; delay(5000);rGPFCON = 0 x55aa;8 8、鍵值對應到鍵盤函數(shù)、鍵值對應到鍵盤函數(shù)UINT8T key_set(UINT8T ucChar)switch(ucChar)case 1:case 2:嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 19 -case 3:case 4:case 5:ucChar-=1; break;case 9:case 10:case 11:case 12:case 13:ucChar-=4; break;case 17:case 18:case 19:case 20:case 21:ucChar-=7; break;case 25:
36、 ucChar = 0 xF; break;case 26: ucChar = +; break;case 27: ucChar = -; break;case 28: ucChar = *; break;case 29: ucChar = 0 xFF; break;default: ucChar = 0;return ucChar;9 9、中斷函數(shù)、中斷函數(shù)void _irq rtc_int0_int(void)ClearPending(BIT_EINT0);rRTCRST = (13) | 3;than 30 g_nSecvoid _irq rtc_int(void)/到達設定鬧鐘時間,觸
37、發(fā)中斷 int i;ClearPending(BIT_RTC); f_nIsRtcInt = 1; void _irq rtc_tick(void)ClearPending(BIT_TICK); f_unTickCount+;嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 20 -三、鬧鐘功能實現(xiàn)模塊三、鬧鐘功能實現(xiàn)模塊1 1、A A 鍵設置鬧鐘功能實現(xiàn)鍵設置鬧鐘功能實現(xiàn)if(isAlam=1)/按下 A 鍵設置鬧鐘 /在超級終端上顯示已設定的鬧鐘為-uart_printf( %x:%x:%x %s,%x/%x/%x 已設定鬧鐘 %x:%x:%x,%x/%x/%xr,g_nHour,g_nMin,g
38、_nSec,dayg_nWeekday,g_nMonth,g_nDate,g_nYear,rALMHOUR,rALMMIN,rALMSEC,rALMYEAR,rALMMON,rALMDATE);if(f_nIsRtcInt=1)/判斷到了設定的鬧鐘f_nIsRtcInt=0; /到了鬧鐘時間久置為初始值isAlam=0;/將設置的鬧鐘置 0(已設置鬧鐘)uart_printf(n 鬧鐘叫了,請按 FUN 鍵停止。n);naoz();/調(diào)用鬧鐘函數(shù)else /未按下 A 鍵就不變 uart_printf( %x:%x:%x %s,%x/%x/%xr,g_nHour,g_nMin,g_nSec,d
39、ayg_nWeekday,g_nMonth,g_nDate,g_nYear);keyboard_init();/接受鍵盤的輸入,并且將值放在 ucChar g_nKeyPress = 0;iic_read_keybd(0 x70, 0 x1, &ucChar); display();/按鍵判斷函數(shù)rRTCCON = 0 x0;/ No reset, Merge BCD counters, 1/32768, RTC Control disable(for power consumption)void naoz(void)/鬧鐘函數(shù)int i;while(1) /鬧鐘響后,按 FUN 鍵停止 wh
40、ile(g_nKeyPress-) keyboard_init();/接受鍵盤的輸入,并且將值放在ucCharg_nKeyPress=0;iic_read_keybd(0 x70, 0 x1, &ucChar);ucChar=key_set(ucChar);if(ucChar=0 xff) /按下 FUN 鍵ucChar=0; /給按鍵值置 0嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 21 -uart_printf(n 鬧鐘已停止。n); return;iic_init_8led();for(i=0;i8;i+) iic_write_8led(0 x70,0 x10+i,0 x00);/8 個
41、 LED 燈全滅display_Time();/調(diào)用系統(tǒng)時間顯示jiao();/調(diào)用發(fā)聲函數(shù)2 2、鬧鐘設置函數(shù)、鬧鐘設置函數(shù)void alam(void) int i,u;ucChar=0;for(u=0;u8;u+)iic_write_8led(0 x70,0 x10+u,0 x00);/8 個 LED 燈全滅i=0;while(1) iic_init_8led(); while(g_nKeyPress-) keyboard_init(); g_nKeyPress = 0; /接受鍵盤的輸入,并且將值放在 ucCharwhile(g_nKeyPress = 0);iic_read_keyb
42、d(0 x70, 0 x1, &ucChar);if(i=6) /判斷時間輸入是否完成while(1) while(g_nKeyPress-) keyboard_init();g_nKeyPress=0; /接受鍵盤的輸入,并且將值放在 ucCharwhile(g_nKeyPress=0); iic_read_keybd(0 x70, 0 x1, &ucChar);ucChar=key_set(ucChar);if(ucChar=0 xff)/按下 FUN 鍵確認輸入時間i+; break;嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 22 -if(i=7)/判斷是否 8 個 LED 燈都設置好了
43、 return;/跳出程序if(ucChar != 0)/判斷有鍵按下,并且在相應位上顯示ucChar= key_set(ucChar);switch(i)case 0: iic_write_8led(0 x70, 0 x10+6, 0 x02); iic_write_8led(0 x70, 0 x10+5, 0 x02); iic_write_8led(0 x70, 0 x10+4, numucChar); rALMHOUR=ucChar*16;/設置鬧鐘的小時 i+; break;case 1: iic_write_8led(0 x70, 0 x10+7, 0 x02); iic_writ
44、e_8led(0 x70, 0 x10+6, 0 x02); iic_write_8led(0 x70, 0 x10+5, numrALMHOUR/16); iic_write_8led(0 x70, 0 x10+4, numucChar); rALMHOUR=rALMHOUR+ucChar; i+; break;case 2: iic_write_8led(0 x70, 0 x10+0, 0 x02); iic_write_8led(0 x70, 0 x10+7, 0 x02); iic_write_8led(0 x70, 0 x10+6, numrALMHOUR/16); iic_writ
45、e_8led(0 x70, 0 x10+5, numrALMHOUR%16); iic_write_8led(0 x70, 0 x10+4, numucChar); rALMMIN=ucChar*16;/設置鬧鐘的分鐘 i+; break;case 3: iic_write_8led(0 x70, 0 x10+1, 0 x02); iic_write_8led(0 x70, 0 x10+0, 0 x02); iic_write_8led(0 x70, 0 x10+7, numrALMHOUR/16); iic_write_8led(0 x70, 0 x10+6, numrALMHOUR%16)
46、; iic_write_8led(0 x70, 0 x10+5, numrALMMIN/16); iic_write_8led(0 x70, 0 x10+4, numucChar); rALMMIN=rALMMIN+ucChar; i+; break;case 4:嵌入式系統(tǒng)開發(fā)課程設計報告 No.11- 23 - iic_write_8led(0 x70, 0 x10+2, 0 x02); iic_write_8led(0 x70, 0 x10+1, 0 x02); iic_write_8led(0 x70, 0 x10+0, numrALMHOUR/16); iic_write_8led(0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廠區(qū)場地土建合同范例
- 【課件】新的實驗-實驗藝術(shù)材料的拓展與藝術(shù)呈現(xiàn)+課件-2024-2025學年高中美術(shù)湘美版(2019)美術(shù)鑒賞
- 短視頻制作內(nèi)容為王的時代如何選題
- 科技推動下的大學校園環(huán)境治理進步
- 社交媒體在醫(yī)療領域的應用及其對青少年的影響
- 科技產(chǎn)品生產(chǎn)中的工藝優(yōu)化策略
- 科技新紀元電子競技產(chǎn)業(yè)發(fā)展前沿解讀
- 胃腸息肉病人護理
- 公司BOT合同范本
- 科技引領綠色出行新能源汽車的商業(yè)價值
- 常見八種疾病
- 膠粘劑基礎知識及產(chǎn)品詳解(課堂PPT)
- 完整版三措兩案范文
- 計算書平原微丘區(qū)二級公路設計
- 鐵路總公司近期處理的七起突出質(zhì)量問題的通報
- 常用洪水預報模型介紹
- 援外項目鋼結(jié)構(gòu)運輸包裝作業(yè)指導書(共13頁)
- 髖關(guān)節(jié)置換術(shù)男性患者留置尿管最佳時機探析和對策
- [爆笑小品校園劇本7人]爆笑小品校園劇本
- 同步帶輪設計
- 服裝工廠評估資料樣本
評論
0/150
提交評論