單片機課程教學(xué)案設(shè)計-帶有LCD的定時鬧鐘_第1頁
單片機課程教學(xué)案設(shè)計-帶有LCD的定時鬧鐘_第2頁
單片機課程教學(xué)案設(shè)計-帶有LCD的定時鬧鐘_第3頁
單片機課程教學(xué)案設(shè)計-帶有LCD的定時鬧鐘_第4頁
單片機課程教學(xué)案設(shè)計-帶有LCD的定時鬧鐘_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

...wd......wd......wd...鄭州輕工業(yè)學(xué)院軟件學(xué)院單片機與接口技術(shù)課程設(shè)計總結(jié)報告設(shè)計題目:帶有LCD的定時鬧鐘學(xué)生姓名:系別:專業(yè):班級:學(xué)號:指導(dǎo)教師:2011年12月16日鄭州輕工業(yè)學(xué)院課程設(shè)計任務(wù)書題目帶有LCD的定時鬧鐘專業(yè)、班級學(xué)號姓名主要內(nèi)容:設(shè)使用89C51單片機結(jié)合字符型LCD顯示器設(shè)計一個簡易的定時鬧鐘LCD時鐘,假設(shè)LCD選擇有背光顯示的模塊,在夜晚或黑暗的場合中也可以使用?;疽螅?字符型LCD〔16*2〕顯示器.顯示格式“時時分分〞。.由LED閃動來做秒計數(shù)表示。.一旦時間到側(cè)發(fā)動聲響,同時繼電器啟動,可以擴大控制家電開啟和關(guān)閉。.程序執(zhí)行后工作指示燈LED閃動,表示程序開場執(zhí)行,LCD顯示“0000〞,按下操作鍵K1-k4動作如下:K1—設(shè)置現(xiàn)在的時間。K2—顯示鬧鐘設(shè)置的時間。K3—設(shè)置鬧鈴的時間。K4—鬧鈴ON/OFF的狀態(tài)設(shè)置,設(shè)置ON時連續(xù)三次發(fā)出“嘩〞的一聲,off置為嘩的一聲。設(shè)置當(dāng)前時間或鬧鈴時間如下:K1—時的調(diào)整。K2—分的調(diào)整。K3—設(shè)置完成。OFF發(fā)出“嘩〞K4---鬧鈴時間到時,發(fā)出一陣聲響,按下本鍵可以停頓聲響。除了顯示當(dāng)前時間的功能外,還可以擴大如下功能;.增加秒表計數(shù)。.鬧鈴時間到側(cè)產(chǎn)生音樂聲。.增加減計數(shù)功能。.增加多組計數(shù)的功能。參考文獻郭天祥51單片機C語言教程-入門。余發(fā)山單片機原理及應(yīng)用技術(shù)。中國礦業(yè)大學(xué)出版社。涂世亮,張友德。單片微機控制技術(shù)。清華大學(xué)出版社。一.設(shè)計本電子定時鬧鐘的目的和意義以單片機為核心的數(shù)字時鐘是很有社會意義和社會價值的。鐘表原先的報時功能已經(jīng)原不能滿足人們?nèi)找嬖鲩L的要求,現(xiàn)代的電子時鐘多帶有類似自動報警、按時自動打鈴、時間程序自動控制、定時播送、自動起閉路燈、通斷動力設(shè)備、甚至各種定時電氣的自動啟用等功能。1.1本LCD電子鬧鐘的特點和功能介紹數(shù)字鐘介紹時鐘是將小時、分鐘、秒鐘顯示于人的肉眼的計時裝置。而單片機模塊中最常見的正是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的準(zhǔn)確性和直觀性,且無機械裝置,具有更長的使用壽命,因此得到了廣泛的使用。而LCD電子定時鬧鐘是以單片機為根基的數(shù)字電路實現(xiàn)對時、分、秒的數(shù)字顯示的數(shù)字計時裝置,它的計時周期為24小時,另外應(yīng)有校時功能和一些顯示日期、鬧鐘等附加功能。一個基本的數(shù)字鐘電路主要由譯碼顯示器、“時〞,“分〞,“秒〞,“星期〞計數(shù)器、校時電路、報時電路和振蕩器組成。目前電子鐘廣泛用于各種私人和公眾場合,成為我們生活、工作和學(xué)習(xí)中不可缺少的好幫手。2總體方案設(shè)計2.1總體設(shè)計方案本LCD定時鬧鐘,是以單片機及外圍接口電路為核心硬件,輔以其他外圍硬件電路,用匯編語言設(shè)計的程序來實現(xiàn)的。根據(jù)C51單片機的外圍接口特點擴展相應(yīng)的硬件電路,然后根據(jù)單片機的指令設(shè)計出數(shù)字鐘相應(yīng)的軟件,再利用軟件執(zhí)行一定的程序來實現(xiàn)數(shù)字鐘的功能。由于采用集成芯片性的單片機來制作電子鐘,這樣設(shè)計制作簡單而且功能多、準(zhǔn)確度高,也可方便擴大其他功能,實現(xiàn)也十分簡單。本設(shè)計是利用AT89C51單片機為主控芯片,由LCD、晶振、電阻、電容、發(fā)光二極管、開關(guān)、喇叭等元件組成硬件電路,通過編寫軟件程序來實現(xiàn)和控制的數(shù)字定時鬧鐘AT89C51震蕩電路調(diào)時電路喇叭LCD片選代碼AT89C51震蕩電路調(diào)時電路喇叭LCDAT89C51震蕩電路調(diào)時電路喇叭LCD片選代碼AT89C51震蕩電路調(diào)時電路喇叭LCD片選代碼3.1主控芯片AT89C51的設(shè)計在本LCD電子鬧鐘設(shè)計中就是采用利用我們熟悉的AT89C51單片機為主控芯片。AT89C51單片機由微處理器,存儲器,I/O口以及特殊功能存放器SFR等局部構(gòu)成。其存儲器在物理上設(shè)計成程序存儲器和數(shù)據(jù)存儲器兩個獨立的空間,片內(nèi)程序存儲器的容量為4KB,片內(nèi)數(shù)據(jù)存儲器為128個字節(jié)。89C51單片機有4個8位的并行I/O口:P0口,P1口,P2口和P3口。各個接口均由接口鎖存器,輸出驅(qū)動器,和輸入緩沖器組成。P1口是唯一的單功能口,僅能用作通用的數(shù)據(jù)輸入/輸出口。P3口是雙功能口除了具有數(shù)據(jù)輸入/輸出功能外,每條接口還具有不同的第二功能,如P3.0是串行輸入口線,P3.1口是串行輸出口線。在需要外部程序存儲器和數(shù)據(jù)存儲器擴展時,P0可作為分時復(fù)用的低8位地址/數(shù)據(jù)總線,P2口可作為高8位的地址總線。P3口也可作為AT89C51的一些特殊功能口,同時為閃爍編程和編程校驗接收一些控制信號.3.2時鐘電路局部設(shè)計AT89C51系列的單片機的時鐘方式分為內(nèi)部方式和外部方式。內(nèi)部方式就是在單片機的XTAL1和XTAL2的兩引腳外接晶振,就夠成了自激振蕩器在單片機內(nèi)部產(chǎn)生時鐘脈沖信號。外部時鐘方式是把外部已經(jīng)有的時鐘信號引入到單片機內(nèi)部。時鐘電路在計算機系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的根基。在一個單片機應(yīng)用系統(tǒng)中,時鐘有兩方面的圖3.2含義:一是指為保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時時鐘,即定時時間。本LCD電子鬧鐘設(shè)計是采用內(nèi)部時鐘方式,用一個12MHz晶振和兩個30Pf瓷片電容組成,為單片機提供標(biāo)準(zhǔn)時鐘,其中兩個瓷片電容起微調(diào)作用.其電路圖見圖3.2。之所以采用高性能的振蕩電路,因為:1.單片機電子鐘的計時脈沖基準(zhǔn)是由外部晶振的頻率經(jīng)過12分頻后提供,采用內(nèi)部的定時/計數(shù)器來實現(xiàn)計時功能。所以,外接晶振頻率準(zhǔn)確度直接影響電子鐘計時的準(zhǔn)確性。2.單片機電子鐘利用內(nèi)部定時/計數(shù)器溢出產(chǎn)生中斷〔12M晶振一般為50ms〕再乘以相應(yīng)的倍率來實現(xiàn)秒、分、時的轉(zhuǎn)換。大家都知道從定時/計數(shù)器產(chǎn)生中斷請求到響應(yīng)中斷需要3-8個機器周期,定時中斷子程序中的數(shù)據(jù)入棧和重裝定時/計數(shù)器的初值還需要占用數(shù)個機器周期,還有從中斷入口轉(zhuǎn)到中斷子程序也要占用一定的機器周期。3.3LCD顯示電路局部為了獲得更好的效果本設(shè)計并沒有采用常見的LED,而是采用了型號為1602的LCD。LCD有LED數(shù)碼顯示更好的更的直觀效果,也更加經(jīng)久耐用。液晶顯示模塊體積小功耗低、顯示內(nèi)容豐富,現(xiàn)在字符型液晶顯示模塊已經(jīng)是單片機應(yīng)用設(shè)計中最常用的信息顯示器件之一了。本LCD是2行16列液晶可顯示2行16列英文字符,有8位數(shù)據(jù)總線D0-D7,RS,R/W,EN三個控制端口〔共14線〕,工作電壓為5V。沒背光,和常用的1602B功能和引腳一樣〔除了調(diào)背光的二個線腳〕.該模塊也可只用D4-D7作為四位數(shù)據(jù)分兩次傳送。這樣的話可以節(jié)省MCU的I/O口資源。引腳說明,見表3.1。VDD:電源正極,4.5-5.5V,通常使用5V電壓;VL:LCD比照度調(diào)節(jié)端,電壓調(diào)節(jié)范圍為0-5V。接正電源時比照度最弱,接地電源時比照度最高,但比照度過高時會產(chǎn)生“鬼影〞,因此通常使用一個10K的電位器來調(diào)整比照度或者直接串接一個電阻到地;RS:MCU寫入數(shù)據(jù)或者指令選擇端。MCU要寫入指令時,使RS為低電平;MCU要寫入數(shù)據(jù)時,使RS為高電平;R/W:讀寫控制端。R/W為高電平時,讀取數(shù)據(jù);R/W為低電平時,寫入數(shù)據(jù);E:LCD模塊使能信號控制端。寫數(shù)據(jù)時,需要下降沿觸發(fā)模塊。D0-D7:8位數(shù)據(jù)總線,三態(tài)雙向。如果MCU的I/O口資源緊張的話,該模塊也可以只使用4位數(shù)據(jù)線D4-D7接口傳送數(shù)據(jù)。本充電器就是采用4位數(shù)據(jù)傳送方式;BLA:LED背光正極。需要背光時,BLA串接一個限流電阻接VDD,BLK接地,實測該模塊的背光電流為50mA左右;BLK:LED背光地端。[12]表3.1LCD顯示屏引腳說明編號符號引腳說明編號符號引腳說明1VCC電源地9D2雙向數(shù)據(jù)口2VDD電源正極10D3雙向數(shù)據(jù)口3VL比照度調(diào)節(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背光源正極4軟件設(shè)計4.1軟件設(shè)計概述這里用匯編的單片機程序構(gòu)成了本LCD電子鬧鐘的軟件系統(tǒng)。該程序?qū)崿F(xiàn)時間及定時(時間以0點0分0秒為基準(zhǔn)計算,鬧鈴定時以0時0分為基準(zhǔn)計算〕的顯示,有外中斷0和五個開關(guān)實現(xiàn)校時,鬧鐘功能。其中程序的晶振頻率為12MHz,最小計時單位為1/20秒。主芯片p0.1-p0.7輸出數(shù)據(jù)到LCD數(shù)據(jù)總線,p3.0-2.2輸出LCD控制信號,P2.1輸出聲音信號,.P1.0-P1.3輸入外部控制信號,整個軟件系統(tǒng)也是根據(jù)這個關(guān)系連接成一個完整的系統(tǒng)。4.2主函數(shù)的設(shè)計本LCD電子鬧鐘的的主程序流程圖如圖4.1所示:CPU系統(tǒng)初始化CPU系統(tǒng)初始化定時器0初始化定時器1初始化串口初始化顯示待機指示符設(shè)定鬧鈴時間判設(shè)置鬧鈴時間否顯示刷新啟動走時有關(guān)變量初始化刷新顯示判斷日期是否變化化否秒指示判斷時間是否變化鬧鈴判是否到鬧鈴時間延時YYYY4.3.1程序初始化在系統(tǒng)開場上電時,需要.首先初始化液晶:voidTimeInit(){ write_com(0x01); //初始化1602液晶 write_com(0x80); //設(shè)置現(xiàn)實初始坐標(biāo) for(num=0;num<9;num++) //顯示年月日 { write_date(table[num]); delay(5); } write_com(0x80+0x40+6); //寫出時間顯示局部的兩個冒號 write_date(':'); delay(5); write_com(0x80+0x40+9); write_date(':'); delay(5); write_sfm(4,shi); //分別送去液晶顯示 write_com(0x80+0x40+4); write_sfm(7,fen); write_com(0x80+0x40+7); write_sfm(10,miao); write_com(0x80+0x40+10)4.3.2鬧鐘的實現(xiàn)鬧鐘功能的實現(xiàn)涉及到兩個方面:鬧鈴時間設(shè)定和是否鬧鈴判別與相應(yīng)處理。鬧鈴時間設(shè)定模塊的設(shè)計可參照時間設(shè)定模塊,這里著重闡述鬧鈴判別與處理模塊的設(shè)計問題。鬧鈴判別與鬧鈴處理的關(guān)鍵在于判別何時要進展鬧鈴。當(dāng)時十位、時個位、分十位、分個位中任一位發(fā)生改變〔進位〕時,就必須進展鬧鈴判別。程序設(shè)計思想如圖4.3。[8]時十位、個位,分十位、個位改變了時十位、個位,分十位、個位改變了設(shè)置鬧鈴標(biāo)志是否設(shè)置了鬧鈴去除鬧鈴標(biāo)志判當(dāng)前時間是設(shè)定時間中斷返回中斷返回YNY鬧鈴判別處理4.3.3顯示程序顯示程序包括時鐘顯示和定時顯示程序。具體程序見附錄。液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標(biāo)志為低電平,表示不忙,否那么此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,表4.1是TC1602EL液晶模塊的內(nèi)部顯示地址。[15]表4.1內(nèi)部顯示地址12345678910111213141516000102030405060708090A0B0C0D0E0F404142434445464748494A4B4C4D4E4F硬件原理圖程序:#include<reg52.h>#include"24C08.h"#defineuintunsignedint#defineucharunsignedcharucharcodetable[]="NOWTIME:";ucharcodetable1[]="SETNOWTIME:";ucharcodetable2[]="SETALARMTIME:";ucharcodealarm[]="ALARMTIME:";ucharcodealarmoff[]="ALARMTIME:OFF";ucharcodealarmon[]="ALARMTIME:ON";sbitlcden=P3^2;sbitlcdrs=P3^0;sbitlcdrw=P3^1;sbitK1=P1^0;sbitK2=P1^1;sbitK3=P1^2;sbitK4=P1^3;sbitbeep=P2^1;ucharflag,num,count,k1num,k2num,k3num,k4num;charmiao,shi,fen,ashi,afen;//延時函數(shù)voiddelay(uintz){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}//蜂鳴器子程序voiddi(){ beep=0; delay(100); beep=1;}//寫命令函數(shù)voidwrite_com(ucharcom){ lcdrs=0; lcdrw=0; lcden=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; }//寫數(shù)據(jù)函數(shù)voidwrite_date(uchardate){ lcdrs=1; lcdrw=0; lcden=0; P0=date; delay(5); lcden=1; delay(5); lcden=0;}//寫時間函數(shù)voidwrite_sfm(ucharadd,uchardate){ ucharshi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge);}//顯示時間初始化voidTimeInit(){ write_com(0x01); write_com(0x80); for(num=0;num<9;num++) { write_date(table[num]); delay(5); } write_com(0x80+0x40+6); write_date(':'); delay(5); write_com(0x80+0x40+9); write_date(':'); delay(5); write_sfm(4,shi); write_com(0x80+0x40+4); write_sfm(7,fen); write_com(0x80+0x40+7); write_sfm(10,miao); write_com(0x80+0x40+10);}//設(shè)置當(dāng)前時間voidSetNowTime(){ if(K1==0) { delay(5); if(K1==0) { while(!K1); di(); shi++; if(shi==24) shi=0; write_sfm(4,shi); write_com(0x80+0x40+4); write_add(3,shi); } } if(K2==0) { delay(5); if(K2==0) { while(!K2); di(); fen++; if(fen==60) fen=0; write_sfm(7,fen); write_com(0x80+0x40+7); write_add(2,fen); } } if(K3==0) { delay(5); if(K3==0) { while(!K3); di(); k1num=0; TR0=1; TimeInit(); } } }//設(shè)置鬧鐘時間voidSetAlarmTime(){ flag=0; if(K1==0) { delay(5); if(K1==0) { while(!K1); di(); ashi++; if(ashi==24) ashi=0; write_sfm(4,ashi); write_com(0x80+0x40+4); write_add(4,ashi); } } if(K2==0) { delay(5); if(K2==0) { while(!K2); di(); afen++; if(afen==60) afen=0; write_sfm(7,afen); write_com(0x80+0x40+7); write_add(5,afen); } } if(K3==0) { delay(5); if(K3==0) { while(!K3); di(); k3num=0; EA=1; flag=1; TimeInit(); } } }//顯示鬧鐘函數(shù)voidDisplayAlarmTime(){ write_com(0x01); write_com(0x80); for(num=0;num<11;num++) { write_date(alarm[num]); delay(5); } write_com(0x80+0x40+6); write_date(':'); delay(5); write_sfm(4,ashi); write_com(0x80+0x40+4); write_sfm(7,afen); write_com(0x80+0x40+7);}//鍵盤掃描函數(shù)voidkeyscan(){ if(K1==0) { delay(5); if(K1==0) { TR0=0; while(!K1); di(); k1num++; } } if(k1num!=0) { write_com(0x80); for(num=0;num<13;num++) { write_date(table1[num]); delay(5); } SetNowTime(); } else { if(K2==0) { delay(5); if(K2==0) { while(!K2); di(); k2num++; } } if(k2num==1) { EA=0; DisplayAlarmTime(); k2num=2; } if(k2num==3) { k2num=0; EA=1; TimeInit(); } else { if(K3==0) { delay(5); if(K3==0) { while(!K3); di(); k3num++; write_com(0x01); } } if(k3num==1) { EA=0; write_com(0x80); for(num=0;num<15;num++) { write_date(table2[num]); delay(5); } write_com(0x80+0x40+6); write_date(':'); delay(5); write_sfm(4,ashi); write_com(0x80+0x40+4); write_sfm(7,afen); write_com(0x80+0x40+7); SetAlarmTime(); } else { if(K4==0) { delay(5); if(K4==0) { while(!K4); di(); k4num++; } } if(k4num==1) { di(); k4num=2; flag=0; } if(k4num==3) { k4num=0; di(); delay(500); di(); delay(500); di(); flag=1; } } } } if(flag==1&&shi==ashi&&fen==afen) { beep=~beep; delay(500); } if(K4==0&&flag==1) { delay(5); if(K4==0&&flag==1) { while(!K4); di(); flag=0; k4num=0; } }}//lcd1602初始化voidinit(){ lcden=0; shi=0; fen=0; miao=0; ashi=0; afen=0; count=0; k1num=0; init_24c08(); write_com(0x38); //設(shè)置16X2顯示,5X7點陣,8位數(shù)據(jù)接口 write_com(0x0c); //設(shè)置開顯示,不顯示光標(biāo) write_com(0x06); //寫一個字符后地址指針加1 write_com(0x01); //顯示清0,數(shù)據(jù)指針清0 miao=read_add(1); //首次上電從AT24C08中讀取出存儲的

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論