2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩52頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  單片機(jī)原理及應(yīng)用課程設(shè)計(jì)</p><p>  設(shè)計(jì)題目: 時(shí)間控制器設(shè)計(jì)</p><p>  學(xué) 院: </p><p>  專 業(yè): 自動(dòng)化 </p><p>  班 級(jí): 091 </p><p> 

2、 學(xué) 號(hào): </p><p>  學(xué)生姓名: </p><p>  指導(dǎo)教師: </p><p>  2012年 6 月 22 日</p><p><b>  設(shè)計(jì)任務(wù)書</b></p>&

3、lt;p><b>  設(shè)計(jì)目的</b></p><p>  1、熟悉硬件電路設(shè)計(jì)的基本流程,初步掌握印制電路板設(shè)計(jì)制作的方法;</p><p>  2、熟悉程序設(shè)計(jì)和調(diào)試的基本流程;</p><p>  3、熟悉微控制器系統(tǒng)設(shè)計(jì)的流程和調(diào)試方法;</p><p>  4、鍛煉團(tuán)隊(duì)協(xié)作的能力;</p>

4、<p><b>  設(shè)計(jì)任務(wù)</b></p><p>  設(shè)計(jì)一個(gè)基于DS1302計(jì)時(shí)、DS18B20測(cè)溫和LCD1602液晶顯示模塊顯示的時(shí)間控制系統(tǒng),能顯示年、月、日、時(shí)、分、秒和實(shí)時(shí)溫度,具有時(shí)間調(diào)整功能并能根據(jù)設(shè)定時(shí)間控制一路220伏負(fù)載的通斷(繼電器);計(jì)時(shí)誤差不大于±10分鐘/天;能夠自動(dòng)判別大小月和閏年。</p><p>  (1)、

5、能夠調(diào)整年、月、日、時(shí)和分,調(diào)整“日”時(shí),“周”能自動(dòng)跟隨自動(dòng)調(diào)整,調(diào)整“日”時(shí),“日”能自動(dòng)根據(jù)大小月及是否閏年改變最大值;</p><p>  (2)、斷電數(shù)據(jù)不丟失;</p><p> ?。?)、以1分鐘為步進(jìn),能夠在1~30分鐘內(nèi)設(shè)置定時(shí),控制一路220伏負(fù)載(電阻性,不大于800W)的通斷;</p><p><b>  具體要求</b>

6、;</p><p>  1、根據(jù)任務(wù)設(shè)計(jì)出程序(程序語言不限),經(jīng)調(diào)試后能實(shí)現(xiàn)任務(wù)書中要求的功能;</p><p>  2、用PROTEUS仿真,在仿真軟件中系統(tǒng)能夠正常運(yùn)行;</p><p>  3、根據(jù)仿真結(jié)果,將程序加載到實(shí)際電路板,經(jīng)調(diào)試后能正常運(yùn)行;</p><p>  4、撰寫課程設(shè)計(jì)任務(wù)書; </p><p&

7、gt;<b>  目 錄</b></p><p><b>  摘要II</b></p><p>  第一章 設(shè)計(jì)方案1</p><p>  1.1 設(shè)計(jì)任務(wù)書分析1</p><p>  1.2 設(shè)計(jì)思路1</p><p>  1.3 設(shè)計(jì)方案1</p>

8、<p>  第二章 硬件設(shè)計(jì)2</p><p>  2.1 功能模塊設(shè)計(jì)2</p><p>  2.2 芯片介紹2</p><p>  2.2.1 微控制器AT89C522</p><p>  2.2.2 實(shí)時(shí)時(shí)鐘芯片DS13025</p><p>  2.2.3 溫度傳感器DS18B207&l

9、t;/p><p>  第三章 程序設(shè)計(jì)10</p><p>  3.1 程序設(shè)計(jì)思路10</p><p>  3.2 程序設(shè)計(jì)工具簡(jiǎn)介10</p><p>  3.3 程序流程框圖12</p><p>  第四章 系統(tǒng)調(diào)試13</p><p>  4.1 調(diào)試思路13</p>

10、<p>  4.2 調(diào)試方法及過程13</p><p>  4.3 問題及解決措施13</p><p><b>  第五章 總結(jié)13</b></p><p><b>  5.1硬件14</b></p><p><b>  5.2 程序14</b><

11、/p><p><b>  心得體會(huì)15</b></p><p><b>  參考文獻(xiàn)16</b></p><p>  附錄一 電路原理圖17</p><p>  附錄二 源程序清單18</p><p><b>  時(shí)間控制系統(tǒng)設(shè)計(jì)</b></p

12、><p><b>  摘要</b></p><p>  基于DS1302計(jì)時(shí)、DS18B20測(cè)溫和LCD1602液晶顯示模塊顯示的時(shí)間控制系統(tǒng),能顯示年、月、日、時(shí)、分、秒和實(shí)時(shí)溫度,具有時(shí)間調(diào)整功能并能根據(jù)設(shè)定時(shí)間控制一路220伏負(fù)載的通斷(繼電器);計(jì)時(shí)誤差不大于±10分鐘/天;能夠自動(dòng)判別大小月和閏年。</p><p> ?。?)、

13、能夠調(diào)整年、月、日、時(shí)和分,調(diào)整“日”時(shí),“周”能自動(dòng)跟隨自動(dòng)調(diào)整,調(diào)整“月”時(shí),“日”能自動(dòng)根據(jù)大小月及是否閏年改變最大值;</p><p> ?。?)、斷電數(shù)據(jù)不丟失;</p><p> ?。?)、以1分鐘為步進(jìn),能夠在1~30分鐘內(nèi)設(shè)置定時(shí),控制一路220伏負(fù)載(電阻性,不大于800W)的通斷</p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī),時(shí)間控制</p>

