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

下載本文檔

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

文檔簡(jiǎn)介

學(xué)院:xxx班級(jí):自動(dòng)化xx班姓名:xxx學(xué)號(hào):xxx日期:2013-3-15單片機(jī)LCD1602電子鐘設(shè)計(jì)實(shí)習(xí)報(bào)告一、引言1.1設(shè)計(jì)的背景及目的隨著計(jì)算機(jī)科學(xué)與技術(shù)的飛速發(fā)展,計(jì)算機(jī)的應(yīng)用已經(jīng)滲透到國(guó)民經(jīng)濟(jì)與人們生活的各個(gè)角落,正在日益改變著傳統(tǒng)的人類工作方式和生活方式,而單片機(jī)技術(shù)又作為計(jì)算機(jī)技術(shù)中的一個(gè)獨(dú)立分支,有著性價(jià)比高,集成度高,體積小,可靠性高,控制功能強(qiáng)大,低功耗,低電壓,便于生產(chǎn),便于攜帶等特點(diǎn),所以得到越來越廣泛的應(yīng)用,特別是在工業(yè)控制和儀表儀器智能化中起極其重要的作用.本文利用單片機(jī)強(qiáng)大的控制功能和內(nèi)部定時(shí)器重要部件,設(shè)計(jì)了一款自行對(duì)時(shí)間進(jìn)行調(diào)整以及把時(shí)、分、秒用LCD顯示的電子鐘。電子鐘從原理上講是一種典型的數(shù)字電路,其中包括了組合邏輯電路和時(shí)序電路。因此,我們此次設(shè)計(jì)與制做數(shù)字鐘就是為了了解數(shù)字鐘的原理,從而學(xué)會(huì)制作數(shù)字鐘.而且通過數(shù)字鐘的制作進(jìn)一步的了解各種在制作中用到的中小規(guī)模集成電路的作用及實(shí)用方法.且由于數(shù)字鐘包括組合邏輯電路和時(shí)敘電路.通過它可以進(jìn)一步學(xué)習(xí)與掌握各種組合邏輯電路與時(shí)序電路的原理與使用方法1.2設(shè)計(jì)的內(nèi)容要求及研究方法①時(shí)間以24小時(shí)為一個(gè)周期;②顯示時(shí)、分、秒;③具有校時(shí)功能,可以分別對(duì)時(shí)及分進(jìn)行單獨(dú)校時(shí),使其校正到標(biāo)準(zhǔn)時(shí)間;二、設(shè)計(jì)的原理圖、程序及調(diào)試1、基本原理本設(shè)計(jì)基于單片機(jī)技術(shù)原理,以單片機(jī)芯片AT89S51作為核心控制器,通過硬件電路的制作以及軟件程序的編制,設(shè)計(jì)制作出一個(gè)多功能數(shù)字時(shí)鐘系統(tǒng)。單片機(jī)擴(kuò)展的LCD顯示器用來顯示秒、分、時(shí)計(jì)數(shù)單元中的值。整個(gè)設(shè)計(jì)包括兩大部分:硬件部分和軟件部分,以單片機(jī)為核心,配以一定的外圍電路和軟件。硬件是整個(gè)系統(tǒng)的基礎(chǔ),軟件部分則要合理、充分地支持和使用系統(tǒng)的硬件,從而完成系統(tǒng)所要完成的任務(wù)。該時(shí)鐘系統(tǒng)主要由時(shí)鐘模塊、液晶顯示模塊、鍵盤控制模塊以及信號(hào)提示模塊組成。能夠準(zhǔn)確顯示時(shí)間(顯示格式為時(shí)時(shí):分分:秒秒,24小時(shí)制),可隨時(shí)進(jìn)行時(shí)間調(diào)整。設(shè)計(jì)以硬件軟件化為指導(dǎo)思想,充分發(fā)揮單片機(jī)功能,大部分功能通過軟件編程來實(shí)現(xiàn),電路簡(jiǎn)單明了,系統(tǒng)穩(wěn)定性高。單片機(jī)在這種情況下誕生了基于單片機(jī)電子時(shí)鐘。2、硬件電路原理圖3、原理仿真圖硬件模塊功能介紹4.1AT89S51單片機(jī):AT89S51提供以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash閃速存儲(chǔ)器,256字節(jié)內(nèi)部RAM,32個(gè)I/O口線,3個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)6向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路[2]。同時(shí),AT89S51可降至0HZ的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。4.2液晶顯示器LCD:液晶顯示器簡(jiǎn)稱是利用液晶經(jīng)過處理后能夠改變光線傳輸方向的特性,達(dá)到顯示字符或者圖形的目的。其特點(diǎn)是體積小、重量輕、功耗極低、顯示內(nèi)容豐富等特點(diǎn),在單片機(jī)應(yīng)用系統(tǒng)中有著日益廣泛的應(yīng)用。1602芯片:主要用于顯示時(shí)間和定時(shí)時(shí)間。1602芯片由點(diǎn)陣字符液晶顯示器件和專用的行、列驅(qū)動(dòng)器、控制及必要的鏈接件、結(jié)構(gòu)件組裝而成,可以顯示數(shù)字和西文字符,但不能顯示圖形,已經(jīng)可以滿足本次設(shè)計(jì)的需要。1602型LCD可以顯示2行16個(gè)字符,有8位數(shù)據(jù)總線D0~D7和RS,R/W,EN三個(gè)控制端口,工作電壓為5V,并且具有字符對(duì)比度調(diào)節(jié)和背光功能。4.3鍵盤控制模塊:按鍵中有一個(gè)復(fù)位鍵及定時(shí)鍵、調(diào)時(shí)鍵加一鍵和減一鍵,一個(gè)按鍵接在復(fù)位電路上,另外三個(gè)按鍵接在P3.0——P3.2口,低電平表示有按鈕按下;按鈕沒有接防抖電路,需要設(shè)計(jì)軟件防抖。1、定時(shí)。按下定時(shí)鍵后可以開始定時(shí),過程如下:定時(shí)---〉小時(shí)加/減---〉按定時(shí)---分鐘加/減---按定時(shí)。2、調(diào)時(shí)。按下調(diào)時(shí)鍵后可以調(diào)時(shí),過程如下:調(diào)時(shí)---年加/減---調(diào)時(shí)--月加/減---調(diào)時(shí)---日加/減---調(diào)時(shí)---時(shí)加/減---調(diào)時(shí)---分加/減---調(diào)時(shí)---秒加/減---調(diào)時(shí)。4.4直流穩(wěn)壓電源部分:直流穩(wěn)壓電源是給電子設(shè)備提供穩(wěn)定直流電壓的電子電路。這次電路需要的是+5V直流電源。5.軟件設(shè)計(jì)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;//定義幾個(gè)變量ucharweek,month,day,nian;//定義幾個(gè)變量ucharshi,fen,miao;//定義幾個(gè)變量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ù)組表示時(shí)分秒//********************寫命令********************************//=========================================================voidwrite_com(ucharcom){ lcdrs=0;//表示寫入的是指令,即對(duì)指令進(jìn)行操作 lcdrw=0; lcden=0;//使能信號(hào)為0 delay(2); WUFU=com;//向端口傳送命令 lcden=1; delay(2); lcden=0;}//*********************寫數(shù)據(jù)**********************************//=============================================================voidwrite_date(uchardate)//寫數(shù)據(jù)初始化{lcdrw=0; lcdrs=1;//表示寫入的是數(shù)據(jù),即對(duì)數(shù)據(jù)進(jìn)行操作 delay(2); lcden=0; WUFU=date; lcden=1; delay(2); lcden=0;}//********************函數(shù)初始化*****************************//-----------------------------------------------------------voidinit()//寫入時(shí)間函數(shù){ shi=12; fen=30; miao=16; write_com(0x38);//這句意思是用1602,5*7,的點(diǎn)整來顯示數(shù)據(jù)能顯示16個(gè)字節(jié) write_com(0x0c);//光標(biāo)不閃爍 write_com(0x06);//輸入數(shù)據(jù)光標(biāo)制動(dòng)加1,數(shù)據(jù)地址制動(dòng)加1 write_com(0x01);//清屏指令 write_com(0x80);//1602液晶第一行 for(num=0;num<16;num++)//通過for循環(huán)調(diào)用數(shù)組里面的元素 { write_date(table[num]);//寫入數(shù)據(jù) delay(5);//延時(shí)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位想定時(shí)器中寫入初始值為50毫秒 TL0=(65532-50000)%256;//賦初值低8位 EA=1;//cpu開中斷 ET0=1;//打開定時(shí)器 TR0=1;//啟動(dòng)定時(shí)器 }voidwrite_sfm(ucharadd,uchardate){ ucharshi,ge; shi=date/10;//把時(shí)間的十位分離出來 ge=date%10;//把時(shí)間的各位分離出來 write_com(0xc0+add);//顯示這個(gè)時(shí)間的地址,這具體是顯示十位的地址,但因?yàn)轱@示了十位地址制動(dòng)加加所以不用現(xiàn)出顯示個(gè)位的地址 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í)數(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;//關(guān)定時(shí)器 write_com(0xc0+9);//光標(biāo)定位在秒的位置 write_com(0x0f); //光標(biāo)開始閃爍 } if(keynum==2) { write_com(0xc0+6); } if(keynum==3) { write_com(0xc0+3);//光標(biāo)定位在時(shí)的位置上 } if(keynum==4) { //keynum=0; //write_com(0x0c);//取消光標(biāo)閃爍 //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);//光標(biāo)不閃爍 TR0=1;//啟動(dòng)定時(shí)器時(shí)間又開始走了 } } } if(keynum!=0) //如果k1沒有按到第四次 { if(key2==0)//如果k2按鍵按下 { delay(5); if(key2!=0)//松手檢測(cè) { while(!key2); if(keynum==1) { miao++;//秒表進(jìn)行++ if(miao==60)//當(dāng)秒加到60秒后 miao=0;//把秒值為0 write_sfm(9,miao);//把調(diào)好的秒值寫打屏幕上 write_com(0xc0+9);//把光標(biāo)還到原來的位置 } if(keynum==2) { fen++; if(fen==60) fen=0; write_sfm(6,fen);//把調(diào)好的分值寫打屏幕上 write_com(0xc0+6);//把光標(biāo)還到原來的位置 } if(keynum==3) { shi++; if(shi==24) shi=0; write_sfm(3,shi);//把調(diào)好的時(shí)值寫打屏幕上 write_com(0xc0+3);//把光標(biāo)還到原來的位置 } 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調(diào)試過程調(diào)試的主要過程包括硬件調(diào)試和軟件調(diào)試,其中軟件調(diào)試,也即程序編譯與仿真過程處于本次設(shè)計(jì)調(diào)試過程的核心環(huán)節(jié)。由于本設(shè)計(jì)已經(jīng)制作出液晶顯示電子鐘,所以硬件調(diào)試也很重要。兩種調(diào)試過程并非孤立或者分開的,而是緊密相關(guān)。在此我們用到的開發(fā)工具是仿真器。5.3硬件調(diào)試完成仿真器軟件仿真后,就要連接上硬件也即液晶顯示電子鐘成品板進(jìn)行硬件調(diào)試。將仿真器通過串行電纜連接計(jì)算機(jī)上,將仿真頭接到仿真器,檢查接線是否有誤,確信沒有接錯(cuò)后,接上電源,打開仿真器的電源開關(guān)。再進(jìn)行仿真器和通信設(shè)置。仿真器和仿真頭設(shè)置正確,并且硬件連接沒有錯(cuò)誤,出現(xiàn)“硬件仿真”的對(duì)話框,并顯示仿真器、仿真頭的型號(hào)及仿真器的序列號(hào)。表明仿真器初始化正確。硬件調(diào)試很重要也很麻煩,由于本次設(shè)計(jì)硬件非PCB制板,而是手工焊板,焊點(diǎn)質(zhì)量、布線是否合理等對(duì)系統(tǒng)的影響比較大,這無疑增加硬件調(diào)試的難度。由于此前沒有很多的練習(xí),本次設(shè)計(jì)我所制作的液晶顯示電子鐘在質(zhì)量工藝上很難達(dá)到滿意程度,不過在調(diào)試中還算穩(wěn)定,基本功能都能較穩(wěn)定地實(shí)現(xiàn)。5.4軟件調(diào)試系統(tǒng)仿真分析電路原理圖在ISIS里設(shè)計(jì)完成,并將系統(tǒng)軟件編譯成.Hex文件,再進(jìn)行電子時(shí)鐘的系統(tǒng)虛擬仿真。(1)在ISIS的原理圖中,右鍵單擊AT89S51將其選中,然后單擊左鍵打開AT89C51的EditComponent對(duì)話框,如下圖所示。(2)選擇相應(yīng)的.Hex文件,再在ProteusI

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論