基于單片機的定時鬧鐘設(shè)計報告_第1頁
基于單片機的定時鬧鐘設(shè)計報告_第2頁
基于單片機的定時鬧鐘設(shè)計報告_第3頁
基于單片機的定時鬧鐘設(shè)計報告_第4頁
基于單片機的定時鬧鐘設(shè)計報告_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、電子系統(tǒng)設(shè)計(單片機)課程設(shè)計總結(jié)報告題目:定時鬧鐘院(系)名稱:信息與通信工程學(xué)院班級:20130815學(xué)生姓名:唐學(xué)遠學(xué)生學(xué)號:2013081520指導(dǎo)教師:蔣伊琳哈爾濱工程大學(xué)2016年6月研究意義和實現(xiàn)功能指標以單片機為核心的數(shù)字時鐘是很有社會意義和社會價值的。鐘表原先的報時功能已經(jīng)原不能滿足人們?nèi)找嬖鲩L的要求,現(xiàn)代的電子時鐘多帶有類似自動報 警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、通斷動力設(shè) 備、甚至各種定時電氣的自動啟用等功能。二、總體設(shè)計方案本LCD定時鬧鐘,是以單片機及外圍接口電路為核心硬件,輔以其他外圍硬 件電路,用匯編語言設(shè)計的程序來實現(xiàn)的。 根據(jù)C51

2、單片機的外圍接口特點擴展 相應(yīng)的硬件電路,然后根據(jù)單片機的指令設(shè)計出數(shù)字鐘相應(yīng)的軟件,再利用軟件 執(zhí)行一定的程序來實現(xiàn)數(shù)字鐘的功能。由于采用集成芯片性的單片機來制作電子 鐘,這樣設(shè)計制作簡單而且功能多、精確度高,也可方便擴充其他功能,實現(xiàn)也 十分簡單。本設(shè)計是利用AT89C51單片機為主控芯片,由LCD晶振、電阻、電 容、發(fā)光二極管、開關(guān)、喇叭、被控電器等元件組成硬件電路,通過編寫軟件程 序來實現(xiàn)和控制的數(shù)字定時鬧鐘三、硬件實現(xiàn)1、時鐘電路AT89C51系列的單片機的時鐘方式分為內(nèi)部方式和外部方式。內(nèi)部方式就是在單片機的XTAL1和XTAL2的兩引腳外接晶振,就夠成了自激振蕩器在單片機內(nèi) 部產(chǎn)

3、生時鐘脈沖信號。外部時鐘方式是把外部已經(jīng)有的時鐘信號引入到單片機內(nèi) 部。時鐘電路在計算機系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個單片機應(yīng)用系統(tǒng)中,時鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的 基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機 系統(tǒng)工作的快慢;二是指系統(tǒng)的標準定時時鐘,即定時時間。本LCD電子鬧鐘設(shè)計是采用內(nèi)部時鐘方式,用一個 10MHz晶振和兩個30Pf 瓷片電容組成,為單片機提供標準時鐘,其中兩個瓷片電容起微調(diào)作用其電路圖見圖3.2。2、led顯示電路本設(shè)計采用了型號為1602的LCD LCD有LED數(shù)碼顯示更好的更的直觀效果,也更加

4、經(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)背光的二個線腳).該模塊也可只用表3.1 LCD顯示屏引腳說明編號符號引腳說明編號符號引腳說明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模塊使能端14D

5、7雙向數(shù)據(jù)口7D0雙向數(shù)據(jù)口15BLK背光源地8D1雙向數(shù)據(jù)口16BLA背光源正極D4-D7作為四位數(shù)據(jù)分兩次傳送。這樣的 話可以節(jié)省MCU的I/O 口資源。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:

6、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背光地端。3、按鍵電路本實驗用4個按鍵來調(diào)節(jié)設(shè)置時間,和 鬧鐘,一個復(fù)位開關(guān)來復(fù)位程序,按下 為低電平,松手時按鍵自動彈起,為高 電平,來給單片機指令。SWIo野o lb 比亠FSE1ALE口1.1tTE:-:4、總電路圖TLCD1XTAL