14、<p><b>  第一章 設(shè)計(jì)方案</b></p><p>  1.1 設(shè)計(jì)任務(wù)書分析</p><p>  根據(jù)任務(wù)書要求實(shí)現(xiàn)的功能來看,主要有實(shí)時(shí)時(shí)間的顯示,溫度的顯示,通過按鍵調(diào)整時(shí)間與選擇定時(shí)功能。由此可知,系統(tǒng)所需包含的部件應(yīng)有單片機(jī)、單片機(jī)外圍電路(時(shí)鐘電路、溫度采集電路、顯示電路),按鍵調(diào)時(shí)電路。它們之間的關(guān)系方框圖如設(shè)計(jì)方案所示。<

15、/p><p><b>  1.2 設(shè)計(jì)思路</b></p><p>  本次設(shè)計(jì)采用AT89C52作為主控制器,DS1302輸入時(shí)間信息,DS18B20采集溫度信息,LCD1602作為顯示輸出設(shè)備,通過四個(gè)按鍵實(shí)現(xiàn)時(shí)間設(shè)置。</p><p><b>  1.3 設(shè)計(jì)方案</b></p><p>  中央

16、處理單元:采用AT89C52對(duì)整個(gè)系統(tǒng)進(jìn)行控制,</p><p>  它將定時(shí)數(shù)據(jù)輸出到LED,實(shí)現(xiàn)時(shí)間的顯示;</p><p>  根據(jù)鍵盤輸入調(diào)用相應(yīng)鍵處理子程序,實(shí)現(xiàn)時(shí)間的調(diào)整設(shè)定;</p><p>  接收溫度傳感器輸入的溫度數(shù)據(jù),進(jìn)行一定轉(zhuǎn)換,輸出到LCD顯示器顯示。</p><p>  時(shí)鐘電路:時(shí)間的的讀寫輸入。</p&g

17、t;<p>  溫度采集模塊:采集溫度信息輸送到單片機(jī)。</p><p>  液晶顯示電路:是對(duì)單片內(nèi)數(shù)據(jù)視化,讓設(shè)計(jì)的功能通過它能夠直觀的體現(xiàn)出來,使用戶方便觀察結(jié)果及對(duì)功能的設(shè)置。</p><p>  按鍵調(diào)時(shí)模塊:通過按鍵設(shè)置,改變芯片內(nèi)數(shù)據(jù)達(dá)到調(diào)時(shí)的效果,設(shè)置定時(shí)等功能。</p><p><b>  第二章 硬件設(shè)計(jì)</b>

18、;</p><p>  2.1 功能模塊設(shè)計(jì)</p><p><b>  2.2 芯片介紹</b></p><p>  2.2.1 微控制器AT89S52</p><p>  AT89S52為 ATMEL 所生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flsah存儲(chǔ)器。</p><

19、;p>  1 AT89S52主要功能列舉如下:</p><p>  1)擁有靈巧的8位CPU和在系統(tǒng)可編程Flash;2)晶片內(nèi)部具時(shí)鐘振蕩器(傳統(tǒng)最高工作頻率可至 12MHz);3)內(nèi)部程序存儲(chǔ)器(ROM)為 8KB;4)內(nèi)部數(shù)據(jù)存儲(chǔ)器(RAM)為 256字節(jié);5)32 個(gè)可編程I/O 口線;6)8 個(gè)中斷向量源;7)三個(gè) 16 位定時(shí)器/計(jì)數(shù)器;8)三級(jí)加密程序存儲(chǔ)器;9)全雙工UART串行通道。<

20、;/p><p>  2 AT89S52各引腳功能介紹:</p><p>  VCC:AT89S52電源正端輸入,接+5V。</p><p><b>  VSS:電源地端。</b></p><p>  XTAL1:?jiǎn)涡酒到y(tǒng)時(shí)鐘的反相放大器輸入端。</p><p>  XTAL2:系統(tǒng)時(shí)鐘的反相放大器輸

21、出端,一般在設(shè)計(jì)上只要在 XTAL1 和 XTAL2 上接上</p><p>  一只石英振蕩晶體系統(tǒng)就可以動(dòng)作了,此外可以在兩引腳與地之間加入一 20PF 的小電</p><p>  容,可以使系統(tǒng)更穩(wěn)定,避免噪聲干擾而死機(jī)。</p><p>  RESET:AT89S52的重置引腳,高電平動(dòng)作,當(dāng)要對(duì)晶片重置時(shí),只要對(duì)此引腳電平提升</p><

22、;p>  至高電平并保持兩個(gè)機(jī)器周期以上的時(shí)間,AT89S51便能完成系統(tǒng)重置的各項(xiàng)動(dòng)作,使</p><p>  得內(nèi)部特殊功能寄存器之內(nèi)容均被設(shè)成已知狀態(tài),并且至地址0000H處開始讀入程序代</p><p><b>  碼而執(zhí)行程序。</b></p><p>  EA/Vpp:"EA"為英文"Extern

23、al Access"的縮寫,表示存取外部程序代碼之意,低電平</p><p>  動(dòng)作,也就是說當(dāng)此引腳接低電平后,系統(tǒng)會(huì)取用外部的程序代碼(存于外部EPROM中)</p><p>  來執(zhí)行程序。因此在8031及8032中,EA引腳必須接低電平,因?yàn)槠鋬?nèi)部無程序存儲(chǔ)器</p><p>  空間。如果是使用 8751 內(nèi)部程序空間時(shí),此引腳要接成高電平。此

