商用淋浴器的設(shè)計與實(shí)現(xiàn)畢業(yè)設(shè)計_第1頁
已閱讀1頁,還剩67頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  分類號 TP23 編號 </p><p>  商用節(jié)水淋浴器的設(shè)計與實(shí)現(xiàn)</p><p>  Design and implementation of the commercial shower</p><p&

2、gt;  (申請煙臺大學(xué)學(xué)士學(xué)位論文)</p><p>  申請學(xué)位: 工學(xué)學(xué)士學(xué)位 </p><p>  院 系: 計算機(jī) </p><p>  專 業(yè): 自動化 </p><p>  學(xué)生姓名: </p><p>  學(xué) 號:

3、 </p><p>  指導(dǎo)老師 </p><p><b>  2012年6月7日</b></p><p>  畢業(yè)論文(設(shè)計)任務(wù)書</p><p>  院(系):計算機(jī)學(xué)院</p><p>  [摘要] 我國是水資源缺乏國家,而且水資源以相當(dāng)驚人的速度被污染和浪費(fèi)。如

4、果節(jié)水從身邊做起,對傳統(tǒng)澡堂進(jìn)行節(jié)水改造是一件相當(dāng)有意義的事情。本設(shè)計就是一個對舊式澡堂進(jìn)行節(jié)水改造的自動化設(shè)備。國內(nèi)已經(jīng)有過大量類似的實(shí)踐,小部分澡堂已經(jīng)進(jìn)行了節(jié)水改造,但這方面的工作做得遠(yuǎn)遠(yuǎn)不夠。據(jù)網(wǎng)上調(diào)查,類似的智能淋浴系統(tǒng)(大部分為IC卡淋浴)售價昂貴,動輒幾萬元的改造費(fèi)用讓一些小的洗浴場所望而卻步,我研究這個系統(tǒng)的目的就是探究以最精簡的方式,實(shí)現(xiàn)智能節(jié)水,并且大幅降低改造費(fèi)用。另一方面,目前的設(shè)備(如煙大七餐澡堂)只注重節(jié)水,

5、而忽略了智能,導(dǎo)致消費(fèi)者的愉悅感很差,故意拖延洗浴時間。而本設(shè)計采用不但采用紅外感應(yīng)出水,而且是實(shí)時流量顯示,已用水量顯示,溫度可調(diào),用電腦控制服務(wù)的啟停及結(jié)賬,為了更加凸顯商用價值,在電腦端結(jié)賬時分為普通客戶結(jié)賬和會員結(jié)賬(會員信息在數(shù)據(jù)庫,會員水價較便宜)。技術(shù)上,服務(wù)端以C51單片機(jī)為核心,周邊模塊有電源模塊、紅外感應(yīng)模塊、流量計等,關(guān)鍵硬件電路均為自己焊制??刂贫瞬捎肰B編制服務(wù)界面,ACESS數(shù)據(jù)庫存儲會員信息。</p&

6、gt;<p>  [關(guān)鍵詞] 智能節(jié)水;淋浴器;acess數(shù)據(jù)庫;RS232通信;VB編程;</p><p>  Abstract: China is a water-lacking country. And water resources are polluted and wasted at an alarming rate. Water-saving transformation of the

7、traditional bathhouse is a meaningful thing. This design is automatic equipment for such desire. There are already large numbers of similar practices. Part of the traditional bathhouse was already transformed, but it is

8、not enough. According to an online survey. Similar Intelligent shower system is very expensive. The high cost is prohibitive for many pe</p><p>  Key words: smart water-saving; shower; access database; RS23

9、2 communication; VB program</p><p><b>  目錄</b></p><p><b>  1緒 論1</b></p><p>  1.1本課題的研究意義及必要性1</p><p>  1.2目前發(fā)展趨勢及研究的主攻方向2</p><

10、p><b>  2系統(tǒng)分析4</b></p><p>  2.1系統(tǒng)的功能概述4</p><p>  2.2系統(tǒng)I/O分配情況8</p><p><b>  3系統(tǒng)硬件10</b></p><p>  3.1單片機(jī)最小系統(tǒng)板10</p><p>  

11、3.11 系統(tǒng)的控制核心---單片機(jī)10</p><p>  3.12 晶振電路及其原理、測試方法11</p><p>  3.13 系統(tǒng)供電及穩(wěn)壓電路11</p><p>  3.14 指示燈電路及其測試12</p><p>  3.15 復(fù)位電路14</p><p>  3.16 MAX232下載電路、U

12、SB—RS232轉(zhuǎn)換以及串行通信14</p><p>  3.17 蜂鳴器的連接18</p><p>  3.18 熱電阻與AD模塊的使用及其調(diào)試方法19</p><p>  3.19 溫度調(diào)節(jié)、水量調(diào)節(jié)與中斷模塊調(diào)試方法22</p><p>  3.2流量計及其調(diào)試方法24</p><p>  3.3紅

13、外模塊的測試26</p><p>  3.4繼電器模塊及其調(diào)試27</p><p>  3.5數(shù)碼管模塊及其調(diào)試29</p><p>  3.6 浮球開關(guān)及其自動上水功能編程35</p><p><b>  4系統(tǒng)軟件37</b></p><p>  4.1KEIL開發(fā)環(huán)境37

14、</p><p>  4.2STC-ISP燒錄工具39</p><p>  4.3波特率計算器41</p><p>  4.4串口調(diào)試助手41</p><p>  4.5Visual Basic 6.042</p><p>  4.5.1 VB的編程界面43</p><p> 

15、 4.5.2 MSCCOM串行通信控件44</p><p>  4.5.3 ADO DATA 數(shù)據(jù)訪問控件45</p><p>  設(shè)計中遇到的困難及其解決方案48</p><p><b>  結(jié)語50</b></p><p><b>  參考文獻(xiàn)51</b></p><

16、;p>  附錄A 部分代碼52</p><p><b>  緒 論</b></p><p>  本課題的研究意義及必要性</p><p>  我國屬于缺水國之列,人均淡水資源僅為世界人均量的1/4,居世界第109位。中國已被列入全世界人均水資源13個貧水國家之一。專家們警告:“20年后中國將找不到可飲用的水資源”。美國民間有影響的智囊機(jī)

17、構(gòu)—世界觀察研究所發(fā)表的一份報告中稱:“由于中國城市地區(qū)和工業(yè)地區(qū)對水需求量迅速增大,中國將長期陷入缺水狀況?!敝袊狞S河在過去的10多年年年斷流,其中1997年斷流226天。流經(jīng)中國一些人口稠密集地區(qū)的淮河去年也斷流了90天。根據(jù)衛(wèi)星拍攝的照片,數(shù)百個湖泊正在干涸,一些地方性的河流也在消失。目前全國600多座城市中,有300多座城市缺水,其中嚴(yán)重缺水的有108個。其中北京市的人均占有水量為全世界人均占有水量的1/13,連一些干旱的阿拉

18、伯國家都不如。</p><p>  如果節(jié)水從點(diǎn)滴做起,從身邊做起,讓我們把目光投向身邊大大小小的澡堂,它們普遍的存在嚴(yán)重浪費(fèi)水資源的現(xiàn)象,許多人覺得花錢買的,就不節(jié)約使用,開長流水,洗澡的時間一再拖延,殊不知,水是一種極其特殊的商品,節(jié)約水不但是經(jīng)濟(jì)層面的事情,更是一種社會責(zé)任。雖然比起工業(yè)用水,這點(diǎn)水量可謂是九牛一毛但是積少成多,如果將全國的澡堂都進(jìn)行節(jié)水改造,那節(jié)省的用水量也是相當(dāng)客觀的,想想西部的家庭取水

