版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
《單片機原理及應用課程設(shè)計》報告——基于紅外控制電子時鐘〔LCD顯示〕設(shè)計2011年1.課程設(shè)計目的1.1穩(wěn)固和加深對單片機原理和接口技術(shù)知識的理解;1.2培養(yǎng)根據(jù)課題需要選學參考書籍、查閱手冊和文獻資料的能力;1.3學會方案論證的比擬方法,拓寬知識,初步掌握工程設(shè)計的根本方法;1.4掌握常用儀器、儀表的正確使用方法,學會軟、硬件的設(shè)計和調(diào)試方法;1.5能按課程設(shè)計的要求編寫課程設(shè)計報告,能正確反映設(shè)計和實驗成果,能用計算機繪制電路圖和流程圖。2.課程設(shè)計要求以AT89C51單片機為核心的時鐘,在1602顯示器上顯示當前的時間,顯示格式為“時時:分分:秒秒〞,并開始計時。具體功能如下:用紅外遙控器上5個按鍵設(shè)置當前時間,調(diào)鬧鐘,控制開關(guān)等。功能鍵K1~K5功能如下。K1—暫停。K2—設(shè)置時間。K3—秒,分,時之間的切換。K4—調(diào)鬧鐘。K5—控制開關(guān)。3.硬件設(shè)計3.1設(shè)計思想51單51單片機1602接收頭紅外遙控器蜂鳴器接收頭通過接收紅外遙控器發(fā)送的數(shù)據(jù)傳送給單片機,通過單片機控制顯示屏和蜂鳴器的工作。3.2主要元器件介紹1)紅外線遙控是目前使用最廣泛的一種通信和遙控手段。由于紅外線遙控裝置具有體積小、功耗低、功能強、本錢低等特點,因而,繼彩電、錄像機之后,在錄音機、音響設(shè)備、空凋機以及玩具等其它小型電器裝置上也紛紛采用紅外線遙控。工業(yè)設(shè)備中,在高壓、輻射、有毒氣體、粉塵等環(huán)境下,采用紅外線遙控不僅完全可靠而且能有效地隔離電氣干擾。紅外線遙控器使用TC9012專用發(fā)射集成模塊做的,用頻率為38、占空比為1/3的PPM方式調(diào)制,當一個鍵按下超過36ms振蕩器使芯片激活如果這個鍵按下且延遲大約108ms,這108ms發(fā)射代碼由一個起始碼9ms,一個結(jié)果碼4.5ms(結(jié)果碼加起始碼構(gòu)成一個12.5ms的引導碼),低8位地址碼9ms-8ms,8位地址碼9ms-8ms,8位數(shù)據(jù)碼9ms-8ms和這8位數(shù)據(jù)的反碼9ms-8ms組成,我們提取的即是那8位的數(shù)據(jù)碼。其數(shù)據(jù)幀如下列圖:數(shù)字0和1的脈沖如下:當接受端當檢測到有紅外線發(fā)過來,將接收端置低,否那么置高。解碼的關(guān)鍵是如何識別“0〞和“1〞,從位的定義我們可以發(fā)現(xiàn)“0〞、“1〞均以0.56ms的低電平開始,不同的是高電平的寬度不同,“0〞為0.56ms,“1〞為1.68ms,所以必須根據(jù)高電平的寬度區(qū)別“0〞和“1〞。如果從0.56ms低電平過后,開始延時,0.56ms以后,假設(shè)讀到的電平為低,說明該位為“0〞,反之那么為“1〞,為了可靠起見,延時必須比0.56ms長些,但又不能超過1.12ms,否那么如果該位為“0〞,讀到的已是下一位的高電平,因此取〔1.12ms+0.56ms〕/2=0.84ms最為可靠,一般取0.84ms左右均可。2〕1602:主要技術(shù)參數(shù):顯示容量:16×2個字符芯片工作電壓:4.5—5.5V工作電流:2.0mA(5.0V)模塊最正確工作電壓:5.0V字符尺寸:2.95×4.35(W×H)mm引腳功能說明1602LCD采用標準的14腳〔無背光〕或16腳〔帶背光〕接口,各引腳接口說明如下表:編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負極3.3功能電路介紹1)下列圖為紅外線發(fā)射模塊原理圖:2)紅外線接收接口:3.3時間顯示和調(diào)節(jié)的軟件設(shè)計軟件采用可讀性強的C語言來寫,經(jīng)過KeilC編譯通過,并最終將十六進制〔HEX〕文件燒寫到單片機中。程序編寫采取模塊化、結(jié)構(gòu)化設(shè)計。語言程序可以分為幾個主要功能模塊程序:驅(qū)動程序,定時/計數(shù)器程序,鍵盤中斷掃描程序,1602液晶顯示程序程序流程時間顯示和調(diào)節(jié)系統(tǒng)的總體的工作流程如下:1.由單片機通過程序?qū)σ壕нM行初始化。2.單片機的定時/計數(shù)器定時記數(shù)。當記時到60秒時,秒清零,分鐘自動加1。當記時到60分鐘時,分鐘清零,小時加1。當記時到24小時,從頭開始記時。3.利用單片機的外部中斷功能。當按鍵開關(guān)按下時,單片機的I/O口檢測到外部中斷,開始根據(jù)中斷指令來相應的處理數(shù)據(jù),從而到達調(diào)整時間的效果。程序模塊化處理相對應于硬件局部,實時鐘系統(tǒng)的軟件局部可分三個模塊:顯示模塊,邏輯處理模塊,人機交互模塊〔調(diào)節(jié)時間模塊〕。1.顯示模塊主要由五個子函數(shù)組成,即延時函數(shù),定時器函數(shù),初始化函數(shù),讀指令模塊和讀數(shù)據(jù)模塊五個子函數(shù)。2.邏輯處理模塊是整個軟件設(shè)計的核心,邏輯處理模塊主要得到從定時/計數(shù)器中溢出的數(shù)據(jù),顯示在液晶顯示器上。并且當?shù)玫酵獠恐袛嘀噶顣r,處理外部中斷響應。由于程序簡短,將其包含在人機交互模塊中的時間顯示液晶程序中。3.人機處理模塊主要由對液晶的處理函數(shù)以及對按鍵的處理函數(shù)組成。程序先進行初始化〔包括液晶的初始化也放在程序的開頭〕。接下來的程序是一個一直循環(huán)的循環(huán),先調(diào)用人機交互模塊中的掃描按鍵程序,如果沒有按下任何鍵,就默認進入人機交互的液晶顯示實時時間程序,其中程序中會調(diào)用顯示模塊中的定時/計數(shù)器函數(shù),進行實時的時間顯示,邏輯處理模塊所要做的是:當?shù)玫綇亩〞r/計數(shù)器中溢出的數(shù)據(jù),顯示在液晶顯示器上。當?shù)玫酵獠恐袛嘀噶顣r,處理外部中斷響應。時間調(diào)整完成后要能夠再次回到實時時間顯示頁面。4.1軟件流程圖1〕紅外線接收<hwx.h>:開始開始定義兩個全局變量count=0;buf=0;否是定義靜態(tài)局部變量i定義兩個全局變量count=0;buf=0;否是定義靜態(tài)局部變量iinit_time0();init_time0(); init_int0();初始化定時器0和外部中斷0否P3^2=0否P3^2=0是是33=<count<6333=<count<63i=0i=0否否否否16<i<25i++;count=016<i<25i++;count=0是是是buf=buf>>1;buf=buf|0x80;是buf=buf>>1;buf=buf|0x80;count=0count>7buf=buf>>1;count=0buf=buf>>1;count=02〕1602LCD操作流程<1602.h>開始開始IntiIntii<250i<250 是否否延時4us否否延時4usLcd_bz()=1Lcd_bz()=1是是LCD_RS=0LCD_RS=0LCD-RW=0Lcd_wcmd(pos|0x80)Lcd_wcmd(pos|0x80)寫入字符顯示數(shù)據(jù)到LCDLCD_RS=1寫入字符顯示數(shù)據(jù)到LCDLCD_RS=1LCD_RW=0lcd-init()lcd-init()結(jié)束結(jié)束3〕計時顯示程序display():開始開始buf[7]++buf[7]++否buf[7]==0x3否buf[7]==0x3abuf[6]=0x30buf[4]++buf[7]=0x30buf[6]++buf[6]=0x30buf[4]++buf[7]=0x30buf[6]++buf[6]==0x30否是是是buf[3]=0x30buf[1]++buf[4]==0x3a否buf[4]=0x30buf[3]++是buf[3]=0x30buf[1]++buf[4]==0x3a否buf[4]=0x30buf[3]++buf[3]==0x36否是是buf[4]==0x3a否buf[4]=0x30buf[3]++buf[3]==0x36否是是否是否buf[3]=0x30buf[1]++buf[3]=0x30buf[1]++是buf[1]==0x3a是buf[1]==0x3abuf[1]=0x30buf[1]=0x30buf[0]++ buf[1]=0x30buf[0]==0x32&&buf[1]==0x33&&buf[1]==0x33buf[0]==0x32&&buf[1]==0x33&&buf[1]==0x33buf[0]=buf[1]=buf[3]=buf[4]=buf[6]=buf[7]=0x30 buf[1]=0x30buf[0]=buf[1]=buf[3]=buf[4]=buf[6]=buf[7]=0x30 buf[1]=0x30結(jié)束結(jié)束4〕顯示程序:xsxs:開始開始DDisplay()LLcd-pos(4)lcd_wdat(buf[i])lcd_wdat(buf[i])buf[3]=0x30buf[1]++i<8是buf[3]=0x30buf[1]++i<8是lcd_pos(0x44)i=0i<8否否是是是buf[1]==0x3a是buf[1]==0x3abuf[1]=0x30buf[1]=0x30buf[0]++ buf[1]=0x30否buf[0]==0x32&&buf[1]==0x33&&buf[1]==0x33否buf[0]==0x32&&buf[1]==0x33&&buf[1]==0x33buf[0]=buf[1]=buf[3]=buf[4]=buf[6]=buf[7]=0x30 buf[1]=0x30buf[0]=buf[1]=buf[3]=buf[4]=buf[6]=buf[7]=0x30 buf[1]=0x30結(jié)束結(jié)束5〕tiaonao():開始開始延時延時否按下調(diào)鬧鐘鍵鍵否按下調(diào)鬧鐘鍵鍵延時確定位置顯示“tn〞延時確定位置顯示“tn〞按下調(diào)鬧鍵是是否是否按切換鍵i==0是是否按切換鍵i==0是i==1是否調(diào)節(jié)分調(diào)節(jié)時否是i++否否去除去除“調(diào)鬧〞結(jié)束6〕開鬧鐘程序:knz():開始開始否按下開關(guān)鍵鍵蜂鳴器響確定位置顯示“K〞否按下開關(guān)鍵鍵蜂鳴器響確定位置顯示“K〞鬧鈴時間到否是是結(jié)束結(jié)束7〕main函數(shù):開始開始init_time0();init_time0();init_int0();lcd_init()lcd_pos(15)lcd_pos(15)lcd_wdat('Y')lcd_wdat('Y')xsxs()xsxs()zant()zant()tiaonao()tiaonao()knz()knz()zant()zant()4.2源程序:·主程序·初始化程序·顯示程序·液晶寫指令程序·液晶寫數(shù)據(jù)程序·定時/計數(shù)器程序·鍵盤子程序用于調(diào)節(jié)時間5.調(diào)試運行5.1液晶顯示問題,液晶上電時顯示不穩(wěn)定,有時候會出現(xiàn)亂碼。查看程序時發(fā)現(xiàn)寫指令前一定要考慮到LCD的實際時間顯示速度,在液晶上顯示完第一行數(shù)據(jù)后應該稍加幾毫秒的延時。添加了延時后,顯示正常。5.2暫停程序中的語句問題:if(bufh==0x44) { bufh=0; lcd_pos(15); lcd_wdat('Z'); ······程序段中,剛開始沒有 bufh=0;語句,電腦一直以為是接收按鍵發(fā)送的數(shù)據(jù),而沒有停止,接下去也沒有反響了。下面的程序段中也是同樣問題,加上清零以后,程序運行正常,硬件調(diào)試正常。6.設(shè)計心得體會本次單片機設(shè)計是用單片機控制一個簡單系統(tǒng)的實際應用。通過單片機這個核心控制元件,做成了一個時間可調(diào)電子時鐘。它首先具備一個實時時間顯示的功能,作用相當于一個電子鐘,定時/計數(shù)器產(chǎn)生時間信號,通過單片機顯示在液晶上;其次具備時間可調(diào)節(jié)的功能,用按鍵調(diào)節(jié)時間,通過液晶上光標閃動的位置就可以知道當前調(diào)節(jié)的是那個數(shù)據(jù),使系統(tǒng)能夠人性化與個性化。這次設(shè)計中,我深刻體會到專研的重要性,一個看似簡單的系統(tǒng),卻需要著大量的知識儲藏和很強的專研精神,理論和實踐往往是兩回事,理論上很簡單的事情在實際操作中往往會遇到很多意想不到的困難,學科的知識不光來自于書本知識,更來自于實踐。由于水平和經(jīng)驗的有限,系統(tǒng)可能仍存在一些缺點或者有更多更好的功能或方法可以加進去,望各位老師、同學指正。7.參考書目:[1]肖金球.單片機原理與接口技術(shù).[M].北京:清華大學出版社,2004.12[2]郭天祥、《新概念51單片機C語言教程》、2023年1月、第一版、電子工業(yè)出版社8.附錄程序:main.c:#include"hwx.c"#include"1602.c"#include"deal.c"voidmain(){ init_time0(); init_int0(); lcd_init(); while(1) { lcd_pos(15); lcd_wdat('Y'); xsxs(); zant(); tiaonao(); knz(); }}hwx.c:#include<reg52.h>#defineuncharunsignedcharuncharbufh,count;voidinit_time0(){ TMOD=0x02;/*模式選擇*/ TH0=0; TL0=0; ET0=1; TR0=1;}voidinit_int0()//P3.2口{ EA=1;/*翻開使能端,能響應中斷*/ EX0=1; IT0=1;}voidtimer0()interrupt1{ count++; }voidint0()interrupt0{ staticunchari; if(count<63&&count>=33)/*125000/256=48*/ {i=0;} if(16<i&&i<25)/*數(shù)據(jù)碼位置*/ { if(count>7) { bufh=bufh>>1; bufh=bufh|0x80; count=0; } else { bufh=bufh>>1; count=0; } }// if(i==25){P0=buf;} i++; count=0;}//要使用定時器必先初始化init_time0();/init_time0();/buf存數(shù)/count記時間1602:#include<reg52.h>#include<intrins.h>typedefunsignedcharBYTE;typedefbitBOOL;sbitLCD_RS=P2^6;sbitLCD_RW=P2^5;sbitLCD_EP=P2^7;delay(intms){//延時子程序 inti; while(ms--) { for(i=0;i<250;i++) { _nop_(); _nop_(); _nop_(); _nop_(); } }}BOOLlcd_bz(){//測試LCD忙碌狀態(tài) BOOLresult; LCD_RS=0;//接收命令而不是數(shù)據(jù) LCD_RW=1;//不寫 LCD_EP=1;//翻開使能端 _nop_(); _nop_(); _nop_(); _nop_(); result=(BOOL)(P0&0x80); LCD_EP=0; returnresult;}lcd_wcmd(BYTEcmd){//寫入指令數(shù)據(jù)到LCD while(lcd_bz()); LCD_RS=0; LCD_RW=0; LCD_EP=0; _nop_(); _nop_(); P0=cmd; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP=1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP=0;}lcd_pos(BYTEpos){//設(shè)定顯示位置 lcd_wcmd(pos|0x80);}lcd_wdat(BYTEdat){//寫入字符顯示數(shù)據(jù)到LCD while(lcd_bz()); LCD_RS=1; LCD_RW=0; LCD_EP=0; P0=dat; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP=1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EP=0;}lcd_init(){//LCD初始化設(shè)定 lcd_wcmd(0x38);//16*2顯示,5*7點陣,8位數(shù)據(jù) delay(1); lcd_wcmd(0x0c);//顯示開,關(guān)光標 delay(1); lcd_wcmd(0x06);//移動光標 delay(1); lcd_wcmd(0x01);//去除LCD的顯示內(nèi)容 delay(1);}deal.c#include<reg52.h>sbitfmq=P1^5;//蜂鳴器接口BYTEbuf[8]={"00:00:00"};BYTEnz[8]={"nz00:00"};bitflag;//表示鬧鐘開關(guān)與否的狀態(tài)量voiddelay2(unsignedchari){ while(--i);}voiddelay1(unsignedchart){ t++; while(--t) { delay2(245); delay2(241); } }voidxsxs(){ BYTEi; display(); lcd_pos(4); for(i=0;i<8;i++) { lcd_wdat(buf[i]); } lcd_pos(0x44); for(i=0;i<8;i++) { lcd_wdat(nz[i]); }}voidxs2(){ BYTEi; display(); lcd_pos(4); for(i=0;i<8;i++) { lcd_wdat(buf[i]); }}voidzant(){ BYTEi=0; if(bufh==0x44) { bufh=0; lcd_pos(15); lcd_wdat('Z'); while(bufh!=0x44) { delay(50); if(bufh==0x40) { bufh=0; if(i==0) { lcd_pos(14); lcd_wdat('m'); buf[7]++; if(buf[7]==0x3a) { buf[7]=0x30; buf[6]++; if(buf[6]==0x36) buf[6]=0x30; } lcd_pos(10); lcd_wdat(buf[6]); lcd_wdat(buf[7]); } if(i==1) { lcd_pos(14); lcd_wdat('f'); buf[4]++; if(buf[4]==0x3a) { buf[4]=0x30; buf[3]++; if(buf[3]==0x36) buf[3]=0x30; } lcd_pos(7); lcd_wdat(buf[3]); lcd_wdat(buf[4]); } if(i==2) { lcd_pos(14); lcd_wdat('s'); buf[1]++; if(buf[1]==0x3a) { buf[1]=0x30; buf[0]++; if(buf[0]>0x31) { if(buf[1]>0x33) { buf[0]=0x30; buf[1]=0x30; } } } lcd_pos(4); lcd_wdat(buf[0]); lcd_wdat(buf[1]); } } delay(50); if(bufh==0x43)//切換鍵 { bufh=0; i++; if(i==3) i=0; } } bufh=0; lcd_pos(14); lcd_wdat(''); }}voidtiaonao(){ unchari=0; delay(150); if(bufh==0x07) { bufh=0; delay(150); lcd_pos(0x4d); lcd_wdat('t'); lcd_wdat('n'); while(bufh!=0x07) { xs2(); delay(150); if(bufh==0x40) { bufh=0; if(i==0) { lcd_pos(0x4e); lcd_wdat('f'); nz[7]
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025伸縮縫安裝工程勞務分包合同修改
- 9 知法守法依法維權(quán) 第二課時(說課稿)-2023-2024學年道德與法治六年級上冊統(tǒng)編版001
- 2023二年級數(shù)學上冊 六 表內(nèi)乘法和表內(nèi)除法(二)練習十四說課稿 蘇教版001
- 10《爬山虎的腳》第二課時 說課稿-2024-2025學年語文四年級上冊統(tǒng)編版
- Unit 3 My weekend plan Part 6(說課稿)-2024-2025學年人教PEP版英語六年級上冊
- 生了病怎么辦 (課件)-2024-2025學年人教版(2024)體育一年級全一冊
- Review Module Unit 1(說課稿)-2023-2024學年外研版(三起)英語四年級下冊
- 17《松鼠》說課稿-2024-2025學年五年級語文上冊統(tǒng)編版001
- 2025農(nóng)村宅基地轉(zhuǎn)讓合同模板
- 8網(wǎng)絡(luò)新世界 第一課時 說課稿-2023-2024學年道德與法治四年級上冊統(tǒng)編版
- 我們怎樣思維經(jīng)驗與教育
- 北京市豐臺區(qū)市級名校2024屆數(shù)學高一第二學期期末檢測模擬試題含解析
- 設(shè)立項目管理公司組建方案
- 薪酬戰(zhàn)略與實踐
- 答案之書(解答之書)-電子版精選答案
- 中國古代文學史 馬工程課件(上)01總緒論
- GB/T 22085.1-2008電子束及激光焊接接頭缺欠質(zhì)量分級指南第1部分:鋼
- 上海中心大廈-介紹 課件
- 非酒精性脂肪性肝病防治指南解讀課件
- 地理微格教學課件
- 合成氨操作規(guī)程
評論
0/150
提交評論