24、外,在將程序代碼</p><p>  燒錄至8751內(nèi)部EPROM時(shí),可以利用此引腳來輸入21V的燒錄高壓(Vpp)。</p><p>  PSEN:此為"Program Store Enable"的縮寫,其意為程序儲(chǔ)存啟用,當(dāng)8051被設(shè)成為</p><p>  讀取外部程序代碼工作模式時(shí)(EA=0),會(huì)送出此信號(hào)以便取得程序代碼,通常這支腳&

25、lt;/p><p>  是接到EPROM的OE腳。AT89S52可以利用PSEN及RD引腳分別啟用存在外部的RAM與</p><p>  EPROM,使得數(shù)據(jù)存儲(chǔ)器與程序存儲(chǔ)器可以合并在一起而共用64K的定址范圍。</p><p>  PORT0(P0.0~P0.7):端口0是一個(gè)8位寬的開路汲極(Open Drain)雙向輸出入端口,</p><p

26、>  共有8個(gè)位,P0.0表示位0,P0.1表示位1,依此類推。其他三個(gè)I/O端口(P1、P2、</p><p>  P3)則不具有此電路組態(tài),而是內(nèi)部有一提升電路,P0在當(dāng)做I/O用時(shí)可以推動(dòng)8個(gè)</p><p>  LS的TTL負(fù)載。如果當(dāng)EA引腳為低電平時(shí)(即取用外部程序代碼或數(shù)據(jù)存儲(chǔ)器),P0</p><p>  就以多工方式提供地址總線(A0~A7)

27、及數(shù)據(jù)總線(D0~D7)。設(shè)計(jì)者必須外加一鎖存</p><p>  器將端口0送出的地址栓鎖住成為A0~A7,再配合端口2所送出的A8~A15合成一完整</p><p>  的16位地址總線,而定址到64K的外部存儲(chǔ)器空間。</p><p>  PORT2(P2.0~P2.7):端口2是具有內(nèi)部提升電路的雙向I/O端口,每一個(gè)引腳可以推</p><

28、;p>  動(dòng)4個(gè)LS的TTL負(fù)載,若將端口2的輸出設(shè)為高電平時(shí),此端口便能當(dāng)成輸入端口來</p><p>  使用。P2除了當(dāng)做一般I/O端口使用外,若是在AT89S52擴(kuò)充外接程序存儲(chǔ)器或數(shù)據(jù)存</p><p>  儲(chǔ)器時(shí),也提供地址總線的高字節(jié)A8~A15,這個(gè)時(shí)候P2便不能當(dāng)做I/O來使用了。</p><p>  PORT1(P1.0~P1.7):端口1

29、也是具有內(nèi)部提升電路的雙向I/O端口,其輸出緩沖器可以推動(dòng)4個(gè)LS TTL負(fù)載,同樣地若將端口1的輸出設(shè)為高電平,便是由此端口來輸入數(shù)據(jù)。如果是使用8052或是8032的話,P1.0又當(dāng)做定時(shí)器2的外部脈沖輸入腳,而P1.1可以有T2EX功能,可以做外部中斷輸入的觸發(fā)腳位。</p><p>  PORT3(P3.0~P3.7):端口3也具有內(nèi)部提升電路的雙向I/O端口,其輸出緩沖器可以</p>&l

30、t;p>  推動(dòng)4個(gè)TTL負(fù)載。其引腳分配如下:</p><p>  P3.0:RXD,串行通信輸入。</p><p>  P3.1:TXD,串行通信輸出。</p><p>  P3.2:INT0,外部中斷0輸入。</p><p>  P3.3:INT1,外部中斷1輸入。</p><p>  P3.4:T0,計(jì)時(shí)

31、計(jì)數(shù)器0輸入。</p><p>  P3.5:T1,計(jì)時(shí)計(jì)數(shù)器1輸入。</p><p>  P3.6:WR:外部數(shù)據(jù)存儲(chǔ)器的寫入信號(hào)。</p><p>  P3.7:RD,外部數(shù)據(jù)存儲(chǔ)器的讀取信號(hào)。</p><p>  RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí)要保持RST腳兩個(gè)機(jī)器周期的高電平。</p><p>  ALE

32、/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地</p><p>  位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不</p><p>  變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)</p><p>  外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器</p>

33、<p>  時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此</p><p>  時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微</p><p>  拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p>  /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,

34、每個(gè)機(jī)</p><p>  器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信</p><p><b>  號(hào)將不出現(xiàn)。</b></p><p>  /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),</p><p>  不管是否有內(nèi)部程序存儲(chǔ)器。注意加密

35、方式1時(shí),/EA將內(nèi)部鎖定為RESET;</p><p>  當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也</p><p>  用于施加12V編程電源(VPP)。</p><p>  2.2.2 實(shí)時(shí)時(shí)鐘芯片DS1302</p><p>  DS1302是美國(guó)DALLAS公司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘芯片

36、,附加31字節(jié)靜態(tài)RAM,采用SPI三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)和RAM數(shù)據(jù)。實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年,一個(gè)月小與31天時(shí)可以自動(dòng)調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá)2.5~5.5V。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。DS1302的外部引腳分配如圖1所示</p><p>  圖1