19、困難,想想我們的國家即將面對的水資源困乏,對澡堂的節(jié)水改造是相當(dāng)有意義的,對人們節(jié)水觀念的培養(yǎng)也起到積極的作用。</p><p>  我所設(shè)計的就是一種對舊式澡堂進(jìn)行節(jié)水改造的自動化設(shè)備---商用智能淋浴器。它的節(jié)水功能不但是因?yàn)椴捎昧思t外感應(yīng)出水,而且對于每一個消費(fèi)者而言,繳費(fèi)后都擁有固定的用水量,洗澡過程中能實(shí)時地顯示剩余水量,超量用水后蜂鳴器報警,并且顯示超量信息,服務(wù)結(jié)束后按量收費(fèi)。一切手續(xù)在服務(wù)臺的電腦

20、上完成。為了提高服務(wù)質(zhì)量,該系統(tǒng)還有會員消費(fèi)模式,從數(shù)據(jù)庫中調(diào)出會員的余額等信息,發(fā)送到淋浴器直接進(jìn)行消費(fèi),十分方便。如果成功研制并推廣,它必將造福于社會,對我國經(jīng)濟(jì)社會的可持續(xù)發(fā)展做出貢獻(xiàn)。</p><p>  目前發(fā)展趨勢及研究的主攻方向</p><p>  對整個智能淋浴系統(tǒng)來說,國內(nèi)已經(jīng)有過大量類似的實(shí)踐應(yīng)用,一小部分澡堂已經(jīng)進(jìn)行了節(jié)水改造,但這方面的工作做得遠(yuǎn)遠(yuǎn)不夠。據(jù)網(wǎng)上調(diào)查,

