課程設計(論文)基于AT89S52單片機的電子萬年歷設計_第1頁
課程設計(論文)基于AT89S52單片機的電子萬年歷設計_第2頁
課程設計(論文)基于AT89S52單片機的電子萬年歷設計_第3頁
課程設計(論文)基于AT89S52單片機的電子萬年歷設計_第4頁
課程設計(論文)基于AT89S52單片機的電子萬年歷設計_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、徐州師范大學物電學院課程設計報告課 程 名 稱: 單片機 題 目: 電子萬年歷 專 業(yè) 班 級: 07物41 學 生 姓 名: 學 生 學 號: 日 期: 2010.06.25 指 導 教 師: 物電學院教務部印制說明:1、報告中的第一、二、三項由學生在課程設計開始前填寫,由指導教師指導并確認簽字。2、學生成績由指導教師根據(jù)學生的設計情況給出各項分值及總評成績,并填寫成績評定表。3、所有學生必須參加課程設計的答辯環(huán)節(jié),凡不參加答辯者,其成績一律按不及格處理。答辯小組成員應由2人及以上教師組成。答辯后學生根據(jù)答辯情況填寫答辯記錄表。4、報告正文字數(shù)一般應不少于3000字,也可由指導教師根據(jù)本門課

2、程設計的情況另行規(guī)定。5、平時表現(xiàn)成績低于6分的學生,取消答辯資格,其該課程設計成績按不及格處理。6、課程設計完成后,由指導教師根據(jù)完成情況寫出總結(jié)。7、此表格式為徐州師范大學物理與電子工程學院提供的基本格式,指導教師可根據(jù)本門課程設計的特點及內(nèi)容做適當?shù)恼{(diào)整。一、課程設計目的、任務和內(nèi)容要求:電子萬年歷是實現(xiàn)對年,月,日,時,分,秒數(shù)字顯示的計時裝置,廣泛用于個人家庭,車站, 碼頭,辦公室,銀行大廳等場所,成為人們?nèi)粘I钪械谋匦杵?。?shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應用,使得數(shù)字鐘的精度遠遠超過老式鐘表。鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,在此基礎上完成的萬年歷精度高,功能易

3、于擴展??蓴U展成為諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關(guān)烘箱、通斷動力設備、甚至各種定時電氣的自動啟用等電路。所有這些,都是以鐘表數(shù)字化為基礎的。因此,研究數(shù)字時鐘及擴大其應用有著非常現(xiàn)實的意義。本設計就是數(shù)字時鐘簡單的擴展應用。具體設計任務如下: 1熟悉電子萬年歷的工作原理; 2寫出電子萬年歷的設計方案;3用硬件加以實現(xiàn);4寫課程設計報告。設計功能:1.基本功能 具有年、月、日、星期、時、分、秒等功能; 萬年歷具有閏月識別顯示功能; 具備年、月、日、星期、時、分、秒校準功能;2. 特色功能 萬年歷具有節(jié)能顯示功能; 具有測量室內(nèi)溫度功能; 二、進度

4、安排:第13天: 查找資料,熟悉電子萬年歷的設計原理,給出設計總體方案;第46天: 各模塊的詳細設計;第712天: 硬件連線,調(diào)試;第1314天:寫課程設計報告。三、主要參考文獻:1. 張齊,朱寧西 單片機系統(tǒng)設計與開發(fā) 華南理工大學 電子機械出版社,20082. 陳正振 電子電路設計與制作 廣西交通職業(yè)技術(shù)學院信息工程系 20073. 張友德,趙志英,涂時亮 單片微型機 復旦大學 復旦大學出版社,2006 指導教師簽字: 年 月 日徐州師范大學物理與電子工程學院課程設計報告目 錄摘 要 . iiabstract . ii1 課題背景(或緒論、概述). 12 設計要求與方案論述. 22.1 設

