版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上目 錄專心-專注-專業(yè)摘 要隨著科技的快速發(fā)展,時間的流逝,至從觀太陽、擺鐘到現在電子鐘,人類不斷研究,不斷創(chuàng)新紀錄。美國DALLAS公司推出的具有涓細電流充電能的低功耗實時時鐘電路DS130。它可以對年、月、日、周日、時、分、秒進行計時,還具有閏年補償等多種功能,而且DS1302的使用壽命長,誤差小。對于數字電子萬年歷采用直觀的數字顯示,可以同時顯示年、月、日、周日、時、分、秒和溫度等信息,還具有時間校準等功能。該電路采用AT89S52單片機作為核心,功耗小,能在3V的低壓工作,電壓可選用35V電壓供電。綜上所述此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成
2、本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。關鍵詞:時鐘電鐘,DS1302,動態(tài)掃描,單片機 1 方案論證1.1 單片機芯片的選擇方案和論證方案一: 采用89C51芯片作為硬件核心,采用Flash ROM,內部具有4KB ROM 存儲空間,能于3V的超低壓工作,而且與MCS-51系列單片機完全兼容,但是運用于電路設計中時由于不具備ISP在線編程技術, 當在對電路進行調試時,由于程序的錯誤修改或對程序的新增功能需要燒入程序時,對芯片的多次拔插會對芯片造成一定的損壞。方案二: 采用AT89S52,片內ROM全都采用Flash ROM;能以3V的超底壓工作;同時也與MCS-51
3、系列單片機完全該芯片內部存儲器為8KB ROM 存儲空間,同樣具有89C51的功能,且具有在線編程可擦除技術,當在對電路進行調試時,由于程序的錯誤修改或對程序的新增功能需要燒入程序時,不需要對芯片多次拔插,所以不會對芯片造成損壞,所以選擇采用AT89S52作為主控制系統(tǒng)。1.2 顯示模塊選擇方案和論證方案一: 采用LED數碼管動態(tài)掃描,LED數碼管價格適中,對于顯示數字合適,采用動態(tài)掃描法與單片機連接時,雖然占用的單片機口線少,但連線還需要花費一點時間,所以也不用此種作為顯示。方案二: 采用點陣式數碼管顯示,點陣式數碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在顯示數字顯得太
4、浪費,且價格也相對較高,所以也不用此種作為顯示。方案三: 采用LCD液晶顯示屏,液晶顯示屏的顯示功能強大,可顯示大量文字,圖形,顯示多樣,清晰可見,并且我做的最小系統(tǒng)上帶一個TS1620-1,和AT89S52已經接好,省了很多麻煩,所以在此設計中采用LCD液晶顯示屏。1.3 時鐘芯片的選擇方案和論證方案一: 直接采用單片機定時計數器提供秒信號,使用程序實現年、月、日、星期、時、分、秒計數。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實現的時間誤差較大,所以不采用此方案。方案二: 采用DS1302時鐘芯片實現時鐘,DS1302芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年進行
5、計數,而且精度高,位的RAM做為數據暫存區(qū),工作電壓2.5V5.5V范圍內,2.5V時耗電小于300nA。1.4 電路設計最終方案決定綜上各方案所述,對此次作品的方案選定: 采用AT89S52作為主控制系統(tǒng); DS1302提供時鐘;LCD液晶顯示屏作為顯示。2 系統(tǒng)的硬件設計與實現2.1 電路設計框圖LCD液晶顯示屏顯示模塊AT89S52主控制模 塊鍵盤模塊 DS1302時鐘模塊圖1系統(tǒng)原理圖2.2 系統(tǒng)硬件概述本電路是由AT89S52單片機為控制核心,具有在線編程功能,低功耗,能在3V超低壓工作;時鐘電路由DS1302提供,它是一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、
6、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數據。DS1302內部有一個31*8的用于臨時性存放數據的RAM寄存器??僧a生年、月、日、周日、時、分、秒,具有使用壽命長,精度高和低功耗等特點,同時具有掉電自動保存功能;溫度的采集由DS18B20構成;顯示部份由LCD液晶顯示屏顯示。2.3 主要單元電路的設計2.3.1 單片機主控制模塊的設計 AT89S52單片機為40引腳雙列直插芯片,有四個I/O口P0,P1,P2,P3, MCS-51單片機共有4個8位的I/O口(P0、P1、P2、P
7、3),每一條I/O線都能獨立地作輸出或輸入。單片機的最小系統(tǒng)如下圖所示,18引腳和19引腳接時鐘電路,XTAL1接外部晶振和微調電容的一端,在片內它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調電容的另一端,在片內它是振蕩器倒相放大器的輸出。第9引腳為復位輸入端,接上電容,電阻及開關后夠上電復位電路,20引腳為接地端,40引腳為電源端。 如圖2 所示: 圖2 主控制系統(tǒng) 2.3.2 時鐘電路模塊的設計圖.3示出DS1302的引腳排列,其中Vcc1為后備電源,Vcc2為主電源。在主電源關閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于V
8、cc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.KHz晶振。RST是復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數據傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數據的傳送手段。當RST為高電平時,所有的數據傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RSTS置為低電平,則會終止此次數據傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電動行時,在Vcc大于等于2.5V之前,RST必須保持低電平。中有在SCLK 為低電平時,才能將R
9、ST置為高電平,I/O為串行數據輸入端(雙向)。SCLK始終是輸入端。 圖3 DS1302的引腳圖2.3.3 電路原理及說明(1) 時鐘芯片DS1302的工作原理: DS1302在每次進行讀、寫程序前都必須初始化,先把SCLK端置 “0”,接著把RST端置“1”,最后才給予SCLK脈沖;讀/寫時序如下圖4所示。DS1302的控制字的位7必須置1,若為0則不能把對DS1302進行讀寫數據。對于位6,若對程序進行讀/寫時RAM=1,對時間進行讀/寫時,CK=0,位1至位5指操作單元的地址。位0是讀/寫操作位,進行讀操作時,該位為1;該位為0則表示進行的是寫操作。控制字節(jié)總是從最低位開始輸入/輸出的
10、。表.2為DS1302的日歷、時間寄存器內容:“CH”是時鐘暫停標志位,當該位為1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài);當該位為0時,時鐘開始運行。“WP”是寫保護位,在任何的對時鐘和RAM的寫操作之前,WP必須為0。當“WP”為1時,寫保護位防止對任一寄存器的寫操作。(2) DS1302的控制字節(jié):DS1302控制字節(jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數據寫入DS1302中,位6如果0,則表示存取日歷時鐘數據,為1表示存取RAM數據;位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出 (3) 數
11、據輸入輸出(I/O)在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數據被寫入DS1302,數據輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數據,讀出數據時從低位0位到高位7。(4) DS1302的寄存器DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數據位為BCD碼形式。此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內容。 DS1302與RAM相關的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)
12、為一個8位的字節(jié),其命令控制字為C0HFDH,其中奇數為讀操作,偶數為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。 2.3.4 顯示模塊的設計如圖.4為LCD顯示模塊,和最小系統(tǒng)上的連線一樣,無需修改。圖-4 LCD液晶顯示屏顯示模塊3 系統(tǒng)的軟件設計3.1 程序流程框圖開始初始化 讀日期、時間 寫日期、時間 顯示子程序 時間修改子程序 日期修改子程序顯示結果返回 開關控制子程序 圖5主程序流程圖 圖6 時間調整程序流程圖 4 測試與結果分析4.1 硬件測試電子萬年歷的電路系統(tǒng)較大,對于焊接方面更是不可輕視,龐
13、大的電路系統(tǒng)中只要出于一處的錯誤,則會對檢測造成很大的不便,而且電路的交線較多,對于各種鋒利的引腳要注意處理,否則會刺破帶有包皮的導線,則會對電路造成短路現象。在本成電子萬年歷的設計調試中遇到了很多的問題。回想這些問題只要認真多思考都是可以避免的,以下為主要的問題:()LCD液晶顯示屏顯示部分已經連在最小系統(tǒng)上,節(jié)省了不少時間和精力。(2)對萬年歷修改時間或日期時,有時LCD液晶顯示屏被屏蔽掉,造成不亮現象。解決:根據儀器的測試,發(fā)現電路的驅動能力不足,最后在DS1302時鐘芯片的/CS、SCLK、RET端接入5.1K的上拉電阻后,電路的驅動能力才能滿足,即可解決不亮現象。4.2 軟件測試電子
14、萬年歷是多功能的數字型,可以看當前日期,時間。電子萬年歷功能很多,所以對于它的程序也較為復雜,所以在編寫程序和調試時出現了相對較多的問題。最后經過多次的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調試過程中遇到的主要問題是: 1.燒入程序后,LCD液晶顯示屏顯示亮度不好。 解決:一遍旋轉10K歐的滑動變阻器,一遍觀看LCD顯示屏,知道看到合適的亮度為止。4.3 測試結果分析與結論4.3.1 測試結果分析 1.在測試中遇到LCD液晶顯示屏為不顯示時,首先使用試測儀對電路進行測試,觀察是否存在漏焊,虛焊,或者元件損壞,滑動變阻器器沒有調好:查看燒寫的程序是否正確無誤,對程序進行認真修
15、改。4.3.2 測試結論經過多次的反復測試與分析,可以對電路的原理及功能更加熟悉,同時提高了設計能力與及對電路的分析能力。同時在軟件的編程方面得到更到的提高,對編程能力得到加強,同時對所學的知識得到很大的提高與鞏固。5 課設總結在整個設計過程中,充分發(fā)揮人的主觀能動性,自主學習,學到了許多沒學到的知識。較好的完成了作品,達到了預期的目的,完了最初的設想。在電路焊接時雖然沒什么大問題,但從中也知道了焊接在整個作品中的重要性,電路工程量大,不能心急,一個個慢慢來不能急于求成。反而達到事半功倍的效果。對電路的設計、布局要先有一個好的構思,才顯得電路板美觀、大方。程序編寫中,由于思路不清晰,開始時遇到
16、了很多的問題,經過靜下心來思考,和同組員的討論,理清了思路,反而得心應手。在此次設計中,知道了做凡事要有一顆平常的心,不要想著走捷徑,一步一腳印。也練就了我們的耐心,做什么事都在有耐心。此次比賽中學到了很多很多東西,這是最重要的。總之,此次課設使我的能力得到了全方位的提高。致 謝感謝學院給我提供了一個展現自己的舞臺,給我一次難得煅煉的機會,使得我的動手能力和專業(yè)技能都有了很大的提高。在做課設的日子里得到了陳老師王老師的悉心指導,在此向他們致以誠摯的謝意。感謝提供相關技術幫助的老師和同學,你們的支持和鼓勵使我們對這次的作品完成有了信心和動力,也給了我們很多無私的幫助和支持,我們在此深表謝意。參考
17、文獻1 劉勇 編 數字電路 電子工業(yè)出版社 20042 陳正振 編 電子電路設計與制作 廣西交通職業(yè)技術學院信息工程系 20073 楊子文 編 單片機原理及應用 西安電子科技大學出版社 20064 王法能 編 單片機原理及應用 科學出版社 2004附錄一:系統(tǒng)電路圖附錄二:系統(tǒng)程序清單#include <REG51.H>#include <intrins.h>/#include "LCD1602.h"/#include "DS1302.h"#define uint unsigned int#define uchar unsigne
18、d charsbit DS1302_CLK = P17; /實時時鐘時鐘線引腳 sbit DS1302_IO = P16; /實時時鐘數據線引腳 sbit DS1302_RST = P15; /實時時鐘復位線引腳sbit ACC0 = ACC0;sbit ACC7 = ACC7;char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; /秒,分,時到日,月,年位閃的計數sbit Set = P20; /模式切換鍵sbit Up = P21; /加法按鈕sbit Down = P22; /減法按鈕sbit
19、out = P23; /立刻跳出調整模式按鈕char done,count,temp,flag,up_flag,down_flag;uchar TempBuffer5,week_value2;void show_time(); /液晶顯示程序/*1602液晶顯示部分子程序*/Port Definitions*sbit LcdRs= P25;sbit LcdRw= P26;sbit LcdEn = P27;sfr DBPort = 0x80;/P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數據端口/內部等待函數*unsigned char LCD_Wait(void)LcdRs
20、=0;LcdRw=1;_nop_();LcdEn=1;_nop_();LcdEn=0;return DBPort;/向LCD寫入命令或數據*#define LCD_COMMAND0 / Command#define LCD_DATA1 / Data#define LCD_CLEAR_SCREEN0x01 / 清屏#define LCD_HOMING 0x02 / 光標返回原點void LCD_Write(bit style, unsigned char input)LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();/注意順序Lcd
21、En=1;_nop_();/注意順序LcdEn=0;_nop_();LCD_Wait();/設置顯示模式*#define LCD_SHOW0x04 /顯示開#define LCD_HIDE0x00 /顯示關 #define LCD_CURSOR0x02 /顯示光標#define LCD_NO_CURSOR0x00 /無光標 #define LCD_FLASH0x01 /光標閃動#define LCD_NO_FLASH0x00 /光標不閃動void LCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND, 0x08|Displ
22、ayMode);/設置輸入模式*#define LCD_AC_UP0x02#define LCD_AC_DOWN0x00 / default#define LCD_MOVE0x01 / 畫面可平移#define LCD_NO_MOVE0x00 /defaultvoid LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND, 0x04|InputMode);/初始化LCD*void LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38); /8位數據端口,2行顯示,5*7點陣LCD_Writ
23、e(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); /開啟顯示, 無光標LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); /清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC遞增, 畫面不動/液晶字符輸入的位置*void GotoXY(unsigned char x, unsigned char y)if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);/將
24、字符輸出到液晶顯示void Print(unsigned char *str)while(*str!='0')LCD_Write(LCD_DATA,*str);str+;/*DS1302時鐘部分子程序*/typedef struct _SYSTEMTIME_unsigned char Second;unsigned char Minute;unsigned char Hour;unsigned char Week;unsigned char Day;unsigned char Month;unsigned char Year;unsigned char DateString11
25、;unsigned char TimeString9;SYSTEMTIME;/定義的時間類型SYSTEMTIME CurrentTime;#define AM(X)X#define PM(X)(X+12) / 轉成24小時制#define DS1302_SECOND0x80 /時鐘芯片的寄存器位置,存放時間#define DS1302_MINUTE0x82#define DS1302_HOUR0x84 #define DS1302_WEEK0x8A#define DS1302_DAY0x86#define DS1302_MONTH0x88#define DS1302_YEAR0x8C void
26、 DS1302InputByte(unsigned char d) /實時時鐘寫入一字節(jié)(內部函數) unsigned char i;ACC = d; for(i=8; i>0; i-) DS1302_IO = ACC0; /相當于匯編中的 RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC >> 1; unsigned char DS1302OutputByte(void) /實時時鐘讀取一字節(jié)(內部函數) unsigned char i; for(i=8; i>0; i-) ACC = ACC >>1; /相當于匯
27、編中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1;DS1302_CLK = 0; return(ACC); void Write1302(unsigned char ucAddr, unsigned char ucDa)/ucAddr: DS1302地址, ucData: 要寫的數據 DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); / 地址,命令 DS1302InputByte(ucDa); / 寫1Byte數據 DS1302_CLK = 1; DS1302_RST
28、 = 0; unsigned char Read1302(unsigned char ucAddr)/讀取DS1302某地址的數據 unsigned char ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0x01); / 地址,命令 ucData = DS1302OutputByte(); / 讀1Byte數據 DS1302_CLK = 1; DS1302_RST = 0; return(ucData);void DS1302_GetTime(SYSTEMTIME *Time) /
29、獲取時鐘芯片的時鐘數據到自定義的結構型數組unsigned char ReadValue;ReadValue = Read1302(DS1302_SECOND);Time->Second = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_MINUTE);Time->Minute = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_HOUR)
30、;Time->Hour = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_DAY);Time->Day = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_WEEK);Time->Week = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Re
31、ad1302(DS1302_MONTH);Time->Month = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_YEAR);Time->Year = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);void DateToStr(SYSTEMTIME *Time) /將時間年,月,日,星期數據轉換成液晶顯示字符串,放到數組里DateString if(hide_year<2) /這里的i
32、f,else語句都是判斷位閃爍,<2顯示數據,>2就不顯示,輸出字符串為 2007/07/22 Time->DateString0 = '2' Time->DateString1 = '0' Time->DateString2 = Time->Year/10 + '0' Time->DateString3 = Time->Year%10 + '0' else Time->DateString0 = ' ' Time->DateString1 = '
33、 ' Time->DateString2 = ' ' Time->DateString3 = ' 'Time->DateString4 = '/'if(hide_month<2)Time->DateString5 = Time->Month/10 + '0' Time->DateString6 = Time->Month%10 + '0' else Time->DateString5 = ' ' Time->DateString6
34、= ' 'Time->DateString7 = '/'if(hide_day<2)Time->DateString8 = Time->Day/10 + '0' Time->DateString9 = Time->Day%10 + '0' elseTime->DateString8 = ' 'Time->DateString9 = ' ' if(hide_week<2) week_value0 = Time->Week%10 + '
35、0' /星期的數據另外放到 week_value數組里,跟年,月,日的分開存放,因為等一下要在最后顯示 else week_value0 = ' ' week_value1 = '0'Time->DateString10 = '0' /字符串末尾加 '0' ,判斷結束字符void TimeToStr(SYSTEMTIME *Time) /將時,分,秒數據轉換成液晶顯示字符放到數組 TimeString; if(hide_hour<2) Time->TimeString0 = Time->Hour/1
36、0 + '0' Time->TimeString1 = Time->Hour%10 + '0' else Time->TimeString0 = ' 'Time->TimeString1 = ' 'Time->TimeString2 = ':'if(hide_min<2) Time->TimeString3 = Time->Minute/10 + '0' Time->TimeString4 = Time->Minute%10 + '
37、0' else Time->TimeString3 = ' 'Time->TimeString4 = ' ' Time->TimeString5 = ':' if(hide_sec<2) Time->TimeString6 = Time->Second/10 + '0' Time->TimeString7 = Time->Second%10 + '0' elseTime->TimeString6 = ' 'Time->TimeStr
38、ing7 = ' ' Time->DateString8 = '0'void Initial_DS1302(void) /時鐘芯片初始化 unsigned char Second=Read1302(DS1302_SECOND);if(Second&0x80) /判斷時鐘芯片是否關閉 Write1302(0x8e,0x00); /寫入允許Write1302(0x8c,0x07); /以下寫入初始化時間 日期:07/07/25.星期: 3. 時間: 23:59:55Write1302(0x88,0x07);Write1302(0x86,0x25);Wr
39、ite1302(0x8a,0x07);Write1302(0x84,0x23);Write1302(0x82,0x59);Write1302(0x80,0x55);Write1302(0x8e,0x80); /禁止寫入void Delay1ms(unsigned int count)unsigned int i,j;for(i=0;i<count;i+)for(j=0;j<120;j+);/*延時子程序*/void mdelay(uint delay)uint i;for(;delay>0;delay-)for(i=0;i<62;i+) /1ms延時.;void out
40、key() /跳出調整模式,返回默認顯示 uchar Second;if(out=0) mdelay(8); count=0;hide_sec=0,hide_min=0,hide_hour=0,hide_day=0,hide_week=0,hide_month=0,hide_year=0;Second=Read1302(DS1302_SECOND); Write1302(0x8e,0x00); /寫入允許Write1302(0x80,Second&0x7f);Write1302(0x8E,0x80); /禁止寫入done=0; while(out=0); /void Upkey()/升
41、序按鍵 Up=1;if(Up=0) mdelay(8);switch(count)case 1: temp=Read1302(DS1302_SECOND); /讀取秒數 temp=temp+1; /秒數加1 up_flag=1; /數據調整后更新標志 if(temp&0x7f)>0x59) /超過59秒,清零 temp=0; break; case 2:temp=Read1302(DS1302_MINUTE); /讀取分數 temp=temp+1; /分數加1up_flag=1;if(temp>0x59) /超過59分,清零temp=0;break;case 3: temp
42、=Read1302(DS1302_HOUR); /讀取小時數temp=temp+1; /小時數加1up_flag=1;if(temp>0x23) /超過23小時,清零 temp=0; break; case 4: temp=Read1302(DS1302_WEEK); /讀取星期數 temp=temp+1; /星期數加1 up_flag=1; if(temp>0x7) temp=1; break; case 5: temp=Read1302(DS1302_DAY); /讀取日數 temp=temp+1; /日數加1 up_flag=1; if(temp>0x31) temp=
43、1; break; case 6: temp=Read1302(DS1302_MONTH); /讀取月數 temp=temp+1; /月數加1 up_flag=1; if(temp>0x12) temp=1; break; case 7: temp=Read1302(DS1302_YEAR); /讀取年數 temp=temp+1; /年數加1 up_flag=1; if(temp>0x85) temp=0; break; default:break;while(Up=0); /void Downkey()/降序按鍵 Down=1;if(Down=0) mdelay(8); swit
44、ch(count) case 1: temp=Read1302(DS1302_SECOND); /讀取秒數 temp=temp-1; /秒數減1 down_flag=1; /數據調整后更新標志 if(temp=0x7f) /小于0秒,返回59秒 temp=0x59; break; case 2: temp=Read1302(DS1302_MINUTE); /讀取分數 temp=temp-1; /分數減1 down_flag=1; if(temp=-1) temp=0x59; /小于0秒,返回59秒 break; case 3: temp=Read1302(DS1302_HOUR); /讀取小時數
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關于委代辦郵電業(yè)務協(xié)議書(2篇)
- 公司通知個人的關于協(xié)商解決勞動合同(2篇)
- 2024數據中心服務器租賃及運維服務合同
- 體育設施安裝合同
- 茶園租賃合同:茶園觀光旅游合作
- 物流倉儲調度協(xié)議
- 會議活動巴士租賃服務協(xié)議
- 銷售薪酬激勵與員工晉升
- 市政道路面包磚鋪設合同
- 體育俱樂部教練聘用合同
- 【8地RJ期末】安徽省蕪湖市無為市2023-2024學年八年級上學期期末地理試題(含解析)
- 中國AI+Agent應用研究報告
- 五級(程控交換)職業(yè)技能鑒定理論考試題及答案
- 醫(yī)療救護合作協(xié)議
- 《微元法的應用》課件
- 文職-管理學基礎知識點
- 標準門面租房合同范本
- 《無人機飛行操控技術(微課版)》全套教學課件
- 2023-2024學年廣東省深圳高級中學七年級(上)期末歷史試卷
- 婦科宮腔鏡技術風險評估預案
- 數據分析師歷年考試真題試題庫(含答案)
評論
0/150
提交評論