21、類似的智能淋浴系統(tǒng)(大部分為IC卡淋?。┦蹆r昂貴,動輒幾萬元的改造費(fèi)用讓一些小的洗浴場所望而卻步,我研究這個系統(tǒng)的目的就是探究以最精簡的方式,實(shí)現(xiàn)智能節(jié)水,并且大幅降低改造費(fèi)用。</p><p>  另一方面,現(xiàn)有的很多節(jié)水淋浴系統(tǒng),或者是只注重于節(jié)水(如七餐浴池的紅外淋?。?,而忽略了淋浴器的智能,導(dǎo)致了洗浴的愉悅感很差,消費(fèi)者故意延長洗浴時間,對培養(yǎng)節(jié)水的意識并無太大的作用。而我設(shè)計的這個系統(tǒng),不但使用了紅外感

22、應(yīng)出水,而且每個消費(fèi)者繳費(fèi)后有固定的用水量,超額消費(fèi)后,要另外交錢。多用多交,少用少交,實(shí)現(xiàn)有效節(jié)水,該淋浴器的智能還體現(xiàn)在洗浴中斷不進(jìn)行任何操作,只顯示余額和超額信息,所有的操作均在PC界面完成,PC與淋浴器控制核心--單片機(jī)使用串口進(jìn)行通信。</p><p>  從單項(xiàng)技術(shù)來講,該系統(tǒng)用到的技術(shù),除了單片機(jī)晶振、下載口電路焊接、紅外模塊、調(diào)壓模塊焊接、流量計的使用,數(shù)碼管顯示、蜂鳴器報警電路,關(guān)鍵技術(shù)有三項(xiàng):

23、PC與單片機(jī)的RS232串行口通信,VB控制界面編程、會員ACCESS數(shù)據(jù)庫編程(包含VB與ACCESS數(shù)據(jù)庫的接口程序設(shè)計)。</p><p>  隨著計算機(jī)技術(shù)尤其是單片微型機(jī)技術(shù)的發(fā)展,人們已越來越多地采用單片機(jī)來對一些工業(yè)控制系統(tǒng)中如溫度、流量和壓力等參數(shù)進(jìn)行檢測和控制。PC機(jī)具有強(qiáng)大的監(jiān)控和管理功能,而單片機(jī)則具有快速及靈活的控制特點(diǎn),通過PC機(jī)的RS-232串行接口與外部設(shè)備進(jìn)行通信,是許多測控系統(tǒng)中

24、常用的一種通信解決方案。因此如何實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的通訊具有非常重要的意義。</p><p>  當(dāng)需要處理較復(fù)雜數(shù)據(jù)或需要對多個采集數(shù)據(jù)進(jìn)行綜合處理單片機(jī)的算術(shù)運(yùn)算和邏輯運(yùn)算能力顯的不足,這時往往需要借助計算機(jī)系統(tǒng)。將單片機(jī)采集的數(shù)據(jù)通過串行口傳給PC機(jī),由PC機(jī)高級語言或數(shù)據(jù)庫語言進(jìn)行處理,或者實(shí)現(xiàn)PC機(jī)對遠(yuǎn)程單片機(jī)進(jìn)行控制。因此,實(shí)現(xiàn)單片機(jī)與PC機(jī)之間的遠(yuǎn)程通信更具有實(shí)際意義。</p>&

25、lt;p>  使用VB語言是面向?qū)ο蟮木幊陶Z言,可以方便的設(shè)計出在window環(huán)境下友好的人機(jī)界面,通過調(diào)用AIP接口函數(shù)對串口數(shù)據(jù)的操作,用戶可以輕點(diǎn)幾下鼠標(biāo)就能實(shí)現(xiàn)計算機(jī)控制。</p><p>  ACCESS是微軟開發(fā)的小型數(shù)據(jù)庫,旨在強(qiáng)占數(shù)據(jù)庫領(lǐng)域的低端市場,微軟雖然強(qiáng)大,但非專業(yè)做數(shù)據(jù)庫的公司, ACCESS的性能根本無法與ORACLE和DB2相媲美.但由于微軟WINDOWS操作的普及,使得ACC

26、ESS和WINDOWS操作系統(tǒng)兼容的非常的好,穩(wěn)定性極佳,通過許多加密技術(shù)后,安全性也有了提升,受到個人開發(fā)者甚至中小型企業(yè)的歡迎,牢牢的控制著數(shù)據(jù)庫的低端市場. 只要WINDOWS操作系統(tǒng)不被淘汰,ACCESS就會經(jīng)久不衰的致霸數(shù)據(jù)庫領(lǐng)域的低端市場,前途非常光明。</p><p><b>  系統(tǒng)分析</b></p><p><b>  系統(tǒng)的功能概述&l

27、t;/b></p><p>  圖2.1 系統(tǒng)部件圖示</p><p>  本設(shè)計比起已經(jīng)出現(xiàn)的類似設(shè)備擁有六大特色:</p><p>  紅外感應(yīng)出水,安全性好,在水加熱的過程中和水溫超限時不可出水。</p><p>  實(shí)時顯示水量(上位機(jī)顯示已用水量,服務(wù)端顯示剩余水量)且用戶水量自主設(shè)置。</p><p>

28、;  溫度實(shí)時顯示(上位機(jī)與服務(wù)端同時顯示),且用水溫度可自主設(shè)置。</p><p>  水溫上下限報警,水量下限報警。</p><p>  上位機(jī)消費(fèi)模式,上位機(jī)通過RS232通信可控制服務(wù)的啟停,并且擁有會員信息數(shù)據(jù)庫庫,可在會員模式下結(jié)賬。</p><p>  自動上水功能。通過兩個浮球開關(guān)可檢測水容器的水位,利用水泵補(bǔ)水。</p><p&

29、gt;  作為一個節(jié)水的商用淋浴設(shè)備,我的設(shè)計目的突出三點(diǎn)一個是“節(jié)水”一個是“智能”,再就是“商用”。上述特色中前兩個體現(xiàn)了節(jié)水的理念,第三、第四和第六個特色體現(xiàn)了智能的理念,第五個特色體現(xiàn)了商用的理念。</p><p>  系統(tǒng)的工作過程如下:</p><p>  打開“淋浴器.exe”可執(zhí)行文件,服務(wù)界面展開,在界面點(diǎn)擊“開啟服務(wù)”按鈕,界面及中控臺前后對比如圖2.2及圖2.3<

30、;/p><p>  圖2.2 點(diǎn)擊“開啟服務(wù)”按鈕后界面對比</p><p>  圖2.3 中控臺在開啟服務(wù)前后的對比(將已用水量初始化為2.00是調(diào)試需要)</p><p>  此時系統(tǒng)在滿足:紅外感應(yīng)到障礙、水溫適中(在設(shè)定溫度上下5度范圍內(nèi))、有剩余水量的三個條件后,普通繼電器閉合、固態(tài)繼電器輸出端導(dǎo)通,水泵工作,可以出水。</p><p>

31、;  圖2.4 感應(yīng)到障礙并出水</p><p>  服務(wù)過程中可以對水量和溫度進(jìn)行設(shè)定。消費(fèi)結(jié)束后點(diǎn)擊“停止服務(wù)按鈕”,彈出選擇結(jié)賬方式窗口,可以選擇“普通用戶結(jié)賬”和“會員結(jié)賬”兩種方式。普通用戶結(jié)賬,輸入當(dāng)前水價,彈出付款窗口,付款成功后,由管理員發(fā)送消息記錄,點(diǎn)擊“已收款”退出系統(tǒng)。如圖2.5。</p><p>  圖2.5 普通用戶結(jié)賬界面</p><p>

32、;  會員消費(fèi)時,在選擇結(jié)賬方式界面選擇“會員結(jié)賬”,由客戶提供的密碼查詢會員相關(guān)信息,輸入會員水價,進(jìn)行結(jié)賬,結(jié)賬后新的余額信息返存回數(shù)據(jù)庫,管理員發(fā)送消息記錄消費(fèi)結(jié)束。如圖</p><p>  圖2.6 會員付款查詢界面</p><p>  圖2.7 會員付款界面</p><p>  付款結(jié)束后彈出“服務(wù)結(jié)束”對話框,退出系統(tǒng)。</p><p

33、>  圖2.8 服務(wù)結(jié)束對話框</p><p>  在服務(wù)界面的首頁也可以選擇進(jìn)行“會員信息管理”和“賬單管理”,在會員信息管理界面可以實(shí)現(xiàn)對會員信息的增添、刪除、修改、查詢等基本操作;在賬單管理界面可以查看所有賬單,也可以只保留當(dāng)月的賬單。</p><p>  圖2.9 會員信息管理界面</p><p>  圖2.10 賬單管理界面</p>&

34、lt;p><b>  系統(tǒng)硬件連接</b></p><p>  系統(tǒng)的硬件大概包括三大部分:上位機(jī)控制端、中控臺、服務(wù)端。上位機(jī)控制端為運(yùn)行控制軟件的微型計算機(jī),中控臺即單片機(jī)及其周邊模塊,上位機(jī)與中控臺以RS232-USB的通信線連接。服務(wù)端主要有流量計、紅外模塊、水位計、熱電阻、加熱器等功能構(gòu)件和水泵、噴頭、水池等淋浴設(shè)施。系統(tǒng)連接示意圖如下:</p><p&g

35、t;  圖2.11 系統(tǒng)硬件連接示意圖(紅線為電源線,藍(lán)色線為信號線)</p><p><b>  系統(tǒng)I/O分配情況</b></p><p>  對于了解系統(tǒng)的結(jié)構(gòu)及運(yùn)行情況,清楚系統(tǒng)的IO分配情況至關(guān)重要,即外圍的各個模塊與單片機(jī)的連接方式,這一部分內(nèi)容在系統(tǒng)代碼工程文件的頭文件IO.h中有詳細(xì)解釋。單片機(jī)選用的是40引腳雙列直插STC12C5A60S2。熱電阻使

36、用一路AD,即SCLK/ADC7/P1.7。流量計介入單片機(jī)使用計數(shù)器TO即CLKOUT0/INT/T0/P3.4引腳。紅外模塊、指示燈等所定義的IO口名稱如下(即自編的頭文件):</p><p>  sbit p1_0 = P1^0; //外部中斷0點(diǎn)亮(設(shè)定用水量按鍵)低電平點(diǎn)亮</p><p>  sbit p1_1 = P1^1; //外部中斷1點(diǎn)亮 (設(shè)定溫度按鍵)</p&

37、gt;<p>  sbit p1_2 = P1^2; //串行數(shù)據(jù)接受完成標(biāo)志</p><p>  sbit p1_3 = P1^3; //串行數(shù)據(jù)發(fā)送完成標(biāo)志</p><p>  sbit p1_4 = P1^4; //高水位燈</p><p>  sbit p1_5 = P1^5; //低水位燈</p><p>  sbit

38、 p1_6 = P1^6;//代碼中不可直接使用P1^6</p><p>  sbit jidianqi1 = P3^6; //高電平接通</p><p>  sbit jidianqi2 = P3^7; //高電平接通</p><p>  sbit hongwai = P0^0; //紅外模塊信號線</p><p>  sbit

39、 DIN = P0^1; //MAX7219串行數(shù)據(jù)輸入</p><p>  sbit CLK = P0^3; //MAX7219串行時鐘</p><p>  sbit LOAD = P0^2; //MAX7219顯示數(shù)據(jù)鎖存控制</p><p>  sbit shuiwei_high=P0

40、^4; //高水位測量</p><p>  sbit shuiwei_low=P0^5; //低水位測量</p><p>  sbit fengmingqi=P0^6; //蜂鳴器</p><p>  sbit jidianqi3=P0^7; //水位控制繼電器</p><p>  //開發(fā)環(huán)境中

41、自帶頭文件中沒有包含的寄存器地址</p><p>  sfr ADC_CONTR=0XBC; //AD控制寄存器</p><p>  sfr ADC_RES=0XBD; //AD結(jié)果寄存器</p><p>  sfr P1ASF=0X9D; //選擇哪一路為AD其余為IO</p><p>  sfr IPH=0XB7;&l

42、t;/p><p>  sfr BRT=0X9C; //獨(dú)立波特率發(fā)生器</p><p>  sfr AUXR=0X8E; //輔助寄存器</p><p><b>  系統(tǒng)硬件</b></p><p><b>  單片機(jī)最小系統(tǒng)板</b></p><p>  3.11 系統(tǒng)的控制核

43、心---單片機(jī)</p><p>  此次設(shè)計選用了51單片機(jī)系列中的高端型號STC12C5A60S2,是宏晶生產(chǎn)的高速、低功耗、抗干擾的以8051為CPU的新一代單片機(jī)。其指令代碼與傳統(tǒng)的8051單片機(jī)完全兼容但是執(zhí)行速度最高能快12倍。而且它內(nèi)部集成了2路PWM,8路高速10位AD,完全符合系統(tǒng)的設(shè)計要求,而且它的串行通信口有獨(dú)立的波特率發(fā)生器,這就大大減小的系統(tǒng)的負(fù)擔(dān),可以更好地實(shí)現(xiàn)實(shí)時控制。它的引腳分布如下

44、:</p><p>  圖3.1 單片機(jī)引腳圖</p><p>  與系統(tǒng)的相關(guān)的模塊功能參數(shù)如下(主要是AD、串口、中斷、定時器):</p><p>  工作電壓5.5V---3.5V(5V單片機(jī))</p><p>  工作頻率:0---35MHZ</p><p>  每個I/O口的驅(qū)動電流可以達(dá)到20mA,但是整片

45、不能超過120mA</p><p>  無需專用的下載器,直接使用串行口配合ISP軟件可以直接下載用戶程序</p><p>  共4個16位定時器,其中T0和T1與傳統(tǒng)的8051完全兼容</p><p>  兩路外部觸發(fā)中斷,可以使用下降沿觸發(fā)或者低電平觸發(fā)中斷</p><p>  共有8路10位精度的AD轉(zhuǎn)換,最高速度可達(dá)25萬次/秒<

46、;/p><p>  通用全雙工異步串行口(雙串口)</p><p>  3.12 晶振電路及其原理、測試方法</p><p>  這部分電路是整個控制系統(tǒng)的“脈搏”,單片機(jī)的機(jī)器周期就是晶振提供的。它為系統(tǒng)提供基本的時鐘信號。各部分公用一個晶振信號以保持同步。單片機(jī)的一切指令執(zhí)行都是建立在這個基礎(chǔ)之上的,晶振提供的頻率越高,單片機(jī)運(yùn)行的速度越快。它的工作是否正常關(guān)乎著系

47、統(tǒng)能不能正常工作,它有晶振和起振電容組成,起振電容的作用十分關(guān)鍵,不能大小的晶振要選擇相應(yīng)大小的晶振電容,但是選擇的范圍比較寬松。本設(shè)計選擇使用了11.0592MHZ的晶振和20PF的起振電容。晶振的兩只管腳分別連接單片機(jī)的18和19號腳。</p><p><b>  圖3.2 晶振電路</b></p><p>  使用時晶振片的引腳不能太長,而且要盡量靠近單片機(jī),起

48、振電容接地端要離單片機(jī)的接地引腳近一些,此外如果單片機(jī)底座引線過長也會影響晶振起振。晶振電路的原理是:單片機(jī)的內(nèi)部有個高增益的反向放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器,并產(chǎn)生震蕩時鐘,簡單說就是利用了正反饋的原理。</p><p>  測試晶振有沒有正常運(yùn)行的方法除了用示波器之外,更加便捷的方法是,用萬用表測量晶振的兩個引腳的電壓是不是芯片工作電壓的一半,如5v單片機(jī)的晶振引腳電壓是不是2.5V左右。如果用鑷

49、子觸碰另外一個引腳,電壓有明顯變化的話,此時晶振是起振狀態(tài)。</p><p>  3.13 系統(tǒng)供電及穩(wěn)壓電路</p><p>  單片機(jī)工作需要穩(wěn)定的5V電壓,干電池或普通的蓄電池不能滿足需求,系統(tǒng)的一些功能部件一般都是需要5V或者更高的電壓,另一個方面負(fù)載過大的話(如系統(tǒng)中有電機(jī)等功耗較大的部件時),干電池和蓄電池都顯得力不從心,電壓下降太多的話,會導(dǎo)致單片機(jī)低電壓復(fù)位,系統(tǒng)無法正常工

50、作。需要供電的部件如下:</p><p><b>  單片機(jī) 5V</b></p><p><b>  數(shù)碼管 5V</b></p><p><b>  繼電器1 5V</b></p><p><b>  繼電器2 5V</b></p>&l

51、t;p><b>  固態(tài)繼電器 12V</b></p><p><b>  紅外模塊 5V</b></p><p><b>  流量計 5V</b></p><p>  AD分壓電路、蜂鳴器、指示燈電路、MAX232電路都需要5V電壓。</p><p>  系統(tǒng)供電的解決

52、方案是采用直流穩(wěn)壓電源,將交流電整流再穩(wěn)壓提供12V的電壓,這樣的直流電帶負(fù)載能力要遠(yuǎn)比干電池或者蓄電池更好。12V電壓經(jīng)過7805穩(wěn)壓芯片,為系統(tǒng)各個部件提供穩(wěn)定的5V電壓。實(shí)際上系統(tǒng)采用了兩個直流穩(wěn)壓電源,因?yàn)榻?jīng)過測試之后,單個電源提供給整個系統(tǒng)的5V電壓,如果再用它的12V給固態(tài)繼電器提供導(dǎo)通電壓會導(dǎo)致負(fù)載過大,固態(tài)繼電器不能正常導(dǎo)通。固態(tài)繼電器的導(dǎo)通雖然寬泛,3—32V,但是經(jīng)過測試之后發(fā)現(xiàn)單片機(jī)的I/O口5V無論加不加上拉電路