5、計要求.2 2.2 創(chuàng)新要求 .22.3 系統(tǒng)的方案選擇 .2 2.4 電路設計最終方案 .3 3 系統(tǒng)的硬件設計與實現(xiàn). 43.1電路設計框圖. .4 3.2 硬件設計原理概述.43.3 主要模塊的設計.4 4系統(tǒng)的軟件設計與實現(xiàn). 74.1 程序流程框圖 .7 4.2 子程序的設計.75總 結(jié) .10 參考文獻 .11附錄 主要程序代碼 .12 摘 要本設計基于at89s52單片機,結(jié)合ds1302時鐘芯片設計了一個數(shù)字萬年歷,顯示部分用數(shù)碼管動態(tài)顯示,初始時間可由按鍵設置,此外還具有溫度顯示功能,掉電保護功能。萬年歷還具有節(jié)能模式,具有很強的實用性。關(guān)鍵詞:單片機 萬年歷 數(shù)碼管顯示 溫

6、度abstractthis paper is designed based on the at89s52 scm, combining ds1302 clock chip. display section is using digital tube dynamic display ; initial time can be set by the button ; in addition , it has the temperature display function and the power-off protected function. besides, it has energy sa

7、ving mode;this calendar has strong digital tube display practicability.keywords:scm;calendar; digital tube display; temperature display- 30 -1緒論萬年歷的設計過程在硬件與軟件方面進行同步設計。1.1硬件部分硬件部分主要由at89s52單片機,led顯示電路,以及調(diào)時按鍵電路等組成。在單片機的選擇上使用at89s52單片機,該單片機適合于許多較為復雜控制應用場合。采用4-16譯碼器作為選擇端,控制共陰數(shù)碼管動態(tài)顯示,結(jié)合時鐘芯片ds1302和溫度傳感器18

8、b20顯示時間和溫度。制作前在proteus軟件中嵌入單片機內(nèi)進行仿真可以更好的進行硬件布局。1.2軟件部分軟件方面主要包括日歷程序、時間調(diào)整程序,顯示程序等。程序采用c語言編寫,以便更簡單地實現(xiàn)調(diào)整時間及陰歷顯示功能。所有程序編寫完成后,在keil軟件中進行調(diào)試,確定沒有問題后,在proteus軟件中嵌入單片機內(nèi)進行仿真。2設計要求與方案論證2.1設計要求:2.1.1具有年、月、日、星期、時、分、秒等功能;2.1.2萬年歷具有閏月識別顯示功能;2.1.3具備年、月、日、星期、時、分、秒校準功能;2.2 創(chuàng)新要求2.2.1萬年歷具有陰歷顯示功能;2.2.2 具有測量室內(nèi)溫度功能;2.3 系統(tǒng)基

9、本方案選擇和論證2.3.1單片機芯片的選擇方案和論證:方案一: 采用89c51芯片作為硬件核心,采用flash rom,內(nèi)部具有4kb rom 存儲空間,能于3v的超低壓工作,而且與mcs-51系列單片機完全兼容,但是運用于電路設計中時由于不具備isp在線編程技術(shù), 當在對電路進行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,對芯片的多次拔插會對芯片造成一定的損壞。方案二: 采用at89s52,片內(nèi)rom全都采用flash rom;能以3v的超底壓工作;同時也與mcs-51系列單片機完全該芯片內(nèi)部存儲器為8kb rom 存儲空間,同樣具有89c51的功能,且具有在線編程可擦除技術(shù)

10、,當在對電路進行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,不需要對芯片多次拔插,所以不會對芯片造成損壞。所以選擇采用at89s52作為主控制系統(tǒng).2.3.2 顯示模塊選擇方案和論證:方案一: 采用led液晶顯示屏,液晶顯示屏的顯示功能強大,可顯示大量文字,圖形,顯示多樣,清晰可見,但是價格昂貴,需要的接口線多,所以在此設計中不采用led液晶顯示屏.方案二: 采用點陣式數(shù)碼管顯示,點陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費,且價格也相對較高,所以也不用此種作為顯示.方案三:采用led數(shù)碼管動態(tài)掃描,led數(shù)碼管價格適中,對于顯示數(shù)