37、60;  DS1302的外部引腳分配</p><p><b>  1各引腳的功能為:</b></p><p>  Vcc1:主電源;Vcc2:備份電源。當(dāng)Vcc2>Vcc1+0.2V時(shí),由Vcc2向DS1302供電,當(dāng)Vcc2< Vcc1時(shí),由Vcc1向DS1302供電。</p><p>  SCLK:串行時(shí)鐘,輸入;&#

38、160;</p><p>  I/O:三線接口時(shí)的雙向數(shù)據(jù)線;</p><p>  CE:輸入信號(hào),在讀、寫數(shù)據(jù)期間,必須為高。該引腳有兩個(gè)功能:第一,CE開始控制字訪問移位寄存器的控制邏輯;其次,CE提供結(jié)束單字節(jié)或多字節(jié)數(shù)據(jù)傳輸?shù)姆椒ā?lt;/p><p>  2 DS1302有下列幾組寄存器:</p><p>  1)DS1302有關(guān)日歷、

39、時(shí)間的寄存器共有12個(gè),其中有7個(gè)寄存器(讀時(shí)81h~8Dh,寫時(shí)80h~8Ch),存放的數(shù)據(jù)格式為BCD碼形式,如圖2所示。</p><p>  圖 2   DS1302有關(guān)日歷、時(shí)間的寄存器</p><p>  小時(shí)寄存器(85h、84h)的位7用于定義DS1302是運(yùn)行于12小時(shí)模式還是24小時(shí)模式。當(dāng)為高時(shí),選擇12小時(shí)模式。在12小時(shí)模式時(shí),位5是,當(dāng)為1時(shí),

40、表示PM。在24小時(shí)模式時(shí),位5是第二個(gè)10小時(shí)位。</p><p>  秒寄存器(81h、80h)的位7定義為時(shí)鐘暫停標(biāo)志(CH)。當(dāng)該位置為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位置為0時(shí),時(shí)鐘開始運(yùn)行。</p><p>  控制寄存器(8Fh、8Eh)的位7是寫保護(hù)位(WP),其它7位均置為0。在任何的對(duì)時(shí)鐘和RAM的寫操作之前,WP位必須為0。當(dāng)WP位為1時(shí),寫保護(hù)

41、位防止對(duì)任一寄存器的寫操作。</p><p>  2) DS1302的工作模式寄存器</p><p>  所謂突發(fā)模式是指一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)和RAM數(shù)據(jù)。突發(fā)模式寄存器如圖3所示。</p><p><b>  圖3</b></p><p><b>  3 讀寫時(shí)序說明</b></p&g

42、t;<p>  DS1302是SPI總線驅(qū)動(dòng)方式。它不僅要向寄存器寫入控制字,還需要讀取相應(yīng)寄存器的數(shù)據(jù)。DS1302的控制字如圖4。</p><p>  圖4   控制字(即地址及命令字節(jié))</p><p>  控制字的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)

43、據(jù);位5至位1(A4~A0):指示操作單元的地址;位0(最低有效位):如為0,表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作。</p><p>  控制字總是從最低位開始輸出。在控制字指令輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從最低位(0位)開始。同樣,在緊跟8位的控制字指令后的下一個(gè)SCLK脈沖的下降沿,讀出DS1302的數(shù)據(jù),讀出的數(shù)據(jù)也是從最低位到最高位。數(shù)據(jù)讀寫時(shí)序如圖5 。<

44、/p><p>  圖5  數(shù)據(jù)讀寫時(shí)序</p><p><b>  3 電路原理圖</b></p><p>  電路原理圖如圖8,DS1302與單片機(jī)的連接也僅需要3條線:CE引腳、SCLK串行時(shí)鐘引腳、I/O串行數(shù)據(jù)引腳,Vcc2為備用電源,外接32.768kHz晶振,為芯片提供計(jì)時(shí)脈沖。</p><p><

45、;b>  圖8</b></p><p>  2.2.3 溫度傳感器DS18B20</p><p>  TO-92封裝的DS18B20的引腳排列見下圖,其引腳功能描述見表1。(底視圖)</p><p>  表1 DS18B20詳細(xì)引腳功能描述</p><p>  DS18B20的性能特點(diǎn)如下:1)獨(dú)特的單線接口僅需要一個(gè)端口引

46、腳進(jìn)行通信;2)多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;3)無須外部器件;4)可通過數(shù)據(jù)線供電,電壓范圍為3.0~5.5V;5)零待機(jī)功耗;6)溫度以9或12位數(shù)字;7)用戶可定義報(bào)警設(shè)置;8)報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件;9)負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作; </p><p>  64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號(hào),

47、接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫入戶報(bào)警上下限。</p><p>  DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖3所示。頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第3和第4字節(jié)TH和TL的拷貝

48、,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖3所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式,DS18B20出廠時(shí)該位被設(shè)置為0,用戶要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。</p><p>  圖3  DS18B20字

49、節(jié)定義</p><p>  DS18B20的測(cè)溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。器件中還有一個(gè)計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來決定,每次測(cè)量前,首先將-5

50、5℃所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1、溫度寄存器中,計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。</p><p>  減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器計(jì)數(shù)到0時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就

51、是所測(cè)溫度值。其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)器門仍未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值大致被測(cè)溫度值。</p><p>  表2 一部分溫度對(duì)應(yīng)值表</p><p>  另外,由于DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操