53、都是不能驅(qū)動的,只有外接單獨(dú)的12V才能使其輸出端導(dǎo)通。這樣固態(tài)繼電器控制水泵,就要通過另外一個普通繼電器控制其輸入端12V的通斷才能間接的控制水泵。由于需要提供的5V電壓接口太多,為了電壓更加穩(wěn)定,系統(tǒng)采用了3片7805來提供5V電壓。7805供電電路示意圖如圖3.5,12V電壓示意圖如3.6。系統(tǒng)供電的示意圖如下:</p><p>  圖3.3系統(tǒng)供電示意圖</p><p>  3.1

54、4 指示燈電路及其測試</p><p>  指示燈在系統(tǒng)代碼調(diào)試、狀態(tài)指示、判斷是否正常工作等方面的作用是不言而喻的,系統(tǒng)使用單片機(jī)的P1口作為指示燈的I0.需要注意的是在KEIL編程環(huán)境里不能使用P1^1的用法,要在頭文件中定義為P1_1或者其它名稱。Stc12c5a60s2單片機(jī)每個IO口的驅(qū)動能力達(dá)到了20mA,但是整塊板子的驅(qū)動能力不超過120mA,P1口沒有內(nèi)部上拉電路,所以要外接上拉電阻,以增強(qiáng)驅(qū)動能

55、力,降低單片機(jī)的功耗。系統(tǒng)總共用到了共接了7個指示燈,運(yùn)行時用到了4個,調(diào)試程序的時候起到了非常大的作用。電路圖如下:</p><p>  圖3.4 指示燈電路</p><p>  如上圖,在程序運(yùn)行的時候,給單片機(jī)P1口復(fù)位為高電平,指示燈全滅,程序運(yùn)行時,根據(jù)需要將相應(yīng)I/O口置零或者置1,讓指示燈亮或滅。系統(tǒng)設(shè)計時,用到了4個指示燈,P1.0是外部中斷0的(調(diào)水量按鈕)指示燈,P1.