11、字最合適,而且采用動態(tài)掃描法與單片機連接時,占用的單片機口線少。所以采用了led數(shù)碼管作為顯示。2.3.3時鐘芯片的選擇方案和論證:方案一: 直接采用單片機定時計數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時、分、秒計數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實現(xiàn)的時間誤差較大。所以不采用此方案。方案二: 采用ds1302時鐘芯片實現(xiàn)時鐘,ds1302芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補償?shù)哪赀M行計數(shù),而且精度高,位的ram做為數(shù)據(jù)暫存區(qū),工作電壓2.5v5.5v范圍內(nèi),2.5v時耗電小于300na.2.4 電路設計最終方案綜上各方案所述,對此次

12、作品的方案選定: 采用at89s52作為主控制系統(tǒng); ds1302提供時鐘;數(shù)字式溫度傳感器;led數(shù)碼管動態(tài)掃描作為顯示。3.系統(tǒng)的硬件設計與實現(xiàn)3.1 電路設計框圖圖2.1 電路設計框圖3.2 系統(tǒng)硬件概述本電路是由at89s52單片機為控制核心,具有在線編程功能,低功耗,能在3v超低壓工作;時鐘電路由ds1302提供,它是一種高性能、低功耗、帶ram的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5v5.5v。采用三線接口與cpu進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或ram數(shù)據(jù)。溫度的采集由ds18b20構(gòu)成;顯示部份由1

13、7個數(shù)碼管,74ls154譯碼器構(gòu)成。使用動態(tài)掃描顯示方式對數(shù)字的顯示。3.3 主要模塊的設計3.3.1單片機主控制模塊的設計 at89s52單片機為40引腳雙列直插芯片,有四個i/o口p0,p1,p2,p3, mcs-51單片機共有4個8位的i/o口(p0、p1、p2、p3),每一條i/o線都能獨立地作輸出或輸入。單片機的最小系統(tǒng)如下圖所示,18引腳和19引腳接時鐘電路,xtal1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,xtal2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出.第9引腳為復位輸入端,接上電容,電阻及開關(guān)后夠上電復位電路,20引腳為接地端,

14、40引腳為電源端. 如圖3.3.1 所示圖3.3.1 主控制系統(tǒng)3.3.2時鐘電路模塊的設計圖3.3.2示出ds1302的引腳排列,其中vcc1為后備電源,vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。ds1302由vcc1或vcc2兩者中的較大者供電。當vcc2大于vcc1+0.2v時,vcc2給ds1302供電。當vcc2小于vcc1時,ds1302由vcc1供電。x1和x2是振蕩源,外接32.khz晶振。rst是復位/片選線,通過把rst輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。rst輸入有兩種功能:首先,rst接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,rst提

15、供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當rst為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對ds1302進行操作。如果在傳送過程中rsts置為低電平,則會終止此次數(shù)據(jù)傳送,i/o引腳變?yōu)楦咦钁B(tài)。上電動行時,在vcc大于等于2.5v之前,rst必須保持低電平。中有在sclk 為低電平時,才能將rst置為高電平,i/o為串行數(shù)據(jù)輸入端(雙向)。sclk始終是輸入端。圖3.3.2 ds1302的引腳圖3.3.3溫度傳感器模塊圖3.3.318b20的引腳圖3.3.4顯示模塊的設計如圖3.3.4所示,采用動態(tài)掃描顯示,由17個數(shù)碼管,4-16譯碼器74ls154接1k限流電阻接到共陰數(shù)碼管的com端作為選通位

16、碼,每位選擇相應的列,p0口輸出數(shù)據(jù)再接9013三極管送達數(shù)碼管。圖3.3.4顯示模塊4.系統(tǒng)的軟件設計4.1程序流程框圖圖4.1程序流程框圖4.2 子程序的設計4.2.1 讀、寫ds1302子程序unsigned char ds1302outputbyte(void) /實時時鐘讀取一字節(jié)(內(nèi)部函數(shù))void ds1302inputbyte(unsigned char d) /實時時鐘寫入一字節(jié)(內(nèi)部函數(shù))unsigned char read1302(unsigned char ucaddr)/讀取ds1302某地址的數(shù)據(jù)void write1302(unsigned char ucaddr

17、, unsigned char ucda)/ucaddr: ds1302地址, ucdata: 要寫的數(shù)據(jù)void write1302(unsigned char ucaddr, unsigned char ucda)write1302(0x8e,0x00) ;/允許寫入 write1302(0x8c,num) ;/寫入year write1302(0x8e,0x80) ;/禁止寫操作4.2.2 讀18b20子程序/讀取溫度unsigned char readtemperature(void)unsigned char a=0;unsigned char b=0;unsigned char t

