帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)的設(shè)計(jì)_第1頁
帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)的設(shè)計(jì)_第2頁
帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)的設(shè)計(jì)_第3頁
帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)的設(shè)計(jì)_第4頁
帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)的設(shè)計(jì)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)的設(shè)計(jì)福建師范大學(xué)應(yīng)用科技學(xué)院 電子信息工程專業(yè)120352010024 周友杰 指導(dǎo)老師 歐琳【摘要】 本文對(duì)基于STC89C52單片機(jī)的帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)的設(shè)計(jì)進(jìn)行了全面的闡述。該設(shè)計(jì)采用STC公司推出的低耗高性能微控制器STC89C52作為核心控制器;溫度采集由ANALOG DEVICES公司的單片集成兩端感溫電流源AD590完成、之后經(jīng)10位模數(shù)轉(zhuǎn)換器TLC1549把采集的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào);實(shí)時(shí)日歷時(shí)鐘由美國DALLAS公司推出的具有涓細(xì)電流充電功能的低功耗實(shí)時(shí)時(shí)鐘芯片DS1302提供;為了更加方便的讀取信息,顯示模塊采用液晶顯示屏LCD1602顯示;電路各模塊電源主要由三端穩(wěn)壓集成電路L7805提供,這是為了讓系統(tǒng)有更為穩(wěn)定的工作電壓。溫度和時(shí)間都是與人們?nèi)粘I蠲芮邢嚓P(guān)的,課題帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)用液晶顯示器顯示溫度和時(shí)間,無論什么場(chǎng)合都能同時(shí)滿足人們對(duì)溫度和時(shí)間的確知?!娟P(guān)鍵詞】溫度檢測(cè);STC89C52單片機(jī);AD590;DS1302;LCD1602With real-time calendar clock temperature detection system designScience and Technology Practising College Fujian Normal UniversityElectronic Information Engineering 120352010024 Zhou youjie Tutor: Ou LinAbstract In this paper, based on STC89C52 SCM with real-time calendar clock temperature detection system design are comprehensively described.Hold this design USES the STCs low consumption of high-performance microcontroller STC89C52 as the core controller;Temperature acquisition by the ANALOG DEVICES of monolithic integrated thermal current source AD590 to finish on both ends, then by 10 AD converter TLC1549 the acquisition of ANALOG signals into digital signals;Real-time clock calendar introduced by the American DALLAS company which has the function of trickling water fine current charging low-power real-time clock chip DS1302;In order to more convenient to read the temperature, time, LCD display module USES LCD1602 display;Circuit module power supply is mainly composed of three-terminal voltage regulator L7805 provide integrated circuits, it is in order to make the system more stable working voltage.Temperature and time are closely related to Peoples Daily life, subject temperature detection system with real-time calendar clock with LCD display shows the temperature and time, no matter what the occasion can satisfy people at the same time to the environment temperature and time really know.Key Words temperature detection; STC89C52 single chip microcomputer; AD590; DS1302; LCD16020目 錄1概述11.1引言11.2綜述11.3設(shè)計(jì)要求11.4設(shè)計(jì)方案的確定21.4.1用STC89C52單片機(jī)及其外圍電路構(gòu)成帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)21.4.2帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)電路框圖222系統(tǒng)硬件設(shè)計(jì)32.1系統(tǒng)電路32.1.1振蕩電路32.1.2復(fù)位電路32.2測(cè)溫電路32.2.1溫度采集42.2.2模數(shù)轉(zhuǎn)換42.2.3基準(zhǔn)電壓42.3時(shí)鐘電路52.4按鍵輸入52.5溫度控制52.5.1加熱控制62.5.2降溫控制62.6聲光報(bào)警62.6.1聲報(bào)警62.6.2光報(bào)警62.7顯示電路62.8電源電路73系統(tǒng)軟件設(shè)計(jì)83.1系統(tǒng)主程序介紹83.1.1系統(tǒng)主程序流程圖83.1.2系統(tǒng)主函數(shù)83.1.3定時(shí)器中斷程序流程圖103.1.4定時(shí)器中斷程序103.2系統(tǒng)各驅(qū)動(dòng)程序介紹123.2.1 LCD1602液晶顯示驅(qū)動(dòng)程序123.2.2 DS1302時(shí)鐘芯片驅(qū)動(dòng)程序143.2.3 TLC1549模數(shù)轉(zhuǎn)換器驅(qū)動(dòng)程序、溫度控制程序、主顯程序213.2.4按鍵輸入掃描程序243.2.5按鍵功能實(shí)現(xiàn)程序254總結(jié)28參考文獻(xiàn)28附錄291概述1.1引言溫度和時(shí)間都是我們?nèi)粘I钪袀涫荜P(guān)注的信息。至于溫度,更是對(duì)工農(nóng)業(yè)生產(chǎn),科學(xué)試驗(yàn)都相對(duì)重要的一個(gè)物理量,在測(cè)溫的同時(shí)也顯示著實(shí)時(shí)時(shí)間就更加方便于測(cè)溫系統(tǒng)在各個(gè)領(lǐng)域的應(yīng)用。本課題的目的就是設(shè)計(jì)一個(gè)帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)。該系統(tǒng)可以測(cè)量-55125范圍內(nèi)的溫度,用液晶顯示實(shí)時(shí)溫度和時(shí)間。系統(tǒng)還帶有溫度監(jiān)控功能,可以預(yù)設(shè)一個(gè)溫度范圍,當(dāng)環(huán)境溫度不在該范圍內(nèi)時(shí)會(huì)有聲光報(bào)警,并自動(dòng)控制加熱或降溫模塊對(duì)環(huán)境溫度進(jìn)行控制。該系統(tǒng)的全部功能均通過微控制器實(shí)現(xiàn)。隨著人們生活水平的不斷提高,科技不斷發(fā)達(dá),微機(jī)測(cè)量和控制技術(shù)得到了迅速的發(fā)展和廣泛的應(yīng)用。微控制器具有處理能力強(qiáng)、使用方便、功耗低等優(yōu)點(diǎn),應(yīng)用在溫度測(cè)量和監(jiān)控方面,測(cè)量范圍廣,控制簡(jiǎn)單方便,且單片集成溫度傳感器溫度響應(yīng)速度快,工作效率高,所需外圍電路簡(jiǎn)單,與單片機(jī)組成溫度檢測(cè)系統(tǒng),具有明顯的優(yōu)勢(shì)。該系統(tǒng)就是利用這樣的優(yōu)勢(shì)研究一種小型實(shí)用的溫度檢測(cè)系統(tǒng),系統(tǒng)采用低耗高性能微控制器STC89C52作為核心控制器,單片集成感溫電流源AD590采集溫度,實(shí)時(shí)時(shí)鐘芯片DS1302提供時(shí)鐘,液晶顯示屏LCD1602顯示信息,溫度監(jiān)控范圍通過外設(shè)的獨(dú)立按鍵完成設(shè)置,超限報(bào)警、溫度控制分別由蜂鳴器、發(fā)光二極管和加熱器、散熱器實(shí)現(xiàn)。1.2綜述國外從20世紀(jì)70年代開始就研究溫度控制技術(shù)。先是采用模擬式的組合儀表,采集現(xiàn)場(chǎng)信息并進(jìn)行指示、記錄和控制。發(fā)展到80年代末開始采用新一代儀表控制系統(tǒng),即分布式控制系統(tǒng),以微處理器為基礎(chǔ),采用控制功能分散、顯示操作集中、兼顧分而自治和綜合協(xié)調(diào)的設(shè)計(jì)原則。目前正開發(fā)和研制計(jì)算機(jī)數(shù)據(jù)采集控制系統(tǒng)的多因子綜合控制系統(tǒng)。國外溫度檢測(cè)控制系統(tǒng)發(fā)展迅速,并在智能化、自適應(yīng)、參數(shù)自整定等方面都有優(yōu)異成果。一些技術(shù)領(lǐng)先的國家如美國、德國、日本等,都生產(chǎn)出了一批性能優(yōu)異的溫度控制器,并實(shí)現(xiàn)商品化廣泛應(yīng)用于各行各業(yè)。這些儀器主要具有如下特點(diǎn):一是適應(yīng)于復(fù)雜溫度控制系統(tǒng)的控制如大慣性、大滯后等;二是適應(yīng)于受控系統(tǒng)數(shù)字模型難以建立且受控系統(tǒng)過程復(fù)雜、參數(shù)時(shí)變的溫度控制系統(tǒng)的控制;三是溫度檢測(cè)控制系統(tǒng)普遍采用計(jì)算機(jī)技術(shù)加上模糊控制、自適應(yīng)控制、自校正控制、人工智能等先進(jìn)技術(shù);四是溫度控制器普遍具有參數(shù)自整定功能,即通過計(jì)算機(jī)軟件技術(shù),賦予溫度控制器對(duì)控制對(duì)象、控制參數(shù)及特性進(jìn)行自動(dòng)整定的功能。為了保證控制效果的最優(yōu)化更有一些具有自學(xué)習(xí)功能,它能夠根據(jù)歷史經(jīng)驗(yàn)及控制對(duì)象的變化情況,自動(dòng)調(diào)整相關(guān)控制參數(shù)。除此之外,一些國家在實(shí)現(xiàn)自動(dòng)化的基礎(chǔ)上正向著完全自動(dòng)化、無人化的方向發(fā)展1。我國對(duì)于溫度檢測(cè)控制技術(shù)的研究較晚,始于20世紀(jì)80年代。與美國、德國、日本等技術(shù)領(lǐng)先國家相比有著較大差距。我國溫度檢測(cè)控制設(shè)施計(jì)算機(jī)應(yīng)用,也在總體上從消化吸收、簡(jiǎn)單應(yīng)用階段向?qū)嵱没?、綜合性應(yīng)用階段過渡和發(fā)展。工程技術(shù)人員在吸收技術(shù)領(lǐng)先國家的溫度檢測(cè)控制技術(shù)的基礎(chǔ)上,才掌握了溫度室內(nèi)微機(jī)控制技術(shù),該技術(shù)僅限于對(duì)溫度的單項(xiàng)環(huán)境因子的控制,尚無法實(shí)現(xiàn)真正意義上的多參數(shù)綜合控制。成熟產(chǎn)品主要以“點(diǎn)位”控制及常規(guī)的PID控制器為主。它只能適應(yīng)一般溫度系統(tǒng)控制,難以控制大慣性、大滯后、受控系統(tǒng)數(shù)字模型難以建立且受控系統(tǒng)過程復(fù)雜、參數(shù)時(shí)變的溫度系統(tǒng)控制。而適應(yīng)于較高控制場(chǎng)合的智能化、自適應(yīng)控制器,國內(nèi)技術(shù)還不是十分成熟。參數(shù)自整定功能也還沒有開發(fā)出性能可靠的配套軟件加以實(shí)現(xiàn)1。1.3設(shè)計(jì)要求設(shè)計(jì)一個(gè)帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng),具體要求如下:用液晶顯示器顯示日歷、時(shí)鐘和實(shí)時(shí)的環(huán)境溫度。預(yù)設(shè)溫度檢測(cè)范圍,當(dāng)環(huán)境溫度不在該范圍內(nèi)時(shí)有聲光報(bào)警。通過預(yù)設(shè)溫度對(duì)環(huán)境溫度進(jìn)行恒溫控制。調(diào)節(jié)環(huán)境溫度的加熱和降溫可以用功率電阻和小風(fēng)扇模擬。1.4設(shè)計(jì)方案的確定1.4.1用STC89C52單片機(jī)及其外圍電路構(gòu)成帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)STC89C52單片機(jī)是一種低耗高性能的微控制器,所以選擇它作為主控芯片。由AD590單片集成溫度傳感器采集溫度,之后經(jīng)TLC1549模數(shù)轉(zhuǎn)換器進(jìn)行模數(shù)轉(zhuǎn)換。采用DS1302時(shí)鐘芯片提供實(shí)時(shí)日歷時(shí)鐘。按鍵作為輸入信號(hào),用于手動(dòng)校準(zhǔn)日歷、時(shí)鐘和預(yù)設(shè)溫度監(jiān)控范圍。分別用蜂鳴器和發(fā)光二極管做為溫度超限的聲光報(bào)警,功率電阻和小風(fēng)扇作為加熱和降溫器件。用LCD1602液晶顯示器顯示日歷、時(shí)鐘和溫度值。系統(tǒng)電源有12V和5V兩種電壓值負(fù)責(zé)給整個(gè)系統(tǒng)供電,采用12V電源經(jīng)降壓產(chǎn)生5V電壓,其中TLC1549模數(shù)轉(zhuǎn)換器的基準(zhǔn)電壓由TL431提供。1.4.2帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)電路框圖電源電路按鍵輸入系統(tǒng)電路時(shí)鐘電路測(cè)溫電路顯示電路溫度控制聲光報(bào)警單片機(jī)(STC89C52)302系統(tǒng)硬件設(shè)計(jì)2.1系統(tǒng)電路系統(tǒng)電路如圖2-22是單片機(jī)的最小系統(tǒng),包括振蕩電路和復(fù)位電路兩個(gè)模塊。圖2-2 系統(tǒng)電路2.1.1振蕩電路振蕩電路由晶振和兩個(gè)濾波電容構(gòu)成。用來配合外部晶體實(shí)現(xiàn)振蕩的電路,目的是為單片機(jī)提供系統(tǒng)時(shí)鐘,如果沒有振蕩電路來產(chǎn)生時(shí)鐘驅(qū)動(dòng)單片機(jī),那單片機(jī)就不能工作3。單片機(jī)的機(jī)器周期有兩種6MHz和12MHz,這里我們使用12MHz的晶振,兩晶振引腳分別連接XTAL1和XTAL2反向振蕩器輸入端和輸出端。2.1.2復(fù)位電路復(fù)位電路由10F的電解電容和10K電阻串聯(lián)構(gòu)成3。采用上電自動(dòng)復(fù)位的方式給單片機(jī)復(fù)位。上電瞬間,電容視做短路,單片機(jī)第九腳為高電平,符合單片機(jī)兩個(gè)機(jī)器周期高電平的復(fù)位條件,單片機(jī)復(fù)位。2.2測(cè)溫電路測(cè)溫電路如圖2-32,包括溫度測(cè)量、模數(shù)轉(zhuǎn)換和基準(zhǔn)電壓三個(gè)模塊。圖2-3 測(cè)溫電路2.2.1溫度采集溫度采集用AD590串聯(lián)10K電阻構(gòu)成。AD590是單片集成兩端感溫電流源如圖2-4(實(shí)際器件有三個(gè)管腳,其中三腳接外殼做屏蔽,應(yīng)用時(shí)可懸空),其輸出電流是以絕對(duì)溫度零度(-273)為基準(zhǔn),每增加1,會(huì)增加1A輸出電流4。因此在室溫25時(shí),其輸出電流Io=(273+25)=298A,所以輸出電壓Vo=10K298A=2.98V。圖2-4 AD5902.2.2模數(shù)轉(zhuǎn)換模數(shù)轉(zhuǎn)換由LTC1549完成。LTC1549是10位模數(shù)器,管腳排列如圖2-5。將溫度測(cè)量測(cè)得的電壓值送入LTC1549的模擬信號(hào)輸入端(2腳),在完成上電后(8腳電源正,4腳電源地),通過控制使能端(5腳)和時(shí)鐘信號(hào)端(7腳)與參考電壓(1腳為正參考電壓,3腳為負(fù)參考電壓,應(yīng)用時(shí)3腳接地)連續(xù)逐次逼近的比較來完成模數(shù)轉(zhuǎn)換,之后通過數(shù)字信號(hào)輸出端(6腳)輸出轉(zhuǎn)換結(jié)果。 圖2-5 LTC1549 圖2-6 TL4312.2.3基準(zhǔn)電壓基準(zhǔn)電壓用做模數(shù)轉(zhuǎn)換TLC1549的參考電壓,由兩個(gè)電阻配合TL431、限流電阻、濾波電容構(gòu)成。TL431是一種并聯(lián)穩(wěn)壓集成電路如圖2-6。通過調(diào)節(jié)電路中R6和R7的電阻值可以改變輸出的基準(zhǔn)電壓值Vout從Verf到36V范圍內(nèi)的任意值,計(jì)算公式為。Vref是器件內(nèi)基準(zhǔn)電壓,在常溫25下,Vref=2.495V。2.3時(shí)鐘電路時(shí)鐘電路如圖2-72,由時(shí)鐘芯片DS1302、晶振、備用電源構(gòu)成5。晶振分別連接振蕩輸入端和輸出端(2腳和3腳),為時(shí)鐘芯片提供計(jì)時(shí)脈沖。備用電源接于備用電源端(8腳)。在完成上電后(1腳電源正,4腳電源地),通過控制使能端(5腳)和時(shí)鐘信號(hào)端(7腳)就可以由數(shù)據(jù)端(6腳)對(duì)時(shí)鐘芯片進(jìn)行讀寫操作。圖2-7 時(shí)鐘電路2.4按鍵輸入按鍵輸入如圖2-82,由四個(gè)按鈕構(gòu)成。四個(gè)按鈕分別取一引腳連接單片機(jī)的一個(gè)I/O口、另一引腳接地構(gòu)成四個(gè)獨(dú)立按鍵6,用于調(diào)整日歷、時(shí)鐘和預(yù)設(shè)溫度監(jiān)控范圍。其中S1為選擇調(diào)整項(xiàng)目,S2為加調(diào)整,S3為減調(diào)整,S4為顯示模式選擇。單片機(jī)循環(huán)掃描這四個(gè)I/O口,讀到“0”即有鍵按下。圖2-8 按鍵輸入2.5溫度控制溫度控制如圖2-92,包括控制加熱和控制降溫兩個(gè)模塊。圖2-9 溫度控制2.5.1加熱控制控制加熱主要由三極管、繼電器,功率電阻構(gòu)成。在環(huán)境溫度低于預(yù)設(shè)監(jiān)控范圍時(shí),控制單片機(jī)I/O口輸出“0”,即三極管飽和導(dǎo)通驅(qū)動(dòng)繼電器常開端吸合,這時(shí)12V電源與功率電阻形成回路,由功率電阻產(chǎn)生熱量進(jìn)行加熱。在環(huán)境溫度處于預(yù)設(shè)范圍內(nèi)時(shí),控制單片機(jī)I/O口輸出“1”,即三極管截止,繼電器常開端斷開,切斷加熱回路停止加熱。因?yàn)槔^電器內(nèi)部具有線圈的結(jié)構(gòu),所以在斷電時(shí)會(huì)產(chǎn)生電壓很大的反向電動(dòng)勢(shì),為了保護(hù)繼電器的驅(qū)動(dòng)管不被反向電動(dòng)勢(shì)擊穿電路中加了二極管(D2)。2.5.2降溫控制控制降溫主要由三極管、小風(fēng)扇構(gòu)成。在環(huán)境溫度高于預(yù)設(shè)監(jiān)控范圍時(shí),控制單片機(jī)I/O口輸出“1”,即三極管飽和導(dǎo)通驅(qū)動(dòng)小風(fēng)扇啟動(dòng),進(jìn)行降溫。在環(huán)境溫度處于預(yù)設(shè)范圍內(nèi)時(shí),控制單片機(jī)I/O口輸出“0”,即三極管截止,小風(fēng)扇停止降溫。2.6聲光報(bào)警聲光報(bào)警如圖2-102,包括聲報(bào)警和光報(bào)警兩個(gè)模塊。圖2-10 聲光報(bào)警2.6.1聲報(bào)警聲報(bào)警主要由三極管和蜂鳴器構(gòu)成。正常工作狀態(tài)下,蜂鳴器不響。當(dāng)環(huán)境溫度不在預(yù)設(shè)監(jiān)控范圍內(nèi)時(shí),控制三極管驅(qū)動(dòng)蜂鳴器,讓蜂鳴器發(fā)出聲音警報(bào)。2.6.2光報(bào)警光報(bào)警由發(fā)光二極管和電阻構(gòu)成。正常工作狀態(tài)下,發(fā)光二極管常亮。在測(cè)量得到的環(huán)境溫度不在預(yù)設(shè)監(jiān)控范圍時(shí),控制發(fā)光二極管閃爍發(fā)出警報(bào)。2.7顯示電路顯示電路如圖2-112,由LCD1602液晶顯示器和一個(gè)10K電位器構(gòu)成。LCD1602液晶顯示器為兩行顯示,每行顯示16個(gè)字符6。采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,在此選用16腳帶背光的液晶屏。其中1腳和2腳分別為電源地和電源正;15腳和16腳分別為背光正和背光負(fù);7腳14腳為數(shù)據(jù)口;4腳為寄存器選擇端;5腳為讀寫選擇端;6腳為使能端;3腳為顯示對(duì)比度調(diào)整端,所以連接一個(gè)10K電位器用以調(diào)整對(duì)比度。在對(duì)比度調(diào)整正常時(shí),通過控制使能端、寄存器選擇端和讀寫選擇端就可以完成對(duì)LCD1602的讀寫操作,然后在液晶屏上顯示。圖2-11 顯示電路2.8電源電路電源電路如圖2-122,主要由12V電源適配器和L7805三端穩(wěn)壓集成電路構(gòu)成。L7805三端穩(wěn)壓集成電路共三個(gè)管腳,分別是電壓輸入端(Vin)、電壓輸出端(Vout)和接地端(GND),在電壓輸入端輸入735V電壓時(shí),其電壓輸出端均輸出5V電壓。電路中P1為12V電源輸入;SK1為電源開關(guān);二極管D1在電源反接時(shí)起保護(hù)作用;LED2為電源指示燈;R11為指示燈限流電阻;電容為濾波作用。圖2-12 電源電路3系統(tǒng)軟件設(shè)計(jì)3.1系統(tǒng)主程序介紹系統(tǒng)主程序包括LCD1602液晶顯示驅(qū)動(dòng)程序、DS1302時(shí)鐘芯片驅(qū)動(dòng)程序、LTC1549模數(shù)轉(zhuǎn)換器驅(qū)動(dòng)程序、溫度控制程序、主顯程序、按鍵輸入掃描程序、按鍵功能實(shí)現(xiàn)程序、定時(shí)器中斷程序。該系統(tǒng)程序使用C語言編寫,因?yàn)镃語言有使用靈活、目標(biāo)程序效率高、可移植性強(qiáng)等優(yōu)點(diǎn)。3.1.1 系統(tǒng)主程序流程圖7如圖3-1開始中斷初始化LCD1602初始化寫1302初始時(shí)間溫度采集溫度控制掃描按鍵是否按下YN處理鍵值顯示結(jié)束圖3-1 系統(tǒng)主程序流程圖3.1.2 系統(tǒng)主函數(shù)/*/ 項(xiàng)目 :AD590測(cè)溫系統(tǒng)/ / 功能 :完成日歷、時(shí)鐘、溫度的顯示以及溫度的報(bào)警和控制/ 說明 :通過AD590采集溫度/ / 創(chuàng)建人 :周友杰/ 創(chuàng)建日期 :2014年2月23日/*/#include config.h/ 本工程調(diào)用的常用定義/*/ 函數(shù) :Delay(uint32 z) / / 參數(shù) : 數(shù)據(jù)/ 返回 : NONE/ 說明 :延時(shí)函數(shù)/*/void Delay(uint32 z)while(-z);/*/ 函數(shù) :main( ) / / 參數(shù) : NONE/ 返回 : NONE/ 說明 :主函數(shù)/*/void main( )init( );/ 系統(tǒng)初始化lcd_init( );/ lcd1602初始化/Set_Rtc( );/ 設(shè)置初始時(shí)間while(1)AD_Voltage( );Adjust_timer( );3.1.3 定時(shí)器中斷程序流程圖7如圖3-2開始寫初值(1000us)timer+(毫秒)判斷No標(biāo)志位是否為1YNum+N判斷是否計(jì)時(shí)0.5sY讀1302時(shí)間N進(jìn)制轉(zhuǎn)換判斷是否計(jì)時(shí)0.5sYa=!aN判斷是否計(jì)時(shí)0.7sYNot=!NotNTimer=0判斷Num標(biāo)志位是否為5sYNo=0NNum=1結(jié)束圖3-2 定時(shí)器中斷程序流程圖3.1.4 定時(shí)器中斷程序#include config.h/ 本工程調(diào)用的常用定義bit Not,No=0,a;uint16 timer=990,Num=1;uint8 TpteMin=58;/*/ 函數(shù) :init( ) / / 參數(shù) : NONE/ 返回 : NONE/ 說明 :中斷初始化 /*/void init( ) TL0=(65536-1000); TH0=(65536-1000)8; TMOD=0x01;/ 選擇中斷方式1 ET0=1;/ 啟動(dòng)定時(shí)器 TR0=1;/ 啟動(dòng)計(jì)數(shù)器計(jì)數(shù) EA=1;/ 開啟總中斷/*/ 函數(shù) :init0( ) / / 參數(shù) : NONE/ 返回 : NONE/ 說明 :定時(shí)器計(jì)時(shí)/*/void init0( ) interrupt 1 TL0=(65536-1000);TH0=(65536-1000)8;/定時(shí)器初值1000us=1ms timer+;/毫秒計(jì)數(shù) if(No) Num+;/判斷No標(biāo)志位,Num為顯示模式2的顯示時(shí)間 if(timer%500=0)/判斷毫秒計(jì)數(shù)是否到500ms=0.5s Read_Rtc( );/ 讀取RTC時(shí)間 Time_pros( );/ 數(shù)據(jù)轉(zhuǎn)換處理,將16進(jìn)制的數(shù)碼轉(zhuǎn)換成10進(jìn)制 if(timer%500=0) a=!a;/進(jìn)入調(diào)整時(shí)光標(biāo)閃爍時(shí)間 if(timer%700=0) Not=!Not;timer=0;/光報(bào)警時(shí)滅燈的時(shí)間長(zhǎng)度 if(Num%5000=0) No =0;Num=1;/未進(jìn)入調(diào)整狀態(tài)時(shí)自動(dòng)跳出顯示模式2返回顯示模式13.2系統(tǒng)各驅(qū)動(dòng)程序介紹3.2.1 LCD1602液晶顯示驅(qū)動(dòng)程序#include config.hsbit RS=P13;sbit RW=P14;sbit EN=P15;#define Del() Delay(20)#define busy (17)/*/ 函數(shù) :WrOp(uint8 dat) / / 參數(shù) : uint8 dat/ 返回 : NONE/ 說明 :寫指令函數(shù) /*/void WrOp(uint8 dat)RS=0;/全部清零RW=0;P0=dat;EN=1;Del();EN=0;/*/ 函數(shù) :WrDat(uint8 dat) / / 參數(shù) : uint8 dat/ 返回 : NONE/ 說明 :寫數(shù)據(jù)函數(shù) /*/void WrDat(uint8 dat)RS=1;/全部清零RW=0;P0=dat;EN=1;Del();EN=0;/*/ 函數(shù) :lcd_init(void) / / 參數(shù) : NONE/ 返回 : NONE/ 說明 :lcd初始化函數(shù) /*/void lcd_init(void)WrOp(0x38);WrOp(0x06);/光標(biāo)加1WrOp(0x0c);/開顯示Delay(100);/*/ 函數(shù) :lcd_clr(void) / / 參數(shù) : NONE/ 返回 : NONE/ 說明 :lcd清空函數(shù) /*/void lcd_clr(void)WrOp(0x01);Delay(300);/*/ 函數(shù) :DisText(uint8 addr,char *p) / / 參數(shù) : uint8 addr,char *p/ 返回 : NONE/ 說明 :顯示文本函數(shù) /*/void DisText(uint8 addr,char *p)WrOp(addr);while(*p!=0)WrDat(*(p+);3.2.2 DS1302時(shí)鐘芯片驅(qū)動(dòng)程序#include config.h/.DS1302的引腳定義.sbit RST=P12; / DS1302復(fù)位sbit CLK=P10; / 時(shí)鐘sbit SDA=P11;/ 數(shù)據(jù)idata uint8 Time_data7=13,01,04,25,13,8,25;/ 本數(shù)組用于存放時(shí)間,此處可設(shè)置開機(jī)時(shí)間(年 周 月 日 時(shí) 分 秒)code uint8 Write_add7 =0x8c,0x8a,0x88,0x86,0x84,0x82,0x80;/ 寫數(shù)據(jù)的地址,分別對(duì)應(yīng)年、周、月、日、時(shí)、分、秒code uint8 Read_add7 =0x8d,0x8b,0x89,0x87,0x85,0x83,0x81;/ 讀數(shù)據(jù)的地址,分別對(duì)應(yīng)年、周、月、日、時(shí)、分、秒uint8 Year,Week,Mon,Day,Hour,Min,Sec;/ 全局變量(年 周 月 日 時(shí) 分 秒)/*/ 函數(shù) :Write_1302_byte(uint8 dat) / / 參數(shù) : 寫入數(shù)據(jù)/ 返回 : NONE/ 說明 :向1302寫一個(gè)字節(jié) /*/void Write_1302_byte(uint8 dat) uint8 i; for(i=0;i=1;/ 右移一位 CLK=1; /*/ 函數(shù) :Write_1302(uint8 add,uint8 dat) / / 參數(shù) : 寫入地址寫入數(shù)據(jù)/ 返回 : NONE/ 說明 :向1302寫數(shù)據(jù) /*/void Write_1302(uint8 add,uint8 dat) /.啟動(dòng). RST=0; /_nop_(); CLK=0; /_nop_(); RST=1; /_nop_(); /.開始發(fā)送數(shù)據(jù). Write_1302_byte(add);/ 發(fā)送地址 Write_1302_byte(dat);/ 發(fā)送數(shù)據(jù) /.數(shù)據(jù)發(fā)送結(jié)束. RST=0; /_nop_(); SDA=1; CLK=1;/*/ 函數(shù) :DS1302_SetProtect(bit flag) / / 參數(shù) : flag為1寫保護(hù) 為0去保護(hù)/ 返回 : NONE/ 說明 :1302寫保護(hù)函數(shù)/*/void DS1302_SetProtect(bit flag) if(flag) Write_1302(0x8e,0x80); else Write_1302(0x8e,0x00);/*/ 函數(shù) :Read_1302_byte(uint8 add) / / 參數(shù) : 讀取時(shí)間向量地址/ 返回 : NONE/ 說明 :向1302讀取一個(gè)字節(jié)/*/uint8 Read_1302_byte(uint8 add) uint8 i,value; RST=0; /_nop_(); CLK=0; /_nop_(); RST=1; /_nop_(); Write_1302_byte(add); for(i=0;i1; if(SDA) value|=0x80; _nop_(); CLK=1; /.以下為DS1302復(fù)位的穩(wěn)定時(shí)間. RST=0; _nop_();_nop_(); RST=0; CLK=0; _nop_();_nop_();_nop_();_nop_(); CLK=1; _nop_();_nop_(); SDA=0; _nop_();_nop_(); SDA=1; _nop_();_nop_(); return value;/*/ 函數(shù) :Set_Rtc(void) / / 參數(shù) : NONE/ 返回 : NONE/ 說明 :設(shè)置RTC時(shí)鐘/*/void Set_Rtc(void) uint8 i,j; for(i=0;i7;i+) /BCD處理,將十六進(jìn)制轉(zhuǎn)換成十進(jìn)制 j=Time_datai/10; Time_datai=Time_datai%10; Time_datai=Time_datai+j*16; DS1302_SetProtect(0);/ 去除寫保護(hù) for(i=0;i7;i+) Write_1302(Write_addi,Time_datai); DS1302_SetProtect(1); / 加寫保護(hù)/*/ 函數(shù) :Read_Rtc(void) / / 參數(shù) : NONE/ 返回 : NONE/ 說明 :讀取RTC時(shí)間函數(shù)/*/void Read_Rtc(void) uint8 i; for(i=0;i7;i+) Time_datai=Read_1302_byte(Read_addi);/*/ 函數(shù) :Time_pros(void) / / 參數(shù) : NONE/ 返回 : NONE/ 說明 :數(shù)據(jù)轉(zhuǎn)換處理,將16進(jìn)制的數(shù)碼轉(zhuǎn)換成10進(jìn)制/*/void Time_pros(void) Year =Time_data0/16*10+Time_data0%16; Week =Time_data1/16*10+Time_data1%16; Mon =Time_data2/16*10+Time_data2%16; Day =Time_data3/16*10+Time_data3%16; Hour =Time_data4/16*10+Time_data4%16; Min =Time_data5/16*10+Time_data5%16; Sec =Time_data6/16*10+Time_data6%16; /*/ 函數(shù) :change(uint8 x) / / 參數(shù) : NONE/ 返回 : NONE/ 說明 :數(shù)據(jù)轉(zhuǎn)換處理,將十進(jìn)制轉(zhuǎn)換成十六進(jìn)制/*/uint8 change(uint8 x) uint8 temp,y; y=x; temp=y/16; y=y%16; y=y+temp*10; return y;/*/ 函數(shù) :Set_Time(uint8 pos,uint8 add_sub) / / 參數(shù) : pos-要調(diào)整的時(shí)間在Time_data數(shù)組里對(duì)于的位置/ 返回 : NONE/ 說明 :時(shí)間調(diào)整函數(shù)/

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲(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)論