56、1是外部中斷1(調(diào)溫度)的指示燈,P1.2是串行數(shù)據(jù)接受完成標(biāo)志位,P1.3是串行數(shù)據(jù)發(fā)送完成標(biāo)志位。</p><p>  在電路焊接時,對這部分電路進(jìn)行測試的方法比較簡單,就給相應(yīng)的I/O口賦值觀察燈亮或者滅就可以,測試代碼如下:</p><p><b>  main()</b></p><p><b>  {</b>&

57、lt;/p><p>  unsigned char LED;</p><p>  LED = 0xfe;</p><p><b>  P1 = LED;</b></p><p><b>  while(1)</b></p><p><b>  {</b>&l

58、t;/p><p>  delayms(250);//延時函數(shù)</p><p>  LED = _crol_(LED,1);//循環(huán)右移1位,點(diǎn)亮下一個LED 此函數(shù)位庫函數(shù)</p><p><b>  P1 = LED;</b></p><p><b>  }</b></p><

59、;p><b>  }</b></p><p>  程序下載之后,如果電路焊接正確的話P1口所接的指示燈會有跑馬燈的效果。</p><p>  圖3.5 7805芯片12V—5V穩(wěn)壓電路</p><p>  圖3.6 直流電源電路圖</p><p><b>  3.15 復(fù)位電路</b><

60、/p><p>  本設(shè)計單片機(jī)采用上電復(fù)位的方式,STC12C5A60S2的復(fù)位引腳在9號引腳,即RST/P4.7引腳,采用這樣的設(shè)計后,單片機(jī)在上電的同時復(fù)位,其優(yōu)勢在于方便快捷,實(shí)現(xiàn)起來很簡單,雖然比起按鍵復(fù)位有缺點(diǎn),但也基本滿足了系統(tǒng)需求,其電路如圖3.7:</p><p><b>  圖3.7 復(fù)位電路</b></p><p>  需要注意

61、的是,當(dāng)時鐘頻率低于12MHZ時,可以不用電容,直接接1K電阻到地。當(dāng)時鐘頻率高于12MHZ時,可以使用第二復(fù)位引腳,在RST2/EX_LVD/P4.6引腳。</p><p>  有了晶振和復(fù)位電路,有了供電電路,這已經(jīng)滿足了單片機(jī)工作的條件,已經(jīng)可以配合指示燈電路做一些聯(lián)合實(shí)驗(yàn)了(當(dāng)然如果想自主下載程序,還需要焊接下載電路,在后面會有論述)。</p><p>  3.16 MAX232下

62、載電路、USB—RS232轉(zhuǎn)換以及串行通信</p><p>  要想實(shí)現(xiàn)單片機(jī)與計算機(jī)的通信,無論是下載程序還是普通的串行通信,必定要進(jìn)行的一個步驟就是電平轉(zhuǎn)換,因?yàn)閱纹瑱C(jī)和計算機(jī)在內(nèi)部使用的表示0和1的電平信號不屬于一個類型,就像兩個人說話語言得一樣,所以必須進(jìn)行電平轉(zhuǎn)換,我們常用的方式是使用MAX232芯片完成這項(xiàng)工作,將單片機(jī)的COMOS電平與計算機(jī)的TTL電平進(jìn)行相互轉(zhuǎn)換以實(shí)現(xiàn)它們之間的通信。(只使用發(fā)送

63、、接受、地線三根線)。</p><p>  圖3.8 MAX232應(yīng)用電路</p><p>  在上圖中需要注意的是MAX232的6號引腳上的電解電容正極接地,15和16引腳之間使用10UF的電解電容,圖中所有的0.1uf的電解電容都可以用瓷片電容104代替。</p><p>  因?yàn)殚_發(fā)本系統(tǒng)使用的為筆記本電腦,同時也使用筆記本電腦作為上位機(jī),而普通筆記本電腦并沒

64、有9針的RS232串口供直接使用,所以要進(jìn)行接口轉(zhuǎn)換,解決方案為購買RS232—USB的轉(zhuǎn)換線,因?yàn)槠涫褂梅奖?,電路圖可以查到,但是不提成本,用普通的電子線做出的轉(zhuǎn)換線,沒有屏蔽電磁干擾等等措施,可能做出的東西根本不能用(在設(shè)計中,使用普通杜邦線做通信線耽誤了很多時間,有后續(xù)的論述)。系統(tǒng)使用的轉(zhuǎn)換線采用的是CH340轉(zhuǎn)換芯片,比較常用的還有PL2303,電路圖都可以很容易查到,但是有一點(diǎn)需要注意,那就是,光有轉(zhuǎn)換線還是不行的,一定要在

65、電腦端安裝驅(qū)動程序才可以,電腦才能通過USB口正確的識別設(shè)備,要根據(jù)驅(qū)動芯片型號選擇驅(qū)動程序。</p><p>  有了上述兩部分器件(加上驅(qū)動程序),就架起了筆記本電腦和單片機(jī)之間的通信(10m之內(nèi))橋梁,要想實(shí)現(xiàn)它們之間的通信,上位機(jī)要配合串口調(diào)試助手,單片機(jī)端我們也要有相應(yīng)的程序,我們下面就來了解一下單片機(jī)的串行通信功能。</p><p>  STC12C5A60S2擁有兩個全雙工的

66、串行通信接口,他們可以使用定時器1作為波特率發(fā)生器,也可以使用獨(dú)立波特率發(fā)生器。經(jīng)過實(shí)驗(yàn),若使用定時器1作為串行口的波特率發(fā)生器會大大加重系統(tǒng)的負(fù)擔(dān)(定時器1與系統(tǒng)共用一個時鐘源)。所以在最終的程序中使用獨(dú)立波特率發(fā)生器,但是在下面的測試程序中使用定時器1作為波特率發(fā)生器。</p><p>  單片機(jī)的兩個串行通信接口都是由四部分構(gòu)成:兩個數(shù)據(jù)緩沖器(接受、發(fā)送,功能不同,但是不同時使用,所以使用了同一個地址碼)

67、、一個移位寄存器、一個串行控制寄存器、一個波特率發(fā)生器。兩個通信接口都有四種工作方式。我們通常使用模式1,即8位數(shù)據(jù)位UART,波特率可變。無奇偶校驗(yàn)。一個起始位、一個停止位。設(shè)計中下載程序和串行通信都是使用串口1,工作模式是模式1。</p><p>  表3.2 與串行通信相關(guān)的寄存器</p><p>  SCON中的SMO 和SM1、SM2選擇串行口1的工作模式,REN是允許接受標(biāo)志

68、位,如果要雙向通信就需要軟件置。TI與RI分別是串行口接收與發(fā)送標(biāo)志位。</p><p>  PCON的前兩位SMOD 和SMOD0都置0,這樣波特率就不加倍。</p><p>  對于SBUF進(jìn)行寫操作,代表要發(fā)送寫的內(nèi)容,對SBUF進(jìn)行讀操作,代表要獲取接收到的數(shù)據(jù)。其實(shí)它是兩個寄存器,一個只讀一個只寫。</p><p>  在AUXR輔助寄存器中可以定義使用定

69、時器1作為波特率發(fā)生器還是使用獨(dú)立波特率發(fā)生器。是工作在1T模式還是工作在12T模式。(即要不要對系統(tǒng)的時鐘進(jìn)行12分頻)。</p><p>  模式1的工作方式:一幀信息為10位,1位起始位,8位數(shù)據(jù)位、1位停止位,波特率可變,TXD發(fā)送,RXD接收,全雙工通信。發(fā)送的過程是:寫SBUF、數(shù)據(jù)到移位寄存器、逐位通過TXD發(fā)送,完成一幀后,置TI為1,申請中斷。接收的過程是:置REN=1允許接受,接收到移位寄存器

