AVR單片機實驗報告PCF8563_第1頁
AVR單片機實驗報告PCF8563_第2頁
AVR單片機實驗報告PCF8563_第3頁
AVR單片機實驗報告PCF8563_第4頁
AVR單片機實驗報告PCF8563_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

南京郵電大學(xué)2011/2012學(xué)年第一學(xué)期課程設(shè)計實驗報告模塊名稱AVR單片機課程設(shè)計專業(yè)學(xué)生班級學(xué)生學(xué)號學(xué)生姓名指導(dǎo)教師李虹戴海鴻楊潔王明偉日期:2011年9月26日至2011年10月20日AVR單片機課程設(shè)計報告課程設(shè)計目的學(xué)習(xí)ATmegal28單片機的仿真環(huán)境(AVRStudio)及C語言編程環(huán)境(ICCAVR)。學(xué)習(xí)ATmegal28單片機的C語言編程,熟悉使用板載JTAG進行仿真調(diào)試。課程設(shè)計內(nèi)容基本要求:訪問時鐘芯片PCF8563,在LCD1602±顯示年、月、口、時、分、秒,或通過串II將時間傳至PC。合理定義板上按鍵功能,隨機設(shè)定、調(diào)整時間和口期。擴展要求:鬧鐘功能,啟動蜂鳴器鳴叫。有閏年功能課程設(shè)計過程設(shè)計原理:利用ATmegal28內(nèi)部的IIC,讀寫實時時鐘芯片PCF8563內(nèi)部的寄存器,通過PC顯示出來,可通過按鍵,設(shè)置當(dāng)前時間。實驗原理圖:按鍵部分KEY&BUZZ4個獨立按鍵,接在PD4?PD7,通過一個電阻到地,鍵盤按下時為低電平,釋放為高電平。

實時時鐘芯片PCF8563部分實時時鐘芯片PCF8563通過IIC總線連接到ATmegal28的SDA和SCL總線上。3?軟件設(shè)計1)思路如下:使用ATmegal28內(nèi)部TWI通過IIC總線讀寫實時時鐘芯片PCF8563內(nèi)部的寄存器實現(xiàn)實時時鐘功能,使用四個按鍵設(shè)置時鐘的年,月,日,時,分,秒,并把時鐘顯示到PC上。2)程序流程圖3)關(guān)鍵代碼:voidPoweiOiiIiutial(void)Key_imt();//初始化按鍵lcd_uut();//初始化LCDPCF8563_uiitQ;//初始化PCF8563PCF8563Tune.PCF8563Data.Year=11;PCF8563Tune.PCF8563Data.Month=10;PCF8563Tune.PCF8563Data.Day=14;PCF8563Tune.PCF8563Data.Hour=23;PCF8563Tune.PCF8563Data.NImute=30;PCF8563Tune.PCF8563Data.Second=30;//初始化時間DecToBCDQ;//十進制轉(zhuǎn)BCD碼PCF8536^1_p(0x02TCF8563Tune.bData,7); //寫PCF8653時間SvsteinMode=RTCTIMEMODE;}函數(shù)PowerOiihiitial的作用是初始化按鍵,PCF8563,并初始化時鐘的時間。voidKevProcess(void){BYTEKeyCode;KeyCode=get_key();switch(KeyCode){case(((l?S4r0xF0))://模式選擇按鍵if(SvsteinMode==RTCTIMEMODE){ //當(dāng)當(dāng)前模式為顯示模式SysteniNIode=SETTINGMODE;//轉(zhuǎn)換成設(shè)置模式SetStep=SETYEAR:}elseif(SysteniMode=SETTINGMODE){ 〃當(dāng)當(dāng)前模式為設(shè)置模式SysteniNIode=RTCTIMEMODE;//轉(zhuǎn)換成顯示模式DecToBCD();//十進制轉(zhuǎn)BCD碼PCF8536_\vt_p(0x02fCF8563Time?bData,7);//寫PCF8653時間}break;case(((1?S3)ZOxFO))://選擇按鍵if(SvsteinMode!=SETTINGMODE){break;}if(++SetStep==(SETSECOND+1)){SetStep=SETYEAR:}break;case(((1?S2)ZOxFO))://加按鍵if(SysteinMode!=SETTINGMODE){break:}switch(SetStep){caseSETYEAR:if(++PCF8563Tmie.PCF8563Data.Yeai-==99+1){PCF8563Tune.PCF8563Data.Year=0;}break;caseSETMONTH:if(++PCF8563Tmie.PCF8563Data.Month==12+1){PCF8563Tune.PCF8563Data.Month=1;}break;caseSETDAY:if(++PCF8563Tmie.PCF8563Data.Day==31+1){PCF8563Tune.PCF8563Data.Day=1;}break;caseSETHOUR:if(++PCF8563Tmie.PCF8563Data.Hour—23+1){PCF8563Tune.PCF8563Data.Hour=0;}break;caseSETMINUTE:if(++PCF8563Tmie.PCF8563Data.Mmute—59+1){PCF8563Tiine.PCF8563Data.Minute=0;}break;caseSETSECOND:if(++PCF8563Tmie.PCF8563Data.Second==59+1){PCF8563Tiine.PCF8563Data.Second=0;}break;default:break;}break:case(((l?Sl)z0xF0)): //減按鍵switch(SetStep){caseSETYEAR:if(-PCF8563Time.PCF8563Data.Yeai-==0-1){PCF8563Tune.PCF8563Data.Year=99;}break;caseSETMONTH:if(-PCF8563Time.PCF8563Data.Montli==1-1){PCF8563Tune.PCF8563Data.Month=12;}break;caseSETDAY:if(-PCF8563Time.PCF8563Data.Day==1-1){PCF8563Tune.PCF8563Data.Day=31;}break;caseSETHOUR:if(-PCF8563Time.PCF8563Data.Houi—0-1){PCF8563Tune.PCF8563Data.Hom-=23;}break;caseSETMINUTE:if(-PCF8563Time.PCF8563Data.Mmute—0-1){PCF8563Tune.PCF8563Data.Minute=59;}break;caseSETSECOND:if(-PCF8563Time.PCF8563Data.Second—0-1){PCF8563Tune.PCF8563Data.Second=59;}break;default:break;}break:default:break:}}函數(shù)KeyPiocess的作用取得按鍵的鍵,并進行相應(yīng)的按鍵處理。voidDisplayMain(void){if(SysteniMode==RTCTIMEMODE){PCF8536_[d(0x02.PCF8563Time?bData,7);〃讀PCF8563時間