18、=0;init_ds18b20();writeonechar(0xcc); / 跳過讀序號列號的操作writeonechar(0x44); / 啟動溫度轉(zhuǎn)換delay_18b20(200);init_ds18b20();writeonechar(0xcc); /跳過讀序號列號的操作 writeonechar(0xbe); /讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度a=readonechar();b=readonechar();b4;t=b;return(t);4.2.3 顯示模塊子程序void display()/年 p2=0xf0; p0=seg2; delay(1);4.2.4

19、按鍵子程序圖4.2.4按鍵子程序流程圖5 總結(jié)在整個設計過程中,發(fā)揮團隊精神,分工合作,充分發(fā)揮人的主觀能動性,自主學習,學到了許多沒學到的知識。較好的完成了作品。達到了預期的目的,在最初的設計中,相互學習、相互討論、研究,完了最初的設想。在電路焊接時雖然沒什么大問題,但從中也知道了焊接在整個作品中的重要性,電路工程量大,不能心急,一個個慢慢來不能急于求成。對電路的設計、布局要先有一個好的構(gòu)思,才顯得電路板美觀、大方。程序編寫中,由于思路不清晰,開始時遇到了很多的問題,經(jīng)過靜下心來思考,和同組員的討論,理清了思路。在此次設計中,知道了做凡事要有一顆平常的心,不要想著走捷徑,一步一腳印。也練就了

20、我們的耐心,做什么事都在有耐心致謝: 感謝學院給我們提供了一個展現(xiàn)自己的舞臺,給我們一次難得煅煉的機會,使得我們的動手能力和專業(yè)技能都有了很大的提高。感謝給我?guī)椭睦蠋熀屯瑢W,在你們的幫助下我才能完成這次設計。參考文獻1張齊,朱寧西 單片機系統(tǒng)設計與開發(fā) 華南理工大學 電子機械出版社,20082.陳正振 電子電路設計與制作 廣西交通職業(yè)技術(shù)學院信息工程系 20073張友德,趙志英,涂時亮 單片微型機 復旦大學 復旦大學出版社,2006 附錄一 硬件電路全圖二 程序#include#define uchar unsigned char#define uint unsigned intsbit d

21、s1302_clk = p11; /實時時鐘時鐘線引腳 sbit ds1302_io = p10; /實時時鐘數(shù)據(jù)線引腳 sbit ds1302_rst = p12; /實時時鐘復位線引腳sbit dq = p14 ; /18b20接口sbit mode=p34;sbit inc=p35;sbit dec=p36;sbit power=p37;sbit week_wei=p15; /星期位選sbit encode=p16; /譯碼器使能sbit acc0 = acc0;/累加器位定義sbit acc7 = acc7;uchar code seg=0x3f,0x06,0x5b,0x4f,0x66

22、,0x6d,0x7d,0x07,0x7f,0x6f;uchar temp,year,month,date,hour,minute,second,week,position;bit flag;/開關(guān)顯示標志/*延時ms*/ void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=112;y0;y-);/* *ds1302驅(qū)動程序*/void ds1302inputbyte(unsigned char d) /實時時鐘寫入一字節(jié)(內(nèi)部函數(shù)) unsigned char i; acc = d; for(i=8; i0; i-) ds1302_io = acc0;

23、 /相當于匯編中的 rrc ds1302_clk = 1; ds1302_clk = 0; acc = acc 1; unsigned char ds1302outputbyte(void) /實時時鐘讀取一字節(jié)(內(nèi)部函數(shù)) unsigned char i; for(i=8; i0; i-) acc = acc 1; /相當于匯編中的 rrc acc7 = ds1302_io; ds1302_clk = 1; ds1302_clk = 0; return(acc); void write1302(unsigned char ucaddr, unsigned char ucda)/ucaddr:

