![基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/febe41a4-80b7-4fee-9d68-5be7af12459a/febe41a4-80b7-4fee-9d68-5be7af12459a1.gif)
![基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/febe41a4-80b7-4fee-9d68-5be7af12459a/febe41a4-80b7-4fee-9d68-5be7af12459a2.gif)
![基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/febe41a4-80b7-4fee-9d68-5be7af12459a/febe41a4-80b7-4fee-9d68-5be7af12459a3.gif)
![基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/febe41a4-80b7-4fee-9d68-5be7af12459a/febe41a4-80b7-4fee-9d68-5be7af12459a4.gif)
![基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-6/22/febe41a4-80b7-4fee-9d68-5be7af12459a/febe41a4-80b7-4fee-9d68-5be7af12459a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)中文摘要隨著微機(jī)測量和控制技術(shù)的迅速發(fā)展與廣泛應(yīng)用,以單片機(jī)為核心的溫度采集與控制系統(tǒng)的研發(fā)與應(yīng)用在很大程度上提高了生產(chǎn)生活中對溫度的控制水平。本設(shè)計(jì)論述了一種以STC89C52單片機(jī)為主控制單元,以DS18B20為溫度傳感器的溫度控制系統(tǒng)。該控制系統(tǒng)可以實(shí)時存儲相關(guān)的溫度數(shù)據(jù)并記錄當(dāng)前的時間。系統(tǒng)設(shè)計(jì)了相關(guān)的硬件電路和相關(guān)應(yīng)用程序。硬件電路主要包括STC89C52單片機(jī)最小系統(tǒng),測溫電路、實(shí)時時鐘電路、LCD液晶顯示電路以及通訊模塊電路等。系統(tǒng)程序主要包括主程序,讀出溫度子程序,計(jì)算溫度子程序、按鍵處理程序、LCD顯示程序以及數(shù)據(jù)存儲程序等。關(guān)鍵詞 STC89C5
2、2單片機(jī);DS18B20;顯示電路Based on single chip microcomputer temperature control system designAbstractAlong with the computer measurement and control technology of the rapid development and wide application, based on singlechip temperature gathering and control system development and application greatly impr
3、ove the production of temperature in life level of control. This design STC89C52 describes a kind of mainly by MCU control unit, for temperature sensor DS18B20 temperature control system. The control system can real-time storage temperature data and record related to the current time. System design
4、related hardware circuit and related applications. STC89C52 microcontroller hardware circuit include temperature detection circuit smallest system, and real-time clock circuit, LCD display circuit, communication module circuit, etc. System programming mainly include main program, read temperature su
5、broutine, the calculation of temperature subroutines, key processing procedures, LCD display procedures and data storage procedures, etc. Keywords STC89C52 microcontroller;DS18B20;display circuit目 錄一、引言4(一)課題研究的背景4(二)課題研究的目的和意義5二、硬件電路的設(shè)計(jì)5(一)系統(tǒng)設(shè)計(jì)的框架5(二)單片機(jī)最小系統(tǒng)電路6(三)單片機(jī)的選型61.STC89C52單片機(jī)簡介62.STC89C52單片
6、機(jī)時序73.STC89C52單片機(jī)引腳介紹7(四)溫度傳感器電路9(五)系統(tǒng)電源電路的設(shè)計(jì)10(六)LCD顯示電路11(七)串口通訊電路12(八)按鍵接口電路13(九)DS1302時鐘電路13(十)存儲器接口電路13三、系統(tǒng)軟件設(shè)計(jì)14(一)計(jì)算溫度子程序15(二)按鍵處理子程序15(三)計(jì)算溫度子程序16(四)顯示數(shù)據(jù)刷新子程序17四、結(jié)束語18參考文獻(xiàn)19致謝20附件1:系統(tǒng)原理圖21附件2:系統(tǒng)相關(guān)程序22一、DS18B20底層驅(qū)動程序22二、DS1302時鐘底層驅(qū)動程序27三、數(shù)據(jù)存儲底層驅(qū)動程序33一、引言(一)課題研究的背景工業(yè)控制是計(jì)算機(jī)的一個重要應(yīng)用領(lǐng)域,計(jì)算機(jī)控制系統(tǒng)正是為了
7、適應(yīng)這一領(lǐng)域的需要而發(fā)展起來的一門專業(yè)技術(shù),它主要研究如何將計(jì)算機(jī)技術(shù)、通過信息技術(shù)和自動控制理論應(yīng)用于工業(yè)生產(chǎn)過程,并設(shè)計(jì)出所需要的計(jì)算機(jī)控制系統(tǒng)。隨著微機(jī)測量和控制技術(shù)的迅速發(fā)展與廣泛應(yīng)用,以單片機(jī)為核心的溫度采集與控制系統(tǒng)的研發(fā)與應(yīng)用在很大程度上提高了生產(chǎn)生活中對溫度的控制水平。本設(shè)計(jì)就是基于單片機(jī)STC89C52溫度控制系統(tǒng)的設(shè)計(jì),通過本次課程實(shí)踐,我們更加的明確了單片機(jī)的廣泛用途和使用方法,以及其工作的原理。(二)課題研究的目的和意義隨著社會的發(fā)展,溫度的測量及控制變得越來越重要。本文采用單片機(jī)STC89C52設(shè)計(jì)了溫度實(shí)時測量及控制系統(tǒng)。單片機(jī)STC89C52 能夠根據(jù)溫度傳感器D
8、S18B20 所采集的溫度在液晶屏上實(shí)時顯示,通過控制從而把溫度控制在設(shè)定的范圍之內(nèi)。所有溫度數(shù)據(jù)均通過液晶顯示器LCD顯示出來。系統(tǒng)可以根據(jù)時鐘存儲相關(guān)的數(shù)據(jù)。通過該課程的學(xué)習(xí)使我們對計(jì)算機(jī)控制系統(tǒng)有一個全面的了解、掌握常規(guī)控制算法的使用方法、掌握簡單微型計(jì)算機(jī)應(yīng)用系統(tǒng)軟硬的設(shè)計(jì)方法,進(jìn)一步鍛煉同學(xué)們在微型計(jì)算機(jī)應(yīng)用方面的實(shí)際工作能力。二、硬件電路的設(shè)計(jì)(一)系統(tǒng)設(shè)計(jì)的框架本課題設(shè)計(jì)的是一種以STC89C52單片機(jī)為主控制單元,以DS18B20為溫度傳感器的溫度控制系統(tǒng)。該控制系統(tǒng)可以實(shí)時存儲相關(guān)的溫度數(shù)據(jù)并記錄當(dāng)前的時間。其主要包括:電源模塊、溫度采集模塊、按鍵處理模塊、實(shí)時時鐘模塊、數(shù)據(jù)
9、存儲模塊、LCD顯示模塊、通訊模塊以及單片機(jī)最小系統(tǒng)。圖1 系統(tǒng)設(shè)計(jì)框架(二)單片機(jī)最小系統(tǒng)電路在課題設(shè)計(jì)的溫度控制系統(tǒng)設(shè)計(jì)中,控制核心是STC89C52單片機(jī),該單片機(jī)為51系列增強(qiáng)型8位單片機(jī),它有32個I/O口,片內(nèi)含4K FLASH工藝的程序存儲器,便于用電的方式瞬間擦除和改寫,而且價格便宜,其外部晶振為12MHz,一個指令周期為1S。使用該單片機(jī)完全可以完成設(shè)計(jì)任務(wù),其最小系統(tǒng)主要包括:復(fù)位電路、震蕩電路以及存儲器選擇模式(EA腳的高低電平選擇),電路如下圖2所示:圖2 單片機(jī)最小系統(tǒng)(三)單片機(jī)的選型本課題設(shè)計(jì)的溫度控制系統(tǒng)主控制芯片選型為STC89C52單片機(jī),其特點(diǎn)如下:1.S
10、TC89C52單片機(jī)簡介目前,51系列單片機(jī)在工業(yè)檢測領(lǐng)域中得到了廣泛的應(yīng)用,因此我們可以在許多單片機(jī)應(yīng)用領(lǐng)域中,配接各種類型的語音接口,構(gòu)成具有合成語音輸出能力的綜合應(yīng)用系統(tǒng),以增強(qiáng)人機(jī)對話的功能。STC89C52單片機(jī)是深圳宏晶科技有限公司生產(chǎn)的一種單片機(jī),在一小塊芯片上集成了一個微型計(jì)算機(jī)的各個組成部分。每一個單片機(jī)包括:一個8位的微型處理器CPU;一個512K的片內(nèi)數(shù)據(jù)存儲器RAM;4K片內(nèi)程序存儲器;四個8位并行的I/O接口P0-P3,每個接口既可以輸入,也可以輸出;兩個定時器/記數(shù)器;五個中斷源的中斷控制系統(tǒng);一個全雙工UART的串行I/O口;片內(nèi)振蕩器和時鐘產(chǎn)生電路,但石英晶體和
11、微調(diào)電容需要外接。最高允許振蕩頻率是12MHZ。以上各個部分通過內(nèi)部總線相連接。2.STC89C52單片機(jī)時序 STC89C52單片機(jī)的一個執(zhí)器周期由6個狀態(tài)(s1s6)組成,每個狀態(tài)又持續(xù)2個震蕩周期,分為P1和P2兩個節(jié)拍。這樣,一個機(jī)器周期由12個振蕩周期組成。若采用12MHz的晶體振蕩器,則每個機(jī)器周期為1us,每個狀態(tài)周期為16us;在一數(shù)情況下,算術(shù)和邏輯操作發(fā)生在N期間,而內(nèi)部寄存器到寄存器的傳輸發(fā)生在P2期間。對于單周期指令,當(dāng)指令操作碼讀人指令寄存器時,使從S1P2開始執(zhí)行指令。如果是雙字節(jié)指令,則在同一機(jī)器周期的s4讀人第二字節(jié)。若為單字節(jié)指令,則在51期間仍進(jìn)行讀,但所讀
12、入的字節(jié)操作碼被忽略,且程序計(jì)數(shù)據(jù)也不加1。在加結(jié)束時完成指令操作。多數(shù)STC89C52指令周期為12個機(jī)器周期,只有乘法和除法指令需要兩個以上機(jī)器周期的指令,它們需4個機(jī)器周期。 對于雙字節(jié)單機(jī)器指令,通常是在一個機(jī)器周期內(nèi)從程序存儲器中讀人兩個字節(jié),但Movx指令例外,Movx指令是訪問外部數(shù)據(jù)存儲器的單字節(jié)雙機(jī)器周期指令,在執(zhí)行Movx指令期間,外部數(shù)據(jù)存儲器被訪問且被選通時跳過兩次取指操作。3.STC89C52單片機(jī)引腳介紹STC89C52單片機(jī)的40個引腳中有2個專用于主電源引腳,2個外接晶振的引腳,4個控制或與其它電源復(fù)用的引腳,以及32條輸入輸出I/O引腳。下面按引腳功能分為4個
13、部分?jǐn)⑹鰝€引腳的功能。(1)電源引腳Vcc和VssVcc(40腳):接+5V電源正端;Vss(20腳):接+5V電源正端。(2)外接晶振引腳XTAL1和XTAL2XTAL1(19腳):接外部石英晶體的一端。在單片機(jī)內(nèi)部,它是一個反相放大器的輸入端,這個放大器構(gòu)成采用外部時鐘時,對于HMOS單片機(jī),該引腳接地;對于CHOMS單片機(jī),該引腳作為外部振蕩信號的輸入端。XTAL2(18腳):接外部晶體的另一端。在單片機(jī)內(nèi)部,接至片內(nèi)振蕩器的反相放大器的輸出端。當(dāng)采用外部時鐘時,對于HMOS單片機(jī),該引腳作為外部振蕩信號的輸入端。對于CHMOS芯片,該引腳懸空不接。(3)控制信號或與其它電源復(fù)用引腳 控
14、制信號或與其它電源復(fù)用引腳有RST/VPD、ALE/P、PSEN和EA/VPP等4種形式。(A)RST/VPD(9腳):RST即為RESET,VPD為備用電源,所以該引腳為單片機(jī)的上電復(fù)位或掉電保護(hù)端。當(dāng)單片機(jī)振蕩器工作時,該引腳上出現(xiàn)持續(xù)兩個機(jī)器周期的高電平,就可實(shí)現(xiàn)復(fù)位操作,使單片機(jī)復(fù)位到初始狀態(tài)。當(dāng)VCC發(fā)生故障,降低到低電平規(guī)定值或掉電時,該引腳可接上備用電源VPD(+5V)為內(nèi)部RAM供電,以保證RAM中的數(shù)據(jù)不丟失。(B)ALE/ P (30腳):當(dāng)訪問外部存儲器時,ALE(允許地址鎖存信號)以每機(jī)器周期兩次的信號輸出,用于鎖存出現(xiàn)在P0口的低(C)PSEN(29腳):片外程序存儲
15、器讀選通輸出端,低電平有效。當(dāng)從外部程序存儲器讀取指令或常數(shù)期間,每個機(jī)器周期PESN兩次有效,以通過數(shù)據(jù)總線口讀回指令或常數(shù)。當(dāng)訪問外部數(shù)據(jù)存儲器期間,PESN信號將不出現(xiàn)。(D)EA/Vpp(31腳):EA為訪問外部程序儲器控制信號,低電平有效。當(dāng)EA端保持高電平時,單片機(jī)訪問片內(nèi)程序存儲器4KB(MS52子系列為8KB)。若超出該范圍時,自動轉(zhuǎn)去執(zhí)行外部程序存儲器的程序。當(dāng)EA端保持低電平時,無論片內(nèi)有無程序存儲器,均只訪問外部程序存儲器。對于片內(nèi)含有EPROM的單片機(jī),在EPROM編程期間,該引腳用于接21V的編程電源Vpp。 (4)輸入/輸出(I/O)引腳P0口、P1口、P2口及P3
16、口(A).P0口(39腳22腳):P0.0P0.7統(tǒng)稱為P0口。當(dāng)不接外部存儲器與不擴(kuò)展I/O接口時,它可作為準(zhǔn)雙向8位輸入/輸出接口。當(dāng)接有外部程序存儲器或擴(kuò)展I/O口時,P0口為地址/數(shù)據(jù)分時復(fù)用口。它分時提供8位雙向數(shù)據(jù)總線。對于片內(nèi)含有EPROM的單片機(jī),當(dāng)EPROM編程時,從P0口輸入指令字節(jié),而當(dāng)檢驗(yàn)程序時,則輸出指令字節(jié)。(B).P1口(1腳8腳):P1.0P1.7統(tǒng)稱為P1口,可作為準(zhǔn)雙向I/O接口使用。對于MCS52子系列單片機(jī),P1.0和P1.1還有第2功能:P1.0口用作定時器/計(jì)數(shù)器2的計(jì)數(shù)脈沖輸入端T2;P1.1用作定時器/計(jì)數(shù)器2的外部控制端T2EX。對于EPROM
17、編程和進(jìn)行程序校驗(yàn)時,P0口接收輸入的低8位地址。(C).P2口(21腳28腳):P2.0P2.7統(tǒng)稱為P2口,一般可作為準(zhǔn)雙向I/O接口。當(dāng)接有外部程序存儲器或擴(kuò)展I/O接口且尋址范圍超過256個字節(jié)時,P2口用于高8位地址總線送出高8位地址。對于EPROM編程和進(jìn)行程序校驗(yàn)時,P2口接收輸入的8位地址。(D).P3口(10腳17腳):P3.0P3.7統(tǒng)稱為P3口。它為雙功能口,可以作為一般的準(zhǔn)雙向I/O接口,也可以將每1位用于第2功能,而且P3口的每一條引腳均可獨(dú)立定義為第1功能的輸入輸出或第2功能。P3口的第2功能見下表 表1 單片機(jī)P3.0管腳含義引腳第2功能P3.0RXD(串行口輸入
18、端0)P3.1TXD(串行口輸出端)P3.2INT0(部中斷0請求輸入端,低電平有效)P3.3INT1(中斷1請求輸入端,低電平有效)P3.4T0(時器/計(jì)數(shù)器0計(jì)數(shù)脈沖端)P3.5T1(時器/計(jì)數(shù)器1數(shù)脈沖端)P3.6WR(部數(shù)據(jù)存儲器寫選通信號輸出端,低電平有效)P3.7RD(部數(shù)據(jù)存儲器讀選通信號輸出端,低電平有效)綜上所述,MCS51系列單片機(jī)的引腳作用可歸納為以下兩點(diǎn):1).單片機(jī)功能多,引腳數(shù)少,因而許多引腳具有第2功能;2).單片機(jī)對外呈3總線形式,由P2、P0口組成16位地址總線;由P0口分時復(fù)用作為數(shù)據(jù)總線。(四)溫度傳感器電路采用一線制數(shù)字溫度傳感器DS18B20來作為本課
19、題的溫度傳感器。傳感器輸出信號進(jìn)4.7K的上拉電阻直接接到單片機(jī)的P1.0引腳上。DS18B20溫度傳感器是美國達(dá)拉斯(DALLAS)半導(dǎo)體公司推出的應(yīng)用單總線技術(shù)的數(shù)字溫度傳感器。該器件將半導(dǎo)體溫敏器件、A/D轉(zhuǎn)換器、存儲器等做在一個很小的集成電路芯片上。本設(shè)計(jì)中溫度傳感器之所以選擇單線數(shù)字器件DS18B20,是在經(jīng)過多方面比較和考慮后決定的,主要有以下幾方面的原因:(1)系統(tǒng)的特性:測溫范圍為-55+125 ,測溫精度為士0.5;溫度轉(zhuǎn)換精度912位可變,能夠直接將溫度轉(zhuǎn)換值以16位二進(jìn)制數(shù)碼的方式串行輸出;12位精度轉(zhuǎn)換的最大時間為750ms;可以通過數(shù)據(jù)線供電,具有超低功耗工作方式。(
20、2)系統(tǒng)成本:由于計(jì)算機(jī)技術(shù)和微電子技術(shù)的發(fā)展,新型大規(guī)模集成電路功能越來越強(qiáng)大,體積越來越小,而價格也越來越低。一支DS18B20的體積與普通三極管相差無幾,價格只有十元人民幣左右。(3)系統(tǒng)復(fù)雜度:由于DS18B20是單總線器件,微處理器與其接口時僅需占用1個I/O端口且一條總線上可以掛接幾十個DS18B20,測溫時無需任何外部元件,因此,與模擬傳感器相比,可以大大減少接線的數(shù)量,降低系統(tǒng)的復(fù)雜度,減少工程的施工量。(4)系統(tǒng)的調(diào)試和維護(hù):由于引線的減少,使得系統(tǒng)接口大為簡化,給系統(tǒng)的調(diào)試帶來方便。同時因?yàn)镈S18B20是全數(shù)字元器件,故障率很低,抗干擾性強(qiáng),因此,減少了系統(tǒng)的日常維護(hù)工作
21、。DS18B20溫度傳感器只有三根外引線:單線數(shù)據(jù)傳輸總線端口DQ ,外供電源線VDD,共用地線GND。DS18B20有兩種供電方式:一種為數(shù)據(jù)線供電方式,此時VDD接地,它是通過內(nèi)部電容在空閑時從數(shù)據(jù)線獲取能量,來完成溫度轉(zhuǎn)換,相應(yīng)的完成溫度轉(zhuǎn)換的時間較長。這種情況下,用單片機(jī)的一個I/O口來完成對DS18B20總線的上拉。另一種是外部供電方式(VDD接+5V),相應(yīng)的完成溫度測量的時間較短。在本設(shè)計(jì)中采用外部供電方式實(shí)現(xiàn)DS18B20傳感器與單片機(jī)的連接,其接口電路如圖4所示。圖4 溫度傳感器接口(五)系統(tǒng)電源電路的設(shè)計(jì)本系統(tǒng)采用電源穩(wěn)壓芯片是LM2596,該開關(guān)電壓調(diào)節(jié)器是降壓型電源管理
22、單片集成電路,能夠輸出3A的驅(qū)動電流,輸入電壓是+5v,輸入電壓是+24v,同時具有很好的線性和負(fù)載調(diào)節(jié)特性。該器件內(nèi)部集成頻率補(bǔ)償和固定頻率發(fā)生器,開關(guān)頻率為150KHz,與低頻開關(guān)調(diào)節(jié)器相比較,可以使用更小規(guī)格的濾波元件。 該器件還有其他一些特點(diǎn):在特定的輸入電壓和輸出負(fù)載的條件下,輸出電壓的誤差可以保證在4%的范圍內(nèi),振蕩頻率誤差在15%的范圍內(nèi);可以用僅80A的待機(jī)電流,實(shí)現(xiàn)外部斷電;具有自我保護(hù)電路(一個兩級降頻限流保護(hù)和一個在異常情況下斷電的過溫完全保護(hù)電路)在該溫度控制系統(tǒng)中,其電源電路設(shè)計(jì)如下圖10所示。圖5 系統(tǒng)電源模塊(六)LCD顯示電路本課題設(shè)計(jì)的溫度控制系統(tǒng)是采用液晶屏
23、128*64作為顯示模塊,其接口原理圖如下圖6所示:圖6 液晶顯示接口電路(七)串口通訊電路本課題設(shè)計(jì)的通訊采用的是常見的串口通訊,協(xié)議轉(zhuǎn)換芯片是采用MAX232A,其接口原理圖如下圖7所示:圖6 串口通訊接口電路(八)按鍵接口電路本課題設(shè)計(jì)采用的鍵盤模塊,其接口原理圖如下圖8所示:圖8 鍵盤模塊電路(九)DS1302時鐘電路本課題設(shè)計(jì)的時鐘是采用時鐘芯片DS1302,其接口原理圖如下圖9所示:圖9 時鐘接口電路(十)存儲器接口電路本課題設(shè)計(jì)的存儲器采用的是AT24C256,其接口原理圖如下圖十所示:圖10 存儲器電路三、系統(tǒng)軟件設(shè)計(jì)系統(tǒng)的軟件主要是采用C語言,對單片機(jī)進(jìn)行變成實(shí)現(xiàn)各項(xiàng)功能。主
24、程序?qū)δK進(jìn)行初始化,而后調(diào)用讀溫度、處理溫度、顯示、鍵盤等模塊。用的是循環(huán)查詢方式,來顯示和控制溫度,主程序的主要功能是負(fù)責(zé)溫度的實(shí)時顯示、讀出并處理DS18B20的測量的當(dāng)前溫度值并負(fù)責(zé)調(diào)用各子程序,其程序流程如圖10系統(tǒng)程序流程圖。開始初始化啟動DB18B20讀溫度計(jì)算溫度LCD顯示圖10系統(tǒng)程序流程圖(一)計(jì)算溫度子程序 讀出溫度子程序的主要功能包括初始化,判斷DS18B20是否存在,若存在則進(jìn)行一系列的讀操,作若不存在則返回。其程序流程圖如圖11所示。圖11 讀溫度流程圖 (二)按鍵處理子程序 按鍵處理子程序主要是負(fù)責(zé)參數(shù)的設(shè)置,主程序每循環(huán)一次都要對按鍵進(jìn)行掃描,判斷是否有輸入鍵按
25、下則進(jìn)行一系列的按鍵輸入操作。其程序流程框圖如圖12所示。圖12 溫度轉(zhuǎn)換流程圖(三)計(jì)算溫度子程序計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖13所示。 開始溫度零下?溫度值取補(bǔ)碼置“”標(biāo)志計(jì)算小數(shù)位溫度BCD值計(jì)算整數(shù)位溫度BCD值 結(jié)束置“+”標(biāo)志NY圖13 計(jì)算溫度子程序(四)顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為0時將符號顯示位移入下一位。程序流程圖如圖14。溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?百位數(shù)0?十位數(shù)顯示符號百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù)(不顯示符號) 結(jié)束NNYY圖14 數(shù)據(jù)
26、刷新子程序四、結(jié)束語通過此次畢業(yè)論文的課題設(shè)計(jì),我們學(xué)會了怎樣把所學(xué)的書本知識應(yīng)用于實(shí)踐中去,并學(xué)會了如何去思考整個控制系統(tǒng)的軟硬件設(shè)計(jì)。實(shí)踐過程中我們遇到了一些困難,但在解決問題的過程中,我們學(xué)會了團(tuán)隊(duì)合作精神和怎樣發(fā)現(xiàn)問題、分析問題,進(jìn)而解決問題。此次課程設(shè)計(jì)不僅增強(qiáng)了我們學(xué)習(xí)專業(yè)課的興趣,而且給了我們勇氣和信心,更重要的是它為我們以后的學(xué)習(xí)指明了方向。參考文獻(xiàn)1 李廣弟,朱月秀,王秀山.單片機(jī)基礎(chǔ)北京航空航天大學(xué)出版社,2001(07).2 蔡美琴,張為民等.MCS-51系列單片機(jī)系統(tǒng)及其應(yīng)用高等教育出版社,2004(06).3 張毅剛,等.MCS-51單片機(jī)應(yīng)用設(shè)計(jì)M.哈爾濱工業(yè)大學(xué)出
27、版社,1997.4 劉瑞星,胡健等.Protel DXP 實(shí)用教程機(jī)械工業(yè)出版社,2003(04).5 于海生. 計(jì)算機(jī)控制技術(shù) 機(jī)械工業(yè)出版社 2007(05).6 譚浩強(qiáng). C程序設(shè)計(jì) 清華大學(xué)出版社.7 康華光. 電子技術(shù)基礎(chǔ) 模擬部分 高等教育出版社 1998(08).8 余錫存. 單片機(jī)原理與接口技術(shù) 西安電子科技大學(xué)出版社,2003.致謝本論文是在我的指導(dǎo)老師密切關(guān)心和悉心指導(dǎo)下完成的。老師在課題開題期間和論文寫作的過程中給予了我許多指導(dǎo),導(dǎo)師總是以認(rèn)真負(fù)責(zé)、一絲不茍的工作態(tài)度閱讀并修改文章中不足的地方,他優(yōu)良的作風(fēng)和嚴(yán)謹(jǐn)治學(xué)的態(tài)度深深影響著我,至此,向恩師致以最真摯的感謝和最崇高
28、的敬意!同時我要感謝我的同學(xué),特別是我的室友們,正是他們在這幾年里陪我一起成長,一起學(xué)習(xí),才讓我有了今天的成績。他們在平時的學(xué)習(xí)和生活中他們給予了我無私的關(guān)懷和幫助,在此表示我最誠摯的謝意。附件1:系統(tǒng)原理圖附件2:系統(tǒng)相關(guān)程序一、DS18B20底層驅(qū)動程序/延時 N ms/DS1820引腳定義sbit TMDAT =P10;void DS1820_DelayCount (unsigned char Coun) data unsigned char Count; Count=Coun; while(Count0) Count-; Count=Coun; while(Count0) Count-
29、;/復(fù)位DS18B20void DS1820_Reset(void) TMDAT=0; DS1820_DelayCount(412); TMDAT=1; DS1820_DelayCount(16); /等待DS18B20應(yīng)答unsigned char DS1820_Answer(void)data unsigned int i;data unsigned char j; i=0xc000; while(TMDAT) i-;if (i=0)return(aban_return); i=0xffff; j=3; while(TMDAT) i-;if (i=0) if(j=0) return(aba
30、n_return); else j-; i=0xffff; DS1820_DelayCount(16); return(done_return);/等待DS18B20應(yīng)答/讀取位bit DS1820_Readbit(void) data int i=0; bit dat; TMDAT=0;i+;i+;i+;i+; TMDAT=1;i+;i+;i+;i+;i+;i+;i+;i+; dat = TMDAT;/ DS1820_DelayCount(8); DS1820_DelayCount(32); return dat;/讀取字節(jié)unsigned char DS1820_Readbyte(void
31、)data unsigned char i,j,dat=0; for(i=1;i=8;i+) j=DS1820_Readbit(); dat=(j1); return dat;/寫一個字節(jié)void DS1820_Writebyte(unsigned char dat) data signed char i=0; data unsigned char j; bit testb; for(j=1;j1; if(testb) TMDAT=0; i+;i+;i+;i+;i+;i+;i+;i+; TMDAT=1; /DS1820_DelayCount(8); DS1820_DelayCount(32);
32、 else TMDAT=0; /DS1820_DelayCount(8); DS1820_DelayCount(32); TMDAT=1; i+;i+;i+;i+;i+;i+;i+;i+; /讀操作開始unsigned char DS1820_StartTem(void) EA=0; DS1820_Reset(); if(DS1820_Answer()=aban_return) EA=Ea; return(aban_return); / DS1820_Delayms(1); DS1820_Delayms(4); DS1820_Writebyte(0xcc); / DS1820_Writebyt
33、e(0x55); / for(i=0;i8;i+) /DS1820_Writebyte(DS1820_tempi); DS1820_Writebyte(0x44); EA=Ea; return(done_return);/讀所有傳感器int DS1820_ReadTem(void)data unsigned char a,b;data int y3;data float y4;data unsigned char i; EA=0; DS1820_Reset(); if(DS1820_Answer()=aban_return) EA=Ea; return(0xffff); DS1820_Dela
34、yms(4); DS1820_Writebyte(0xcc); /跳過匹配傳感器 /DS1820_Writebyte(0x55); /匹配傳感器 / for(i=0;i8;i+) /DS1820_Writebyte(run_inf.system_index.DS1820_tempi); DS1820_Writebyte(0xbe); /讀取溫度 for(i=0;i9;i+) run_inf.system_index.DS1820_tempi=DS1820_Readbyte(); if(CRC(9)!=0) EA=1; return(0xffff); /計(jì)算CRC a = run_inf.sys
35、tem_index.DS1820_temp0; b = run_inf.system_index.DS1820_temp1; DS1820_Reset(); y3 = (b0; i-)rtc_io = temp_0; /*相當(dāng)于匯編中的 RRC */rtc_sc = 1;rtc_sc = 0;temp = temp 1; /功能: 從DS1302讀取1Byte數(shù)據(jù)unsigned char uc_RTOutputByte(void) unsigned char i;rtc_io=1;for(i=8; i0; i-) temp = temp 1; /*相當(dāng)于匯編中的 RRC */ temp_7
36、= rtc_io; rtc_sc = 1; rtc_sc = 0; return(temp); /功能: 往DS1302寫入數(shù)據(jù)void write1302(unsigned char ucAddr,unsigned char ucDa) bit ea; ea=EA; EA=0;rtc_rs_port&=(rtc_rs_bit);rtc_sc = 0;rtc_rs_port|=rtc_rs_bit;v_RTInputByte(ucAddr); /* 地址,命令 */v_RTInputByte(ucDa); /* 寫1Byte數(shù)據(jù)*/rtc_sc = 1;rtc_rs_port&=(rtc_rs
37、_bit);EA = ea; /功能: 讀取DS1302某地址的數(shù)據(jù)unsigned char read1302(unsigned char ucAddr)unsigned char ucDa; bit ea; ea=EA; EA=0;rtc_rs_port&=(rtc_rs_bit);rtc_sc = 0;rtc_rs_port|=rtc_rs_bit;v_RTInputByte(ucAddr); /* 地址,命令 */ucDa = uc_RTOutputByte(); /* 讀1Byte數(shù)據(jù) */rtc_sc = 1;rtc_rs_port&=(rtc_rs_bit);EA = ea;re
38、turn(ucDa);/功能: 設(shè)置初始時間void Set1302(pTime_S time_temp) unsigned char i= 0x80; write1302(0x8e,0x00); /* 控制命令,WP=0,寫操作*/ write1302(i,time_temp-sec); i +=2; write1302(i,time_temp-min); i +=2; write1302(i,time_temp-hou); i +=2; write1302(i,time_temp-day); i +=2; write1302(i,time_temp-mon); i +=2; write13
39、02(i,0x02); i +=2; write1302(i,time_temp-yea); i +=2; write1302(0x8e,0x80); /* 控制命令,WP=1,寫保護(hù)*/功能: 讀取DS1302當(dāng)前時間void get1302(void) unsigned char i,time_bcd_temp6;unsigned char ucAddr = 0x81;for (i=0;i7;i+) time_bcd_tempi = read1302(ucAddr);/*格式為: 秒 分 時 日 月 星期 年 */ ucAddr += 2; sec=time_bcd_temp0;min=t
40、ime_bcd_temp1;hou=time_bcd_temp2;day=time_bcd_temp3;mon=time_bcd_temp4;yea=time_bcd_temp6; /連續(xù)6字節(jié)讀出程序void ds1302_read(unsigned char *ptr,unsigned char addr) unsigned char i;addr=addr*2+0x0c1;for(i=0;i6;i+) *(ptr+i)=read1302(addr); addr+=2; /連續(xù)6字節(jié)寫入程序void ds1302_write(unsigned char *ptr,unsigned char
41、 addr)unsigned char i;addr=addr*2+0x0c0;write1302(0x8e,0x00); /寫保護(hù)置低(關(guān)閉)for(i=0;i6;i+) write1302(addr,*(ptr+i); addr+=2; write1302(0x8e,0x80); /寫保護(hù)置高(打開) void Start1302(void) unsigned char temp; bit ea; ea=EA; EA=0; temp=read1302(0x81); temp&=0x7f; write1302(0x8e,0x00); /* 控制命令,WP=0,寫操作*/ write1302(
42、0x80,temp); write1302(0x90,0); write1302(0x8e,0x80); /* 控制命令,WP=1,寫保護(hù)*/ EA=ea;/DS1302驅(qū)動程序結(jié)束三、數(shù)據(jù)存儲底層驅(qū)動程序/ATC256引腳定義sbit epr_sd=P33;sbit epr_sc=P32;bdata unsigned char temp1;sbit temp1_0 = temp10;sbit temp1_7 = temp17;/存儲器驅(qū)動程序開始void noack(void) epr_sd=1; epr_sc=1; epr_sc=1; epr_sc=1; epr_sc=0;void ask
43、()unsigned char i=0xff; epr_sd=1; epr_sc=1; epr_sc=1; epr_sc=1;doi-; if(epr_sd=0) epr_sc=0; i=0; while(i!=0);epr_sd=1;epr_sd=1;epr_sd=1;void stop() epr_sd=0; epr_sd=0; epr_sd=0; epr_sc=1; epr_sc=1; epr_sc=1; epr_sd=1; epr_sd=1; epr_sd=1; epr_sd=1;/24c256 startvoid start()epr_sc=1;epr_sd=1;epr_sd=1;
44、epr_sd=0; epr_sd=0; epr_sc=0;void wrby(unsigned char x) unsigned char i; epr_sc=0;temp1=x;for(i=0;i8;i+) /從高位開始傳送數(shù)據(jù) epr_sd=temp1_7; temp1=temp11; /左移一位 epr_sc=1; epr_sc=1; epr_sc=1; epr_sc=1; epr_sc=0; /24c256 rdby unsigned char rdby() /從高位開始讀出數(shù)據(jù) unsigned char i;epr_sd=1;epr_sd=1;epr_sd=1;for(i=0;i8
45、;i+) epr_sc=1;epr_sc=1; temp1=temp11; temp1_0=epr_sd; epr_sc=0; epr_sc=0;epr_sc=0; return(temp1);/24c256 waddr void waddr() start(); wrby(0xa0); ask();/24c256 raddrunsigned char raddr() start(); wrby(0xa1); ask(); temp1=rdby(); noack(); stop(); return(temp1);void w16addr(unsigned int x) union unsign
46、ed int int_type;unsigned char char_type1; u_int_char;unsigned m,n;u_int__type=x; /將x的高位賦給m,低位賦給nm=u_int_char.char_type0;n=u_int_char.char_type1; wrby(m ); ask(); wrby(n ); ask();/延時void d5ms() unsigned char a, b; for (a=0;a=15;a+) for (b=0;b0x7f;b+) ; /24c256 讀出一字節(jié) unsigned char epr_read(unsigned int x) bit ea; ea=EA; EA=0; /關(guān)中斷 EPR_WEN; d5ms(); waddr(); w16addr(x); temp1=raddr(); EA=ea;/開中斷 return(temp1);/24c256 寫入一字節(jié)void epr_write(unsigned int f,unsigned char x) bit ea; ea=EA; EA=0 ; /關(guān)中斷 d5ms(); waddr(); w16addr(f); wrby(x); ask(); sto
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)生館經(jīng)營托管合同范本
- t型牌合同范本
- 2025年度教育類APP開發(fā)與運(yùn)營合同范本
- 2025年采原煤項(xiàng)目投資可行性研究分析報(bào)告
- 農(nóng)牧合同范本
- 2025年度新能源車輛設(shè)計(jì)與制造服務(wù)合同
- 2025年魚皮明膠市場分析報(bào)告
- 2025年度股東協(xié)議書合同范本:航空航天領(lǐng)域股權(quán)合作協(xié)議
- 2025年度建筑工程材料供應(yīng)合同范本及質(zhì)量保證
- 2025年度空運(yùn)出口貨物運(yùn)輸合同違約責(zé)任約定合同
- 中華人民共和國學(xué)前教育法-知識培訓(xùn)
- 2024統(tǒng)編版初中八年級語文上冊第五單元:大單元整體教學(xué)設(shè)計(jì)
- 小記者新聞寫作培訓(xùn)
- 【《智慧城市建設(shè)中電子政務(wù)建設(shè)問題及完善策略一以瀘州市為例》9000字(論文)】
- IPO項(xiàng)目盡職調(diào)查清單(詳細(xì))
- ETL開發(fā)工程師招聘面試題及回答建議2025年
- 2023年新高考(新課標(biāo))全國2卷數(shù)學(xué)試題真題(含答案解析)
- 肝硬化肝性腦病診療指南(2024年版)解讀
- 四年級數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)及答案
- 《會展服務(wù)與管理》教學(xué)大綱
- 虛擬試妝鏡技術(shù)應(yīng)用指南
評論
0/150
提交評論