51單片機電子時鐘課程設計報告(經典實用)_第1頁
51單片機電子時鐘課程設計報告(經典實用)_第2頁
51單片機電子時鐘課程設計報告(經典實用)_第3頁
51單片機電子時鐘課程設計報告(經典實用)_第4頁
51單片機電子時鐘課程設計報告(經典實用)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目 錄第一部分 設計任務和要求1.1 單片機課程設計內容21.2 單片機課程設計要求21.3 系統(tǒng)運行流程2第二部分 設計方案2.1 總體設計方案說明22.2 系統(tǒng)方框圖32.3 系統(tǒng)流程圖3第三部分 主要器材及基本簡介3.1 主要器材43.2 主要器材簡介4第四部分 系統(tǒng)硬件設計4.1 最小系統(tǒng)64.2 LCD顯示電路64.3 鍵盤輸入電路74.4 蜂鳴器和LED燈電路7第五部分 仿真電路圖與仿真結果8第六部分課程設計總結8第七部分 參考文獻9附錄A 實物圖附錄B 系統(tǒng)源程序第一部分 設計任務和要求1.1 單片機課程設計內容利用STC89C51單片機和LCD1602電子顯示屏實現(xiàn)電子時鐘,可

2、由按鍵進行調時和12/24小時切換。1.2 單片機課程設計要求1能實現(xiàn)年、月、日、星期、時、分、秒的顯示;2能實現(xiàn)調時功能;3能實現(xiàn)12/24小時制切換;4能實現(xiàn)8:0022:00整點報時功能。1.3 系統(tǒng)運行流程程序首先進行初始化,在主程序的循環(huán)程序中首先調用數(shù)據(jù)處理程序,然后調用顯示程序,在判斷是否有按鍵按下。若有按鍵按下則轉到相應的功能程序執(zhí)行,沒有按鍵按下則調用時間程序。若沒到則循環(huán)執(zhí)行。計時中斷服務程序完成秒的計時及向分鐘、小時的進位和星期、年、月、日的進位。調時閃爍中斷服務程序用于被調單元的閃爍顯示。調時程序用于調整分鐘、小時、星期、日、月、年,主要由主函數(shù)組成通過對相關子程序的調

3、用,如圖所示。實現(xiàn)了對時間的設置和修改、LCD顯示數(shù)值等主要功能。相關的調整是靠對功能鍵的判斷來實現(xiàn)的。第二部分 設計方案2.1 總體設計方案說明1程序設計及調試根據(jù)單片機課程設計內容和要求,完成Protues仿真電路的設計和用Keil軟件編寫程序,并進行仿真模擬調試。2硬件焊接及調試根據(jù)仿真電路圖完成電路板的焊接,并進行軟、硬件的調試,只到達到預期目的。3后期處理對設計過程進行總結,完成設計報告。2.2 單片機系統(tǒng)方框圖功能鍵增加鍵減小鍵12/24小時制切換鍵STC89C51單片機LCD顯示屏電源最小系統(tǒng)2.2 單片機系統(tǒng)流程圖開始初始化時鐘子程序結束按鍵掃描子程序 主流程圖 鍵盤掃描流程圖

4、時鐘流程圖第三部分 主要器件及簡介3.1 主要器件1. STC89C51單片機;2LCD1602液晶顯示屏;3.2 主要器件簡介1STC89C51單片機簡介STC89C51是采用8051核的ISP(In System Programming)在系統(tǒng)可編程芯片,最高工作時鐘頻率為80MHz,片內含8K Bytes的可反復擦寫1000次的Flash只讀程序存儲器,器件兼容標準MCS-51指令系統(tǒng)及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元,具有在系統(tǒng)可編程(ISP)特性,配合PC端的控制程序即可將用戶的程序代碼下載進單片機內部,省去了購買通用編程器,而且速度更快