7、1XTAL2WT4rm怛血畑 Fl.tfTXfl FajrnnQ FlJfflTTP14/ID FismP37/WFRN1_: OliYBTAL-D111 一*jI/ MjiI-SPQT- 屮 是否到鬧鐘時間N響鈴,打開被控電器2、定時鬧鐘程序#include / reg52.h是 AT89C52的頭文件#defi ne uint un sig ned int#defi ne uchar un sig ned charuchar code table=NOW TIME:;uchar code table1=SET NOW TIME:;uchar code table2=SET ALARM TI

8、ME:;uchar code alarm=ALARM TIME:;uchar code alarmoff=ALARM TIME: OFF;uchar code alarmo n=ALARM TIME: ON;sbit Icde n=P2A4;sbit lcdrs=P2A2;sbit lcdrw=P2A3;sbit K1= P1A0;sbit K2=PM1;sbit K3=P1A2;sbit K4=P1A3;sbit beep=P1A4;sbit Dia nQi=P1A5;sbit L1=P2A5;uchar flag ,nu m,co un t,k1 nu m,k2 nu m,k3 nu m,

9、k 4num; char miao,shi,fe n, ashi,afe n;uchar i;uchar flag1=0;void delay(ui nt z) /延時函數(shù)uint x,y;for(x=z;x0;x_)for(y=100;y0;y-);void di() /蜂鳴器子程序beep=1;delay(100);beep=0;void write_com(uchar com) /寫命令函數(shù) _lcdrs=0;lcdrw=0;lcde n=0;P0=com;dela y(5);lcde n=1;dela y(5);lcde n=0;void write_date(uchar date)

10、/寫數(shù)據(jù)函數(shù) _lcdrs=1;lcdrw=0;Icde n=0;P0=date;dela y(5);Icde n=1;dela y(5);Icde n=0;void write_sfm(uchar add,uchar date) /寫時間函數(shù)uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge); _void TimeI ni t()/顯示時間初始化write_com(0x01);write_com(0x80);for(num=0; num 9;

11、 nu m+)write_date(table nu m);delay(5);write_com(0x80+0x40+6);write_date(:);dela y(5);write_com(0x80+0x40+9);write_date(:);dela y(5);write_sfm(4,shi);write_com(0x80+0x40+4);write_sfm(7,fe n);write_com(0x80+0x40+7);write_sfm(10,miao);write_com(0x80+0x40+10);void SetNowTime() / 設(shè)置當(dāng)前時間 if(K1=O)delay(5)

12、;if(K1=O)while(!K1);di(); shi+;if(shi=24)shi=0;write_sfm(4,shi); write_com(0x80+0x40+4); _ if(K2=0) delay(5);if(K2=0)while(!K2);di();fen+;if(fen=60)fen=0;write_sfm(7,fe n); write_com(0x80+0x40+7); if(K3=0)delay(5);if(K3=0)while(!K3);di();k1n um=0;TR0=1;TimeI nit();void SetAlarmTime() / 設(shè)置鬧鐘時間函數(shù) flag

13、=O;if(K1=O)delay(5);if(K1=O)while(!K1);di();ashi+;if(ashi=24)ashi=0;write_sfm(4,ashi); write_com(0x80+0x40+4);if(K2=0)delay(5);if(K2=0)while(!K2);di();afen+;if(afe n=60)afen=0;write_sfm(7,afe n); write_com(0x80+0x40+7); _if(K3=0)delay(5);if(K3=0)while(!K3);di();k3n um=0;EA=1;flag=1;TimeI nit();void