52、作命令→處理數(shù)據(jù)。</p><p>  圖4 DS18B20與單片機(jī)的接口電路</p><p><b>  第三章 程序設(shè)計(jì)</b></p><p>  3.1 程序設(shè)計(jì)思路</p><p>  程序包括主程序若干子程序,系統(tǒng)每一個(gè)相應(yīng)的功能都對(duì)應(yīng)有一個(gè)子程序,在編寫程序時(shí)每一功能都分開編寫,通過主程序的調(diào)用使它們串聯(lián)

53、起來,實(shí)現(xiàn)其功能。在編寫程序前先畫出其流程圖,然后根據(jù)流程圖寫出其源程序,在編寫程序的過程中要有足夠的細(xì)心和耐心。</p><p>  3.2 程序設(shè)計(jì)工具簡(jiǎn)介</p><p>  3.2.1 KEIL C51的功能和操作簡(jiǎn)介</p><p>  KEIL C51簡(jiǎn)介</p><p>  Keil uVision2是德國(guó)Keil Softwa

54、re公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),使用接近于傳統(tǒng)C語言的語法來開發(fā),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用,而且大大的提高了工作效率和項(xiàng)目開發(fā)周期,他還能嵌入?yún)R編,您可以在關(guān)鍵的位置嵌入,使程序達(dá)到接近于匯編的工作效率。KEILC51標(biāo)準(zhǔn)C編譯器為8051微控制器的軟件開發(fā)提供了C語言環(huán)境,同時(shí)保留了匯編代碼高效,快速的特點(diǎn)。C51編譯器的功能不斷增強(qiáng), 使你可以更加貼近CPU

55、本身,及其它的衍生產(chǎn)品。C51已被完全集成到uVision2的集成開發(fā)環(huán)境中,這個(gè)集成開發(fā)環(huán)境包含:編譯器,匯編器,實(shí)時(shí)操作系統(tǒng),項(xiàng)目管理器,調(diào)試器。KEILC51是一款非常優(yōu)秀的編譯器,受到廣大單片機(jī)設(shè)計(jì)者的廣泛使用。其主要特點(diǎn)如下:</p><p>  支持匯編語言、C語言等多種單片機(jī)設(shè)計(jì)語言;</p><p>  可視化的文件管理,界面友好;</p><p>

56、  支持豐富的產(chǎn)品線,除了51及其兼容內(nèi)核的單片機(jī)外,還增加了對(duì)ARM內(nèi)核產(chǎn)品的支持;</p><p>  具有完善的編譯連接工具;</p><p>  具有豐富的仿真調(diào)試功能,可以仿真串口、并口、A/D、D/A、定時(shí)器/計(jì)數(shù)器以及中斷等資源,同時(shí)也可以和外部仿真器聯(lián)合進(jìn)行在線調(diào)試;</p><p>  內(nèi)嵌RTX-51實(shí)時(shí)多任務(wù)操作系統(tǒng);</p>&

57、lt;p>  支持在一個(gè)工作空間中進(jìn)行多項(xiàng)目的程序設(shè)計(jì);</p><p><b>  支持多級(jí)代碼優(yōu)化。</b></p><p>  KEIL C51的入門操作</p><p>  第一步:雙擊Keil uVision2的桌面快捷方式,啟動(dòng)Keil集成開發(fā)開發(fā)軟件。</p><p>  第二步:新建文本編輯窗。點(diǎn)擊

58、工具欄上的新建文件快捷按鍵,即可在項(xiàng)目窗口的右側(cè)打開一個(gè)新的文本編輯窗。</p><p>  第三步:輸入源程序。在新的文本編輯窗中輸入源程序,可以輸入C語言程序,也可以輸入?yún)R編語言程序。</p><p>  第四步:保存源程序。保存文件時(shí)必須加上文件的擴(kuò)展名,如果你使用匯編語言編程,那么保存時(shí)文件的擴(kuò)展名為“.asm”,如果是C語言程序,文件的擴(kuò)展名使用“*.C ”。</p>

59、<p>  第五步:新建立Keil工程。點(diǎn)擊 "工程" → "新建工程" 命令,將出現(xiàn)保存對(duì)話框。</p><p>  第六步:選擇CPU型號(hào)。為工程選擇CPU型號(hào),本次設(shè)計(jì)新建工程選擇了ATMEL公司的AT89C52單片機(jī)。</p><p>  第七步:加入源程序到工程中。在選擇好CPU型號(hào)后,點(diǎn)擊"確定"按鈕返回

60、主界面,此時(shí)可見到工程管理窗中出現(xiàn)“Target 1”,點(diǎn)擊“Target 1”前面的“+”號(hào)展開下一層的“Source Group 1”文件夾,此時(shí)的新工程是空的,“Source Group 1”文件夾中什么文件都沒有,必須把剛才輸入的源程序加入到工程當(dāng)中。右擊工程管理窗中的“Source Group 1”,出現(xiàn)下拉菜單,點(diǎn)擊“增加文件到組'Source Group 1'”命令,將出現(xiàn)添加文件對(duì)話框。</p>

61、;<p>  第八步:工程目標(biāo)'Target 1'屬性設(shè)置。如下圖14所示,在工程項(xiàng)目管理窗中的"Target 1"文件夾上右擊,出現(xiàn)下拉菜單,點(diǎn)擊“目標(biāo)'Target 1'屬性”命令,就進(jìn)入目標(biāo)屬性設(shè)置界面。</p><p>  第九步:源程序的編譯與目標(biāo)文件的獲得</p><p>  3.2.2 PROTUES的功能和

62、操作簡(jiǎn)介</p><p>  Proteus ISIS是英國(guó)Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點(diǎn)是:①實(shí)現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS232動(dòng)態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀

63、器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。②支持主流單片機(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。③提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時(shí)可以觀察各個(gè)變量、寄存器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時(shí)支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil C51 u

64、Vision2等軟件。④具有強(qiáng)大的原理圖繪制功能??傊撥浖且豢罴瘑纹瑱C(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。</p><p>  Proteus基本操作</p><p>  Proteus ISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面。包括:標(biāo)題欄、主菜單、繪圖工具欄、狀態(tài)欄、對(duì)象選擇按鈕、預(yù)覽對(duì)象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、圖形編輯窗口。</p&g

65、t;<p>  運(yùn)行Proteus程序后,進(jìn)入軟件的主界面。通過左側(cè)的工具欄中的P(從庫中選擇元件命令),在Pick Devices左側(cè)窗口中選擇所需元件的關(guān)鍵字,然后放置元件并調(diào)整方向和位置以及參數(shù)設(shè)置,然后進(jìn)行連線。</p><p>  最后載入hex文件后可以進(jìn)行模擬仿真,可以全速運(yùn)行也可以單步調(diào)試運(yùn)行。</p><p>  3.3 程序流程框圖</p>

66、<p><b>  第四章 系統(tǒng)調(diào)試</b></p><p><b>  4.1 調(diào)試思路</b></p><p>  調(diào)試是檢驗(yàn)系統(tǒng)功能的環(huán)節(jié),本次調(diào)試為軟件調(diào)試,在KEIL C51和PROTUES上進(jìn)行,在KEIL C51平臺(tái)上程序無誤后,創(chuàng)立相關(guān)文件,打開PROTUES仿真軟件,通過顯示屏觀察功能實(shí)現(xiàn),邊調(diào)邊改,直至系統(tǒng)功能全部實(shí)

67、現(xiàn)。</p><p>  4.2 調(diào)試方法及過程</p><p>  此次設(shè)計(jì)由于時(shí)間因素,來不及硬件調(diào)試,所以只能通過KEIL C51和PROTUES仿真軟件進(jìn)行軟件調(diào)試,在編譯好源程序并檢查無誤后,在KEIL C51創(chuàng)建生成相關(guān)文件,進(jìn)入PROTUES仿真軟件打開原理圖,在AT89C52里選中工程模塊中output文件夾的.hex文件,點(diǎn)擊仿真開始按鈕,觀察其功能實(shí)現(xiàn),邊觀察邊修改程序

68、,每次修改程序后都必須重新在KEIL C51里創(chuàng)建新的文件,直至系統(tǒng)功能正常實(shí)現(xiàn)。</p><p>  4.3 問題及解決措施</p><p>  1.換屏?xí)r亂跳,有時(shí)顯示亂碼。</p><p>  解決措施:經(jīng)檢查是未加延時(shí)消抖和清屏,增加延時(shí)消抖和清屏函數(shù)后,問題解決。</p><p>  2.星期顯示比實(shí)際星期快一天。</p>

69、;<p>  解決措施:在DS1302子程序里把各星期逐一調(diào)換位置后,成功顯示實(shí)時(shí)星期。</p><p>  3.在調(diào)試修改過程序后,在仿真軟件上未有任何變化。</p><p>  解決措施:經(jīng)詢問老師,原來是在修改程序后未在KEIL C51上重新創(chuàng)建文件,重新創(chuàng)建后,新功能實(shí)現(xiàn)。</p><p><b>  第五章 總結(jié)</b>

70、</p><p><b>  5.1硬件</b></p><p>  設(shè)計(jì)中的硬件包括AT89C52單片機(jī),DS1302時(shí)鐘芯片、DS18B20溫度傳感器和LCD1602液晶顯示屏。AT89C52單片機(jī)作為控制核心,具有在線編程,低功耗,能在3V超低電壓工作;時(shí)鐘電路由DS1302時(shí)鐘芯片提供,它是一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可對(duì)年、月、日、時(shí)、分、

71、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,同時(shí)具有掉電保護(hù)功能;溫度的采集由DS18B20溫度傳感器構(gòu)成,顯示部分由LCD1602構(gòu)成。</p><p><b>  5.2 程序</b></p><p>  程序由主程序和若干子程序構(gòu)成,是實(shí)現(xiàn)時(shí)鐘控制器功能的重要組成部分,只有編譯調(diào)試好了程序,時(shí)鐘控制器的功能才能得以實(shí)現(xiàn)。在編寫程序時(shí),一步一步著手,在寫每個(gè)程序前都要先畫出其相

72、應(yīng)的流程圖,然后再根據(jù)流程圖寫出源程序。主程序主要有設(shè)備初始化,相關(guān)信息的讀寫與顯示及按鍵程序的調(diào)用。按鍵子程序主要實(shí)現(xiàn)時(shí)間調(diào)整與定時(shí)功能的選擇。</p><p><b>  心得體會(huì)</b></p><p><b>  參考文獻(xiàn)</b></p><p>  【1】肖婧.單片機(jī)系統(tǒng)設(shè)計(jì)與仿真—基于Proteus【M】.北京

73、:北京航空航天大學(xué)出版社,2010</p><p>  【2】樓然苗 李光飛.單片機(jī)課程設(shè)計(jì)指導(dǎo)【M】. 北京:北京航空航天大學(xué)出版社,2007</p><p>  【3】譚浩強(qiáng).C程序設(shè)計(jì)(第三版)【M】.清華大學(xué)出版社,2005</p><p><b>  附錄一 電路原理圖</b></p><p><b>

74、;  附錄二 源程序清單</b></p><p><b>  主程序:</b></p><p>  #include <reg52.h></p><p>  #include "lcd1602_driver.h"</p><p>  #include "ds1302_

75、driver.h"</p><p>  #include "display.h"</p><p>  #include "ds18b20_driver.h"</p><p>  #include "anjian.h"</p><p><b>  main()<

76、;/b></p><p>  {init_lcd1602( );</p><p>  init_ds1302( );</p><p>  init_ds18b20( );</p><p>  wr_realtime( );</p><p>  wr_realdate( );</p><p

77、><b>  while(1)</b></p><p><b>  {</b></p><p>  set_disp_position(1,1);</p><p>  display_date( );</p><p>  set_disp_position(2,1);</p>&

78、lt;p>  display_time( );</p><p>  set_disp_position(1,13);</p><p>  display_week( );</p><p>  set_disp_position(2,13);</p><p>  read_temp();</p><p>  dis

79、play_temp( );</p><p><b>  scan();</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  按鍵掃描:</b></p><p>  #i

80、nclude "anjian.h"</p><p>  #include "delay.h"</p><p>  #include "lcd1602_driver.h"</p><p>  #include "ds1302_driver.h"</p><p>  

81、#include "ds18b20_driver.h"</p><p>  #include "display.h"</p><p>  #include <reg52.h></p><p>  unsigned char key_age_sure=0;</p><p>  unsigned

82、 char key_age_up=0;</p><p>  unsigned char key_age_down=0;</p><p>  unsigned char key_age_next=0;</p><p>  void scan( )</p><p><b>  {</b></p><p&g

83、t;  P1=P1|0xf0;</p><p>  key_value=P1; </p><p>  key_value=key_value&0xf0;</p><p>  if(key_value==0xe0)</p><p><b>  { </b></p><p>  key_

84、age_sure++; </p><p><b>  sure();</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  按鍵程序:</b></p><p>  v

85、oid sure( )</p><p><b>  { </b></p><p>  switch(key_age_sure)</p><p><b>  { </b></p><p>  case 1:{clean_screen();</p><p><b&

86、gt;  while(1)</b></p><p><b>  {</b></p><p>  set_disp_position(1,1);</p><p>  display_menu(settime_menu);</p><p>  set_disp_position(2,4);</p>

87、<p>  display_time();</p><p>  switch(key_age_next)</p><p><b>  {</b></p><p>  case 0:{set_disp_flash(2,4);</p><p>  set_disp_flash(2,5);</p>&l

88、t;p><b>  } break;</b></p><p>  case 1:{set_disp_flash(2,7);</p><p>  set_disp_flash(2,8);</p><p><b>  }break;</b></p><p><b>  }</b&g

89、t;</p><p>  if(key_next==0)</p><p>  key_age_next++;</p><p>  if(key_age_next==2) </p><p>  key_age_next=0;</p><p>  if(key_plus==0&&key_age_next==

90、0) //調(diào)時(shí)加</p><p>  {delay_ms(10);</p><p>  while(key_plus==0)</p><p><b>  {</b></p><p>  rd_realtime();</p><p>  real_time[0]=(real_time[0]/16)

91、*10+real_time[0]%16;</p><p>  real_time[0]++;</p><p>  if (real_time[0]==24)</p><p>  real_time[0]=0;</p><p>  real_time[0]=(real_time[0]/10)*16+real_time[0]%10;</p&

92、gt;<p>  } wr_realtime( );</p><p><b>  }</b></p><p>  if(key_minus==0&&key_age_next==0)//調(diào)時(shí)減</p><p><b>  {</b></p><p>  while(k

93、ey_minus==0)</p><p><b>  {</b></p><p>  rd_realtime();</p><p>  real_time[0]=(real_time[0]/16)*10+real_time[0]%16;</p><p>  real_time[0]--;</p><p

94、>  if (real_time[0]==-1)</p><p>  real_time[0]=23;</p><p>  real_time[0]=(real_time[0]/10)*16+real_time[0]%10; </p><p>  }wr_realtime( );</p><p><b>  }&

95、lt;/b></p><p>  if(key_plus==0&&key_age_next==1)//調(diào)分加</p><p>  {delay_ms(10);</p><p>  while(key_plus==0)</p><p><b>  {</b></p><p>

96、;  rd_realtime();</p><p>  real_time[1]=(real_time[1]/16)*10+real_time[1]%16;</p><p>  real_time[1]++;</p><p>  if (real_time[1]==60)</p><p>  real_time[1]=0;</p>

97、<p>  real_time[1]=(real_time[1]/10)*16+real_time[1]%10;</p><p>  } wr_realtime( ); }</p><p>  if(key_minus==0&&key_age_next==1) //調(diào)分減</p><p><b>  {</b>

98、</p><p>  while(key_minus==0)</p><p><b>  {</b></p><p>  rd_realtime();</p><p>  real_time[1]=(real_time[1]/16)*10+real_time[1]%16;</p><p>  re

99、al_time[1]--;</p><p>  if (real_time[1]==-1)</p><p>  real_time[1]=59;</p><p>  real_time[1]=(real_time[1]/10)*16+real_time[1]%10; </p><p>  }wr_realtime( );<

100、/p><p><b>  }</b></p><p>  if(key_sure==0)</p><p>  key_age_sure++;</p><p>  if(key_age_sure==2)break; </p><p>  } } </p><p>&l

