




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上目 錄一、摘要··············································
2、3;··························2二、設計任務.······················
3、183;·············································4三、總體方案設計與論證··
4、183;·················································
5、183;······4 1、液晶顯示模塊·········································
6、3;···················4 2、實時時間計算模塊····························
7、3;····························5 3、實時環境溫度采集模塊···················
8、183;·································54、報警模塊···············&
9、#183;··············································65、設置模塊··
10、··················································
11、··········6四、總體方案組成框圖······································&
12、#183;···················7五、系統硬件設計····························
13、3;································81、LCD顯示模塊················
14、··········································82、實時時間計算模塊······&
15、#183;···············································123、實時環境溫度檢測模
16、塊·················································164、報
17、警模塊·················································
18、83;···········215、設置模塊·····································&
19、#183;·······················22六、系統軟件設計························
20、83;···································23七、系統硬件電路設計············
21、83;···········································24八、系統硬件PROTEUS仿真原理圖···&
22、#183;········································25九、系統硬件仿真運行情況圖······
23、3;···········································261、顯示歡迎界面·····
24、··················································
25、··262、顯示實時時間··············································
26、183;···········263、顯示當前溫度····································
27、3;·····················274、時間設置···························
28、183;··································275、最高報警溫度設置·············
29、183;········································286、鬧鐘時間設置·······
30、3;·················································
31、3;287、超溫················································
32、3;·················298、鬧鐘時間到·······························&
33、#183;····························29附錄一:實物圖···················
34、3;··········································30附錄二:PCB圖······
35、··················································
36、······32附錄三:源程序代碼··········································&
37、#183;················33附錄四:參考文獻·······························
38、83;····························62摘 要單片機就是微控制器,是面向應用對象設計、突出控制功能的芯片。單片機接上晶振、復位電路和相應的接口電路,裝載軟件后就可以構成單片機應用系統。將它嵌入到形形色色的應用系統中,就構成了眾多產品、設備的智能化核心。本設計就是應用單片機強大的控制功能制作而成
39、的電子萬年歷,該電子萬年歷包括三大功能:實時顯示年、月、日、時、分、秒;實時監測環境溫度(可根據需要啟動高溫報警功能);電子鬧鐘。M bn本設計采用的是AT89S52單片機,該單片機采用的MCU51內核,因此具有很好的兼容性,內部帶有8KB的ROM,能夠存儲大量的程序,最突出特點是具有ISP在系統燒寫功能,使得燒寫程序更加方便。計時芯片采用DALLAS公司的涓細充電時鐘芯片DS1302,該芯片通過簡單的串行通信與單片機進行通信,時鐘/日歷電路能夠實時提供年、月、日、時分、秒信息,采用雙電源供電,當外部電源掉電時能夠利用后備電池準確計時。溫度檢測采用DALLAS公司的數字化溫度傳感器,該芯片采用
40、的是獨特的“一線總線”的方式與單片機進行通信,一線總線獨特而且經濟的特點,是用戶可以輕松的組建傳感器網絡,為測量系統的構建引入全新的概念。實時溫度采用一線總線的方式傳輸大大的提高了信號的抗干擾性,分辨率可通過軟件設置,其小巧的體積為各種環境下測量溫度提供了方便。顯示器件采用通用型1602液晶,可顯示32個字符,如果使用數碼管來做顯示器件需消耗大量的系統資源,因此采用低功耗的1602液晶,該液晶顯示方便,功能強大,完全能滿足數字萬年歷的顯示要求。 通過此次設計能夠更加牢固的掌握單片機的應用技術,增強動手能力、硬件設計能力以及軟件設計能力。設計任務1、設計任務:利用單片機、時鐘芯片DS1302、溫
41、度傳感器DS18B20、1602液晶等實現日期、時間、溫度的顯示即一個簡單的萬年歷。2、設計要求(1)通過DS1302能夠準確的計時,時間可調并在液晶上顯示出來。(2)通過DS18B20能夠實時、準確的檢測當前環境溫度。(3)利用單片機自身功能實現鬧鐘。總體方案論證與設計本系統以AT89S52單片機為控制核心,通過與DS1302和DS18B20通信獲取實時時間和實時環境溫度,并將得到的數據通過1602液晶顯示出來,同時通過相應的按鍵調整相應的值。因此本設計可分為一下模塊:顯示模塊、實時時間計算模塊、實時環境溫度采集模塊、報警模塊、設置模塊(時間設置模塊、最高溫度設置模塊、鬧鐘設置模塊)。下面對
42、各個模塊逐一進行論證分析:1、 液晶顯示模塊方案(1):數碼管是利用發光二極管的特性組合而成數字顯示器件,通過控制相應的二極管的狀態顯示相應的數字。要使數碼管正常顯示就得有驅動電路驅動相應的段碼,數碼管的現實方式可分為靜態顯示和動態顯示,靜態顯示方式只適合顯示單個的數字,因此本設計應采用動態顯示方式。由于動態顯示方式利用的是人眼視覺暫留的特性,掃描的時間應不大于20毫秒,占用系統資源大,而且顯示的個數和字型有限,在本設計中不易采用。方案(2):1602液晶也叫1602字符型液晶 它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊 它有若干個5X7或者5X11等點陣字符位組成,每個點陣字符位
43、都可以顯示一個字符。每位之間有一個點距的間隔,每行之間也有也有間隔,起到了字符間距和行間距的作用。1602的驅動電路帶有11條指令,可以很方便的控制液晶的現實效果如:清屏、左移右移、光標顯示。而且1602顯示的字符在下一條指令為到來之前不會改變,也就是能夠維持顯示的字符,1602液晶占用的系統資源也少。綜合比較上述兩種方案,應采用1602液晶組成本設計的顯示模塊。2、 實時時間計算模塊方案(1):AT89S52單片機內部帶有定時/計數功能,此定時功能是通過對外部晶振的脈沖進行計數,從而達到計時功能,只要使用11.0592的晶振就能實現零誤差的計時,因此可以利用此功能實現計時,但因為只有單一的計
44、時功能要實現“萬年歷”的功能需要較復雜的程序,而且如果單片機掉電無法繼續進行計時,所以使用不便。方案(2):DS1302是美國DALLAS公司推出的一種高性能、低功耗的實時時鐘芯片,附加31字節靜態RAM,采用SPI三線接口與CPU進行通信,并可采用突發方式一次傳送多個字節的時鐘信號和RAM數據。實時時鐘可提供秒、分、時、日、星期、月和年,一個月小與31天時可以自動調整,且具有閏年補償功能。工作電壓寬達2.55.5V。采用雙電源供電(主電源和備用電源),可設置備用電源充電方式,提供了對后備電源進行涓細電流充電的能力。利用單片機強大的控制功能就可實現實時計時的功能,而且消耗的系統資源少,程序簡單
45、。綜合上述兩種方案,宜采用方案(2)實現實時計時功能。3、實時環境溫度采集模塊方案(1):熱敏電阻是開發早、種類多、發展較成熟的敏感元器件熱敏電阻由半導體陶瓷材料組成,利用的原理是溫度引起電阻變化通過一定的電路可以將周圍環境的溫度變化轉化成電壓的變化,通過AD轉化器件將信號傳輸給單片機進行分析,從而測出當前環境溫度,但誤差大,不穩定,對環境要求較高。方案(2):DS18B20是美國DALLAS公司生產的數字溫度傳感器,采用單總線的接口方式與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20 的雙向通訊。 單總線具有經濟性好,抗干擾能力強,適合于惡劣環境的現場溫度測量,使用方便等優點,
46、使用戶可輕松地組建傳感器網絡,為測量系統的構建引入全新概念。測量溫度范圍寬,測量精度高 ,在使用中不需要任何外圍元件,支持多點組網功能 多個 DS18B20 可以并聯在惟一的單線上,實現多點測溫,供電方式靈活 DS18B20 可以通過內部寄生電路從數據線上獲取電源。因此,當數據線上的時序滿足一定的要求時,可以不接外部電源,從而使系統結構更趨簡單,可靠性更高。因此非常適合本系統使用。綜上比較上述兩種方案,宜采用方案(2)構成本設計的實時溫度采集模塊。4、報警模塊此模塊采用無源蜂鳴器實現,只要編寫相應的程序即可實現發出不同頻率的聲音。5、設置模塊因設置模塊只需編寫相應的程序外加相應的按鍵即可實現,
47、實現方法較簡單,在此不再論述。總體方案組成框圖報警模塊(蜂鳴器)顯示模塊(1602液晶)AT89S52時間計算模塊DS1302實時溫度采集模塊(DS18B20)設置模塊(獨立按鍵)系統硬件設計1、LCD顯示模塊設計(1)1602液晶功耗較小可直接與單片機接口相接,電源直接與電源電路相接,使用單片機的P0口和P1口與1602進行通信。(2)1602相應功能特性介紹n +5V電壓,對比度可調n 內含復位電路n 提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種功能n 有80字節顯示數據存儲器DDRAMn 內建有160個5X7點陣的字型的字符發生器CGROMn 8個可由用戶自定義的5X7
48、的字符發生器CGRAM(3)1602引腳介紹(4)1602液晶11條指令介紹1.清屏指令 功能:<1> 清除液晶顯示器,即將DDRAM的內容全部填入“空白”的字符碼20H; <2> 光標歸位,即將光標撤回液晶顯示屏的左上方; <3>將地址計數器(AC)的值設為0;2.光標歸位指令 功能:<1> 把光標撤回到顯示器的左上方; <2> 把地址計數器(AC)的值設置為0; <3> 保持DDRAM的內容不變 ;3.輸入模式設置指令 功能:設定每次寫入1位數據后光標的移位方向,并且設定每次寫入的一個字符是否移動。參數設定的情況如下所
49、示: 位名 設置 I/D 0=寫入新數據后光標左移 1=寫入新數據后光標右移 S
50、0; 0=寫入新數據后顯示屏不移動 1=寫入新數據后顯示屏整體右移1個字 4.顯示開關控制指令功能:控制顯示器開/關、光標顯示/關閉以及光標是否閃爍。參數設定的情況如下: 位名 設置 D 0=顯示功能關
51、0; 1=顯示功能開 C 0=無光標 1=有光標 B
52、; 0=光標不閃爍 1=光標閃爍 5.設定顯示屏或光標移動方向指令功能:使光標移位或使整個顯示屏幕移位。參數設定的情況如下: S/C &
53、#160; R/L 設定情況 0 0 光標左移1格,且AC值減1 0
54、; 1 光標右移1格,且AC值加1 1 0
55、0; 顯示器上字符全部左移一格,但光標不動 1 1 顯示器上字符全部右移一格,但光標不動 6.功能設定指令 (非常重要的指令)功能:設定數據總線位數、顯示的行數及字型。參數設定的情況如下: 位名 &
56、#160; 設置 DL 0=數據總線為4位 1=數據總線為8位 N
57、0; 0=顯示1行 1=顯示2行 F
58、 0=5×7點陣/每字符 1=5×10點陣/每字符 7.設定CGRAM地址指令 功能:設定下一個要存入數據的CGRAM的地址。 8.設定DDRAM地址指令 功能:設定下一個要存入數據的CGRAM的地址。 9.讀取忙信號或AC地址指令 功能:<1> 讀取忙碌信號BF的內容,BF=1表示液晶顯示器忙,暫時無法接收單片機送來的數據或指令; 當BF=0時,液晶顯示器可以接收單片機送來的數據或指令; <2> 讀取地址計數器(AC)的內容。 10.數據寫入DDRAM或CG
59、RAM指令 功能:<1> 將字符碼寫入DDRAM,以使液晶顯示屏顯示出相對應的字符; <2> 將用戶自己設計的圖形存入CGRAM。 11.從CGRAM或DDRAM讀出數據的指令 功能:讀取DDRAM或CGRAM中的內容。 基本操作時序: 讀狀態 輸入:RS=L,RW=H,E=H 輸出:DB0DB7=狀態字 寫指令
60、 輸入:RS=L,RW=L,E=下降沿脈沖,DB0DB7=指令碼 輸出:無 讀數據 輸入:RS=H,RW=H,E=H 輸出:DB0DB7=數據 寫數據 輸入:RS=H,RW=L,E=下降沿脈沖,DB0DB7=數據 輸出:無 (5)、1602液
61、晶與單片機接口電路2、時間計算模塊設計DS1302通過三根口線實現與單片機的通信,因DS1302功耗很小,即使電源掉電后通過3V的紐扣電池仍能維持DS1302精確走時。(1) DS1302特性介紹DS1302是美國DALLAS公司推出的一種高性能、低功耗的實時時鐘芯片,附加31字節靜態RAM,采用SPI三線接口與CPU進行通信,并可采用突發方式一次傳送多個字節的時鐘信號和RAM數據。實時時鐘可提供秒、分、時、日、星期、月和年,一個月小與31天時可以自動調整,且具有閏年補償功能。工作電壓寬達2.55.5V。采用雙電源供電(主電源和備用電源),可設置備用電源充電方式,提供了對后備電源進行涓細電流充
62、電的能力。(2) DS1302引腳介紹 各引腳的功能為:8 、Vcc1:備用電池端;1、Vcc2:5V電源。當Vcc2>Vcc1+0.2V時,由Vcc2向DS1302供電,當Vcc2< Vcc1時,由Vcc1向DS1302供電。7、 SCLK:串行時鐘,輸入; 6、I/O:數據輸入輸出口;5、CE/RST:復位腳2 3、X1、X2 是外接晶振腳 (32.768KHZ的晶振)4、地(GND)(4)DS1302有關日歷、時間的寄存器 寄存器的說明如下:1、秒寄存器(81h、80h)的位7定義為時鐘暫停標志(CH)。當初始上電時該位置為1,時鐘振蕩器停止,DS1302處于低功
63、耗狀態;只有將秒寄存器的該位置改寫為0時,時鐘才能開始運行。2、小時寄存器(85h、84h)的位7用于定義DS1302是運行于12小時模式還是24小時模式。當為高時,選擇12小時模式。在12小時模式時,位5是 ,當為1時,表示PM。在24小時模式時,位5是第二個10小時位3、控制寄存器(8Fh、8Eh)的位7是寫保護位(WP),其它7位均置為0。在對任何的時鐘和RAM的寫操作之前,WP位必須為0。當WP位為1時,寫保護位防止對任一寄存器的寫操作。也就是說在電路上電的初始態WP是1,這時是不能改寫上面任何一個時間寄存器的,只有首先將WP改寫為0,才能進行其它寄存器的寫操作。 (5)DS1302控
64、制字介紹控制字的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數據寫入到DS1302中。位6:如果為0,則表示存取日歷時鐘數據,為1表示存取RAM數據;位5至位1(A4A0):指示操作單元的地址;位0(最低有效位):如為0,表示要進行寫操作,為1表示進行讀操作。讀數據:讀數據時在緊跟8位的控制字指令后的下一個SCLK脈沖的下降沿,讀出DS1302的數據,讀出的數據是從最低位到最高位。寫數據:控制字總是從最低位開始輸出。在控制字指令輸入后的下一個SCLK時鐘的上升沿時,數據被寫入DS1302,數據輸入也是從最低位(0位)開始。位0(最低有效位):為1表示進行讀操作。 如為0,表示要進行寫操
65、作,控制字后 SCLK 下降沿 讀數據 SCLK上升沿寫數據(6)DS1302單字節讀寫時序介紹DS1302的數據讀寫是通過I/O串行進行的。當進行一次讀寫操作時最少得讀寫兩個字節,第一個字節是控制字節,就是一個命令,告訴DS1302是讀還是寫操作,是對RAM還是對CLOK寄存器操作,以及操作的址。第二個字節就是要讀或寫的數據了。我們先看單字節寫:在進行操作之前先得將CE(也可說是RST)置高電平,然后單片機將控制字的位0放到I/O上,當I/O的數據穩定后,將SCLK置高電平,DS1302檢測到SCLK的上升沿后就將I/O上的數據讀取,然后單片機將SCLK置為低電平,再將控制字的位1放到I/O
66、上,如此反復,將一個字節控制字的8個位傳給DS1302。接下來就是傳一個字節的數據給DS1302,當傳完數據后,單片機將CE置為低電平,操作結束。單字節讀操作的一開始寫控制字的過程和上面的單字節寫操作是一樣,但是單字節讀操作在寫控制字的最后一個位,SCLK還在高電平時,DS1302就將數據放到I/O上,單片機將SCLK置為低電平后數據鎖存,單機機就可以讀取I/O上的數據。如此反復,將一個字節的數據讀入單片機。讀與寫操作的不同就在于,寫操作是在SCLK低電平時單片機將數據放到IO上,當SCLK上升沿時,DS1302讀取。而讀操作是在SCLK高電平時DS1302放數據到IO上,將SCLK置為低電平
67、后,單片機就可從IO上讀取數據。(7)DS1302操作指令介紹操作說明:1 首先要通過8EH將寫保護去掉,將日期,時間的初值寫時各個寄存器。2 然后就可以對80H、82H、84H、86H、88H、8AH、8CH進行初值的寫入。同時也通過秒寄存器將位7的CH值改成0,這樣DS1302就開始走時運了。3 將寫保護寄存器再寫為80H,防止誤改寫寄存器的值。4 不斷讀取80H8CH的值,將它們格式化后顯示到1602LCD液晶上(8)DS1302與單片機接口電路3、實時環境溫度檢測模塊DS18B20通過單總線實現與單片機的通信,每個DS18B20都有一個唯一的序列號,可以方便的實現組網檢測。(1)單總線
68、介紹n 單總線即只有一根數據線,系統中的數據交換,控制都由這根線完成。n 單總線通常要求外接一個約為 4.7K10K 的上拉電阻,這樣,當總線閑置時其狀態為高電平。(2) DS18B20特性介紹n DS18B20 單線數字溫度傳感器,即“一線器件”,其具有獨特的優點:n ( 1 )采用單總線的接口方式 與微處理器連接時 僅需要一條口線即可實現微處理器與 DS18B20 的雙向通訊。 單總線具有經濟性好,抗干擾能力強,適合于惡劣環境的現場溫度測量,使用方便等優點,使用戶可輕松地組建傳感器網絡,為測量系統的構建引入全新概念。n 測量溫度范圍寬,測量
69、精度高 DS18B20 的測量范圍為 -55 + 125 ; 在 -10+ 85°C 范圍內,精度為 ± 0.5°C 。n 在使用中不需要任何外圍元件。n 支持多點組網功能 多個 DS18B20 可以并聯在惟一的單線上,實現多點測溫。n 供電方式靈活 DS18B20 可以通過內部寄生電路從數據線上獲取電源。因此,當數據線上的時序滿足一定的要求時,可以不接外部電源,從而 使系統結構更趨簡單,可靠性更高。n 測量參數可配置 DS18B20 的測量分辨率可通過程序設定 912 位。n 負壓特性 電源極性接反時,溫度計不會因發熱而燒毀,但不能正常工作。n 掉電保護功能 D
70、S18B20 內部含有 EEPROM ,在系統掉電以后,它仍可保存分辨率及報警溫度的設定值。n DS18B20 具有體積更小、適用電壓更寬、更經濟、可選更小的封裝方式,更寬的電壓適用范圍,適合于構建自己的經濟的測溫系統,因此也就被設計者們所青睞。(3) DS18B20管腳介紹 DS18B20的管腳排列1 . GND為電源 地;2. DQ為數字信號輸入輸出端;3. VDD為外接供電電源輸入端,在寄生電源接線方式時接地; (4) DS18B20內部結構n DS18B20 內部結構主要由四部分組成: 64 位光刻 ROM 、溫度傳感器、非揮發的溫度報警觸發器 TH 和 TL 、配置寄存器。n
71、60; 光刻 ROM 中的 64 位序列號是出廠前被光刻好的,它可以看作是該 DS18B20 的地址序列碼。 64 位光刻 ROM 的排列是:開始 8 位(地址: 28H )是產品類型標號,接著的 48 位是該 DS18B20 自身的序列號,并且每個 DS18B20 的序列號都不相同,因此它可以看作是該 DS18B20 的地址序列碼;最后 8 位則是前面 56 位的循環冗余校驗碼( CRC=X8+X5+X4+1 )。由于每一個 DS18B20 的 ROM 數據都各不相同,因此微控制器就可以通過單總線對多個 DS18B20 進行尋址,從而實現一根總線上掛接多個
72、 DS18B20 的目的。DS18B20中的溫度傳感器完成對溫度的測量,用16位二進制形式提供,形式表達,其中S為符號位。(5) DS18B20溫度轉化示例(6) DS18B20時序介紹DS18B20的一線工作協議流程是:初始化ROM操作指令存儲器操作指令數據傳輸。其工作時序包括:l 初始化時序l 寫時序l 讀時序初始化時序 主機首先發出一個480960微秒的低電平脈沖,然后釋放總線變為高電平,并在隨后的480微秒時間內對總線進行檢測,如果有低電平出現說明總線上有器件已做出應答。若無低電平出現一直都是高電平說明總線上無器件應答。做為從器件的DS18B20在一上電后就一直在檢測總線上是否有480
73、960微秒的低電平出現,如果有,在總線轉為高電平后等待1560微秒后將總線電平拉低60240微秒做出響應存在脈沖,告訴主機本器件已做好準備。若沒有檢測到就一直在檢測等待。 對DS18B20的寫和讀操作接下來就是主機發出各種操作命令,但各種操作命令都是向DS18B20寫0和寫1組成的命令字節,接收數據時也是從DS18B20讀取0或1的過程。因此首先要搞清主機是如何進行寫0、寫1、讀0和讀1的。寫周期最少為60微秒,最長不超過120微秒。寫周期一開始做為主機先把總線拉低1微秒表示寫周期開始。隨后若主機想寫0,則繼續拉低電平最少60微秒直至寫周期結束,然后釋放總線為高電平。若主機想寫1,在一開始拉低
74、總線電平1微秒后就釋放總線為高電平,一直到寫周期結束。而做為從機的DS18B20則在檢測到總線被拉底后等待15微秒然后從15us到45us開始對總線采樣,在采樣期內總線為高電平則為1,若采樣期內總線為低電平則為0。對于讀數據操作時序也分為讀0時序和讀1時序兩個過程。讀時序是從主機把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數據傳輸到單總線上。DS18B20在檢測到總線被拉低1微秒后,便開始送出數據,若是要送出0就把總線拉為低電平直到讀周期結束。若要送出1則釋放總線為高電平。主機在一開始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內的15微秒時間內
75、完成對總線進行采樣檢測,采樣期內總線為低電平則確認為0。采樣期內總線為高電平則確認為1。完成一個讀時序過程,至少需要60us才能完成(7) DS18B20操作步驟()每次讀寫前對 DS18B20 進行復位初始化。復位要求主 CPU 將數據線下拉 500us ,然后釋放, DS18B20 收到信號后等待 16us60us 左右,然后發出 60us240us 的存在低脈沖,主 CPU 收到此信號后表示復位成功。()發送一條 ROM 指令()發送存儲器指令(8) DS18B20與單片機的接口電路4、報警模塊報警模塊采用單片機輸出一定頻率的方波從而使蜂鳴器發出聲音蜂鳴器與單片機的接口電路5、設置模塊設
76、置模塊采用四個按鍵與P14、P15、P16、P17相接組成獨立按鍵,接口電路如下;系統軟件設計軟件設計是本設計的關鍵,軟件程序編寫的好壞直接影響著系統運行情況的良好。因本程序涉及的模塊較多,所以程序編寫也采用模塊化設計,C語言具有編寫靈活、移植方便、便于模塊化設計的特點,所以本系統的軟件采用C51編寫。程序框圖如下:判斷是否有按鍵按下時間、日期、上限溫度、鬧鐘設置模塊沒有按鍵按下 溫度檢測模塊開機初始化顯示歡迎界面從DS1302讀取信息1602液晶顯示相關信息系統硬件電路設計本設計硬件電路圖如下系統硬件PROTEUS仿真原理圖系統硬件仿真運行情況圖顯示歡迎界面顯示實時時間顯示當前溫度時間設置最
77、高報警溫度設置鬧鐘時間設置超 溫鬧鐘時間到附錄一:實物圖附錄二:PCB圖附錄三:源程序代碼#include<reg52.h>#include<intrins.h>unsigned char code displaywelcome=" Welcome To My Lcd Timer"/歡迎界面unsigned char code displaywish=" Happy Every Day _" /歡迎界面unsigned char code overtemperature="OVERTEMPERATURE!"un
78、signed char code digit="" /數字代碼unsigned char mode,TH,TL,TN,TD,length,tempswitch,Maxtemp=40,amode,alarmmode,minutes,hours,minutea,seconds,houra=12;sbit SCLK=P10;/DS1302時鐘輸入sbit DATE=P11;/DS1302數據輸入sbit REST=P12;/DS1302復位端口sbit SET=P14;/DS1302設置模式選擇位sbit ADD=P15;/增加sbit RED=P16;/減小sbit CANL=
79、P17;void delay1ms(int i)/1毫秒延時 int j,k; while(i-) for(j=76;j>1;j-); for(k=29;k>1;k-); void delaynus(unsigned char n) /延時若干微秒 unsigned char i; for(i=0;i<n;i+);/*蜂鳴器模塊*/ sbit beep=P36;/位定義,定義P.6位fmp void dely500(void) unsigned char i; for(i=250;i>0;i-) _nop_(); void baojing(unsigned char n
80、) unsigned char x,i; while(n-) for(i=0;i<5;i+) for(x=0;x<200;x+) beep=beep; dely500(); for(i=0;i<3;i+) for(x=0;x<200;x+) beep=beep; dely500(); dely500(); /*DS1302模塊*/ void Write1302(unsigned char date)/向1302寫數據 unsigned char i;SCLK=0;delaynus(2);for(i=0;i<8;i+)DATE=date&0x01;SCLK=
81、1;delaynus(2);SCLK=0;delaynus(2);date>>=1; void WriteSet1302(unsigned char cmd,unsigned char date) /根據相應的命令輸入相應的數據 REST=0;SCLK=0;REST=1;Write1302(cmd);delaynus(5);Write1302(date);SCLK=1;REST=0; unsigned char Read1302(void)/讀取1302數據 unsigned char i,date;delaynus(2);for(i=0;i<8;i+)date>>
82、;=1;if(DATE=1)date|=0x80;SCLK=1;delaynus(2);SCLK=0;delaynus(2);return date; unsigned char ReadSet1302(unsigned char cmd)/根據命令讀取1302相應的值unsigned char date;REST=0;SCLK=0;REST=1;Write1302(cmd);delaynus(2);date=Read1302();SCLK=1;REST=0;return date;void IntDS1302(void) /DS1302初始化 unsigned char flag; flag
83、= ReadSet1302(0x81);if(flag&0x80) /判斷時鐘芯片是否關閉 WriteSet1302(0x8E,0x00); /根據寫狀態寄存器命令字,寫入不保護指令 WriteSet1302(0x80,(0/10)<<4|(0%10); /根據寫秒寄存器命令字,寫入秒的初始值WriteSet1302(0x82,(0/10)<<4|(0%10); /根據寫分寄存器命令字,寫入分的初始值WriteSet1302(0x84,(0/10)<<4|(0%10); /根據寫小時寄存器命令字,寫入小時的初始值WriteSet1302(0x86,(
84、0/10)<<4|(0%10); /根據寫日寄存器命令字,寫入日的初始值WriteSet1302(0x88,(0/10)<<4|(0%10); /根據寫月寄存器命令字,寫入月的初始值WriteSet1302(0x8c,(10/10)<<4|(10%10); /根據寫年寄存器命令字,寫入年的初始值WriteSet1302(0x90,0xa5); /打開充電功能 選擇2K電阻充電方式WriteSet1302(0x8E,0x80); /根據寫狀態寄存器命令字,寫入保護指令 /*液晶顯示模塊*/sbit RS=P25;sbit RW=P26;sbit E=P27;s
85、bit BF=P07; /*液晶忙檢測*/bit BusyTest(void)bit result;RS=0;RW=1;E=1;_nop_();_nop_();_nop_();result=BF;_nop_();_nop_();_nop_();E=0;return result;/*寫指令*/void Write_com(unsigned char command)while(BusyTest()!=0);RS=0;RW=0;E=0;_nop_();_nop_();_nop_();P0=command;_nop_();_nop_();_nop_();E=1;_nop_();_nop_();_n
86、op_();E=0;/*寫地址*/void Write_Address(unsigned char address)Write_com(address|0x80);delay1ms(1); /*寫數據*/void Write_Date(unsigned char date)RS=1;RW=0;E=0;_nop_();_nop_();_nop_();P0=date;_nop_();_nop_();_nop_();E=1;_nop_();_nop_();_nop_();E=0;delay1ms(1);/*初始化*/void Lcd_Int(void)Write_com(0x38);delay1ms(1);Write_com(0x38);delay1ms(1);Write_com(0x06);delay1ms(1);Write_com(0x0c);delay1ms(1);Write_com(0x01);void displaymainpart
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國硅酮外墻填縫膠市場調查研究報告
- 2025年中國直線電機調速控制器市場調查研究報告
- 2025年中國玻璃水晶飾品項目投資可行性研究報告
- 2025年中國牽切線項目投資可行性研究報告
- 晉城叉車考試試題及答案
- 放射技術考試試題及答案
- 淮上區六年級試卷及答案
- 2025年社會保障法與實踐考試試卷及答案
- 2025年項目管理與風險控制考試試卷及答案
- 2025年人力資源測評與管理考試試題及答案
- 物業車位收費協議書
- 離婚協議書正規打印電子版(2025年版)
- 【數學】三角形 問題解決策略:特殊化課件2024-2025學年北師大版數學七年級下冊
- 【MOOC】跨文化交際入門-華中師范大學 中國大學慕課MOOC答案
- 人工智能導論(天津大學)知到智慧樹章節答案
- 中考數學計算題練習100道(2024年中考真題)
- 激光跟蹤儀使用手冊
- 慈溪市小學辦學水平四星級督導評估自評情況匯總表
- SMT不良品維修作業指導書
- 鄭州印象城市介紹旅游推介專題講授PPT課件
- 三相四線及三相三線錯誤接線向量圖分析及更正
評論
0/150
提交評論