




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 單片機技術(shù)課程結(jié)課設(shè)計報告 題目:電子時鐘專 業(yè) 班 級 學(xué) 號 姓 名 指導(dǎo)教師 張 琦 第一部分 設(shè)計任務(wù)和要求1.1 設(shè)計內(nèi)容利用stc89c51單片機和lcd1602電子顯示屏實現(xiàn)電子時鐘,可由按鍵進(jìn)行調(diào)時和12/24小時切換。1.2 設(shè)計要求1能實現(xiàn)年、月、日、星期、時、分、秒的顯示;2能實現(xiàn)調(diào)時功能;3能實現(xiàn)12/24小時制切換;4能實現(xiàn)8:0022:00整點報時功能。1.3 系統(tǒng)運行流程程序首先進(jìn)行初始化,在主程序的循環(huán)程序中首先調(diào)用數(shù)據(jù)處理程序,然后調(diào)用顯示程序,在判斷是否有按鍵按下。若有按鍵按下則轉(zhuǎn)到相應(yīng)的功能程序執(zhí)行,沒有按鍵按下則調(diào)用時間程序。若沒到則循環(huán)執(zhí)行。計時中斷
2、服務(wù)程序完成秒的計時及向分鐘、小時的進(jìn)位和星期、年、月、日的進(jìn)位。調(diào)時閃爍中斷服務(wù)程序用于被調(diào)單元的閃爍顯示。調(diào)時程序用于調(diào)整分鐘、小時、星期、日、月、年,主要由主函數(shù)組成通過對相關(guān)子程序的調(diào)用,如圖所示。實現(xiàn)了對時間的設(shè)置和修改、lcd顯示數(shù)值等主要功能。相關(guān)的調(diào)整是靠對功能鍵的判斷來實現(xiàn)的。第二部分 設(shè)計方案2.1 總體設(shè)計方案說明1程序設(shè)計及調(diào)試根據(jù)單片機課程設(shè)計內(nèi)容和要求,完成protues仿真電路的設(shè)計和用keil軟件編寫程序,并進(jìn)行仿真模擬調(diào)試。2硬件焊接及調(diào)試根據(jù)仿真電路圖完成電路板的焊接,并進(jìn)行軟、硬件的調(diào)試,只到達(dá)到預(yù)期目的。3后期處理對設(shè)計過程進(jìn)行總結(jié),完成設(shè)計報告。2.2
3、 單片機系統(tǒng)方框圖功能鍵增加鍵減小鍵12/24小時制切換鍵stc89c51單片機lcd顯示屏電源最小系統(tǒng)2.2 單片機系統(tǒng)流程圖開始初始化時鐘子程序結(jié)束按鍵掃描子程序 主流程圖 鍵盤掃描流程圖時鐘流程圖第三部分 系統(tǒng)硬件設(shè)計3.1 最小系統(tǒng)復(fù)位時單片機的初始化操作,只要給rst引腳加上兩個機器周期以上的高電平信號,就可以使stc89c51單片機復(fù)位。本次采用的是12m晶振,按鈕復(fù)位電路。3.2 lcd顯示電路lcd顯示屏的d0到d7與單片機p0口相連,lcd顯示屏en口與單片機p3.4口相連,rs與p3.5相連。通過滑動變阻器改變lcd顯示屏的顯示對比度。3.3 鍵盤輸入電路本次設(shè)計采用獨立鍵
4、盤,鍵盤按下時,相應(yīng)的i/o口電平由高變低,一次檢測按鍵是否被按下。4個獨立按鍵與單片機p3.0p3.3口相連。3.4 蜂鳴器和led燈電路蜂鳴器的作用為準(zhǔn)點報時產(chǎn)生報警聲,led在秒鐘為偶數(shù)時或者功能鍵被按下時亮。蜂鳴器與單片機p2.2口相連,led燈與單片機p2.3口相連。第四部分 仿真電路圖與仿真結(jié)果用keil和protues進(jìn)行仿真調(diào)試,仿真結(jié)果完全達(dá)到預(yù)期目的。第五部分 系統(tǒng)程序#include#define uchar unsigned char #define uint unsigned intsbit lcdrs=p35; /定義1602液晶rs端sbit lcden=p34;
5、/定義1602液晶lcden端sbit s1=p30; /定義按鍵-功能鍵sbit s2=p31;/定義按鍵-增加鍵sbit s3=p32;/定義按鍵-減小鍵sbit s4=p33;/定義按鍵-鬧鐘鍵sbit beep=p22; /定義蜂鳴器端sbit led=p23; /定義led燈端uchar count,s1num,s4num;char year,month,day,week,miao,shi,fen,pshi;uchar code table= 20 - - ;/定義初始上電時液晶默認(rèn)顯示狀態(tài)void delay(uint z) /延時函數(shù)uint x,y;for(x=z;x0;x-)
6、for(y=110;y0;y-);void zhuanhuan()if(shi=0) pshi=12;if(shi=1) pshi=shi; if(shi12) pshi=shi-12; void di()/蜂鳴器發(fā)聲函數(shù)beep=0;delay(300);beep=1;delay(300);void write_com(uchar com)/液晶寫命令函數(shù)lcdrs=0;lcden=0;p0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)/液晶寫數(shù)據(jù)函數(shù)lcdrs=1;lcden=0;p0=date;dela
7、y(5);lcden=1;delay(5);lcden=0;void _shi()/寫am、pm函數(shù) if(shi=12) write_com(0x80+0x40+1);/寫出pm write_date(p); write_date(m); else write_com(0x80+0x40+1);/寫出am write_date(a); write_date(m); void write_ymd(uchar add1,uchar date1)/寫年月日函數(shù)uchar shi,ge;shi=date1/10;/分解一個2位數(shù)的十位和個位ge=date1%10;write_com(0x80+add
8、1);/設(shè)置顯示位置write_date(0x30+shi);/送去液晶顯示十位write_date(0x30+ge); /送去液晶顯示個位void write_sfm(uchar add,uchar date)/寫時分秒函數(shù)uchar shi,ge;shi=date/10;/分解一個2位數(shù)的十位和個位ge=date%10;write_com(0x80+0x40+add);/設(shè)置顯示位置write_date(0x30+shi);/送去液晶顯示十位write_date(0x30+ge); /送去液晶顯示個位void write_week(char week) /寫液晶星期顯示函數(shù)write_co
9、m(0x80+12);switch(week)case 1:write_date(m);delay(5);write_date(o);delay(5);write_date(n);break;case 2:write_date(t);delay(5);write_date(u);delay(5);write_date(e);break;case 3:write_date(w);delay(5);write_date(e);delay(5);write_date(d);break;case 4:write_date(t);delay(5);write_date(h);delay(5);write
10、_date(u);break;case 5:write_date(f);delay(5);write_date(r);delay(5);write_date(i);break;case 6:write_date(s);delay(5);write_date(a);delay(5);write_date(t);break;case 7:write_date(s);delay(5);write_date(u);delay(5);write_date(n);break;void writeym() day=1; month+; if(month=13) month=1; year+; if(year
11、=100) year=0; write_ymd(3,year);/年若變化則重新寫入write_ymd(6,month);/月若變化則重新寫入void init()/初始化函數(shù) uchar num;lcden=0;year=13;/初始化種變量值month=6;day=21;week=5;shi=13; fen=59;miao=58;count=0;s1num=0;s4num=0;write_com(0x38);/初始化1602液晶write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);/設(shè)置顯示初始坐標(biāo)for(num=0
12、;num7&shi23)&(fen=0)&(miao=0) di(); void timer0() interrupt 1/定時器0中斷服務(wù)程序th0=(65536-50000)/256;/再次裝定時器初值tl0=(65536-50000)%256;count+;/中斷次數(shù)累加if(count=20) /20次50毫秒為1秒count=0;miao+;if(miao=60)/秒加到60則進(jìn)位分鐘miao=0;/同時秒數(shù)清零fen+;if(fen=60)/分鐘加到60則進(jìn)位小時fen=0;/同時分鐘數(shù)清零shi+;if(shi=24)/小時加到24則小時清零shi=0;week+; if(wee
13、k=8) week=1; write_week(week);/星期若變化則重新寫入day+; if(year%4=0&month=2)/判斷是否為閏年的2月 if(day=30) writeym(); write_ymd(9,day);/日若變化則重新寫入 if(year%4!=0&month=2)/判斷是否為平年的2月 if(day=29) writeym(); write_ymd(9,day);/日若變化則重新寫入 if(month!=2&month!=4&month!=6&month!=9&month!=11) if(day=32) writeym(); write_ymd(9,day);/日若變化則重新寫入 if(month=4|month=6|month=9|month=11) if(da
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 欠薪投訴活動方案
- 水上公園新年活動方案
- 沂蒙山女神節(jié)活動方案
- 畢業(yè)周年慶活動方案
- 畢業(yè)國風(fēng)活動方案
- 江西軍營聯(lián)誼活動方案
- 水上救援大練兵活動方案
- 正月下單優(yōu)惠活動方案
- 民俗村公關(guān)活動策劃方案
- 氣球開業(yè)活動方案
- 財務(wù)合規(guī)培訓(xùn)課件
- 儀控技術(shù)手冊-自控專業(yè)工程設(shè)計用典型條件表
- 【MOOC】移動通信-河海大學(xué) 中國大學(xué)慕課MOOC答案
- 危險廢物焚燒運營管理培訓(xùn)考核試卷
- 無人機裝調(diào)檢修工理論知識考試題庫及答案
- 充電設(shè)施運營管理制度
- 幼兒園大班數(shù)學(xué)《特別的尺子》微課件
- 照相館管理制度
- IECQ QC 080000:2017 第四版標(biāo)準(zhǔn)(中文版)
- 醫(yī)用耗材管控中的難點及對策研究
- 2024屆杭州市濱江區(qū)小升初考試數(shù)學(xué)試卷含解析
評論
0/150
提交評論