70、,載入SBUF,置RI為1,申請中斷。</p><p>  確定使用獨(dú)立波特率發(fā)生器之后,模式1的波特率除了與系統(tǒng)時鐘SYSLK和PCON有關(guān)之外,還與BRT的值有關(guān)系,BRT的載入值決定了串行口1的波特率。串行口的初始化函數(shù)如下(波特率計算器的結(jié)果):</p><p>  PCON &= 0x7f;//波特率不倍速</p><p>  SCON = 0

71、x50;//8位數(shù)據(jù),可變波特率</p><p>  BRT = 0xB8;//設(shè)定獨(dú)立波特率發(fā)生器重裝值 4800 n 8 1 </p><p>  AUXR |= 0x04;//獨(dú)立波特率發(fā)生器時鐘為Fosc,即1T</p><p>  AUXR |= 0x01;//串口1選擇獨(dú)立波特率發(fā)生器為波特率發(fā)生器</p><p&g

72、t;  AUXR |= 0x10;//啟動獨(dú)立波特率發(fā)生器*/</p><p>  我使用的是串行通行,采用了TXD RXD 和GND三根線實(shí)現(xiàn)最簡單的串行通信,用到了9針RS232串行口中的3根,即2、3、5引腳。串行通信在計算機(jī)控制方面用處非常廣泛,我們數(shù)字設(shè)備之間的通信常用的方式有兩種,即串行通信和并行通信。顧名思義,并行通信是設(shè)備間一次傳送8位數(shù)據(jù)。串行通信就是一位一位的傳輸(雙方約定好起始、終止、數(shù)

73、據(jù)格式、和通信的速度即波特率,COM口,這樣才能準(zhǔn)確得發(fā)送和接收)。兩者的傳輸速率相差了七倍,那么串行通信還能存在那么久并且越來越廣泛應(yīng)用是有其原因的,因?yàn)椴⑿型ㄐ烹m然可以一次傳送8位數(shù)據(jù),但是在傳送過程中容易因?yàn)榫€路問題發(fā)生標(biāo)準(zhǔn)電位變化(通常是因?yàn)樾盘査p和信號間串音干擾),使傳輸數(shù)據(jù)錯誤,若傳輸線路長的話,這種錯誤將更加明顯。而串行通信一次只傳送一位,處理的數(shù)據(jù)電壓只有一個標(biāo)準(zhǔn)電位,因此不容易發(fā)生數(shù)據(jù)遺失現(xiàn)象,加上防范措施就更準(zhǔn)確了

74、。但是在短距離通信中,并行通信可以使數(shù)據(jù)傳輸速度更快,部分科學(xué)儀器、醫(yī)學(xué)儀器由于短時間要傳送大量數(shù)據(jù),所以要使用并行接口,常用的并行數(shù)據(jù)傳輸接口有GPIB和LTP。</p><p>  常用的串行通信有RS232和RS485兩種。最近幾年還有USB和IEEE1394。</p><p>  RS232接口是臺式計算機(jī)的必備接口,一般是COM1和COM2。新式的計算機(jī)一般是都是以9針的形式接出

75、來,需要注意的是計算機(jī)上的均是公頭。在計算機(jī)上連接通信設(shè)備后,在電腦的設(shè)備管理窗口可以看到該設(shè)備。</p><p>  在工業(yè)領(lǐng)域上,RS232通信大多使用正負(fù)9V分別表示0和1。但它常常受到各種干擾,為了解決這個問題RS485應(yīng)運(yùn)而生。</p><p>  隨著時代的發(fā)展,串行通信也朝高速化發(fā)展,串行通信有了USB接口,這種規(guī)格可以整合計算機(jī)連接的外圍設(shè)備,不必要每個設(shè)備都有專用接口,都

76、是通用的USB接口。到了USB2.0以后,速度達(dá)到了480Mbps。而且可以使用USB集線器,最多在5M內(nèi)可以連接127臺設(shè)備。但是無論如何要比RS232最高115Kbps要快很多。</p><p>  IEEE-1394即WIRE FIRE,也稱“火線”。它與USB一樣都具有即插即用的功能,也為了解決外圍產(chǎn)品與計算機(jī)復(fù)雜連接的問題,也同樣是串行通信,但不一樣的是IEEE-1394在高速方面占盡了優(yōu)勢,速度正在向

77、1000Mbps邁進(jìn),但這并不否認(rèn)USB存在的價值,1394接口主攻高速方向,而USB則應(yīng)用于中低速場合。</p><p>  為了驗(yàn)證上述硬件的正確性,單片機(jī)與上位機(jī)之間串行通信功能測試是必要的。上位機(jī)所使用的程序?yàn)椤按谡{(diào)試助手”。單片機(jī)驗(yàn)證程序如下:</p><p>  main (void) </p><p><b>  {</b>&l

78、t;/p><p>  SCON = 0x50; //REN=1允許串行接受狀態(tài),串口工作模式1</p><p>  TMOD|= 0x20; //定時器工作方式2 //使用定時器作為串口波特率發(fā)生器</p><p>  PCON|= 0x80; </p><p>  TH1 = 0xFD; //波特率 1

79、9200、數(shù)據(jù)位8、停止位1。效驗(yàn)位無 (晶振11.0592) </p><p>  TL1 = 0xF3; //裝載計數(shù)值,需要仔細(xì)計算</p><p>  TR1 = 1; </p><p>  ES = 1; //開串口中斷 </p><p>  EA = 1;

80、 // 開總中斷 </p><p><b>  while(1)</b></p><p><b>  { </b></p><p>  if (Flag==1)</p><p><b>  {</b></p><p>  SBUF=SenData;

81、 //SUBF接受/發(fā)送緩沖器</p><p>  while(TI==0); //等待發(fā)送完成</p><p>  TI=0; //發(fā)送完成后清除標(biāo)志位</p><p>  Flag=0; //標(biāo)志位清零</p><p><b>  }</b></p>

82、<p><b>  }</b></p><p><b>  //串口中斷程序</b></p><p>  void ser_int (void) interrupt 4 using 1</p><p><b>  {</b></p><p>  if(RI == 1

83、) //RI接受中斷標(biāo)志,需要判斷,因?yàn)榇谥袛喾纸邮芎桶l(fā)送兩個</p><p><b>  {</b></p><p>  RI = 0; //清除RI接受中斷標(biāo)志</p><p>  ReData = SBUF; //SUBF接受/發(fā)送緩沖器</p><p>  SenData=ReData

84、; //接受給發(fā)送</p><p>  Flag=1; //置標(biāo)志位</p><p><b>  }</b></p><p><b>  }</b></p><p>  上述程序能夠?qū)崿F(xiàn)的功能是使用串口助手發(fā)送一個值,單片機(jī)接收到之后,再將這個值發(fā)送給串口助手,串口助手將其在屏幕上顯

85、示,如圖3.9。需要注意的是,串行通信在普通C51單片機(jī)中只能使用定時器1來作為波特率發(fā)生器,而定時器1的時鐘來源與系統(tǒng)一樣都來自晶振,這樣就大大加重了系統(tǒng)的負(fù)擔(dān),經(jīng)過測試,本系統(tǒng)如果采用定時器1作為波特率發(fā)生器,控制的實(shí)時性將大打折扣。STC12C5A60S2不但擁有雙串口,而且可以使用獨(dú)立的波特率發(fā)生器,而且性能相當(dāng)穩(wěn)定,本設(shè)計采用獨(dú)立波特率發(fā)生器,其初始化參數(shù)都可以通過宏晶公司提供波特率計算器來計算,這個工具十分好用,因?yàn)樽约和ㄟ^

