版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
微型計(jì)算機(jī)控制
技術(shù)大作業(yè)
設(shè)計(jì)題目:定時(shí)鬧鐘課程設(shè)計(jì)
院系:計(jì)算機(jī)科學(xué)與信息工程學(xué)院
學(xué)生姓名:曹紫瑩____________
學(xué)號:20no3010036
專業(yè)班級:計(jì)算機(jī)科學(xué)與技術(shù)(嵌入式方向)ii-i
指導(dǎo)教師:________趙凱_____________
2014.06.07
目錄
1、課程內(nèi)容要求及目的...............................................1
1.1設(shè)計(jì)題目.....................................................1
1.2設(shè)計(jì)要求...................................................1
1.3能顯示時(shí)時(shí)一分分一秒秒。....................................1
1.4能夠設(shè)定定時(shí)時(shí)間、修改定時(shí)時(shí)間。............................1
2、設(shè)計(jì)實(shí)現(xiàn)方案.....................................................2
2.1原理........................................................2
2.2原理及工作過程說明..........................................2
3、硬件設(shè)計(jì).........................................................3
3.1主控芯片AT89C51的設(shè)計(jì)....................................3
3.2時(shí)鐘電路部分設(shè)計(jì)...........................................4
3.3LCD顯示電路部分...........................................5
4、軟件設(shè)計(jì).........................................................6
4.1軟件設(shè)計(jì)概述..............................................6
4.2主函數(shù)的設(shè)計(jì)...............................................6
4.3.1程序初始化...............................................7
4.3.2鬧鐘的實(shí)現(xiàn)..............................................8
4.3.3顯示程序................................................8
5、實(shí)驗(yàn)總結(jié)及心得體會(huì).............................................23
6、參考文獻(xiàn)........................................................24
基于單片機(jī)的定時(shí)鬧鐘
1、課程內(nèi)容要求及目的
1.1設(shè)計(jì)題目
基于單片機(jī)的定時(shí)鬧鐘
1.2設(shè)計(jì)要求
1、能顯示時(shí)時(shí)一分分一秒秒。
2、能夠設(shè)定定時(shí)時(shí)間、修改定時(shí)時(shí)間。
3、定時(shí)時(shí)間到能發(fā)出報(bào)警聲或者啟動(dòng)繼電器,從而控制電器的啟停。
1.3LCD電子鬧鐘的特點(diǎn)和功能介紹
時(shí)鐘是將小時(shí)、分鐘、秒鐘顯示于人的肉眼的計(jì)時(shí)裝置。而單片機(jī)模塊中
最常見的正是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術(shù)實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí)的裝置,
與機(jī)械式時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更長的使用
壽命,因此得到了廣泛的使用。而LCD電子定時(shí)鬧鐘是以單片機(jī)為基礎(chǔ)的數(shù)字電
路實(shí)現(xiàn)對時(shí)、分、秒的數(shù)字顯示的數(shù)字計(jì)時(shí)裝置,它的計(jì)時(shí)周期為24小時(shí),另外
應(yīng)有校時(shí)功能和一些顯示日期、鬧鐘等附加功能。一個(gè)基本的數(shù)字鐘電路主要由
譯碼顯示器、“時(shí)”,“分”,“秒”,“星期”計(jì)數(shù)器、校時(shí)電路、報(bào)時(shí)電路和振蕩
器組成。目前電子鐘廣泛用于各種私人和公眾場合,成為我們生活、工作和學(xué)習(xí)
中不可缺少的好幫手。
由于時(shí)鐘的實(shí)用性和在人們生活中的重要性,所以嘗試設(shè)計(jì)以單片機(jī)為核心
的數(shù)字時(shí)鐘是很有意義的。鐘表原先的報(bào)時(shí)功能已經(jīng)原不能滿足人們?nèi)找嬖鲩L的
要求,現(xiàn)代的電子時(shí)鐘多帶有類似自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、
定時(shí)廣播、自動(dòng)起閉路燈、通斷動(dòng)力設(shè)備、甚至各種定時(shí)電氣的自動(dòng)啟用等功能,
本設(shè)計(jì)中LCD電子時(shí)鐘采用LCD顯示時(shí)間和日期年月,直觀實(shí)用,而且可以方便
的校調(diào),附帶的萬年歷和定時(shí)功能也是很方便和實(shí)用的。
2、設(shè)計(jì)實(shí)現(xiàn)方案
2.1原理
本LCD定時(shí)鬧鐘,是以單片機(jī)及外圍接口電路為核心硬件,輔以其他外圍硬
件電路,用匯編語言設(shè)計(jì)的程序來實(shí)現(xiàn)的。根據(jù)C51單片機(jī)的外圍接口特點(diǎn)擴(kuò)展
相應(yīng)的硬件電路,然后根據(jù)單片機(jī)的指令設(shè)計(jì)出數(shù)字鐘相應(yīng)的軟件,再利用軟件
執(zhí)行一定的程序來實(shí)現(xiàn)數(shù)字鐘的功能。由于采用集成芯片性的單片機(jī)來制作電子
鐘,這樣設(shè)計(jì)制作簡單而且功能多、精確度高,也可方便擴(kuò)充其他功能,實(shí)現(xiàn)也
十分簡單。本設(shè)計(jì)是利用AT89c51單片機(jī)為主控芯片,由LCD、晶振、電阻、電
容、發(fā)光二極管、開關(guān)、喇叭等元件組成硬件電路,通過編寫軟件程序來實(shí)現(xiàn)和
控制的數(shù)字定時(shí)鬧鐘。如圖2.1所示。
圖2.1
2.2原理及工作過程說明
使用AT89C51單片機(jī)結(jié)合字符型LCD顯示器設(shè)計(jì)一個(gè)簡易的定時(shí)鬧鐘
LCD時(shí)鐘。
定時(shí)鬧鐘的基本功能如下:
2
?顯示格式為“時(shí)時(shí):分分”。
?由LED閃動(dòng)來做秒計(jì)數(shù)表示。
?一旦時(shí)間到則發(fā)出聲響,同時(shí)繼電器啟動(dòng),可以擴(kuò)充控制家電的開啟
和關(guān)閉。
程序執(zhí)行后工作指示燈LED閃動(dòng),表示程序開始執(zhí)行,LCD顯示“00:
00”,按下操作鍵K1?K4動(dòng)作如下:
(1)K1一設(shè)置現(xiàn)在的時(shí)間。
(2)K2一顯示鬧鐘設(shè)置的時(shí)間。
(3)K3一設(shè)置鬧鈴的時(shí)間。
(4)K4—鬧鈴0N/0FF的狀態(tài)設(shè)置,設(shè)置為0N時(shí)連續(xù)三次發(fā)出“嘩”的
一聲,設(shè)置為OFF發(fā)出“嘩”的一聲。
設(shè)置當(dāng)前時(shí)間或鬧鈴時(shí)間如下。
(1)K1一時(shí)調(diào)整。
(2)K2一分調(diào)整。
(3)K3一設(shè)置完成。
(4)K4—鬧鈴時(shí)間到時(shí),發(fā)出一陣聲響,按下本鍵可以停止聲響。
本題目的難點(diǎn)在于4個(gè)按鍵每個(gè)都具有兩個(gè)功能。
3、硬件設(shè)計(jì)
3.1主控芯片AT89C51的設(shè)計(jì)
在本LCD電子鬧鐘設(shè)計(jì)中就是采用利用我們熟悉的AT89c51單片機(jī)為主控芯
片。AT89c51單片機(jī)由微處理器,存儲(chǔ)器,I/O口以及特殊功能寄存器SFR等部
分構(gòu)成。其存儲(chǔ)器在物理上設(shè)計(jì)成程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器兩個(gè)獨(dú)立的空間,片
內(nèi)程序存儲(chǔ)器的容量為4KB,片內(nèi)數(shù)據(jù)存儲(chǔ)器為128個(gè)字節(jié)。89C51單片機(jī)有4
個(gè)8位的并行I/O口:P0n,P1口,P2口和P3口。各個(gè)接口均由接口鎖存器,
輸出驅(qū)動(dòng)器,和輸入緩沖器組成。P1口是唯一的單功能口,僅能用作通用的數(shù)
據(jù)輸入/輸出口。P3口是雙功能口除了具有數(shù)據(jù)輸入/輸出功能外,每條接口還
具有不同的第二功能,如P3.0是串行輸入口線,P3.1口是串行輸出口線。在需
要外部程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器擴(kuò)展時(shí),P0可作為分時(shí)復(fù)用的低8位地址/數(shù)據(jù)
3
總線,P2口可作為高8位的地址總線。P3口也可作為AT89c51的一些特殊功能
口,同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號.
3.2時(shí)鐘電路部分設(shè)計(jì)
AT89C51系列的單片機(jī)的時(shí)鐘方式分為內(nèi)部方式和外部方式。內(nèi)部方式就是
在單片機(jī)的XTAL1和XTAL2的兩引腳外接晶振,就夠成了自激振蕩器在單片機(jī)內(nèi)
部產(chǎn)生時(shí)鐘脈沖信號。外部時(shí)鐘方式是把外部已經(jīng)有的時(shí)鐘信號引入到單片機(jī)內(nèi)
部。時(shí)鐘電路在計(jì)算機(jī)系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。
在一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,時(shí)鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的
基準(zhǔn)振蕩定時(shí)信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)
系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時(shí)時(shí)鐘,即定時(shí)時(shí)間。
本LCD電子鬧鐘設(shè)計(jì)是采用內(nèi)部時(shí)鐘方式,用一個(gè)12MHz晶振和兩個(gè)30Pf
瓷片電容組成,為單片機(jī)提供標(biāo)準(zhǔn)時(shí)鐘,其中兩個(gè)瓷片電容起微調(diào)作用.其電路
圖見圖3.Io
圖3.1
而之所以采用高性能的振蕩電路,因?yàn)椋?/p>
1.單片機(jī)電子鐘的計(jì)時(shí)脈沖基準(zhǔn)是由外部晶振的頻率經(jīng)過12分頻后提供,
采用內(nèi)部的定時(shí)/計(jì)數(shù)器來實(shí)現(xiàn)計(jì)時(shí)功能。所以,外接晶振頻率精確度直接影響
電子鐘計(jì)時(shí)的準(zhǔn)確性。
2.單片機(jī)電子鐘利用內(nèi)部定時(shí)/計(jì)數(shù)器溢出產(chǎn)生中斷(12M晶振一般為
50ms)再乘以相應(yīng)的倍率來實(shí)現(xiàn)秒、分、時(shí)的轉(zhuǎn)換。大家都知道從定時(shí)/計(jì)數(shù)器
產(chǎn)生中斷請求到響應(yīng)中斷需要3-8個(gè)機(jī)器周期,定時(shí)中斷子程序中的數(shù)據(jù)入棧
4
和重裝定時(shí)/計(jì)數(shù)器的初值還需要占用數(shù)個(gè)機(jī)器周期,還有從中斷入口轉(zhuǎn)到中斷
子程序也要占用一定的機(jī)器周期。
3.3LCD顯示電路部分
為了獲得更好的效果本設(shè)計(jì)并沒有采用常見的LED,而是采用了型號為
1602的LCDoLCD有LED數(shù)碼顯示更好的更的直觀效果,也更加經(jīng)久耐用。液晶
顯示模塊體積小功耗低、顯示內(nèi)容豐富,現(xiàn)在字符型液晶顯示模塊已經(jīng)是單片機(jī)
應(yīng)用設(shè)計(jì)中最常用的信息顯示器件之一了。本LCD是2行16列液晶可顯示2
行16列英文字符,有8位數(shù)據(jù)總線D0-D7,RS,R/W,EN三個(gè)控制端口(共14
線),工作電壓為5V。沒背光,和常用的1602B功能和引腳一樣(除了調(diào)背光的
二個(gè)線腳).該模塊也可只用
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。接正電源時(shí)對比度最弱,
接地電源時(shí)對比度最高,但對比度過高時(shí)會(huì)產(chǎn)生“鬼影”,因此通常使用一個(gè)10K
的電位器來調(diào)整對比度或者直接串接一個(gè)電阻到地;
RS:MCU寫入數(shù)據(jù)或者指令選擇端。MCU要寫入指令時(shí),使RS為低電平;
MCU要寫入數(shù)據(jù)時(shí),使RS為高電平;
R/W:讀寫控制端。R/W為高電平時(shí),讀取數(shù)據(jù);R/W為低電平時(shí),寫入數(shù)
據(jù);
E:LCD模塊使能信號控制端。寫數(shù)據(jù)時(shí),需要下降沿觸發(fā)模塊。
D0-D7:8位數(shù)據(jù)總線,三態(tài)雙向。如果MCU的I/O口資源緊張的話,該
模塊也可以只使用4位數(shù)據(jù)線D4-D7接口傳送數(shù)據(jù)。本充電器就是采用4位數(shù)
據(jù)傳送方式;
BLA:LED背光正極。需要背光時(shí),BLA串接一個(gè)限流電阻接VDD,BLK
接地,實(shí)測該模塊的背光電流為50mA左右;
BLK:LED背光地端.
表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è)計(jì)
4.1軟件設(shè)計(jì)概述
這里用匯編的單片機(jī)程序構(gòu)成了本LCD電子鬧鐘的軟件系統(tǒng)。該程序?qū)崿F(xiàn)
時(shí)間及定時(shí)(時(shí)間以0點(diǎn)。分0秒為基準(zhǔn)計(jì)算,鬧鈴定時(shí)以0時(shí)0分為基準(zhǔn)計(jì)算)
的顯示,有外中斷0和五個(gè)開關(guān)實(shí)現(xiàn)校時(shí),鬧鐘功能。其中程序的晶振頻率為
12MHz,最小計(jì)時(shí)單位為1/20秒。
主芯片p0.1-pO.7輸出數(shù)據(jù)到LCD數(shù)據(jù)總線,p3.0-2.2輸出LCD控制信
號,P2.1輸出聲音信號,.P1.0-P1.3輸入外部控制信號,整個(gè)軟件系統(tǒng)也是根
據(jù)這個(gè)關(guān)系連接成一個(gè)完整的系統(tǒng)。
4.2主函數(shù)的設(shè)計(jì)
本LCD電子鬧鐘的的主程序流程圖如圖4.1所示:
6
4.3.1程序初始化
在系統(tǒng)開始上電時(shí),需要.首先初始化液晶:
voidTimelnit()
{
write_com(0x01);〃初始化1602液晶
write_com(0x80);〃設(shè)置現(xiàn)實(shí)初始坐標(biāo)
for(num=0;num<9;num++)//顯示年月日
{
write_date(table[num]);
delay(5);
)
write_com(0x80+0x40+6);〃寫出時(shí)間顯示部分的兩個(gè)冒號
write_date(':;
delay(5);
7
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鬧鐘的實(shí)現(xiàn)
鬧鐘功能的實(shí)現(xiàn)涉及到兩個(gè)方面:鬧鈴時(shí)間設(shè)定和是否鬧鈴判別與相應(yīng)處
理。鬧鈴時(shí)間設(shè)定模塊的設(shè)計(jì)可參照時(shí)間設(shè)定模塊,這里著重闡述鬧鈴判別與處
理模塊的設(shè)計(jì)問題。鬧鈴判別與.鬧鈴處理的關(guān)鍵在于判別何時(shí)要進(jìn)行鬧鈴。當(dāng)
時(shí)十位、時(shí)個(gè)位、分十位、分個(gè)位中任一位發(fā)生改變(進(jìn)位)時(shí),就必須進(jìn)行鬧
鈴判別。程序設(shè)計(jì)思想如圖4.2。
圖4.2
4.3.3顯示程序
顯示程序包括時(shí)鐘顯示和定時(shí)顯示程序。具體程序見附錄。液晶顯示模塊
是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電
平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是
8
告訴模塊在哪里顯示字符,表4.1是TC1602EL液晶模塊的內(nèi)部顯示地址。
表4.1
12345678910n1213141516
000102030405060708090AOBOC0D0EOF
404142434445464748494A4B4C4D4E4F
附錄1定時(shí)鬧鐘仿真電路圖
Tine:60:@2:22
附錄2定時(shí)鬧鐘的控制程序代碼
#include<reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
sbitkeyl=Pl0;
9
sbitkey2=Pl1;
sbitkey3=Pl2;
sbitkey4=Pl3;
sbitlcden=P22;
sbitlcdrs=P20;
sbitlcdrw=P21;
sbitjdq=P23;
sbitled=P24;
sbitsound=P25;
int
a,b,i,min,hour,minge,minshi,hourge,hourshi,amin,ahour,aminge,aminshi,
ahourge,ahourshi,sec,secshi,secge;
//unsignedcharcode
x[]={0xFF,0xC7,0x83,0x01,0x00,0x00,0x00,0x01,0x03,0x07,OxOF,OxlF,0x3F
,0x7F,OxFF,OxFF};
//unsignedcharcode
z[]={0xFF,0xE3,OxCl,0x80,0x00,0x00,0x00,0x80,OxCO,OxEO,OxFO,0xF8,OxFC
,0x7F,OxFF,OxFF};
ucharcodetablel□={'O','1','2','3','4','5','6','7','8','9'};
ucharcodetable2[]=,/Time:00:00:00〃;
ucharcodeAlarm」口二〃Alarm:00:00〃;
ucharcodenul[]二〃〃;
ucharnuml,num2;
bitflag=0;
voiddelay(unsignedintxms)〃延時(shí)程序
{
uinti,j;
for(i=xms;i>0;i一一)
for(j=124;j>0;j—);
10
voidwrite_com(ucharcom)〃LCD命令控制,寫指令函數(shù)
delay(5)
lcdrs=0;
P0=com;
delay(5);
lcden=l;
delay(5);
lcden=0;
voidwrite_data(uchardate)〃LCD數(shù)據(jù)控制,寫數(shù)據(jù)函數(shù)
delay(5);
lcdrs=l;
P0=date;
delay(5);
lcden=l;
delay(5);
lcden=0;
voidtime()〃設(shè)置時(shí)間函數(shù)
while(1)
{
if(keyl==0)
{
delay(10);
if(keyl==0)
if(hour==23)〃〃時(shí)〃設(shè)置
hour=0;
else
hour++;
hourge=hour%10;
hourshi=hour/10;
write_com(OxOf);
delay⑵;
write_com(0x80+6);
write_data(tablel[hourge]);〃〃時(shí)〃個(gè)位寫入
LCD第二行第6位
delay(5);
write_com(0x80+5);
delay⑵;
write_data(tablel[hourshi]);〃〃時(shí)〃十位寫入
LCD第二行第5位
while(!keyl);
//delay(1);
}
)
if(key2==0)
(
delay(10);
if(key2==0)
(
if(min-59)〃〃分〃設(shè)置
min=0;
else
min++;
12
minge=min%10;
minshi=min/10;
write_com(OxOf);
write_com(0x80+9);
write_data(tablel[minge]);〃〃分〃個(gè)
位寫入LCD第二行第9位
delay(1);
write_com(0x80+8);
write_data(tablel[minshi]);〃〃分〃十
位寫入LCD第二行第8位
delay(1);
while(!key2);
}
}
if(key3==0)
{
delay(10);
if(key3==0)
write_com(0x0c);〃整體顯示,關(guān)光標(biāo),不閃爍
TR1=1;〃定時(shí)計(jì)數(shù)器1啟動(dòng)
while(!key3);
break;//key3松開時(shí),顯示時(shí)間〃時(shí)”
分〃位均已設(shè)置完畢
}
)
)
}
voidalarm()〃設(shè)置鬧鐘時(shí)間函數(shù)
13
while(1)
if(keyl==O)
{
delay(10);
if(keyl==0)
{
if(ahour-23)〃鬧鐘〃時(shí)〃設(shè)置
ahour=0;
else
ahour++;
ahourge=ahour%10;
ahourshi=ahour/10;
write_com(0x0f);
//delay(2);
write_com(0x80+0x40+8);
write_data(,:;
write_com(0x80+0x40+7);
write_data(tablel[ahourge]);
delay(1);
write_com(0x80+0x40+6);
//delay(2);
write_data(tablel[ahourshi]);
delay(1);
while(!keyl);
)
)
if(key2==0)〃鬧鐘〃分〃設(shè)置
delay(10);
14
if(key2==0)
if(amin==59)
amin=O;
else
amin++;
aminge=amin%10;
aminshi=amin/10;
write_com(OxOf);
//delay(2);
write_com(0x80+0x40+10);
write_data(tablel[aminge]);
delay(1);
write_com(0x80+0x40+9);
//delay(2);
write_data(tablel[aminshi]);
delay(1);
while(!key2);
}
)
if(key3==0)
{flag="flag;
delay(10);
if(key3==0)
(
write_com(0x0c);
write_com(0x80+0x40);
for(i=0;i<ll;i++)
write_data(nul[i]);
15
while(!key3);
break;〃設(shè)置結(jié)束,此時(shí)LCD第二行無數(shù)據(jù)
顯示,只有第一行有時(shí)間顯示
)
voidkeyscan()〃鍵盤掃描
(
if(keyl==0)
{
delay(10);
if(keyl==0)
(
while(!keyl);//keyl鍵松開后執(zhí)行下一行程序
timeO;〃調(diào)用time。函數(shù),即時(shí)間設(shè)置
elseif(key2==0)
{
delay(10);
if(key2==0)
{
while(!key2)
|
ahourge=ahour%10;
ahourshi=ahour/10;
write_com(0x80+0x40+7);
write_data(tablel[ahourge]);
16
delay(5);
write_com(0x80+0x40+6);
delay(2);
write_data(tablel[ahourshi]);
aminge=amin%10;
aminshi=amin/10;
write_com(0x80+0x40+10);
write_data(tablel[aminge]);
delay(5);
write_com(0x80+0x40+9);
delay(2);
write_data(tablel[aminshi]);
write_com(0x80+0x40);
for(i=0;i<ll;++i)
write_data(Alarm_l[i]);〃顯示鬧鐘設(shè)置的時(shí)
問
}
write_com(0x80+0x40);
for(i=0;i<ll;i++)
write_data(nul[i]);//key2松開后,LCD
只有第一行顯示時(shí)間,鬧鐘設(shè)置時(shí)間不顯示
)
}
elseif(key3==0)
{
delay(10);
if(key3==0)
{
while(!key3);〃表示鬧鐘時(shí)間設(shè)置退出
ahourge=ahour%10;
17
ahourshi=ahour/10;
write_com(0x80+0x40+7);
write_data(tablel[ahourge]);
delay(5);
write_com(0x80+0x40+6);
delay⑵;
write_data(tablel[ahourshi]);
aminge=amin%10;
aminshi=amin/10;
write_com(0x80+0x40+10);
write_data(tablel[aminge]);
delay(5);
write_com(0x80+0x40+9);
delay⑵;
write_data(tablel[aminshi]);
write_com(0x80+0x40);
for(i=0;i<ll;++i)
write_data(Alarm_l[i]);〃顯示鬧鐘設(shè)置時(shí)間
alarm();〃調(diào)用鬧鐘時(shí)間設(shè)置函數(shù)
elseif(key4==0)〃以下進(jìn)行鬧鈴開關(guān)的設(shè)置
delay(5);
if(key4==0)
while(!key4);
a=a+l;
if(a%2==0)〃鬧鐘〃on〃
18
for(b=0;b<6;b++)
sound=^sound;〃蜂鳴器發(fā)出3次〃嘩〃的響聲
delay(200);
)
sound=l;
}
elseif(a%2==l)〃鬧鐘〃off”
(
sound=0;〃蜂鳴器發(fā)出1次〃嘩〃的響聲
delay(300);
sound=l;
delay(300);
}
sound=l;
}
}
voidlcd_init()〃LCD初始化函數(shù)
{
lcden=0;
lcdrw=0;
write_com(0x38);〃設(shè)置8位格式,2行,5X7
write_com(0x0c);〃整體顯示,關(guān)光標(biāo),不閃爍
write_com(0x06);〃設(shè)定輸入方式,增量不轉(zhuǎn)移
write_com(0x01);〃清除屏幕顯示
delay(2);
write_com(0x80);
for(i=0;i<16;i++)
{
write_data(table2[i]);〃寫入顯示時(shí)間數(shù)據(jù)
19
delay(1);
)
}
voidjudge()
(
if(sec==60)
{min++;
sec=0;
}
if(min==60)
{
hour++;
min=0;
}
if(hour==24)
hour=0;
}
voidinitO〃AT89c51初始化函數(shù)
{
keyl=l;key2=l;key3=l;key4=l;sec=0;a=0;sound=l;amins-1;〃四個(gè)按鍵
均未按下,鬧鐘時(shí)間〃分〃的初值為1(防止仿真圖剛啟動(dòng)時(shí),就達(dá)到鬧鐘時(shí)間,
蜂鳴器發(fā)出響聲)
//led=l;
TM0D=0xl0;〃定時(shí)計(jì)數(shù)器Tl、T2均工作在方式1
THl=0x3C;
TLl=0xB0;〃計(jì)數(shù)初值為15536
EA=1;
ET1=1;
20
TR1=1;〃定時(shí)計(jì)數(shù)器T1啟動(dòng)
voidequa()
{
if(amin==min&&ahour==hour&&a%2==0)〃顯示時(shí)間與鬧鐘設(shè)置時(shí)間完全
一樣且鬧鐘〃on〃
{
jdq=O;//P2~3口的電位置0,繼電器啟動(dòng),外
部LED-GREEN燈電路導(dǎo)通
sound=~sound;〃蜂鳴器發(fā)出“嘩嘩嘩”響聲
}
elsejdq=l;
}
voidledl()interrupt3〃LED1中斷函數(shù)
{
TLl=0xB0;
THl=0x3C;
if(flag)
equa();
numl++;
num2++;
if(num2>=20)
{sec++;
num2=0;
judge();
)
if(numl==10)〃計(jì)時(shí)10次50ms,即500ms
21
numl=O;
led二?led;〃P2M口電位取反,LED燈亮
voidmain()〃主函數(shù)
{
lcd_init();〃調(diào)用LCD初始化函數(shù)
init();〃調(diào)用AT89C51初始化函數(shù)
while(1)
{
keyscan();〃調(diào)用掃描函數(shù)
〃顯示時(shí)間〃秒〃力口1
minge=min%10;
minshi=mi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024買賣房產(chǎn)合同樣本
- 女裝批量采購合同
- 醫(yī)院勞動(dòng)合同書2024年
- 房屋合同法律效力分析
- 2024年小區(qū)物業(yè)管理系統(tǒng)合同
- 2024年度XX房地產(chǎn)營銷代理合同
- 工程代理加盟居間合同樣本
- 旅游客運(yùn)車輛包車合同
- 2024代理商分銷合同探討與研究
- 2024養(yǎng)豬場荒山租賃合同
- 2024年第九屆“鵬程杯”六年級語文邀請賽試卷(復(fù)賽)
- 國開2024年《建筑結(jié)構(gòu)#》形考作業(yè)1-4答案
- DL-T1475-2015電力安全工器具配置與存放技術(shù)要求
- 漏檢分析改善措施
- 新制定《公平競爭審查條例》學(xué)習(xí)課件
- GB/T 44051-2024焊縫無損檢測薄壁鋼構(gòu)件相控陣超聲檢測驗(yàn)收等級
- TD/T 1060-2021 自然資源分等定級通則(正式版)
- 完整加快發(fā)展新質(zhì)生產(chǎn)力課件
- 三位數(shù)除以兩位數(shù)300題-整除-有標(biāo)準(zhǔn)答案
- 辦公室裝修工程施工方案講義
- 奇異的仿生學(xué) 知到智慧樹網(wǎng)課答案
評論
0/150
提交評論