




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、. . . . 摘 要隨著社會的發(fā)展、科技的進步,各種方便于生活的電子產(chǎn)品開始進入了人們的生活,電子時鐘就是其中之一。他已經(jīng)成為了人們?nèi)粘I钪械谋匦杵?,廣泛用于家庭、車站、碼頭、劇院、辦公室等場所,給人們的生活、學校、工作、娛樂帶來了極大的方便。本設計采用STC89C52為微處理器,通過LCD1602液晶顯示當前日期、時間。系統(tǒng)還具有對日期、星期、時間與鬧鈴的設置功能。經(jīng)測試,本設計能實現(xiàn)基本的數(shù)字時鐘功能。具有外圍電路簡單、成本低、易操作的特點。考慮到成本,計時與數(shù)據(jù)處理均由單片機處理。關鍵詞:51單片機;數(shù)字時鐘;LCD1602;可調(diào)時鬧鈴Abstract:With the develo
2、pment of society, the progress of science and technology, all kinds of convenience in life of electronic products began to enter into people's life, electronic clock is one of them.It has become the people daily lifes necessities, widely used in family, station, wharf, theatres, offices and othe
3、r places, to people's lives, school, work, entertainment brought great convenience.This design uses microprocessor STC89C52, through the LCD1602 liquid crystal display the current date and time.The system also has the function setting date, week, time and alarm.According to the test, this design
4、 can achieve the basic digital clock function. With peripheral circuit is simple, low cost, easy to operate features. Considering the cost, time and data processing were determined by single chip microcomputer processing.Key words:51 SCM; Digital clock; LCD1602;Time Adjustable alarm 25 / 29目 錄引言 11
5、設計思路與流程 11.1 功能分析 11.2 系統(tǒng)模塊圖12 硬件電路 22.1 主要器件 22.1.1 STC89C5單片機22.1.2 LCD1602液晶33 電路原理圖 53.1單片機電路53.2 電源指示電路53.3 按鍵電路63.4 鬧鈴電路63.5 LCD電路64 程序設計 74.1 程序設計容 74.2 C語言源程序 75 心得體會 8辭9參考文獻10附錄11引言電子鐘已成為人們?nèi)粘I钪斜夭豢缮俚奈锲?,廣泛用于個人家庭以與車站、碼頭、劇院、辦公室等公共場所,給人們的生活、學習、工作、娛樂帶來極大的方便。隨著技術的發(fā)展,人們已不再滿足于鐘表原先簡單的報時功能,希望出現(xiàn)一些新的功能
6、,諸如日歷的顯示、鬧鐘的非接觸式止鬧跑表功能、重要日期倒計時顯示等,以帶來更大的方便,而所有這些,又都是以數(shù)字化的電子時鐘為基礎的。因此,研究實用電子鐘的應用,有著非?,F(xiàn)實的意義,具有很大的實用價值。由于數(shù)字集成電路技術的發(fā)展和采用了先進的石英技術,使電子鐘具有走時準確、性能穩(wěn)定、攜帶方便等優(yōu)點,它還用于計時、自動報時與自動控制等各個領域?,F(xiàn)在市場上已有現(xiàn)成的電子鐘集成電路芯片出售,價格便宜,使用也靈活,如可以隨意設置時、分、秒的輸出,改變顯示數(shù)字的大小等,并且由于集成電路技術的發(fā)展,特別是MOS 集成電路技術的發(fā)展,使電子鐘具有體積小、攜帶方便的特點,這里介紹的實用電子鐘可以滿足使用者的一些
7、基本要求,輸出方式靈活、功耗低、計時準確、性能穩(wěn)定、維護方便等優(yōu)點。實用電子鐘是一個時間控制系統(tǒng),既能作為一般的時間顯示器,也可作為一個定時控制器,驅動負載或顯示信息,同時可以根據(jù)需要擴展其功能。在此項目的設計研究過程中需綜合運用所學的數(shù)字電子技術、單片機原理與應用等課程的知識,掌握實用電子鐘的設計、組裝與調(diào)試方法,利用現(xiàn)代的單片機等新電子技術以與現(xiàn)代的設計手段,系統(tǒng)地培養(yǎng)了綜合設計、操作調(diào)試、故障處理的能力,達到綜合素質以與創(chuàng)新能力的提高。1 設計思路與流程1.1 功能分析(1)時間、日期顯示:系統(tǒng)采用24小時制。正常情況下,系統(tǒng)顯示當前日期、時間,由LCD顯示。(2)鬧鈴功能:當系統(tǒng)時間與
8、用戶設置時間一致時,鬧鈴報警。報警過程中可以按下按鍵停止報警。(3)設置功能:用戶可以對時間、日期、星期與鬧鈴時間進行設置。用戶連續(xù)按下SET鍵,依次進入日期設置、星期設置、時間設置、鬧鈴設置、退出。鬧鈴時間可調(diào)小時和分鐘。在進行設置時,光標停留在相應位,按下Num_up鍵、Num_down鍵對數(shù)值進行加、減調(diào)整。通過Next鍵,在各個數(shù)位間移動。1.2 系統(tǒng)模塊圖由功能分析,電子時鐘系統(tǒng)分為鍵盤模塊、顯示模塊、鬧鈴模塊、時鐘部分、電源模塊和單片機模塊,考慮成本時鐘模塊可由單片機部計數(shù)器模擬實現(xiàn)。見如圖1。(1)鍵盤模塊有四個按鍵,分別是Set,Next,Num_up,Num_down(2)顯
9、示模塊負責顯示系統(tǒng)的日期、星期、時間、加上分隔符。(3)鬧鈴模塊采用蜂鳴器實現(xiàn)。(4)電源模塊采用+5V直流供電。(5)單片機模塊部計數(shù)器負責時鐘,通過程序模擬生成時間走時。同時負責掃描鍵盤,并將時間送LCD顯示。 圖12 硬件電路 2.1 主要器件 系統(tǒng)中主要可編程器件為STC89C52RC單片機,外圍器件包括:蜂鳴器,LCD1602液晶。2.1.1 STC89C52單片機STC89C52是由宏晶科技生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應用系統(tǒng)
10、提供高靈活、超有效的解決方案。 具有以下標準功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時器,置4KB EEPROM,MAX810復位電路,2個16 位 定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口。另外STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下, 圖2.1RAM容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35MHz,6T/12T可選。引腳分布圖見圖2.1。2.1.2 LCD1602液晶
11、1602液晶也叫1602字符型液晶(見圖3),它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形(用 圖2.2自定義CGRAM,顯示效果也不好)。 1602LCD是指顯示的容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。(1)接口信號說明(圖2.2.1)圖2.2.11602采用標準的16腳接口(2)RAM地址映射圖(圖2.2.2)控制器部帶有80B的RAM緩沖區(qū),對應關系如圖圖2
12、.2.2(3)數(shù)據(jù)指針設置(圖2.2.3)控制器部設有一個數(shù)據(jù)地址指針,用戶可以通過他們訪問部的全部80B的RAM。圖2.2.3(4)其他設置(圖2.2.4)圖2.2.4(5)初始化設置 顯示模式設置(圖2.2.51)圖2.2.51顯示開/關與光標設置(圖2.2.52)圖2.2.52(6)寫操作時序(圖2.2.6)分析時序圖可知操作1602液晶的流程如下:通過RS確定是寫數(shù)據(jù)還是寫命令。寫命令包括使液晶的光標顯示/不顯示、光標閃爍/不閃爍、需/不需要移屏、在液晶的什么位置顯示,等等。讀/寫控制端設置為寫模式,即低電平。將數(shù)據(jù)或命令送達數(shù)據(jù)線上。給E一個高脈沖將數(shù)據(jù)送入液晶控制器,完成寫操作。圖
13、2.2.63 電路原理圖按照功能模塊框圖,電子鐘分為按鍵電路、顯示電路、鬧鈴電路以與單片機相關電路。且單片機電路是整個系統(tǒng)的主控電路。3.1 單片機電路單片機電路主要由單片機電路(圖3.1)、震蕩電路組成。電路圖如下:圖3.1震蕩電路(圖3.1左)與復位電路(圖3.1右)圖3.1P2口的P2.0P2.3用于接按鍵。P3.5用于接蜂鳴器。P0口用于接LCD1602的714口。P2.5、P2.6、P2.7分別接LCD的RS、RW、EN口。3.2 電源指示電路(圖3.2)由一個LED指示電源接通狀態(tài)。圖3.23.3 按鍵電路(圖3.3左)由于外部設備并不復雜,為方便布線,采用獨立按鍵。3.4 鬧鈴電
14、路(圖3.3中)鬧鈴電路用于提供鬧鈴報警,主要由蜂鳴器構成。單片機通過控制三極管的導通與截止,從而控制蜂鳴器的鳴叫。3.5 LCD電路(圖3.3右)圖3.3由可調(diào)電阻調(diào)節(jié)LCD背光亮度以達到顯示清晰。4 程序設計4.1 程序設計容(1)由單片機部計數(shù)器模擬時鐘的走時,通過部中斷返回信息。(2)按鍵掃描程序。(3)處理數(shù)據(jù)并輸出給1602顯示程序。(4)蜂鳴器控制程序。4.2 c語言源程序源程序與流程圖參見附錄。5 心得體會本次課程設計從選題到最后的實際成型經(jīng)歷了近一個多星期,中間的過程并不一直都很順利。雖然接觸單片機也有半年的時間了,自己實際動手完整的完成一個小項目,這還是第一次。從選題、確定
15、方案、仿真、繪圖再到繪制PCB以與制版,中間需要收集許多資料,在閱讀資料的過程中找到了理論與實際應用的結合點,這引起了我極大的興趣。為確保實際成品的成功,我借用了Proteus仿真軟件進行仿真,這極大的提高了設計與調(diào)試的效率。程序的調(diào)試是一個相對緩慢的過程,這中間不斷會有新的想法涌現(xiàn)。在達到目標功能的前提下,我盡量地優(yōu)化程序,希望達到更高的效率。由于受到自身知識水平的限制,雖然盡了最大努力,最終成型的程序滿足基本要求但并未達到自己的期望的地步,稍有遺憾。通過這次課程設計,我深切的體會到理論與應用之間還是存在很大的差距。將理論應用到實際,其中的過程可能并不如自己想象的順利。但當順利地完成自己設想
16、的效果時,會發(fā)現(xiàn)最大的樂趣就是解決問題的過程。 辭平時忙于學習,很少有機會自己實際動手進行一些小的電子制作。感學院提供這樣一個讓我們親自動手的機會,同時也十分感激*老師對我們的理解,開放性的題目給了我們更多的發(fā)揮空間。操作過程中我得到了同學的耐心幫助。在我遇到難題時,是他們給了我好的想法,有了他們的幫助這個制作才得以順利完成,在此一并表示感。參考文獻1 郭天祥.新概念51單片機c語言教程M.電子工業(yè),2009,147156.2 坤、洪波、憲棟.51單片機C語言應用開發(fā)技術大全M.人民郵電,2012,5305393 賀敬凱、德新、管明祥.單片機系統(tǒng)設計、仿真與應用基于Keil和Proteus仿真
17、平臺M.電子科技大學,2011,137150.附 錄PCB布線圖(附圖1)附圖1Proteus仿真圖(附圖2)程序流程圖(附圖3):附圖3C語言源代碼/*程序說明:可調(diào)時鬧鈴*/#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table0=" 2000-00-00 Mon "uchar code table1=" 00:00:00 "uchar count;uint Alarm_time2=55,55;uint Time_buff2
18、=61,25;/給初值超過小時和分鐘的圍,避免鬧鈴時間在00時的沖突char shi,fen,miao;char year_H,year_L,month,day;sbit bell=P35;sbit Rs=P25;sbit Rw=P26;sbit lcd_en=P27;sbit Set=P20;sbit Next=P21;/Next鍵指示修改位置sbit Num_up=P22;/修改位數(shù)字加sbit Num_down=P23;/修改位數(shù)字減/*延時程序1ms*/void delay(uint ms)uint i,j;for(i=ms;i>0;i-)for(j=120;j>0;j-)
19、;/*LCD的寫數(shù)據(jù)和寫指令程序段*/void write_(uchar )Rs=0;P0=;delay(5);lcd_en=1;delay(5);lcd_en=0;void write_data(uchar date)Rs=1;P0=date;delay(5);lcd_en=1;delay(5);lcd_en=0;/*寫入時、分、秒、星期、年月日*/void write_sfm(uchar add,uchar date)uchar shi,ge;write_(0x80+0x40+add);shi=date/10;ge=date%10;write_data(0x30+shi);write_da
20、ta(0x30+ge);write_(0x80+0x40+add);void write_week(uchar week)/寫入星期write_(0x80+12);switch(week) case 1: write_data('M'); delay(5); write_data('o'); delay(5); write_data('n');break;case 2:write_data('T');delay(5);write_data('u');delay(5);write_data('e');
21、break;case 3:write_data('W');delay(5);write_data('e');delay(5);write_data('n');break;case 4:write_data('T');delay(5);write_data('h');delay(5);write_data('u');break;case 5:write_data('F');delay(5);write_data('r');delay(5);write_data('
22、;i');break;case 6:write_data('S');delay(5);write_data('a');delay(5);write_data('t');break;case 7:write_data('S');delay(5);write_data('u');delay(5);write_data('n');break; void write_nyr(uchar add,uchar date)/寫入年、月、日格式uchardate_S,date_G;date_S=date/1
23、0;date_G=date%10; write_(0x80+add);/設置所設置的十位write_data(0x30+date_S);/轉為ASCII碼delay(5);write_data(0x30+date_G);write_(0x80+add); /將游標返回/*/*鍵盤檢測*/void keyscan_set_sfm(set_alarm_flag)/當設置到分秒修改檢測next,num+,num-uchar Next_num;while(Set)if(Next=0)delay(5);if(Next=0)while(!Next);Next_num+;switch (Next_num)c
24、ase 1: write_(0x80+0x40+7);/分鐘位break;case 2:write_(0x80+0x40+4);/小時位if(set_alarm_flag=1)/調(diào)鬧鈴模式下跳過秒位的調(diào)節(jié)Next_num=0;break;case 3:if(set_alarm_flag!=1)write_(0x80+0x40+10);/非鬧鈴模式下停留在秒位Next_num=0;break; if(Num_up=0)/數(shù)字的加操作delay(5);if(Num_up=0)while(!Num_up);if(set_alarm_flag=1&&Next_num=0)Next_nu
25、m+=2;switch (Next_num)case 0: miao+;if(miao=60)miao=0;write_sfm(10,miao);break;case 1:fen+;if(fen=60)fen=0;write_sfm(7,fen);break;case 2:shi+;if(shi=24)shi=0;write_sfm(4,shi);break;if(Num_down=0)/數(shù)值的減操作delay(5);if(Num_down=0)while(!Num_down);if(set_alarm_flag=1&&Next_num=0)Next_num+=2;switch
26、 (Next_num)case 0:miao-;if(miao=-1)miao=59;write_sfm(10,miao);break;case 1:fen-;if(fen=-1)fen=59;write_sfm(7,fen);break;case 2:shi-;if(shi=-1)shi=23;write_sfm(4,shi);break;if(set_alarm_flag=0)/非調(diào)鬧鈴模式Time_buff0=fen;/將原數(shù)據(jù)保存,送緩沖區(qū)Time_buff1=shi;elseAlarm_time0=fen;Alarm_time1=shi;fen=Time_buff0;/鬧鈴時間設定完
27、成后將原數(shù)據(jù)送回給時鐘shi=Time_buff1;write_sfm(7,fen);write_sfm(4,shi);void keyscan_set_week()uchar week_count;while(Set)/當set鍵未按下則進入week檢測if(Num_up=0)delay(5);if(Num_up=0)while(!Num_up);week_count+;switch (week_count%7)case 1: write_week(1);break;case 2: write_week(2);break;case 3: write_week(3);break;case 4:
28、 write_week(4);break;case 5: write_week(5);break;case 6: write_week(6);break;case 0: write_week(7); break;write_(0x80+12);if (Num_down=0)delay(5);if(Num_down=0)while(!Num_down);week_count-;if (week_count=-1)week_count=7;switch(week_count%7)case 1: write_week(1); break;case 2: write_week(2);break;cas
29、e 3: write_week(3);break;case 4: write_week(4);break;case 5: write_week(5);break;case 6: write_week(6);break;case 0: write_week(7);break;write_(0x80+12);void keyscan_set_nyr()/用按鍵設置年月日uchar Next_num;year_H=20;while(Set)if(Next=0)delay(5);if(Next=0)while(!Next);Next_num+;switch(Next_num)case 1:write_
30、(0x80+6);break;case 2:write_(0x80+3);break;case 3:write_(0x80+1);break;case 4:write_(0x80+9);Next_num=0;break;if(Num_up=0)/加操作delay(5);if(Num_up=0)while(!Num_up);switch(Next_num)case 0: day+;if(day=32)day=1;write_nyr(9,day);break;case 1:month+;if(month=13)month=1;write_nyr(6,month);break;case 2:year
31、_L+;if(year_L=100)year_L=0;write_nyr(3,year_L);break;case 3:year_H+;if(year_H=100)year_H=0;write_nyr(1,year_H);break;if(Num_down=0)/減操作delay(5);if(Num_down=0)while(!Num_down);switch (Next_num)case 0:day-;if(day=-1)day=31;/當一開始便對day位進行減操作時,調(diào)節(jié)顯示信息if(day=0)day=31;write_nyr(9,day);break;case 1:month-;if
32、(month=-1)month=12;if(month=0)month=12;write_nyr(6,month);break;case 2:year_L-;if(year_L=-1)year_L=99;write_nyr(3,year_L);break;case 3:year_H-;if(year_H=-1)year_H=99;write_nyr(1,year_H);/*總的按鍵檢測程序*/void keyscan()uchar Set_num;if(Set=0)delay(5);if(Set=0)while(!Set);/松手檢測TR0=0;/關閉計數(shù)器中斷Set_num+;switch
33、(Set_num)case 1:write_(0x80+9);write_(0x0f);keyscan_set_nyr();/修改年、月、日break;case 2:write_(0x80+12);/修改星期keyscan_set_week();break;case 3:write_(0x80+0x40+10);/進入修改時分秒模式keyscan_set_sfm(0);break;case 4:write_(0x80+0x40);/設置鬧鈴模式write_data('A');write_data('R');write_(0x80+0x40+10);write_data(' ');write_data(' ');write_(0x80+0x40+4);keyscan_set_sfm(1);break;case 5:write_(0x80+0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 法律服務行業(yè)法律顧問服務協(xié)議
- 產(chǎn)業(yè)園物業(yè)服務合同
- 古詩文登高解讀與教學方案設計
- 個人權益保護網(wǎng)絡平臺使用協(xié)議
- 企業(yè)級網(wǎng)絡安全預防預案
- 裝修工程擔保合同
- 《宋代書法欣賞:大學書法藝術課程教案》
- 在線教育行業(yè)分析模擬試題集
- 股權擔保協(xié)議書規(guī)范
- 企業(yè)社會責任年度演講致辭草稿
- 服裝倉庫管理制度及流程
- 架子工安全教育培訓試題(附答案)
- 《高血壓5項化驗》課件
- 一中師德考核評估制度
- 肋骨骨折護理個案查房
- 分布式網(wǎng)絡處理方案
- CNAS-CL02-A001:2023 醫(yī)學實驗室質量和能力認可準則的應用要求
- 血管外科護理課件
- 鐵路機車檢修坑施工方案
- 數(shù)字化轉型中的知識管理
- 安徽高中畢業(yè)生登記表
評論
0/150
提交評論