86、公式計算出來的波特率不光容易發(fā)生錯誤,而且過程很麻煩,裝載值要使波特率與目標(biāo)值的誤差控制在3%,這樣才能保證正確的通信。</p><p>  圖3.9 測試程序運(yùn)行時串口調(diào)試助手界面</p><p>  3.17 蜂鳴器的連接</p><p>  經(jīng)過測試,用單片機(jī)的P0口直接驅(qū)動蜂鳴器效果不理想,所以方案為外接電源以增加驅(qū)動能力(本系統(tǒng)的指示燈、繼電器驅(qū)動、蜂鳴器

87、均使用外接電源增加驅(qū)動能力)。連接圖如圖3.10</p><p>  圖3.10 蜂鳴器連接圖</p><p>  經(jīng)過測試,當(dāng)P0^6賦值為0時蜂鳴器聲音十分響亮,當(dāng)P0^6賦值為1時蜂鳴器不發(fā)聲。不要為了限流給蜂鳴器接上電阻,要限流也要很小的電阻,因?yàn)閷?shí)驗(yàn)中在VCC與蜂鳴器之間接上10K電阻后,在測試時蜂鳴器是沒有聲音的,1K電阻時聲音比較微弱。</p><p>

88、;  3.18 熱電阻與AD模塊的使用及其調(diào)試方法</p><p>  要進(jìn)行溫度的顯示、可調(diào),首先要對溫度進(jìn)行測量和獲取,本設(shè)計沒有使用溫度測量模塊18B20,而是采用的熱電阻進(jìn)行溫度測量,它雖然不是很精確,但基本滿足系統(tǒng)需要,同時降低了成本。熱電阻通過分壓電路接入ADC.7,這樣將通過AD的模塊的模數(shù)轉(zhuǎn)換功能可以將溫度值的數(shù)字量計算出來,系統(tǒng)的一個顯而易見的缺點(diǎn)是溫度誤差大概在3攝氏度左右,這是在單片機(jī)內(nèi)部提

89、取溫度值時,將0—120攝氏度對應(yīng)的電阻值關(guān)系完全線性化。這一部分所涉及的硬件有熱電阻和AD模塊,下面將詳細(xì)介紹硬件與測試程序。</p><p>  圖3.11 AD分壓電路</p><p>  本設(shè)計所使用的熱電阻為飲水機(jī)用的測溫電阻(如圖3.12),靈敏度比較高,誤差是線性化后產(chǎn)生的,誤差是可以通過一定的補(bǔ)償措施來消除的。通過這樣的分壓電路,溫度可以由相應(yīng)的電阻值反映,電阻值可以通過一

90、定的電壓值來測量,0—5V的電壓又可以通過AD轉(zhuǎn)換后的0—255來衡量(5V參考電壓,只使用8位精度,即提取結(jié)果寄存器的前8位),以下各值均是通過實(shí)驗(yàn)得來,沒有相關(guān)資料,難免有粗漏之處。</p><p>  表3.2 線性化計算表格</p><p><b>  圖3.12 熱電阻</b></p><p>  STC12C5A60S2共有8路1

91、0位精度的高速AD轉(zhuǎn)換。在P1.0—P1.7引腳。可以做溫度檢測、電池電壓檢測、按鍵掃描、頻譜檢測等等。上電后P1口為弱上拉IO口,用戶可以通過給寄存器賦值來定義哪一路為AD轉(zhuǎn)換,其余的仍然做為普通的IO口使用(一般沒有定義就作為第一功能引腳)。由于KEIL環(huán)境自帶的頭文件中沒有對AD模塊所涉及的寄存器進(jìn)行定義,所以在編程之前要在自建的頭文件中對寄存器地址進(jìn)行定義,如下:</p><p>  表3.2 AD模塊

92、所涉及的寄存器</p><p>  P1ASF:給這個8位寄存器的8位賦值可以控制P1的那一位為AD轉(zhuǎn)換引腳。如P1ASF.0=1就是P1.0為AD轉(zhuǎn)換引腳。</p><p>  ADC_CONTR:BIT 7是ADC_POWER,它是ADC模塊電源控制位,ADC_POWER=1即打開轉(zhuǎn)換電源。開始轉(zhuǎn)換前要確定電源是打開的。轉(zhuǎn)換完成后可以選擇關(guān)閉電源,這樣可以降低功耗。B6和B5是轉(zhuǎn)換速度

93、聯(lián)合控制位,兩位都置1時轉(zhuǎn)換速度最快,CPU工作頻率為21MHZ時轉(zhuǎn)換速度為250KHZ(最高速度)。B4為ADC_FLAG即轉(zhuǎn)換完成標(biāo)志位,轉(zhuǎn)換完成后會自動置1,要注意的是必須要軟件清零。B3為ADC_START即轉(zhuǎn)換開始標(biāo)志位,等轉(zhuǎn)換完成為0.B2/B1/B0為當(dāng)前選擇的轉(zhuǎn)換通道是哪一路。也就是說若是選擇多路AD轉(zhuǎn)換,它們工作時并不是同時轉(zhuǎn)換的,而是以掃描的方式進(jìn)行的。</p><p>  AUXR1的B2位

94、ADRJ為轉(zhuǎn)換結(jié)果格式調(diào)整控制位,ADRJ=0時,10位的轉(zhuǎn)換結(jié)果八位存儲在ADC_RES,低兩位存儲在ADC_RESL。只取八位結(jié)果的話(8位精度)只讀ADC_RES就行了。</p><p>  IE為中斷允許寄存器,B7為EA,EA=1標(biāo)志CPU開放中斷,相當(dāng)于所有中斷的總開關(guān)。其他的7位分別為低電壓檢測轉(zhuǎn)換、AD轉(zhuǎn)換、串行口中斷、兩個定時器中斷、兩個外部中斷,給相應(yīng)的位置1,相當(dāng)于打開相應(yīng)的中斷。相當(dāng)于兩級

