電子表單片機報告_第1頁
電子表單片機報告_第2頁
電子表單片機報告_第3頁
電子表單片機報告_第4頁
電子表單片機報告_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機應(yīng)用系統(tǒng)設(shè)計說明書

設(shè)計題目:基于Proteus的多功能數(shù)字鐘設(shè)計一、系統(tǒng)設(shè)計小組工作分工序號成員工作分工1查找相關(guān)資料、軟件測試2硬件設(shè)計3系統(tǒng)的整體設(shè)計匯總二.系統(tǒng)設(shè)計目標(biāo)(主要內(nèi)容:所設(shè)計系統(tǒng)在所具有的功能及在實際應(yīng)用領(lǐng)域中的意義)PROTEUS與Keil聯(lián)調(diào)開發(fā)51系列單片機應(yīng)用系統(tǒng)的方法以及基于PROTEUS環(huán)境下的帶鬧鈴功能的時鐘的仿真設(shè)計。將KeilC開發(fā)的程序用Proteus設(shè)計的仿真電路中交互運行調(diào)試的方法,設(shè)計LCD顯示時鐘。在基于PROTEUS環(huán)境下的帶鬧鈴功能的時鐘的仿真設(shè)計中,使用AT89C51芯片自帶的定時器實現(xiàn)時鐘功能,然后顯示在LCD顯示屏上。通過在Proteus環(huán)境下的實驗證明,在PROTEUS環(huán)境下可以完成單片機系統(tǒng)的硬件設(shè)計和軟件調(diào)試,測試系統(tǒng)的性能,在實際應(yīng)用中可以降低設(shè)計成本,縮短開發(fā)周期,提高效率。摘要本文介紹了PROTEUS與Keil聯(lián)調(diào)開發(fā)51系列單片機應(yīng)用系統(tǒng)的方法以及基于PROTEUS環(huán)境下的帶鬧鈴功能的時鐘的仿真設(shè)計。將KeilC開發(fā)的程序用Proteus設(shè)計的仿真電路中交互運行調(diào)試的方法,設(shè)計LCD顯示時鐘。在基于PROTEUS環(huán)境下的帶鬧鈴功能的時鐘的仿真設(shè)計中,使用AT89C51芯片自帶的定時器實現(xiàn)時鐘功能,然后顯示在LCD顯示屏上。通過在Proteus環(huán)境下的實驗證明,在PROTEUS環(huán)境下可以完成單片機系統(tǒng)的硬件設(shè)計和軟件調(diào)試,測試系統(tǒng)的性能,在實際應(yīng)用中可以降低設(shè)計成本,縮短開發(fā)周期,提高效率。關(guān)鍵詞:Proteus;仿真;單片機;時鐘;鬧鐘目錄23:59:50";ucharcodebmp[]={0x0e,0x11,0x1f,0x00,0x0a,0x00,0x00,0x00,0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00};//鬧鈴符號voidwcmd(ucharcmd){ lcden=0; lcdrs=0; PORT=cmd; delay(5); lcden=1; delay(5); lcden=0;}voidwdata(uchardat){ lcden=0; lcdrs=1; PORT=dat; delay(5); lcden=1; delay(5); lcden=0;}voidgoxy(ucharx,uchary){ if(x==1) wcmd(0x80+y); else wcmd(0x80+0x40+y);}voiddisp_str(uchar*str){ while(*str) { wdata(*str); str++; }}voiddisp_bmp(ucharx,uchary,uchardat){ goxy(x,y); wdata(dat);}voidlcd_init(){ uchari; wcmd(0x38);//顯示模式設(shè)置:16*2,5*7,8位數(shù)據(jù)接口 wcmd(0x0c);//開顯示,不顯光標(biāo),光標(biāo)不閃爍 wcmd(0x06);//地址自動加1 wcmd(0x01);//清屏 wcmd(0x40);//寫CGRAMfor(i=0;i<16;i++) wdata(bmp[i]); goxy(2,0); disp_str(table); }voidtimer0_init(){ TMOD=0X01; TH0=0x4c; TL0=0; EA=1; ET0=1; TR0=1;}voidtimer0()interrupt1{ TH0=0x4c; TL0=0; tcnt++; if(tcnt==20) { tcnt=0; inc_second(); disp_sfm(2,4,hour); disp_sfm(2,7,minute); disp_sfm(2,10,second); wdata(''); wdata(''); wdata(''); wdata(''); wdata(''); }}inc_minute_nop(){ minute++; if(minute==60) minute=0;}voidinc_second(){ second++; if(second==60) { second=0; inc_minute(); } if(second%2)//隔一秒":"閃一次 {goxy(2,9);wdata('');} else {goxy(2,9);wdata(':');}}voidinc_minute(){ minute++; if(minute==60) { minute=0; inc_hour(); }}voidinc_hour(){ hour++; if(hour==24) hour=0; }voidinc_nlminute(){ nlminute++; if(nlminute==60) nlminute=0;}voidinc_nlhour(){ nlhour++; if(nlhour==24) nlhour=0;}voiddisp_sfm(ucharx,uchary,uchardat){ ucharshi,ge; shi=dat/10+'0'; ge=dat%10+'0';//加'0'表示算出的數(shù)要加上0的ascII碼才能顯示出想要的數(shù) goxy(x,y); wdata(shi); wdata(ge);}voidled_apm(){ if(hour<12) { lpm=1; lam=0; goxy(2,0); wdata('A'); wdata('M'); } else { lam=1; lpm=0; goxy(2,0); wdata('P'); wdata('M'); }}voidtzsjfun(){ if(nlflag==0)//若鬧鈴沒按下,則可設(shè)置時間,否則無效 { if(setsj==0) { delay(2); while(!setsj); delay(2); if(setsj==1)//表示按下了設(shè)置時間,且已經(jīng)消抖 { sj++; if(sj==1) TR0=0;//按下1次停止計時 if(sj==2) //第2次按下表示設(shè)置完畢 { TR0=1; sj=0; } } } if(sj)//要調(diào)整時間 { goxy(2,9); wdata(':'); if(ts==0) { delay(2); while(!ts); delay(2); if(ts==1) tzflag=1; } if(tf==0) { delay(2); while(!tf); delay(2); if(tf==1) tzflag=2; } } if(tzflag) { if(tzflag==1) { tzflag=0; inc_hour(); disp_sfm(2,4,hour); } if(tzflag==2) { tzflag=0; inc_minute_nop(); disp_sfm(2,7,minute); } } } }voidnl0(){ nlhour=0; nlminute=0; disp_sfm(1,4,nlhour); wdata(':'); disp_sfm(1,7,nlminute); }voidnldisappear(){ uchari; goxy(1,0); for(i=0;i<9;i++) wdata(''); delay(2);}voidtznlfun(){ if(sj==0)//若設(shè)置時間沒按下,則可設(shè)置鬧鈴,否則無效 { if(wdnum==0) { if(setnl==0) { while(!setnl); delay(5); if(setnl==1) { nlflag++; if(nlflag==1) nl0(); if(nlflag==2)//按下1次鬧鈴鍵,設(shè)置鬧鈴;按下2次,設(shè)置完畢; { nlflag=0; nldisappear(); } } } if(nlflag)//要設(shè)置鬧鈴 { if(nlhour<12) { goxy(1,0); wdata('A'); wdata('M'); } else { goxy(1,0); wdata('P'); wdata('M'); } if(ts==0) { while(!ts); delay(5); if(ts==1) tznl=1; } if(tf==0) { while(!tf); delay(5); if(tf==1) tznl=2; } } if(tznl) { if(tznl==1) { tznl=0; inc_nlhour(); disp_sfm(1,4,nlhour); } if(tznl==2) { tznl=0; inc_nlminute(); disp_sfm(1,7,nlminute); } } } }}voidkgnlfun(){ if(knl==0) { while(!knl); delay(5); if(knl==1) { nldk=1; disp_bmp(1,15,0x00); } } if(gnl==0) { while(!gnl); delay(5); if(gnl==1) { nldk=2; goxy(1,15); wdata(''); } }}voidnljx(){ if(nldk==1) { goxy(1,15); wdata(0x00); if((nlhour==hour)&&(nlminute==minute)) { lnl=0; beep(); } else { lnl=1; fm=1; } } else { goxy(1,15); wdata(''); nldk=0; lnl=1; fm=1; } }voidkeyscan(){ tzsjfun(); tznlfun(); kgnlfun(); nljx();voiddelay2(){ uintx; for(x=65;x>0;x--); }voidbeep(){ uintx; for(x=20;x>0;x--) { fm=0; delay2(); fm=1; delay2(); }}voidwbzd_init(){ EA=1; EX0=1; ET0=1;//下降沿觸發(fā)}voidwbzd0()interrupt0{ hwnum++; if(hwnum==1) nldk=0; else { hwnum=0; nldk=1; }}voidmain(){ hour=23;minute=59;second=50; timer0_init(); lcd_init(); wbzd_init(); while(1) { led_apm(); keyscan(); }} 個人體會通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢

溫馨提示

  • 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

提交評論