101、t;b>  case 2:{</b></p><p>  clean_screen();</p><p><b>  while(1) </b></p><p><b>  {</b></p><p>  set_disp_position(1,1);</p><

102、;p>  display_menu(setdate_menu);</p><p>  set_disp_position(2,4);</p><p>  display_date();</p><p>  set_disp_position(1,14); </p><p>  display_week();</p>&l

103、t;p>  switch(key_age_next)</p><p><b>  {</b></p><p>  case 0:{set_disp_flash(2,6);</p><p>  set_disp_flash(2,7);</p><p><b>  } break;</b><

104、;/p><p>  case 1:{set_disp_flash(2,9);</p><p>  set_disp_flash(2,10);</p><p><b>  } break;</b></p><p>  case 2:{set_disp_flash(2,12);</p><p>  se

105、t_disp_flash(2,13);</p><p><b>  } break;</b></p><p><b>  }</b></p><p>  if(key_next==0)</p><p>  key_age_next++;</p><p>  if(key_a

106、ge_next==3) </p><p>  key_age_next=0;</p><p>  if(key_plus==0&&key_age_next==0) //調(diào)年加</p><p>  {delay_ms(10);</p><p>  while(key_plus==0)</p><p>&

107、lt;b>  {</b></p><p>  rd_realdate();</p><p>  real_date[0]=(real_date[0]/16)*10+real_date[0]%16;</p><p>  real_date[0]++;</p><p>  if (real_date[0]==100)</p

108、><p>  real_date[0]=0;</p><p>  real_date[0]=(real_date[0]/10)*16+real_date[0]%10;</p><p>  } wr_realdate( );</p><p><b>  }</b></p><p>  if(key_m

109、inus==0&&key_age_next==0) //調(diào)年減</p><p>  {delay_ms(10);</p><p>  while(key_minus==0)</p><p><b>  {</b></p><p>  rd_realdate();</p><p>

110、  real_date[0]=(real_date[0]/16)*10+real_date[0]%16;</p><p>  real_date[0]--;</p><p>  if (real_date[0]==-1)</p><p>  real_date[0]=99;</p><p>  real_date[0]=(real_date[

111、0]/10)*16+real_date[0]%10;</p><p>  } wr_realdate( );</p><p><b>  }</b></p><p>  if(key_plus==0&&key_age_next==1) //調(diào)月加</p><p>  {delay_ms(10);<