95、開關(guān)控制。</p><p>  通過給IP和IPH賦值,可以設(shè)置7個中斷的優(yōu)先級為4級。</p><p>  本設(shè)計采用查詢的方式讀取AD轉(zhuǎn)換值,所以在這里不用對中斷相關(guān)的寄存器進(jìn)行設(shè)置。一般情況下中斷優(yōu)先級采用默認(rèn)方式就好。</p><p>  針對AD模塊進(jìn)行了幾次測試,分別是AD基本功能測試、AD與指示燈、AD溫度顯示測試等等,下面是一段綜合的測試程序(程序中

96、使用了許多的延時函數(shù),經(jīng)過測試,對于高速AD來說些許延時是有必要的,這一點(diǎn)DATASHEET上有說明,程序中保留調(diào)試程序時加上的指示燈亮滅語句,本程序要注意浮點(diǎn)數(shù)運(yùn)算)。</p><p><b>  main()</b></p><p><b>  {</b></p><p><b>  int AD=0;<

97、;/b></p><p><b>  //初始化</b></p><p>  P1ASF=0X80;//使用第八路,其余只做IO</p><p>  ADC_RES=0;//結(jié)果寄存器清零</p><p>  delay(5); //必要的延時</p><p>  p1_1=0;

98、 //運(yùn)行到這一步的指示燈,下同</p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  p1_6=0;</b></p><p>  ADC_CONTR=0xe7; //開電源、全速、第八通道</p&

99、gt;<p><b>  delay(5);</b></p><p><b>  p1_4=0;</b></p><p>  ADC_CONTR=ADC_CONTR|0x08;//開始轉(zhuǎn)換</p><p><b>  delay(5);</b></p><p> 

100、 while((ADC_CONTR&0x10)==0)p1_0=0;//等待完成后,轉(zhuǎn)換標(biāo)志位置1</p><p>  ADC_CONTR&=0xe7; //標(biāo)志位清零</p><p><b>  delay(5);</b></p><p>  AD=ADC_RES; //取數(shù)據(jù)</p><p><

101、;b>  delay(5);</b></p><p>  //隨溫度的變化,指示燈依次亮滅</p><p>  if(AD>164)p1_0=0;</p><p>  if(AD<164&&AD>130)p1_1=0;</p><p>  if(AD<130&&AD&g

102、t;100)p1_2=0;</p><p>  if(AD<100&&AD>60)p1_3=0;</p><p>  //獲取實(shí)際的溫度值</p><p>  wendu=240.00-AD;</p><p>  wendu=wendu*0.60; //獲得浮點(diǎn)溫度值</p><p>  w

103、endu1=wendu*100; //獲取整數(shù)溫度值</p><p>  e=wendu1/10000; //獲取溫度百位值</p><p>  f=wendu1%10000/1000;//獲取溫度的十位值</p><p>  g=wendu1%1000/100;//獲取溫度的個位值</p><p>  if(e==0)e=0x0f;//

104、如果高位是零則置零</p><p><b>  }</b></p><p><b>  }</b></p><p>  上述程序的功能是獲取第7路AD轉(zhuǎn)換的結(jié)果,并把它轉(zhuǎn)換成對應(yīng)溫度值,根據(jù)溫度值的大小相應(yīng)的指示燈有亮滅,程序還提取了實(shí)際溫度值的各個位,配合數(shù)碼管,可以對溫度進(jìn)行顯示,也可以將溫度值各位分別發(fā)送給上位機(jī),關(guān)

105、鍵是單片機(jī)可以通過該溫度值進(jìn)行溫度控制。測試時用打火機(jī)加熱熱電阻,可以看到有指示燈依次亮滅。</p><p>  3.19 溫度調(diào)節(jié)、水量調(diào)節(jié)與中斷模塊調(diào)試方法</p><p>  設(shè)計中有兩個按鈕,溫度調(diào)節(jié)按鈕和水量調(diào)節(jié)按鈕,通過出發(fā)中斷執(zhí)行中斷子程序的方式進(jìn)行,在中斷子程序中對相應(yīng)的全局變量進(jìn)行遞增操作和遞減操作并且讓相應(yīng)的指示燈亮滅,程序中溫度值和剩余水量值都是全局變量。單片機(jī)觸發(fā)中

106、斷的方式有兩種,一種是下降沿觸發(fā),一種是低電平觸發(fā),本設(shè)計采用的是低電平觸發(fā),它實(shí)現(xiàn)起來比較容易,電路也簡單。如下:</p><p>  圖3.13 中斷按鈕</p><p>  中斷功能是為了處理外部突發(fā)事件而設(shè)置的,當(dāng)某個中斷被觸發(fā)后,CPU放下當(dāng)前的工作(設(shè)置斷點(diǎn)、狀態(tài)值壓棧等等),根據(jù)其中斷向量,去執(zhí)行相應(yīng)的中斷子程序,中斷響應(yīng)完成之后,繼續(xù)之前的工作。實(shí)現(xiàn)這些功能的部件叫中斷系統(tǒng)

107、。</p><p>  申請中斷的設(shè)備成為中斷源,CPU一般允許有多個中斷源,當(dāng)多個中斷源同時申請中斷時,這就存在CPU先響應(yīng)哪個中斷的問題,這就引出了中斷優(yōu)先級的問題。</p><p>  如果在CPU正在響應(yīng)中斷,另一個優(yōu)先級更高的中斷發(fā)生,CPU暫停相應(yīng)當(dāng)下的中斷轉(zhuǎn)而去相應(yīng)更高級的中斷,響應(yīng)完之后再去繼續(xù)相應(yīng)之前的中斷,這個過程叫中斷嵌套,具有這樣功能的中斷系統(tǒng)叫多級中斷系統(tǒng),否則稱

108、為單級中斷系統(tǒng)。</p><p>  STC12C5A60S2提供了十個中斷源:兩個外部中斷、兩個定時器中斷、兩個串口中斷,AD轉(zhuǎn)換中斷、PCA中斷、SPI中斷、低電壓檢測中斷。所有的中斷都具有4個優(yōu)先級,優(yōu)先級可以通過IP和IPH兩個寄存器來設(shè)置。每個中斷都可以獨(dú)立的通過寄存器賦值來進(jìn)行開關(guān)。高優(yōu)先級的中斷可以打斷低優(yōu)先級的中斷,低優(yōu)先級的中斷不可以打斷高優(yōu)先級的中斷,同級的中斷同時發(fā)生時按照查詢次序分別響應(yīng)。

109、下面分別介紹中斷的查詢次序、中斷號、及與中斷相關(guān)的寄存器,如下各圖。</p><p>  圖3.14 同級中斷查詢次序</p><p>  圖3.15 各中斷源的中斷號</p><p>  圖3.16 中斷的觸發(fā)方式</p><p>  外部中斷0和外部中斷1可以下降沿也可以低電平觸發(fā),申請中斷的中斷標(biāo)志位在IE0/TCON.1和IE1/TC

110、ON.3,中斷響應(yīng)完之后標(biāo)志位自動清除。TCON.0/IT0和TCON.1/IT1控制觸發(fā)方式。IE和IE2是中斷允許寄存器,IP/IPH/IP2/IP2H可以對10個中斷源設(shè)置4級優(yōu)先級。下面是程序中的對中斷模塊進(jìn)行調(diào)試的代碼即中斷子程序</p><p>  //***********************外部中斷初始化********************</p><p>  TC

111、ON|=0X00; //外部中斷低電平觸發(fā)</p><p><b>  IPH=0X05;</b></p><p>  IP=0X03;//中斷優(yōu)先級為INT0 INT1 T0</p><p>  IE=0X9F;//開中斷,允許除了低壓檢測和AD之外的所有中斷</p><p>  //*****************

112、******外部中斷0*************************</p><p>  void Int0_Routine(void) interrupt 0</p><p><b>  {</b></p><p>  p1_0=0;//按鍵點(diǎn)亮</p><p><b>  sum++;</b>

113、;</p><p>  if(sum>50.00)sum=2.00;</p><p>  delay(1000);</p><p><b>  p1_0=1;</b></p><p><b>  }</b></p><p>  //*******************

114、**外部中斷1****************************</p><p>  void Int1_Routine(void) interrupt 2</p><p><b>  {</b></p><p><b>  uint m,n;</b></p><p>  p1_1=0;//按

115、鍵點(diǎn)亮</p><p>  wendu_set++;</p><p>  if(wendu_set>50)wendu_set=10;</p><p><b>  p1_1=1;</b></p><p><b>  }</b></p><p>  通過上述程序,我們可以通

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論