![單片機電子鐘實習報告_第1頁](http://file4.renrendoc.com/view/de91fc72f73ab1772f55860e60ced0a7/de91fc72f73ab1772f55860e60ced0a71.gif)
![單片機電子鐘實習報告_第2頁](http://file4.renrendoc.com/view/de91fc72f73ab1772f55860e60ced0a7/de91fc72f73ab1772f55860e60ced0a72.gif)
![單片機電子鐘實習報告_第3頁](http://file4.renrendoc.com/view/de91fc72f73ab1772f55860e60ced0a7/de91fc72f73ab1772f55860e60ced0a73.gif)
![單片機電子鐘實習報告_第4頁](http://file4.renrendoc.com/view/de91fc72f73ab1772f55860e60ced0a7/de91fc72f73ab1772f55860e60ced0a74.gif)
![單片機電子鐘實習報告_第5頁](http://file4.renrendoc.com/view/de91fc72f73ab1772f55860e60ced0a7/de91fc72f73ab1772f55860e60ced0a75.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
學院:xxx班級:自動化xx班姓名:xxx學號:xxx日期:2013-3-15單片機LCD1602電子鐘設計實習報告一、引言1.1設計的背景及目的隨著計算機科學與技術的飛速發(fā)展,計算機的應用已經滲透到國民經濟與人們生活的各個角落,正在日益改變著傳統(tǒng)的人類工作方式和生活方式,而單片機技術又作為計算機技術中的一個獨立分支,有著性價比高,集成度高,體積小,可靠性高,控制功能強大,低功耗,低電壓,便于生產,便于攜帶等特點,所以得到越來越廣泛的應用,特別是在工業(yè)控制和儀表儀器智能化中起極其重要的作用.本文利用單片機強大的控制功能和內部定時器重要部件,設計了一款自行對時間進行調整以及把時、分、秒用LCD顯示的電子鐘。電子鐘從原理上講是一種典型的數(shù)字電路,其中包括了組合邏輯電路和時序電路。因此,我們此次設計與制做數(shù)字鐘就是為了了解數(shù)字鐘的原理,從而學會制作數(shù)字鐘.而且通過數(shù)字鐘的制作進一步的了解各種在制作中用到的中小規(guī)模集成電路的作用及實用方法.且由于數(shù)字鐘包括組合邏輯電路和時敘電路.通過它可以進一步學習與掌握各種組合邏輯電路與時序電路的原理與使用方法1.2設計的內容要求及研究方法①時間以24小時為一個周期;②顯示時、分、秒;③具有校時功能,可以分別對時及分進行單獨校時,使其校正到標準時間;二、設計的原理圖、程序及調試1、基本原理本設計基于單片機技術原理,以單片機芯片AT89S51作為核心控制器,通過硬件電路的制作以及軟件程序的編制,設計制作出一個多功能數(shù)字時鐘系統(tǒng)。單片機擴展的LCD顯示器用來顯示秒、分、時計數(shù)單元中的值。整個設計包括兩大部分:硬件部分和軟件部分,以單片機為核心,配以一定的外圍電路和軟件。硬件是整個系統(tǒng)的基礎,軟件部分則要合理、充分地支持和使用系統(tǒng)的硬件,從而完成系統(tǒng)所要完成的任務。該時鐘系統(tǒng)主要由時鐘模塊、液晶顯示模塊、鍵盤控制模塊以及信號提示模塊組成。能夠準確顯示時間(顯示格式為時時:分分:秒秒,24小時制),可隨時進行時間調整。設計以硬件軟件化為指導思想,充分發(fā)揮單片機功能,大部分功能通過軟件編程來實現(xiàn),電路簡單明了,系統(tǒng)穩(wěn)定性高。單片機在這種情況下誕生了基于單片機電子時鐘。2、硬件電路原理圖3、原理仿真圖硬件模塊功能介紹4.1AT89S51單片機:AT89S51提供以下標準功能:8k字節(jié)Flash閃速存儲器,256字節(jié)內部RAM,32個I/O口線,3個16位定時/計數(shù)器,一個6向量兩級中斷結構,一個全雙工串行通信口,片內振蕩器及時鐘電路[2]。同時,AT89S51可降至0HZ的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止CPU的工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。4.2液晶顯示器LCD:液晶顯示器簡稱是利用液晶經過處理后能夠改變光線傳輸方向的特性,達到顯示字符或者圖形的目的。其特點是體積小、重量輕、功耗極低、顯示內容豐富等特點,在單片機應用系統(tǒng)中有著日益廣泛的應用。1602芯片:主要用于顯示時間和定時時間。1602芯片由點陣字符液晶顯示器件和專用的行、列驅動器、控制及必要的鏈接件、結構件組裝而成,可以顯示數(shù)字和西文字符,但不能顯示圖形,已經可以滿足本次設計的需要。1602型LCD可以顯示2行16個字符,有8位數(shù)據(jù)總線D0~D7和RS,R/W,EN三個控制端口,工作電壓為5V,并且具有字符對比度調節(jié)和背光功能。4.3鍵盤控制模塊:按鍵中有一個復位鍵及定時鍵、調時鍵加一鍵和減一鍵,一個按鍵接在復位電路上,另外三個按鍵接在P3.0——P3.2口,低電平表示有按鈕按下;按鈕沒有接防抖電路,需要設計軟件防抖。1、定時。按下定時鍵后可以開始定時,過程如下:定時---〉小時加/減---〉按定時---分鐘加/減---按定時。2、調時。按下調時鍵后可以調時,過程如下:調時---年加/減---調時--月加/減---調時---日加/減---調時---時加/減---調時---分加/減---調時---秒加/減---調時。4.4直流穩(wěn)壓電源部分:直流穩(wěn)壓電源是給電子設備提供穩(wěn)定直流電壓的電子電路。這次電路需要的是+5V直流電源。5.軟件設計5.1代碼附錄#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint#defineWUFUP2sbitlcdrs=P1^0;sbitlcdrw=P1^1;sbitlcden=P1^2;sbitkey1=P3^0;sbitkey2=P3^1;sbitkey3=P3^2;sbitkey4=P3^3;sbitbell=P3^7;ucharnum,count,keynum;//定義幾個變量ucharweek,month,day,nian;//定義幾個變量ucharshi,fen,miao;//定義幾個變量voiddelay(uintx){ uinti,j; for(i=0;i<x;i++) for(j=0;j<125;j++);}ucharcodetable[]="2013-01-18MON"; //定義數(shù)組表示年月日ucharcodetable1[]="12-30-16";//定義數(shù)組表示時分秒//********************寫命令********************************//=========================================================voidwrite_com(ucharcom){ lcdrs=0;//表示寫入的是指令,即對指令進行操作 lcdrw=0; lcden=0;//使能信號為0 delay(2); WUFU=com;//向端口傳送命令 lcden=1; delay(2); lcden=0;}//*********************寫數(shù)據(jù)**********************************//=============================================================voidwrite_date(uchardate)//寫數(shù)據(jù)初始化{lcdrw=0; lcdrs=1;//表示寫入的是數(shù)據(jù),即對數(shù)據(jù)進行操作 delay(2); lcden=0; WUFU=date; lcden=1; delay(2); lcden=0;}//********************函數(shù)初始化*****************************//-----------------------------------------------------------voidinit()//寫入時間函數(shù){ shi=12; fen=30; miao=16; write_com(0x38);//這句意思是用1602,5*7,的點整來顯示數(shù)據(jù)能顯示16個字節(jié) write_com(0x0c);//光標不閃爍 write_com(0x06);//輸入數(shù)據(jù)光標制動加1,數(shù)據(jù)地址制動加1 write_com(0x01);//清屏指令 write_com(0x80);//1602液晶第一行 for(num=0;num<16;num++)//通過for循環(huán)調用數(shù)組里面的元素 { write_date(table[num]);//寫入數(shù)據(jù) delay(5);//延時5秒 } write_com(0xc0);//1602液晶第二行 for(num=0;num<14;num++) { write_date(table1[num]); delay(5); } TMOD=0x01;//T0工作模式1 TH0=(65532-50000)/256;//賦初值高8位想定時器中寫入初始值為50毫秒 TL0=(65532-50000)%256;//賦初值低8位 EA=1;//cpu開中斷 ET0=1;//打開定時器 TR0=1;//啟動定時器 }voidwrite_sfm(ucharadd,uchardate){ ucharshi,ge; shi=date/10;//把時間的十位分離出來 ge=date%10;//把時間的各位分離出來 write_com(0xc0+add);//顯示這個時間的地址,這具體是顯示十位的地址,但因為顯示了十位地址制動加加所以不用現(xiàn)出顯示個位的地址 write_date(0x30+shi);//在1602中要顯示1它的地址是0x31,以此類推顯示數(shù)字9是為0x39,所以前面要加上0x30write_date(0x30+ge);//與上同理}voidwrite_nyr(ucharadd,uchardate){ ucharshi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_date(0x30+shi); write_date(0x30+ge);}voidwrite_week(ucharwe){ write_com(0x80+12); switch(we) { case1: write_date('M'); delay(5); write_date('o'); delay(5); write_date('N'); break; case2: write_date('T'); delay(5); write_date('U'); delay(5); write_date('E'); break; case3: write_date('W'); delay(5); write_date('E'); delay(5); write_date('D'); break; case4: write_date('T'); delay(5); write_date('H'); delay(5); write_date('U'); break; case5: write_date('F'); delay(5); write_date('R'); delay(5); write_date('I'); break; case6: write_date('S'); delay(5); write_date('A'); delay(5); write_date('T'); break; case7: write_date('S'); delay(5); write_date('U'); delay(5); write_date('N'); break; }}voidtimer0()interrupt1{ TH0=(65532-50000)/256; TL0=(65532-50000)%256; count++; if(count==20) { count=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; } write_sfm(3,shi);//刷新在屏幕上顯示變化的小時數(shù)值 } write_sfm(6,fen);// 刷新在屏幕上顯示變化的分鐘數(shù)值 } write_sfm(9,miao);// 刷新在屏幕上顯示變化的秒的數(shù)值 } }voidkeyscan(){ if(key1==0) { delay(5); if(key1==0) { keynum++; while(!key1); if(keynum==1) { TR0=0;//關定時器 write_com(0xc0+9);//光標定位在秒的位置 write_com(0x0f); //光標開始閃爍 } if(keynum==2) { write_com(0xc0+6); } if(keynum==3) { write_com(0xc0+3);//光標定位在時的位置上 } if(keynum==4) { //keynum=0; //write_com(0x0c);//取消光標閃爍 //TR0=1; write_com(0x80+12); } if(keynum==5) { write_com(0x80+9); } if(keynum==6) { write_com(0x80+6); } if(keynum==7) { write_com(0x80+3); } if(keynum==8) { keynum=0; write_com(0x0c);//光標不閃爍 TR0=1;//啟動定時器時間又開始走了 } } } if(keynum!=0) //如果k1沒有按到第四次 { if(key2==0)//如果k2按鍵按下 { delay(5); if(key2!=0)//松手檢測 { while(!key2); if(keynum==1) { miao++;//秒表進行++ if(miao==60)//當秒加到60秒后 miao=0;//把秒值為0 write_sfm(9,miao);//把調好的秒值寫打屏幕上 write_com(0xc0+9);//把光標還到原來的位置 } if(keynum==2) { fen++; if(fen==60) fen=0; write_sfm(6,fen);//把調好的分值寫打屏幕上 write_com(0xc0+6);//把光標還到原來的位置 } if(keynum==3) { shi++; if(shi==24) shi=0; write_sfm(3,shi);//把調好的時值寫打屏幕上 write_com(0xc0+3);//把光標還到原來的位置 } if(keynum==4) { week++; if(week==8) week=1; write_week(week); write_com(0x80+12); } if(keynum==5) { day++; if(day==32) day=1; write_nyr(9,day); write_com(0x80+9); } if(keynum==6) { month++; if(month==13) month=1; write_nyr(6,month); write_com(0x80+6); } if(keynum==7) { nian++; if(nian==100) nian=0; write_nyr(3,nian); write_com(0x80+3); } } } if(key3==0) { delay(5); if(key3==0) { while(!key3); if(keynum==1) { miao--; if(miao==-1) miao=59; write_sfm(9,miao); write_com(0xc0+9); } if(keynum==2) { fen--; if(fen==-1) fen=59; write_sfm(6,fen); write_com(0xc0+6); } if(keynum==3) { shi--; if(shi==-1) shi=24; write_sfm(3,shi); write_com(0xc0+3); } if(keynum==4) { week--; if(week==-1) week=7; write_week(week); write_com(0x80+12); } if(keynum==5) //與函數(shù)遞增函數(shù)一樣只是按鍵不同還有就是功能相反了 { day--; if(day==0) day=31; write_nyr(9,day); write_com(0x80+9); } if(keynum==6) //與函數(shù)遞增函數(shù)一樣只是按鍵不同還有就是功能相反了 { month--; if(month==0) month=12; write_nyr(6,month); write_com(0x80+6); } if(keynum==7) //與函數(shù)遞增函數(shù)一樣只是按鍵不同還有就是功能相反了 { nian--; if(nian==0) nian=100; write_nyr(3,nian); write_com(0x80+3); } } } } }//=============================================//函數(shù)主程序//=============================================voidmain(){ init(); while(1) { keyscan(); }}5.2調試過程調試的主要過程包括硬件調試和軟件調試,其中軟件調試,也即程序編譯與仿真過程處于本次設計調試過程的核心環(huán)節(jié)。由于本設計已經制作出液晶顯示電子鐘,所以硬件調試也很重要。兩種調試過程并非孤立或者分開的,而是緊密相關。在此我們用到的開發(fā)工具是仿真器。5.3硬件調試完成仿真器軟件仿真后,就要連接上硬件也即液晶顯示電子鐘成品板進行硬件調試。將仿真器通過串行電纜連接計算機上,將仿真頭接到仿真器,檢查接線是否有誤,確信沒有接錯后,接上電源,打開仿真器的電源開關。再進行仿真器和通信設置。仿真器和仿真頭設置正確,并且硬件連接沒有錯誤,出現(xiàn)“硬件仿真”的對話框,并顯示仿真器、仿真頭的型號及仿真器的序列號。表明仿真器初始化正確。硬件調試很重要也很麻煩,由于本次設計硬件非PCB制板,而是手工焊板,焊點質量、布線是否合理等對系統(tǒng)的影響比較大,這無疑增加硬件調試的難度。由于此前沒有很多的練習,本次設計我所制作的液晶顯示電子鐘在質量工藝上很難達到滿意程度,不過在調試中還算穩(wěn)定,基本功能都能較穩(wěn)定地實現(xiàn)。5.4軟件調試系統(tǒng)仿真分析電路原理圖在ISIS里設計完成,并將系統(tǒng)軟件編譯成.Hex文件,再進行電子時鐘的系統(tǒng)虛擬仿真。(1)在ISIS的原理圖中,右鍵單擊AT89S51將其選中,然后單擊左鍵打開AT89C51的EditComponent對話框,如下圖所示。(2)選擇相應的.Hex文件,再在ProteusI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鐵嶺貨運上崗證考試題
- 2025年唐山c1貨運上崗證模擬考試
- 2024-2025年高中政治課時作業(yè)10新時代的勞動者含解析新人教版必修1
- 2024-2025學年高中生物課時分層作業(yè)12基因指導蛋白質的合成含解析新人教版必修2
- 2024-2025版高中生物2.1.1-2孟德爾遺傳試驗的科學方法分離規(guī)律試驗練習含解析中圖版必修2
- 2024-2025學年高中化學課時提升作業(yè)十五鹽類的水解含解析新人教版選修4
- 2024-2025學年八年級物理全冊4.1光的反射練習含解析新版滬科版
- 2024-2025學年高中語文7李將軍列傳學案含解析蘇教版選修史記蚜
- 2024-2025學年高中生物第2章細胞的化學組成第2節(jié)組成細胞的無機物練習含解析北師大版必修1
- 我想你的檢討書
- 山東省臨沂市蘭山區(qū)2024-2025學年七年級上學期期末考試生物試卷(含答案)
- 湖北省武漢市2024-2025學年度高三元月調考英語試題(含答案無聽力音頻有聽力原文)
- 一年級下冊勞動《變色魚》課件
- 商務星球版地理八年級下冊全冊教案
- 天津市河西區(qū)2024-2025學年四年級(上)期末語文試卷(含答案)
- 2025年空白離婚協(xié)議書
- 校長在行政會上總結講話結合新課標精神給學校管理提出3點建議
- T-CSUS 69-2024 智慧水務技術標準
- 2025年護理質量與安全管理工作計劃
- 湖南大學 嵌入式開發(fā)與應用(張自紅)教案
- 地下商業(yè)街的規(guī)劃設計
評論
0/150
提交評論