112、/p><p>  while(key_plus==0)</p><p><b>  {</b></p><p>  rd_realdate();</p><p>  real_date[1]=(real_date[1]/16)*10+real_date[1]%16;</p><p>  real_da

113、te[1]++;</p><p>  if (real_date[1]==13)</p><p>  real_date[1]=1;</p><p>  real_date[1]=(real_date[1]/10)*16+real_date[1]%10;</p><p>  } wr_realdate( );</p><

114、p><b>  }</b></p><p>  if(key_minus==0&&key_age_next==1)//調(diào)月減</p><p>  {delay_ms(10);</p><p>  while(key_minus==0)</p><p><b>  {</b>

115、</p><p>  rd_realdate();</p><p>  real_date[1]=(real_date[1]/16)*10+real_date[1]%16;</p><p>  real_date[1]--;</p><p>  if (real_date[1]==0)</p><p>  real_d

116、ate[1]=12;</p><p>  real_date[1]=(real_date[1]/10)*16+real_date[1]%10;</p><p>  } wr_realdate( );</p><p><b>  }</b></p><p>  if(key_plus==0&&key_ag

117、e_next==2) //調(diào)日加</p><p>  {delay_ms(10);</p><p>  while(key_plus==0)</p><p><b>  {</b></p><p>  rd_realdate();</p><p>  real_date[2]=(real_dat

118、e[2]/16)*10+real_date[2]%16;</p><p>  real_date[2]++;</p><p>  real_date[3]++; //周隨日加而變化 </p><p>  if (real_date[3]==8)</p><p>  real_date[3]=1;</p>

119、<p>  if (real_date[1]==1||real_date[1]==3||real_date[1]==5||real_date[1]==7||real_date[1]==9||real_date[1]==11)</p><p>  if (real_date[2]==32)</p><p>  real_date[2]=1;</p><p>

120、  if (real_date[1]==4||real_date[1]==6||real_date[1]==8||real_date[1]==10||real_date[1]==12)</p><p>  if (real_date[2]==31)</p><p>  real_date[2]=1;</p><p>  if (real_date[0]%4==0)&

121、lt;/p><p>  if (real_date[1]==2)</p><p>  if (real_date[2]==30)</p><p>  real_date[2]=1;</p><p>  if (real_date[0]%4!=0)</p><p>  if (real_date[1]==2)</p&g

122、t;<p>  if (real_date[2]==29)</p><p>  real_date[2]=1;</p><p>  real_date[2]=(real_date[2]/10)*16+real_date[2]%10;</p><p>  } wr_realdate( );</p><p><b>  

123、}</b></p><p>  if(key_minus==0&&key_age_next==2) //調(diào)日減</p><p>  {delay_ms(10);</p><p>  while(key_minus==0)</p><p><b>  {</b></p><

124、;p>  rd_realdate();</p><p>  real_date[2]=(real_date[2]/16)*10+real_date[2]%16;</p><p>  real_date[2]--;</p><p>  real_date[3]--;//周隨日加而變化</p><p>  if (real_date[

125、3]==0)</p><p>  real_date[3]=7;</p><p>  if (real_date[1]==1||real_date[1]==3||real_date[1]==5||real_date[1]==7||real_date[1]==8||real_date[1]==10||real_date[1]==12)</p><p>  if (re

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論