![多功能電子鐘創(chuàng)新設計說明書_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/3/ecb08494-19fb-4ccd-b798-0083390d3d61/ecb08494-19fb-4ccd-b798-0083390d3d611.gif)
![多功能電子鐘創(chuàng)新設計說明書_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/3/ecb08494-19fb-4ccd-b798-0083390d3d61/ecb08494-19fb-4ccd-b798-0083390d3d612.gif)
![多功能電子鐘創(chuàng)新設計說明書_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/3/ecb08494-19fb-4ccd-b798-0083390d3d61/ecb08494-19fb-4ccd-b798-0083390d3d613.gif)
![多功能電子鐘創(chuàng)新設計說明書_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/3/ecb08494-19fb-4ccd-b798-0083390d3d61/ecb08494-19fb-4ccd-b798-0083390d3d614.gif)
![多功能電子鐘創(chuàng)新設計說明書_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/3/ecb08494-19fb-4ccd-b798-0083390d3d61/ecb08494-19fb-4ccd-b798-0083390d3d615.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 . . . 電氣工程學院創(chuàng) 新 設 計 說 明 書題目: 多功能電子鐘 學院(系): 電氣工程學院 年級專業(yè): 10級過程控制2班 學 號: 3 學生: 卓策 燕山大學課程設計(論文)任務書院(系):電氣工程學院 基層教學單位:電子實驗中心 學 號學生專業(yè)(班級)設計題目多功能電子鐘設計技術參數(shù)使用數(shù)碼管顯示時間;具有鬧鐘功能設置、取消功能;具有時間調整功能設計要求時間可以設置24小時或12小時模式;時間可以使用按鍵調整;鬧鐘可以使用按鍵設置、取消;鬧鐘狀態(tài)使用第六位位數(shù)碼管顯示是否工作。時間顯示模式使用第五位數(shù)碼管顯示。工作量學會使用IAR軟件;獨立完成電路設計,程序設計、連接電路和調試;
2、參加答辯并書寫任務書。工作計劃第5章 了解單片機的基本知識,學習使用軟件,下發(fā)任務書,開始電路設計;第6章 學習使用相關軟件,繼續(xù)電路設計;第7章 完成電路設計;第8章 編程下載、連接電路、調試和驗收;第9章 答辯并書寫任務書。參考資料1 強錫富. 傳感器. 機械工業(yè),2001年2 科杰. 新編傳感器技術手冊. 國防工業(yè),2002年3 賈伯年. 傳感器技術. 東南大學,1992指導教師簽字基層教學單位主任簽字說明:此表一式四份,學生、指導教師、基層教學單位、系部各一份。 年 月 日 目 錄一、 設計目的、設計題目二、 設計任務、功能描述三、 硬件原理分析四、 軟件設計五、 程序清單 六、 心得
3、體會摘要本設計從日常生活中常見的事物入手,通過對電子時鐘的設計,讓我們認識到單片機已經深入到我們生活的每個領域,該設計不僅可以鍛煉我們的動手能力,而且可以加深我們對單片機的認識和激發(fā)我們對未知科學領域的探索。本文利用單片機實現(xiàn)數(shù)字時鐘計時功能的主要容。它體積小,成本低、功能強、使用方便、可靠性高等一系列優(yōu)點,廣泛應用于智能產業(yè)和工業(yè)自動化上。本次設計采用獨立式按鍵進行時間調整,其中STM8S是核心元件,同時采用數(shù)碼管LED動態(tài)顯示“時”,“分”,“秒”的現(xiàn)代計時裝置。與傳統(tǒng)機械表相比,它具有走時精確,顯示直觀等特點。它的計時周期為24小時,顯滿刻度為“23時59分59秒”,另外利用DS1302
4、具有校時功能,斷電后有記憶功能,恢復供電時可實現(xiàn)計時同步等特點。該系統(tǒng)同時具有硬件設計簡單、工作穩(wěn)定性高、價格低廉等優(yōu)點。關鍵詞:STM8S; LED數(shù)碼管;DS1302芯片;一、設計目的、設計題目本設計的目的是設計一個實用的電子時鐘,該時鐘能夠實現(xiàn)日常的時鐘顯示,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,同時具有時鐘調整、鬧鐘等功能。二、 設計任務、功能描述整體設計任務:本電子時鐘設計首要的工作是結合以往所學的單片機程序編寫理論和編寫規(guī)則來編寫電子時鐘的軟件部分,編寫時要結合所配的STM8S105芯片的管腳功能和其他硬件電路,如DS1302時鐘芯片和LCD1602液晶顯
5、示屏,該部分運用STVD單片機軟件來完成。在編寫完軟件并檢測完正確后用仿真硬件檢測運行檢測程序是否正確,并調試。待這一切工作做好后再利用系統(tǒng)板硬件電路來實踐實現(xiàn)軟件功能與硬件的結合。三、 硬件原理分析電路設計分析電路原理設計是基于小系統(tǒng)包括電源電路、復位電路、按鍵電路、時鐘電路、LCD液晶顯示驅動電路、輸出控制電路。電源部分是用直流電源經變壓來提供的5V,晶體振蕩器采用的是16MHz的石英晶體振蕩器。部分硬件設計:(1)本設計采用DS1302實時時鐘芯片來進行計時,并將1302的數(shù)據(jù)輸入單片機進行處理,送入LCD1602液晶顯示屏進行顯示。(2)用四個電位按鍵來實現(xiàn)對電子時鐘的調試工作,當按第
6、一下總控鍵時進入中斷程序,即時鐘的調整狀態(tài),有兩個電位按鍵分別來調整時鐘的加和減;第四個按鍵用來調整時分秒日月年,按一下調整秒,連按兩下調整分,按三下調整時,四下調整日,五下調整月,六下調整年,七下退出時間設置。(3)用一個按鍵和其他部件組成的復位電路與芯片連接來實現(xiàn)整個程序與硬件的重新復位功能。部分電路圖如下:1.1復位電路本次設計采用按鍵電平復位,按鍵電平復位相當于按復位鍵后,復位端通過電阻與VDD電源接通,如下圖:1.2振蕩器和時鐘電路設計本次設計采用常用的部時鐘方式接法:通過在引腳OSCIN和OSCOUT兩端跨接晶體或瓷諧振器,再利用芯片部的振蕩電路,就構成了穩(wěn)定的自激振蕩器,其發(fā)出的
7、脈沖直接送入部時鐘電路,如圖所示,外接晶振時,C1和C2的值通常選擇為20-30pf。C1、C2對頻率有微調作用,影響振蕩的穩(wěn)定性和起振速度。所采用的晶體或瓷諧振器得頻率選擇0-24MHz。為了減小寄生電容,更好的保證振蕩器穩(wěn)定、可靠的工作,諧振器和電容贏盡可能與單片機芯片靠近安裝。1.3電源因為該電路所需電壓為5v,可直接用電池供應或也可以用直流電源供應,但需經過變壓才行。 STM8S105S芯片略圖1.4 DS1302實時時鐘芯片DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2
8、.5V5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時提供了對后背電源進行涓細電流充電的能力。DS1302的引腳排列中Vcc1為后備電源,VCC2為主電源。在主電源關閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc10.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和
9、X2是振蕩源,外接32.768kHz晶振。RST是復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細說明。SCLK始終是輸入端。電路圖如下:1.4 LC
10、D1602液晶屏顯示電路1602是一種字符型液晶顯示模塊,專門用于顯示字母、數(shù)字、符號等點陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。下面以某公司的1602字符型液晶顯示器為例,介紹其用法。一般1602字符型液晶顯示器實物如圖1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應用中并無差別,兩者尺寸差別如下圖1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如下:第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比
11、度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負極1.5輸出控制電路將PB口用于單片機和LCD顯示器的數(shù)據(jù)傳輸通道,如下圖所示,通過控制
12、LCD的讀寫控制端將1302的數(shù)據(jù)顯示出來。1.6整體布局圖四、軟件設計分析1、地址空間與端口分配_Bool rs PC_ODR:1; /PC作為LCD的控制端,設置為輸入_Bool rw PC_ODR:2;_Bool en PC_ODR:3;_Bool sclk PA_ODR:4; /串行時鐘,輸入輸出控制_Bool dio PA_ODR:5; /三線接口時的數(shù)據(jù)線_Bool id PA_IDR:5;_Bool ce PA_ODR:6; /作為復位端口_Bool ID1 PG_IDR:0; /將PD6引腳設置為外部中斷的輸入引腳2、總體架構說明該時鐘程序設計思路如下:(1)、在程序頭將設計中
13、的一些IO口進行分配并注釋。(2)、初始化程序,對單片機的IO口設置為輸入輸出等,對1302,1602的參數(shù)進行設置,如設定時鐘運行為24小時制;將一些未到時鐘設計功能的功能端口關閉等。(3)開始主程序進行程序掃描,先掃初始化字子程序初始化DS1302和LCD1602,啟動時鐘芯片進行計時,初始化1602的顯示方式,將分配好的時分秒等數(shù)字調入到顯示子程序中。>顯示子程序通過分配的空間對應口將DS1302時鐘芯片的數(shù)據(jù)顯示相應的時分秒,年月日等。>進入按鍵掃描,判斷按鍵是否有變動,若有就根據(jù)設計程序對相應的按鍵按入次數(shù)而進行實現(xiàn)相應的功能。如進入時間調整,中斷進入、退出等。>最
14、后返回主程序頭重新依次掃描。顯示過程設有消隱,按鍵通過軟件去斗。(4)、子程序部分。在主程序的調用下依據(jù)不同的子程序工能而編寫子程序,有多級嵌套。這些子程序包括顯示子程序、延時子程序、時間計數(shù)子程序、按鍵處理子程序、調時間子程序等。3、各子程序功能顯示子程序:將時鐘芯片1302的時鐘數(shù)據(jù)送入單片機進行處理再送入LCD1602進行顯示,顯示格式為:年/月/日/時/分/秒/星期。延時子程序:該子程序是為了實現(xiàn)1302與1602在讀寫過程中的上升下降沿讓芯片有足夠的讀寫時間,以與字符有足夠的顯示時間,同時作為按鍵開關掃描去抖的延遲時間。時間計數(shù)子程序:該程序功能是調動DS1302的初始化程序、讀寫程
15、序,并將其部數(shù)據(jù)送入單片機進行處理。DS1302選擇24小時工作方式,秒計數(shù),走到59后進位分,后變00從新開始計時,分走到59后進位時,分從新開始00計時,時走到23,分走到59,秒走到59后進入從新日期周期計時。按鍵處理子程序:該程序進行按鍵處理的功能判斷分別對時分秒、年月日等進行調整已經中斷的進入與退出等。4、程序#include "stm8s.h"void delay(int n);void Write_ds1302(char addr,char dat);int Read_ds1302(char addr);void write_sfm(char add,char
16、 dat);void lcd_wcom(char );void write_sfm1(char add,char dat);void jia_key(char rd,char wd,char fd,char fen);void hjia_key(char rd,char wd,char fd,char shi);void rjia_key(char rd,char wd,char fd,char day);void yjia_key(char rd,char wd,char fd,char yue); void njia_key(char rd,char wd,char fd,char nia
17、n);char n1,n2,n3;char u0,u1,u2,u3;char table="20 - - " char table1=" : : "char table2='0','1','2','3','4','5','6','7','8','9'char table3="MonTueWedThuFriSatSun"char table4=" Happy birth
18、day " /16個字符char table5="<<<<<to you>>>>>"#define uint unsigned int #define uchar unsigned char #define PB PB_ODR#define Write_second 0X80 /秒寫寄存器地址#define Write_minute 0X82/分寫寄存器地址#define Write_hour 0X84/時寫寄存器地址#define Write_day 0X86/日寫寄存器地址#define Write_
19、month 0X88/月寫寄存器地址#define Write_week 0X8A/周寫寄存器地址#define Write_year 0X8C/年寫寄存器地址#define Write_protect 0X8E/寫保護字節(jié)寫寄存器地址#define Write_chongdian 0x90 /慢充電寄存器地址#define Read_second 0X81/秒讀寄存器地址#define Read_minute 0X83/分讀寄存器地址#define Read_hour 0X85/時讀寄存器地址#define Read_day 0X87/日讀寄存器地址#define Read_month 0X
20、89/月讀寄存器地址#define Read_week 0X8B/周讀寄存器地址#define Read_year 0X8D/年讀寄存器地址_Bool rs PC_ODR:1; /pc作為lcd的控制端,設置為輸入_Bool rw PC_ODR:2;_Bool en PC_ODR:3;_Bool sclk PA_ODR:4; /串行時鐘,輸入輸出控制_Bool dio PA_ODR:5; /三線接口時的數(shù)據(jù)線_Bool id PA_IDR:5;_Bool ce PA_ODR:6; /復位_Bool da_od PA_DDR:5;_Bool da_CR1 PA_CR1:5;_Bool da_CR
21、2 PA_CR2:5;_Bool ID1 PG_IDR:0; /將Pd6引腳設置我外部中斷的輸入引腳_Bool ID2 PD_IDR:5;_Bool ID3 PG_IDR:1;_Bool ID4 PD_IDR:6;/鍵盤的輸入/int shfm_key(void) uchar lshi;uchar an=0,n=0;doif(!ID1)delay(6);if(!ID1)while(!ID1);lshi=1;an+;if(an=1)Write_ds1302(Write_second,0x80); /先暫停時鐘秒u2=Read_ds1302(Read_second );u2=(u2&0x7
22、0)>>4)*10+(u2&0x0F);write_sfm(6,u2); lcd_wcom(0x80+0x40+7);lcd_wcom(0x38);lcd_wcom(0x0f); /顯示功能開,有光標if(an=2)u1=Read_ds1302(Read_minute);u1=(u1&0x70)>>4)*10+(u1&0x0F);write_sfm(3,u1); lcd_wcom(0x80+0x40+4); /顯示分lcd_wcom(0x38);lcd_wcom(0x0f); /顯示功能開,有光標if(an=3)u0=Read_ds1302(Re
23、ad_hour);u0=(u0&0x70)>>4)*10+(u0&0x0F);write_sfm(0,u0); lcd_wcom(0x80+0x40+1); /顯示時lcd_wcom(0x38);lcd_wcom(0x0f); /顯示功能開,有光標if(an=4)n3=Read_ds1302(Read_day);n3=(n3&0x70)>>4)*10+(n3&0x0F);write_sfm1(8,n3); lcd_wcom(0x80+9); /顯示日lcd_wcom(0x38);lcd_wcom(0x0f); /顯示功能開,有光標if(a
24、n=5)n2=Read_ds1302(Read_month);n2=(n2&0x70)>>4)*10+(n2&0x0F);write_sfm1(5,n2); lcd_wcom(0x80+6); /顯示月lcd_wcom(0x38);lcd_wcom(0x0f); /顯示功能開,有光標 if(an=6)n1=Read_ds1302(Read_year);n1=(n1&0x70)>>4)*10+(n1&0x0F);write_sfm1(2,n1);lcd_wcom(0x80+3); /顯示年lcd_wcom(0x38);lcd_wcom(0x
25、0f); /顯示功能開,有光標if(an=7)lshi=0;an=0;Write_ds1302(Write_second,0x00); /從新開啟時鐘lcd_wcom(0x38);lcd_wcom(0x0c);n=1; switch(an)case 1:if(ID2=0)delay(4);if(ID2=0) while(!ID2);asm("NOP");jia_key(Write_second,Read_second,6,1);asm("NOP");if(ID3=0) /秒的減 delay(4);if(ID3=0) while(!ID3);asm(&qu
26、ot;NOP");jia_key(Write_second,Read_second,6,0);asm("NOP");break;case 2 :if(ID2=0) /分的加delay(4);if(ID2=0)while(!ID2);asm("NOP");jia_key(Write_minute ,Read_minute,3,1);asm("NOP");if(ID3=0) /分的減delay(4);if(ID3=0) while(!ID3);asm("NOP");jia_key(Write_minute ,
27、Read_minute,3,0);asm("NOP"); break;case 3 :if(ID2=0) /時的加 delay(4);if(ID2=0) while(!ID2);asm("NOP");hjia_key(Write_hour,Read_hour,0,1);asm("NOP"); if(ID3=0) /小時的減 delay(4);if(ID3=0) while(!ID3);asm("NOP");hjia_key(Write_hour,Read_hour,0,0);asm("NOP")
28、; break;case 4: if(ID2=0) /日的加 delay(4);if(ID2=0) while(!ID2);asm("NOP");rjia_key(Write_day,Read_day,8,1);asm("NOP");if (ID3=0) /日的減 delay(4);if(ID3=0) while(!ID3);asm("NOP");rjia_key(Write_day,Read_day,8,0);asm("NOP");break;case 5: if(ID2=0) /月的加delay(4);if(I
29、D2=0) while(!ID2);asm("NOP");yjia_key(Write_month ,Read_month,5,1);asm("NOP"); if(ID3=0) /月的減 delay(4);if(ID3=0) while(!ID3);asm("NOP");yjia_key(Write_month ,Read_month,5,0);asm("NOP"); break;case 6:if(ID2=0) /年的加 delay(4);if(ID2=0) while(!ID2);asm("NOP&q
30、uot;);njia_key(Write_year,Read_year,2,1);asm("NOP"); if(ID3=0) /年的減delay(4);if(ID3=0) while(!ID3);asm("NOP");njia_key(Write_year,Read_year,2,0);_asm("NOP"); break; while(lshi=1);asm("NOP");return(n);return(n); void Write_ds1302(char addr,char dat)char i ;PC_DD
31、R |=0xFF;PC_CR1 |=0xFF;PC_CR2 |=0X00;ce = 0; /先復位sclk = 0; /清零,保持io口的低電平,以待數(shù)據(jù)的寫入ce = 1; /置1,開始寫數(shù)據(jù)/發(fā)送地址for(i =0;i<8;i+)dio= addr&0x01; /將一位bcd碼的數(shù)據(jù)送給io口addr=addr >>1; /右移一位sclk =1; /產生上升沿,發(fā)送數(shù)據(jù)sclk =0;/發(fā)送數(shù)據(jù)for(i=0;i<8;i+) dio= dat&0x01; /將一位bcd碼的地址數(shù)據(jù)送給io口dat =dat>>1;sclk=1; /產
32、生上升沿,發(fā)送數(shù)據(jù)delay(1);sclk=0;ce = 0;/讀操作/int Read_ds1302(char addr) char i;char k;char dat;da_od=0;da_CR1=0;da_CR2=0;ce=0;sclk=0;ce=1;/發(fā)送地址for(i=0;i<8;i+)sclk=0;delay(10);if(addr&0x01)dio=1;else dio=0;addr>>=1;sclk=1;delay(2);da_od=0;da_CR1=0;da_CR2=0;/讀取數(shù)據(jù)/for(k=0;k<8;k+) dat>>=1;
33、sclk=1;delay(2);sclk=0;delay(2); if(id=0)dat&=0x7f;else dat |= 0x80 ;sclk=1;ce=0;return(dat);/IO口的初始化/void GPIO_Init(void) PC_DDR |=0X0F;PC_CR1 |=0X0F;PC_CR2 |=0X00;PG_DDR |=0X00;PG_CR1 |=0X03;PG_CR2 |=0X00;PD_DDR |=0X1C;PD_CR1 |=0X0F;EXTI_CR1|=0X00;ITC_SPR2|=0X30;PD_CR2 |=0X40;PA_DDR |=0XFF;PA_
34、CR1 |=0XFF;PA_CR2 |=0X00;PB_DDR |=0XFF;PB_CR1 |=0XFF;PB_CR2 |=0X00;/延時函數(shù)/void delay(int n) int x,y; for(x=n;x>0;x-) for(y=110;y>0;y-); /1602寫命令函/void lcd_wcom(char )rs=0; /選擇指令寄存器 rw=0; /選擇寫 PB=; /把命令字送入PBdelay(5); /延時一小會兒,讓1602準備接收數(shù)據(jù) en=1; /使能線電平變化,命令送入1602的8位數(shù)據(jù)口 en=0; /1602寫數(shù)據(jù)函數(shù) /void lcd_wd
35、at(uchar dat) rs=1; /選擇數(shù)據(jù)寄存器 rw=0; /選擇寫 PB=dat; /把要顯示的數(shù)據(jù)送入P2 delay(5); /延時一小會兒,讓1602準備接收數(shù)據(jù) en=1; /使能線電平變化,數(shù)據(jù)送入1602的8位數(shù)據(jù)?en=0; /1602初始化函數(shù)/void lcd_init(void) uchar a,k;delay(15); /等待電源穩(wěn)定lcd_wcom(0x38); /8位數(shù)據(jù),雙列,5*7字形 lcd_wcom(0x0c); /開啟顯示屏,關光標,光標不閃爍 lcd_wcom(0x06); /顯示地址遞增,即寫一個數(shù)據(jù)后顯示位置右移一位 lcd_wcom(0x
36、01); /清屏 /顯示第一行/lcd_wcom(0x80);for(a=0;a<15;a+)lcd_wdat(tablea);delay(5);/顯示第二行/lcd_wcom(0x80+0x40);for(k=0;k<8;k+) lcd_wdat(table1k);delay(5);/年月日時分秒輸入的子函數(shù)/秒分的加減子函數(shù)/輸入/void jia_key(char rd,char wd,uchar fd,char fen)u1=Read_ds1302(wd);_asm("nop");u1=(u1&0x70)>>4)*10+(u1&
37、;0x0F);if(fen=1) u1+;if(u1=60) u1=0;else u1-;if(u1+1)=0) u1=59;if(u1>59) u1=59;Write_ds1302(rd,(u1/10)<<4 | (u1%10);/秒write_sfm(fd,u1); lcd_wcom(0x80+0x40+fd);/顯示分lcd_wcom(0x38);lcd_wcom(0x0f);/顯示功能開,有光標/時的加減子函數(shù)/輸入/void hjia_key(char rd,char wd,char fd,char shi)u0=Read_ds1302(wd);u0=(u0&
38、;0x70)>>4)*10+(u0&0x0F);if(shi=1) u0+;if(u0=24)u0=0;else u0-;if(u0+1)=0) u0=23; if(u0>23) u0=23; Write_ds1302(rd,(u0/10)<<4 | (u0%10); /秒_asm("nop");write_sfm(fd,u0);lcd_wcom(0x80+0x40+fd); /顯示分_asm("nop");lcd_wcom(0x38);lcd_wcom(0x0f); /顯示功能開,有光標lcd_wcom(0x80+
39、0x40+fd);/日的加減子函數(shù)/輸入/void rjia_key(char rd,char wd,char fd,char day) n3=Read_ds1302(wd); n3=(n3&0x70)>>4)*10+(n3&0x0F);if (day=1) n3+;if(n3=32) n3=0;elsen3-;if(n3+1)=0)n3=31;_asm("nop");if(n3>31) n3=31;Write_ds1302(rd,(n3/10)<<4 | (n3%10);asm("nop");write_s
40、fm1(fd,n3); _asm("nop");lcd_wcom(0x80+fd); /顯示lcd_wcom(0x38);lcd_wcom(0x0f); /顯示功能開,有光標/ 月的子函數(shù)/輸入/void yjia_key(char rd,char wd,char fd,char yue)n2=Read_ds1302(wd);n2=(n2&0x70)>>4)*10+(n2&0x0F);asm("nop");if(yue=1) n2+;if(n2=13) n2=0; elsen2-;if(n2+1)=0) n2=12;if(n2
41、>12) n2=12; Write_ds1302(rd,(n2/10)<<4 | (n2%10);_asm("nop");write_sfm1(fd,n2); _asm("nop");lcd_wcom(0x80+fd);_asm("nop");lcd_wcom(0x38);lcd_wcom(0x0f);/顯示功能開,有光標/ 年的子函數(shù)/輸入/ void njia_key(char rd,uchar wd,char fd,char nian) n1=Read_ds1302(wd); n1=(n1&0xF0)&
42、gt;>4)*10+(n1&0x0F); if (nian=1) n1+;if(n1=100) n1=0; else n1-; if(n1+1)=0) n1=99; if(n1>99) n1=99; Write_ds1302(rd,(n1/10)<<4 | (n1%10);write_sfm1(fd,n1); lcd_wcom(0x80+fd); /顯示lcd_wcom(0x38);lcd_wcom(0x0f); /顯示功能開,有光標lcd_wcom(0x80+fd);/初始化1302,設置開始時候的時分秒void Init_DS1302(void)Write_
43、ds1302(Write_protect,0x00);Write_ds1302(Write_year,0x0A);/年Write_ds1302(Write_month,0XC); /月Write_ds1302(Write_day,0X22); /日Write_ds1302(Write_hour,0X23); /小時Write_ds1302(Write_minute,0X59); /分Write_ds1302(Write_second,0X00); /秒Write_ds1302(Write_protect,0x80); /關閉寄存器操作;void write_sfm(char add,char
44、dat) char shi,ge;shi=dat/10;ge=dat%10;lcd_wcom(0x80+0x40+add);lcd_wdat(table2shi); lcd_wdat(table2ge);void write_sfm1(char add,char dat) char shi,ge;shi=dat/10;ge=dat%10;lcd_wcom(0x80+add);lcd_wdat(table2shi);lcd_wdat(table2ge);void write_sfm2(uchar add,uchar dat) uchar k,ge;ge=dat%10;lcd_wcom(0x80+
45、add);for(k=(ge*3-3);k<(ge*3);k+) lcd_wdat(table3k);delay(5);void lcd_init1(void) /顯示祝福語 uchar i,k=0;PD_ODR=0x11;lcd_wcom(0x80);for(i=0;i<16;i+) lcd_wdat(table4i); lcd_wcom(0x80+0x40);for(k=0;k<16;k+) lcd_wdat(table5k);delay(100); PD_ODR=0X18;void naozhong(uchar hour1,uchar day1,uchar month1) if(hour1=00) /判斷是否時相等 if(day1=23) /判斷日是否相等if(month1=12) /判斷月是否相等lcd_init1();lcd_wcom(0x01); /清屏 lcd_init();PD_ODR=0X00;return; void read_shzh(void) u2=Read_ds1302(Read_second ); /把讀取的數(shù)據(jù)暫時儲存在u2 u2=(u2&0x70)>>4)*10+(u2&0x0F); /轉十進制的bcd碼換成十進制 write_sfm(6,u2); u1=Read_ds1302(Rea
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023三年級英語上冊 Module 1 Getting to know you Unit 3 Are you Kitty說課稿 牛津滬教版(三起)
- 21《古詩三首》說課稿-2024-2025學年語文四年級上冊統(tǒng)編版001
- 6《摸一摸》說課稿-2024-2025學年科學一年級上冊青島版
- 2024-2025學年高中生物 第3章 植物的激素調節(jié) 第1節(jié) 植物生長素的發(fā)現(xiàn)說課稿 新人教版必修3001
- 2024年五年級英語下冊 Module 7 Unit 2 I will be home at seven oclock說課稿 外研版(三起)
- 2025住宅裝修物業(yè)管理合同(合同范本)
- 8《池子與河流》(說課稿)-2023-2024學年統(tǒng)編版語文三年級下冊
- 2025鍋爐拆除安全施工合同
- 2025有關電梯廣告的合同范本
- Unit 6 Disaster and Hope Understanding ideas 說課稿-2023-2024學年外研版高中英語(2019)必修第三冊
- 2024年農村述職報告
- 2025-2030年中國減肥連鎖市場發(fā)展前景調研及投資戰(zhàn)略分析報告
- 2024年湖南司法警官職業(yè)學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 女性私密項目培訓
- 2025年麗水龍泉市招商局招考招商引資工作人員高頻重點提升(共500題)附帶答案詳解
- 《加拿大概況》課件
- 期末復習之一般疑問句、否定句、特殊疑問句練習(畫線部分提問)(無答案)人教版(2024)七年級英語上冊
- TD-T 1048-2016耕作層土壤剝離利用技術規(guī)范
- 抖音賬號租賃合同協(xié)議
- 2024年高考真題-化學(重慶卷) 含解析
- 三甲醫(yī)院臨床試驗機構-31 V00 專業(yè)組備案及考核SOP
評論
0/150
提交評論