24、 ds1302地址, ucdata: 要寫的數(shù)據(jù) ds1302_rst = 0; ds1302_clk = 0; ds1302_rst = 1; ds1302inputbyte(ucaddr); / 地址,命令 ds1302inputbyte(ucda); / 寫1byte數(shù)據(jù) ds1302_clk = 1; ds1302_rst = 0; unsigned char read1302(unsigned char ucaddr)/讀取ds1302某地址的數(shù)據(jù) unsigned char ucdata; ds1302_rst = 0; ds1302_clk = 0; ds1302_rst = 1

25、; ds1302inputbyte(ucaddr|0x01); / 地址,命令 ucdata = ds1302outputbyte(); / 讀1byte數(shù)據(jù) ds1302_clk = 1; ds1302_rst = 0; return(ucdata); void ds1302_init()if(read1302(0xc1) != 0xf0) write1302(0x8e,0x00) ;/允許寫操作write1302(0xc0,0xf0) ; /寫入初始化標志,系統(tǒng)上電后檢測此標志,即此子函數(shù)只會在第一次初始化一次。/*時間初始值*/write1302(0x8c,0x10) ;/年write1

26、302(0x88,0x04) ;/月write1302(0x86,0x06) ;/日write1302(0x84,0x22) ;/時write1302(0x82,0x59) ;/分write1302(0x80,0x55) ;/秒write1302(0x90,0xa4) ;/充電write1302(0x8e,0x80) ;/禁止寫操作 /* *ds18b20驅(qū)動程序*/*/void delay_18b20(unsigned int i)/延時函數(shù) while(i-);/*/18b20初始化函數(shù)void init_ds18b20(void) unsigned char x=0; dq = 1; /

27、dq復位 delay_18b20(8); /稍做延時 dq = 0; /單片機將dq拉低 delay_18b20(80); /精確延時 大于 480us dq = 1; /拉高總線 delay_18b20(10); x=dq; /稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay_18b20(5);/讀一個字節(jié)unsigned char readonechar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) dq = 0; / 給脈沖信號 dat=1; dq = 1; / 給脈沖信號 if(dq) dat

28、|=0x80; delay_18b20(5); return(dat);/寫一個字節(jié)void writeonechar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) dq = 0; dq = dat&0x01; delay_18b20(5); dq = 1; dat=1; delay_18b20(5);/讀取溫度unsigned char readtemperature(void)unsigned char a=0;unsigned char b=0;unsigned char t=0;init_ds18b20();writeo

29、nechar(0xcc); / 跳過讀序號列號的操作writeonechar(0x44); / 啟動溫度轉(zhuǎn)換delay_18b20(200);init_ds18b20();writeonechar(0xcc); /跳過讀序號列號的操作 writeonechar(0xbe); /讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度a=readonechar();b=readonechar();b4;t=b;return(t);/*/void display()/年 p2=0xf0; p0=seg2; delay(1); p2=0xf1; p0=seg0; delay(1); p2=0xf2; p

30、0=segyear/16; delay(1); p2=0xf3; p0=segyear%16; delay(1);/month p2=0xf4; p0=segmonth/16; delay(1); p2=0xf5; p0=segmonth%16; delay(1); /date p2=0xf6; p0=segdate/16; delay(1); p2=0xf7; p0=segdate%16; delay(1); /hour p2=0xf8; p0=seghour/16; delay(1); p2=0xf9; p0=seghour%16; delay(1); /minute p2=0xfa; p

31、0=segminute/16; delay(1); p2=0xfb; p0=segminute%16; delay(1); /second p2=0xfc; p0=segsecond/16; delay(1); p2=0xfd; p0=segsecond%16; delay(1); /temp p2=0xfe; p0=segtemp/10; delay(1); p2=0xff; p0=segtemp%10; delay(1); /week encode=1; week_wei=0; p0=segweek; delay(1); encode=0; week_wei=1; p0=0;void se