14、DisplayAlarmTime() / 顯示鬧鐘函數(shù)write_com(0x01);write_com(0x80);for(num=0;num 11; nu m+)write_date(alarm nu m);delay(5);write_com(0x80+0x40+6);write_date(:);dela y(5);write_sfm(4,ashi);write_com(0x80+0x40+4);write_sfm(7,afe n);write_com(0x80+0x40+7); _void keysca n()/鍵盤掃描函數(shù)if(K1=0)delay(5);if(K1=0)TR0=0;

15、while(!K1);di();k1nu m+;if(k1 num!=0)/如果1鍵按下write_com(0x80);for(num=0;num13;num+)/ 顯示 SetNowTime write_date(table1 num); delay(5);SetNowTime();/ 進入 SetnowTime函數(shù)elseif(K2=0)delay(5);if(K2=0)while(!K2);di();k2nu m+;if(k2num=1)/ 如果2鍵按下,則顯示進入顯示當(dāng)前時間函數(shù)EA=0;DisplayAlarmTime();k2n um=2;if(k2 num=3)k2n um=0;

16、EA=1;TimeI nit();elseif(K3=0)delay(5);if(K3=0)while(!K3);di();k3nu m+;write_com(0x01); _if(k3num=1)/如果3鍵按下EA=0;write_com(0x80);for(num=0;num15;num+)/ 顯示 SetAlarmTime write_date(table2 nu m); delay(5); write_com(0x80+0x40+6);/在第二行顯示時間格式write_date(:);delay(5);write_sfm(4,ashi);write_com(0x80+0x40+4);w

17、rite_sfm(7,afe n); write_com(0x80+0x40+7);SetAlarmTime();/ 進入 SetAlarmtimeha 函數(shù) elseif(K4=0)/設(shè)置鬧鐘模式,有三種模式,不響,delay(5);if(K4=0)while(!K4);k4nu m+;if(k4num=1)/ 不響flag=0 ; k4num=2;/秒響一聲if(k4 num=3)beep=1; delay(500);beep=0;flag=1;flag1=0; k4num=4;if(k4num=5)k4num=O;/ 一秒響三聲flag=1;flag仁1;beep=1;delay(IOO

18、);beep=O;delay(IOO);beep=1;delay(IOO);beep=O;delay(IOO);beep=1;delay(IOO);beep=O;delay(IOO);if(flag=1 &shi=ashi&fen=afe n)Dia nQi=1;delay(1OO);/蜂鳴器一秒連續(xù)響三聲if(flag1=1)beep=1; delay(1OO); beep=O;delay(1OO); beep=1;delay(1OO); beep=O;delay(1OO); beep=1;delay(1OO); beep=O;delay(500);if(K4=0&flag=1)/檢測4鍵是

19、否被按下,按下則跳 出,蜂鳴器停止發(fā)聲delay(5);if(K4=0&flag=1) while(K4=!K4);flag=0;k4num=0;if(flag 1=0) beep=!beep;/delay(500);if(K4=0&flag=1)/蜂鳴器長一秒響一聲檢測4鍵是否按下,按下則跳出, 蜂鳴器停止發(fā)聲初始化II設(shè)置16X2顯示,5X7點陣,8位數(shù)據(jù)接口/設(shè)置開顯示,不顯示光標delay(5);if(K4=0&flag=1)while(K4=!K4); flag=0;k4num=0;void in it() lcd1602beep=0;Dia nQi=0; lcde n=0;shi=

20、0;fen=0;miao=0;ashi=0;afen=0; coun t=0;k1n um=0;write_com(0x38); write_com(0x0c);write_com(0x06);/寫一個字符后地址指針加1write_com(0x01);/顯示清0,數(shù)據(jù)指針清0Timel nit();TM0D=0x01;TH0=(65536-41665)/256;TL0=(65536-41665)%256;EA=1;ET0=1;TR0=1;void mai n()/ 主函數(shù)Dia nQi=0;beep=0;in it();write_com(0x80);flag=0;while(1)keysca n();void timer0()i nterrupt 1/中斷服務(wù)子程序TH0=(65536-41667)/256;TL0=(65536-41667)%256;coun t+;

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論