5、。2LCD1602液晶顯示屏簡介LCD1602可以顯示2行16個字符,有8位數(shù)據(jù)總線D0D7,和RS、R/W、EN三個控制端口,工作電壓為5V,并且?guī)в凶址麑Ρ榷日{節(jié)和背光。LCD1602引腳說明如下表所示: LCD液晶顯示器各引腳功能及結構編號符號引腳說明編號符號引腳說明1VSS電源地9D2雙向數(shù)據(jù)口2VDD電源正極10D3雙向數(shù)據(jù)口3VL對比度調節(jié)11D4雙向數(shù)據(jù)口4RS數(shù)據(jù)/命令選擇12D5雙向數(shù)據(jù)口5R/W讀寫/選擇13D6雙向數(shù)據(jù)口6E模塊使能端14D7雙向數(shù)據(jù)口7D0雙向數(shù)據(jù)口15BLK背光源地8D1雙向數(shù)據(jù)口16BLA背光源正極VDD:電源正極,4.5V5.5V,通常使用5V電壓

6、;VL:LCD對比度調節(jié)端,電壓調節(jié)范圍為05V。接正極時對比度最弱,接地電源時對比度最高,但對比度過高會產生“鬼影”,因此通常使用一個10K的電位器來調整對比度,或者直接串接一個電阻到地;RS:MCU寫入數(shù)據(jù)或者指令選擇端。MCU要寫入指令時,使RS為低電平;MCU要寫入數(shù)據(jù)時,使RS為高電平;R/W:讀寫控制端。R/W為高電平時,讀取數(shù)據(jù);R/W為低電平時,寫入數(shù)據(jù);EN:LCD模塊使能信號控制端。寫數(shù)據(jù)時,需要下降沿觸發(fā)模塊。D0D7:8為數(shù)據(jù)總線,三態(tài)雙向。如果MCU的I/O口資源緊張的話,該模塊也可以只使用4位數(shù)據(jù)線D4D7接口傳送數(shù)據(jù)。A:LED背光正極。需要背光時, A串接一個限

7、流電阻接VDD, K接地。K:LED背光地端。第四部分 系統(tǒng)硬件設計4.1 最小系統(tǒng)復位時單片機的初始化操作,只要給RST引腳加上兩個機器周期以上的高電平信號,就可以使STC89C51單片機復位。本次采用的是12M晶振,按鈕復位電路。4.2 LCD顯示電路LCD顯示屏的D0到D7與單片機P0口相連,LCD顯示屏EN口與單片機P3.4口相連,RS與P3.5相連。通過滑動變阻器改變LCD顯示屏的顯示對比度。4.3 鍵盤輸入電路本次設計采用獨立鍵盤,鍵盤按下時,相應的I/O口電平由高變低,一次檢測按鍵是否被按下。4個獨立按鍵與單片機P3.0P3.3口相連。4.3 蜂鳴器和LED燈電路蜂鳴器的作用為準

8、點報時產生報警聲,LED在秒鐘為偶數(shù)時或者功能鍵被按下時亮。蜂鳴器與單片機P2.2口相連,LED燈與單片機P2.3口相連。第五部分 仿真電路圖與仿真結果用Keil和Protues進行仿真調試,仿真結果完全達到預期目的。第六部分 課程設計總結本次單片機課程設計,在我和我的搭檔陳雅琴默契配合,以及鄒老師的指導和同學的幫助下順利完成了。在設計過程中,從仿真電路的設計,源程序的書寫和修改以及實物電路的焊接中都遇到了不少問題,但在我們的共同努力下解決了,并且從中學到了不少知識。我們在設計過程中還不斷提出自己的疑點以及新的想法,聯(lián)系實際應用,將課本上學習的東西運用到實際中,這些都令我們受益匪淺。課程設計需

9、要很大的耐心,尤其是遇到困難的時候,這也是對我們的考驗。在設計過程中,我們遇到問題不是感到急躁,而是耐心地尋找解決的辦法,與老師、同學進行交流討論,尋求最佳的解決辦法??傊?,在此次的課程設計中,我們不僅動手、動腦,也學會了不少東西,同時,謝謝對我們的設計帶來建議、意見和幫助的老師和同學們!謝謝!第七部分 參考文獻單片機原理及應用(第二版) 高等教育出版社新概念51單片機C語言教程 電子工業(yè)出版社附錄A 實物圖附錄B 系統(tǒng)源程序#include#define uchar unsigned char #define uint unsigned intsbit lcdrs=P35; /定義1602液

10、晶RS端sbit lcden=P34;/定義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 - - ;/定義初始上電時液晶默認顯示狀態(tài)void delay(uint z) /延時函數(shù)uint

11、 x,y;for(x=z;x0;x-)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;l

12、cden=0;P0=date;delay(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

13、;write_com(0x80+add1);/設置顯示位置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);/設置顯示位置write_date(0x30+shi);/送去液晶顯示十位write_date(0x30+ge); /送去液晶顯示個位void write_week(char week)

14、 /寫液晶星期顯示函數(shù)write_com(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_dat

15、e(H);delay(5);write_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) mont

16、h=1; year+; if(year=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)

17、;/設置顯示初始坐標for(num=0;num7&shi23)&(fen=0)&(miao=0) di(); void timer0() interrupt 1/定時器0中斷服務程序TH0=(65536-50000)/256;/再次裝定時器初值TL0=(65536-50000)%256;count+;/中斷次數(shù)累加if(count=20) /20次50毫秒為1秒count=0;miao+;if(miao=60)/秒加到60則進位分鐘miao=0;/同時秒數(shù)清零fen+;if(fen=60)/分鐘加到60則進位小時fen=0;/同時分鐘數(shù)清零shi+;if(shi=24)/小時加到24則小時清零

18、shi=0;week+; if(week=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);/日

溫馨提示

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

評論

0/150

提交評論