32、t() if(mode=0) delay(5); if(mode=0) position+; if(position=7) position=0; while(!mode); /再次確認是否松開,松開就跳出while語句 / if(position=1) /year int num; if(inc=0) delay(5); if(inc=0) num=read1302(0x8d); num=(num/16)*10+num%16; num+; if(num=99) num=0; num=(num/10)*16+num%10; write1302(0x8e,0x00) ;/允許寫入 write13

33、02(0x8c,num) ;/寫入year write1302(0x8e,0x80) ;/禁止寫操作 while(!inc); /再次確認是否松開,松開就跳出while語句 / else if(dec=0) delay(5); if(dec=0) num=read1302(0x8d); num=(num/16)*10+num%16; num-; if(num=-1) num=99; num=(num/10)*16+num%10; write1302(0x8e,0x00) ;/允許寫入 write1302(0x8c,num) ;/寫入year write1302(0x8e,0x80) ;/禁止寫

34、操作 while(!dec); /再次確認是否松開,松開就跳出while語句 /year=read1302(0x8d); /年 p2=0xf0;p0=seg2;delay(4);p2=0xf1;p0=seg0;delay(4);p2=0xf2;p0=segyear/16;delay(4);p2=0xf3;p0=segyear%16;delay(4); / /*/else if(position=2) /month int num; if(inc=0) delay(5); if(inc=0) num=read1302(0x89); num=(num/16)*10+num%16; num+; if

35、(num=13) num=1; num=(num/10)*16+num%10; write1302(0x8e,0x00) ;/允許寫入 write1302(0x88,num) ;/寫入month write1302(0x8e,0x80) ;/禁止寫操作 while(!inc); /再次確認是否松開,松開就跳出while語句 / else if(dec=0) delay(5); if(dec=0) num=read1302(0x89); num=(num/16)*10+num%16; num-; if(num=0) num=12; num=(num/10)*16+num%10; write130

36、2(0x8e,0x00) ;/允許寫入 write1302(0x88,num) ;/寫入month write1302(0x8e,0x80) ;/禁止寫操作 while(!dec); /再次確認是否松開,松開就跳出while語句 /month=read1302(0x89); /month p2=0xf4; p0=segmonth/16; delay(8); p2=0xf5; p0=segmonth%16; delay(8); / /*/else if(position=3) /date int num; if(inc=0) delay(5); if(inc=0) num=read1302(0x

37、87); num=(num/16)*10+num%16; num+; if(num=32) num=1; num=(num/10)*16+num%10; write1302(0x8e,0x00) ;/允許寫入 write1302(0x86,num) ;/寫入date write1302(0x8e,0x80) ;/禁止寫操作 while(!inc); /再次確認是否松開,松開就跳出while語句 / else if(dec=0) delay(5); if(dec=0) num=read1302(0x87); num=(num/16)*10+num%16; num-; if(num=0) num=

38、31; num=(num/10)*16+num%10; write1302(0x8e,0x00) ;/允許寫入 write1302(0x86,num) ;/寫入date write1302(0x8e,0x80) ;/禁止寫操作 while(!dec); /再次確認是否松開,松開就跳出while語句 /date=read1302(0x87); /date p2=0xf6; p0=segdate/16; delay(8); p2=0xf7; p0=segdate%16; delay(8); / /*/else if(position=4) /hour int num; if(inc=0) dela

39、y(5); if(inc=0) num=read1302(0x85); num=(num/16)*10+num%16; num+; if(num=24) num=0; num=(num/10)*16+num%10; write1302(0x8e,0x00) ;/允許寫入 write1302(0x84,num) ;/寫入hour write1302(0x8e,0x80) ;/禁止寫操作 while(!inc); /再次確認是否松開,松開就跳出while語句 / else if(dec=0) delay(5); if(dec=0) num=read1302(0x85); num=(num/16)*10+num%16; num-; if(num=-1) num=23; num=(num/10)*16+num%10; write1302(0x8e,0x00) ;/允許寫入 write1302(0x84,num) ;/寫入hour write1302(0x8e,0x80) ;/禁止寫操作 while(!dec); /再次確認是否松開,松開就跳出while語句 /hour=read1302(0x85); p2=0xf8; p0=seghour/16; delay(8); p2=0xf9; p0=seghour%16; delay(8); / /*/else i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論