AVR單片機(jī)實(shí)驗(yàn)報(bào)告PCF8563_第1頁(yè)
AVR單片機(jī)實(shí)驗(yàn)報(bào)告PCF8563_第2頁(yè)
AVR單片機(jī)實(shí)驗(yàn)報(bào)告PCF8563_第3頁(yè)
AVR單片機(jī)實(shí)驗(yàn)報(bào)告PCF8563_第4頁(yè)
AVR單片機(jī)實(shí)驗(yàn)報(bào)告PCF8563_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

南京郵電大學(xué)2011/2012學(xué)年第一學(xué)期課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告 模塊名稱AVR單片機(jī)課程設(shè)計(jì)專業(yè)學(xué)生班級(jí)學(xué)生學(xué)號(hào)學(xué)生姓名指導(dǎo)教師李虹戴海鴻楊潔王明偉日期:2011年9月26日至2011年10月20日AVR單片機(jī)課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)目的學(xué)習(xí)ATmega128單片機(jī)的仿真環(huán)境(AVRStudio)及C語(yǔ)言編程環(huán)境(ICCAVR)。學(xué)習(xí)ATmega128單片機(jī)的C語(yǔ)言編程,熟悉使用板載JTAG進(jìn)行仿真調(diào)試。課程設(shè)計(jì)內(nèi)容基本要求:1)訪問(wèn)時(shí)鐘芯片PCF8563,在LCD1602上顯示年、月、日、時(shí)、分、秒,或通過(guò)串口將時(shí)間傳至PC。2)合理定義板上按鍵功能,隨機(jī)設(shè)定、調(diào)整時(shí)間和日期。擴(kuò)展要求:鬧鐘功能,啟動(dòng)蜂鳴器鳴叫。有閏年功能三.課程設(shè)計(jì)過(guò)程1.設(shè)計(jì)原理:利用ATmega128內(nèi)部的IIC,讀寫實(shí)時(shí)時(shí)鐘芯片PCF8563內(nèi)部的寄存器,通過(guò)PC顯示出來(lái),可通過(guò)按鍵,設(shè)置當(dāng)前時(shí)間。2.實(shí)驗(yàn)原理圖:按鍵部分4個(gè)獨(dú)立按鍵,接在PD4~PD7,通過(guò)一個(gè)電阻到地,鍵盤按下時(shí)為低電平,釋放為高電平。實(shí)時(shí)時(shí)鐘芯片PCF8563部分實(shí)時(shí)時(shí)鐘芯片PCF8563通過(guò)IIC總線連接到ATmega128的SDA和SCL總線上。軟件設(shè)計(jì)1)思路如下:使用ATmega128內(nèi)部TWI通過(guò)IIC總線讀寫實(shí)時(shí)時(shí)鐘芯片PCF8563內(nèi)部的寄存器實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘功能,使用四個(gè)按鍵設(shè)置時(shí)鐘的年,月,日,時(shí),分,秒,并把時(shí)鐘顯示到PC上。 2)程序流程圖開(kāi)始 開(kāi)始初始化初始化CPU,包括GPIO,TWISPI初始化PCF8653初始化PCF8653取得按鍵值取得按鍵值 處理模式鍵處理選擇鍵處理加鍵處理減鍵 S4 S3 S2 S1處理模式鍵處理選擇鍵處理加鍵處理減鍵讀取PCF8563的時(shí)鐘數(shù)據(jù)讀取PCF8563的時(shí)鐘數(shù)據(jù)使用使用PC顯示實(shí)時(shí)時(shí)鐘結(jié)束結(jié)束3)關(guān)鍵代碼:voidPowerOnInitial(void){ Key_init(); //初始化按鍵 lcd_init(); //初始化LCD PCF8563_init(); //初始化PCF8563 PCF8563Time.PCF8563Data.Year=11; PCF8563Time.PCF8563Data.Month=10; PCF8563Time.PCF8563Data.Day=14; PCF8563Time.PCF8563Data.Hour=23; PCF8563Time.PCF8563Data.Minute=30; PCF8563Time.PCF8563Data.Second=30; //初始化時(shí)間 DecToBCD(); //十進(jìn)制轉(zhuǎn)BCD碼 PCF8536_wt_p(0x02,PCF8563Time.bData,7); //寫PCF8653時(shí)間 SystemMode=RTCTIMEMODE;}函數(shù)PowerOnInitial的作用是初始化按鍵,PCF8563,并初始化時(shí)鐘的時(shí)間。voidKeyProcess(void){ BYTEKeyCode; KeyCode=get_key(); switch(KeyCode){ case(((1<<S4)^0xF0)): //模式選擇按鍵 if(SystemMode==RTCTIMEMODE){ //當(dāng)當(dāng)前模式為顯示模式 SystemMode=SETTINGMODE; //轉(zhuǎn)換成設(shè)置模式 SetStep=SETYEAR; }elseif(SystemMode==SETTINGMODE){ //當(dāng)當(dāng)前模式為設(shè)置模式 SystemMode=RTCTIMEMODE; //轉(zhuǎn)換成顯示模式 DecToBCD(); //十進(jìn)制轉(zhuǎn)BCD碼 PCF8536_wt_p(0x02,PCF8563Time.bData,7); //寫PCF8653時(shí)間 } break; case(((1<<S3)^0xF0)): //選擇按鍵 if(SystemMode!=SETTINGMODE){ break; } if(++SetStep==(SETSECOND+1)){ SetStep=SETYEAR; } break; case(((1<<S2)^0xF0)): //加按鍵 if(SystemMode!=SETTINGMODE){ break; } switch(SetStep){ caseSETYEAR: if(++PCF8563Time.PCF8563Data.Year==99+1){ PCF8563Time.PCF8563Data.Year=0; } break; caseSETMONTH: if(++PCF8563Time.PCF8563Data.Month==12+1){ PCF8563Time.PCF8563Data.Month=1; } break; caseSETDAY: if(++PCF8563Time.PCF8563Data.Day==31+1){ PCF8563Time.PCF8563Data.Day=1; } break; caseSETHOUR: if(++PCF8563Time.PCF8563Data.Hour==23+1){ PCF8563Time.PCF8563Data.Hour=0; } break; caseSETMINUTE: if(++PCF8563Time.PCF8563Data.Minute==59+1){ PCF8563Time.PCF8563Data.Minute=0; } break; caseSETSECOND: if(++PCF8563Time.PCF8563Data.Second==59+1){ PCF8563Time.PCF8563Data.Second=0; } break; default: break; } break; case(((1<<S1)^0xF0)): //減按鍵 switch(SetStep){ caseSETYEAR: if(--PCF8563Time.PCF8563Data.Year==0-1){ PCF8563Time.PCF8563Data.Year=99; } break; caseSETMONTH: if(--PCF8563Time.PCF8563Data.Month==1-1){ PCF8563Time.PCF8563Data.Month=12; } break; caseSETDAY: if(--PCF8563Time.PCF8563Data.Day==1-1){ PCF8563Time.PCF8563Data.Day=31; } break; caseSETHOUR: if(--PCF8563Time.PCF8563Data.Hour==0-1){ PCF8563Time.PCF8563Data.Hour=23; } break; caseSETMINUTE: if(--PCF8563Time.PCF8563Data.Minute==0-1){ PCF8563Time.PCF8563Data.Minute=59; } break; caseSETSECOND: if(--PCF8563Time.PCF8563Data.Second==0-1){ PCF8563Time.PCF8563Data.Second=59; } break; default: break; } break; default: break; }}函數(shù)KeyProcess的作用取得按鍵的鍵,并進(jìn)行相應(yīng)的按鍵處理。voidDisplayMain(void){ if(SystemMode==RTCTIMEMODE){ PCF8536_rd(0x02,PCF8563Time.bData,7);//讀PCF8563時(shí)間 BCDToDec(); //BCD碼轉(zhuǎn)換成十進(jìn)制數(shù) } LCM1602BufferLine0[LINEONEBASIC]=PCF8563Time.PCF8563Data.Year/10+'0'; LCM1602BufferLine0[LINEONEBASIC+1]=PCF8563Time.PCF8563Data.Year%10+'0'; LCM1602BufferLine0[LINEONEBASIC+3]=PCF8563Time.PCF8563Data.Month/10+'0'; LCM1602BufferLine0[LINEONEBASIC+4]=PCF8563Time.PCF8563Data.Month%10+'0'; LCM1602BufferLine0[LINEONEBASIC+6]=PCF8563Time.PCF8563Data.Day/10+'0'; LCM1602BufferLine0[LINEONEBASIC+7]=PCF8563Time.PCF8563Data.Day%10+'0'; LCM1602BufferLine1[LINETWOBASIC]=PCF8563Time.PCF8563Data.Hour/10+'0'; LCM1602BufferLine1[LINETWOBASIC+1]=PCF8563Time.PCF8563Data.Hour%10+'0'; LCM1602BufferLine1[LINETWOBASIC+3]=PCF8563Time.PCF8563Data.Minute/10+'0'; LCM1602BufferLine1[LINETWOBASIC+4]=PCF8563Time.PCF8563Data.Minute%10+'0'; LCM1602BufferLine1[LINETWOBASIC+6]=PCF8563Time.PCF8563Data.Second/10+'0'; LCM1602BufferLine1[LINETWOBASIC+7]=PCF8563Time.PCF8563Data.Second%10+'0'; if(SystemMode==SETTINGMODE&&flgFlash==TRUE){ //閃爍控制 switch(SetStep){ caseSETYEAR: LCM1602BufferLine0[LINEONEBASIC]=''; LCM1602BufferLine0[LINEONEBASIC+1]=''; break; caseSETMONTH: LCM1602BufferLine0[LINEONEBASIC+3]=''; LCM1602BufferLine0[LINEONEBASIC+4]=''; break; caseSETDAY: LCM1602BufferLine0[LINEONEBASIC+6]=''; LCM1602BufferLine0[LINEONEBASIC+7]=''; break; caseSETHOUR: LCM1602BufferLine1[LINEONEBASIC]=''; LCM1602BufferLine1[LINEONEBASIC+1]=''; break; caseSETMINUTE: LCM1602BufferLine1[LINEONEBASIC+3]=''; LCM1602BufferLine1[LINEONEBASIC+4]=''; break; caseSETSECOND: LCM1602BufferLine1[LINEONEBASIC+6]=''; LCM1602BufferLine1[LINEONEBASIC+7]=''; break; default: break; } } lcd_disp_string(0,0,LCM1602BufferLine0); //更新第一行顯示 lcd_d

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論