BCDToDecQ;//BCD碼轉(zhuǎn)換成十進制數(shù)}LCM1602BufferLmeO[LINEONEBASIC]PCF8563Tmie.PCF8563Data.Year/10+,0,;LCM1602BufferLmeO[LINEONEBASIC+1]PCF8563Tmie.PCF8563Data.Year%104-,0f;LCM1602BufferLmeO[LINEONEBASIC+3]PCF8563Tmie.PCF8563Data.Month/10+,0,;LCM1602BufferLmeO[LINEONEBASIC+4]PCF8563Tmie.PCF8563Data.Month%10+,0f;LCM1602BufferLmeO[LINEONEBASIC+6]PCF8563Tmie.PCF8563Data.Dav/10+*0,;LCM1602BufferLmeO[LINEONEBASIC+7]PCF8563Tmie.PCF8563Data.Dav%10+,0,;LCM1602BufferLme1[LINETWOBASIC]PCF8563Tmie.PCF8563Data.Houi710+,0,;LCM1602BufferLme1[LINETWOBASIC+1]PCF8563Tmie.PCF8563Data.Houi^>10+,0,;LCM1602BufferLme1[LINETWOBASIC+3]PCF8563Tmie.PCF8563Data.Minute/10+,0,;LCM1602BufferLme1[LINETWOBASIC+4]PCF8563Tmie.PCF8563Data.Minute%10+,0,;LCM1602BufferLme1[LINETWOBASIC+6]PCF8563Tiine.PCF8563Data.Second/10+,0,;//閃爍控制LCM1602BufferLme1[LINETWOBASIC+7]PCF8563Tmie.PCF8563Data.Second%10+,0,//閃爍控制if(SysteniMode==SETTINGMODE&&flgFlash=TRUE){switch(SetStep){caseSETYEAR:LCM1602BufferLmeO[LINEONEBASIC]=*:LCM1602BufferLmeO[LINEONEBASIC+l]=?:break:caseSETMONTH:LCM1602BufferLmeO[LINEONEBASIC+3]=1:LCM1602BufferLmeO[LINEONEBASIC+4]=1:break:caseSETDAY:LCM1602BufferLmeO[LINEONEBASIC+6]=1:LCM1602BufferLmeO[LINEONEBASIC+7]=1:break:caseSETHOUR:LCM1602BufferLme1[LINEONEBASIC]=*:

LCM1602BufifeiLme1[LINEONEBASIC+1]=1;break:caseSETNIINUTE:LCM1602BufifeiLme1[LINEONEBASIC+3]=*:LCM1602BufifeiLme1[LINEONEBASIC+4]=*:break:caseSETSECOND:LCM1602BufifeiLme1[LINEONEBASIC+6]=*:LCM1602BufifeiLme1[LINEONEBASIC+7]=*:break:default:break:}}lcd_disp_string(O,O,LCMl602BufiferLine0);//更新第一行顯示lcd_disp_string(1,0,LCM1602BufiferLme1);

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論