具有語音警報(bào)功能的溫控器仿真設(shè)計(jì)畢業(yè)論文_第1頁
具有語音警報(bào)功能的溫控器仿真設(shè)計(jì)畢業(yè)論文_第2頁
具有語音警報(bào)功能的溫控器仿真設(shè)計(jì)畢業(yè)論文_第3頁
具有語音警報(bào)功能的溫控器仿真設(shè)計(jì)畢業(yè)論文_第4頁
具有語音警報(bào)功能的溫控器仿真設(shè)計(jì)畢業(yè)論文_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 目 錄1、前言12、總體方案設(shè)計(jì)22.1設(shè)計(jì)容22.2設(shè)計(jì)方案比較22.3方案論證32.4方案選擇33、單元模塊設(shè)計(jì)43.1各單元模塊功能介紹與電路設(shè)計(jì)43.1.1 按鍵輸入電路43.1.2 LED數(shù)碼管顯示電路53.1.3 溫度采集電路73.1.4 報(bào)警模塊設(shè)計(jì)73.1.5 串口通信模塊設(shè)計(jì)83.1.6電源電路93.1.7 89C52單片機(jī)模塊103.2特殊器件的介紹113.3.1 DS18B20器件介紹114、軟件設(shè)計(jì)134.1軟件設(shè)計(jì)原理與所用工具134.1.1設(shè)計(jì)原理134.1.2 KeilC、Proteus與VB軟件介紹134.2設(shè)計(jì)流程圖144.2.1 主程序設(shè)計(jì)原理144.2.

2、2 溫度采集子程序流程圖154.2.3 RS232串口通信的程序流程圖165、系統(tǒng)調(diào)試175.1 硬件調(diào)試175.2軟件調(diào)試176、系統(tǒng)功能、指標(biāo)參數(shù)216.1 系統(tǒng)功能216.2 系統(tǒng)指標(biāo)參數(shù)指標(biāo)216.3系統(tǒng)功能與指標(biāo)參數(shù)分析217、結(jié)論228、總結(jié)與體會(huì)238.1設(shè)計(jì)小結(jié)238.2設(shè)計(jì)體會(huì)238.3設(shè)計(jì)改進(jìn)與建議239.辭2410、參考文獻(xiàn)25附錄一:相關(guān)設(shè)計(jì)圖與源程序261系統(tǒng)的原理電路圖262系統(tǒng)PCB圖273源程序代碼28附錄二:外文資料翻譯3847 / 491、前言溫度測(cè)控系統(tǒng)是比較常見的和典型的過程系統(tǒng),溫度是工業(yè)生產(chǎn)過程中重要的被控參數(shù)之一,在冶金、機(jī)械、食品、化工等各類工業(yè)

3、生產(chǎn)過程中廣泛使用的各種加熱爐、熱處理爐、反應(yīng)爐,對(duì)工件的處理溫度等均需要對(duì)溫度嚴(yán)格測(cè)量控制。當(dāng)今計(jì)算機(jī)控制技術(shù)在這方面的應(yīng)用,已使溫度測(cè)控系統(tǒng)達(dá)到自動(dòng)化、智能化。在半導(dǎo)體技術(shù)的支持下,溫度測(cè)控器件發(fā)展迅速。而溫度傳感器是各式各樣的傳感器中經(jīng)常使用的一種,如今溫度傳感器的外形都非常小巧,這樣更為我們的生活提供了許多功能和便利,并且也讓它廣泛應(yīng)用于生產(chǎn)實(shí)踐的各個(gè)領(lǐng)域中。21世紀(jì)以來,智能溫度傳感器正朝著高精度、多功能、高可靠性與安全性、總線標(biāo)準(zhǔn)化、網(wǎng)絡(luò)傳感器和開發(fā)虛擬傳感器、研制單片測(cè)溫系統(tǒng)等高科技的方向迅速發(fā)展。傳統(tǒng)的溫度檢測(cè)以熱敏電阻為溫度敏感元件。熱敏電阻的成本低,但需后續(xù)信號(hào)處理電路,而

4、且可靠性相對(duì)較差,測(cè)溫準(zhǔn)確度低,檢測(cè)系統(tǒng)也有一定的誤差。這里設(shè)計(jì)的數(shù)字溫度測(cè)控系統(tǒng)具有讀數(shù)方便,測(cè)溫圍廣,測(cè)溫精確,數(shù)字顯示,串口通信,適用圍寬等特點(diǎn)。本文所研究和開發(fā)的課題是溫度測(cè)控的仿真設(shè)計(jì),目的在于模擬空調(diào)的溫度測(cè)控與自動(dòng)開關(guān)系統(tǒng)。本設(shè)計(jì)選用Intel公司生產(chǎn)的STC89C52芯片作為主控制器件,DS18B20溫度傳感器作為溫度測(cè)定采集系統(tǒng),通過LED數(shù)碼管實(shí)現(xiàn)實(shí)時(shí)溫度和設(shè)定溫度的顯示,還可通過按鍵設(shè)定空調(diào)的目標(biāo)溫度,報(bào)警系統(tǒng)模擬空調(diào)的自動(dòng)開關(guān)控制,通過串口還能與PC機(jī)通信以模擬空調(diào)的遙控系統(tǒng)。通過DS18B20溫度傳感器直接讀取被檢測(cè)的溫度值,并進(jìn)行數(shù)據(jù)的轉(zhuǎn)換,此器件的線性度較好,物理

5、和化學(xué)性能也穩(wěn)定,在0100圍最大線性偏差小于0.01。該器件采用單線接口方式,DS18B20在與單片機(jī)連接時(shí)僅需要一條接口線就可以實(shí)現(xiàn)單片機(jī)與DS18B20的雙向通訊,便于單片機(jī)處理和控制。2、總體方案設(shè)計(jì)2.1設(shè)計(jì)容設(shè)計(jì)一種基于單片機(jī)的溫度測(cè)控的方法,以模擬空調(diào)的溫度測(cè)控與自動(dòng)開關(guān)系統(tǒng),要求: (1)能夠?qū)崟r(shí)地檢測(cè)溫度,并能在空調(diào)主機(jī)和遙控器上顯示出來。 (2)可通過空調(diào)主機(jī)和遙控器的按鍵設(shè)定目標(biāo)溫度,按鍵可移位。 (3)設(shè)定溫度狀態(tài)下,應(yīng)能閃爍顯示。 (4)實(shí)時(shí)溫度超過設(shè)定溫度的某一個(gè)門限圍時(shí),空調(diào)自動(dòng)開啟(用報(bào)警電路模擬即可)。2.2設(shè)計(jì)方案比較方案一:由單片機(jī)STC89C52來實(shí)現(xiàn)溫

6、度控制系統(tǒng)的設(shè)計(jì),外圍電源采用+5V電源供電,通過DS18B20溫度傳感器采集實(shí)時(shí)溫度,由按鍵電路設(shè)定目標(biāo)溫度,LED數(shù)碼管可顯示正常狀態(tài)下的實(shí)時(shí)溫度和設(shè)定狀態(tài)下的目標(biāo)溫度,中央處理器由STC89C52單片機(jī)來完成,可通過串口與PC機(jī)通信,并在超出門限值時(shí)報(bào)警(模擬空調(diào)的自動(dòng)開關(guān)控制)。這種方案,結(jié)構(gòu)簡(jiǎn)單容易掌握,各部分電路實(shí)現(xiàn)起來都非常容易,在傳統(tǒng)的溫度測(cè)控設(shè)計(jì)中也應(yīng)用得較為廣泛,技術(shù)成熟。其原理框圖如圖2.1:LED顯示PC機(jī)報(bào)警電路電源電路DS18B20溫度傳感器STC89C52按鍵電路圖2.1單片機(jī)原理實(shí)現(xiàn)框圖方案二是基于CPLD 溫度采集系統(tǒng),通過CPLD 構(gòu)成的控制器輸出一個(gè)脈沖給

7、MAX232部A/D 轉(zhuǎn)換器的CLK 端,使其開始A/D 轉(zhuǎn)換,同時(shí)將CPLD 部地址發(fā)生器產(chǎn)生的地址信號(hào)經(jīng)地址選擇器(在CPLD 部)直接送到存儲(chǔ)器,A/D 轉(zhuǎn)換器所采集到的數(shù)據(jù)經(jīng)數(shù)據(jù)總線直接輸入到存儲(chǔ)器中保存,如此便完成一個(gè)采樣周期,重復(fù)上述步驟,直到完成預(yù)定數(shù)量的數(shù)據(jù)采集。首先以外置的雙極型二極管去感知外部的溫度變化并且轉(zhuǎn)化為電流信號(hào);然后將電流信號(hào)傳送給溫度傳感器進(jìn)行ADC 轉(zhuǎn)換;最后通過CPLD 完成數(shù)據(jù)的串并轉(zhuǎn)化,并將數(shù)據(jù)發(fā)送到LED。方案二原理框圖如圖2.2所示。成批采集結(jié)束中斷處理程序地址發(fā)生器產(chǎn)生地址信號(hào)存儲(chǔ)器地址選擇器控制器MAX232 A/D數(shù)據(jù)轉(zhuǎn)換采集圖2.2 CPLD

8、實(shí)現(xiàn)的原理框圖2.3方案論證通過方案一和方案二的比較,可以看出方案一的設(shè)計(jì)使用單片機(jī),而直接用單片機(jī)編程,用硬件電路搭建方便,通過STC89C52單片機(jī)編寫程序,來控制LED的亮滅以與與PC機(jī)通信。這樣可以大大簡(jiǎn)化系統(tǒng)結(jié)構(gòu),降低材料的成本。而方案二采用CPLD芯片實(shí)現(xiàn)的電路,在智能化領(lǐng)域,雖說CPLD功能更強(qiáng)大,但價(jià)位較高,對(duì)于這樣一個(gè)小系統(tǒng),沒有必要用價(jià)格昂貴的集成芯片,這樣會(huì)增加成本。2.4方案選擇設(shè)計(jì)直接用單片機(jī)編程,用硬件電路搭建方便,通過STC89C52單片機(jī)編寫程序,來控制LED的亮滅以與與PC機(jī)通信。這樣可以大大簡(jiǎn)化系統(tǒng)結(jié)構(gòu),降低材料的成本。提高系統(tǒng)的先進(jìn)性和可靠性,能實(shí)現(xiàn)控制器

9、的系統(tǒng)編程。所以從節(jié)約成本和功能方面綜合考慮,本次設(shè)計(jì)我們采用了方案一。3、單元模塊設(shè)計(jì)本節(jié)主要介紹系統(tǒng)各單元模塊的具體功能、電路結(jié)構(gòu)、工作原理、以與各個(gè)單元模塊之間的聯(lián)接關(guān)系;同時(shí)本節(jié)也會(huì)對(duì)相關(guān)電路中的參數(shù)計(jì)算、元器件選擇、以與核心器件進(jìn)行必要說明。3.1各單元模塊功能介紹與電路設(shè)計(jì)經(jīng)過以上所述的設(shè)計(jì)容與要求的分析,可以將主要電路分為以下幾部分:溫度采集模塊,按鍵模塊,LED顯示模塊,報(bào)警模塊,串口通信系統(tǒng)。單片機(jī)初始化之后,將不停地掃描這些模塊。溫度采集模塊會(huì)實(shí)時(shí)地采集當(dāng)前溫度,按鍵模塊判斷是否有按鍵按下,并實(shí)現(xiàn)對(duì)應(yīng)的功能,顯示模塊能顯示正常狀態(tài)下的實(shí)時(shí)溫度和設(shè)定狀態(tài)下的目標(biāo)溫度,報(bào)警模塊

10、實(shí)現(xiàn)越限報(bào)警功能,串口通信發(fā)送模塊將采集到的實(shí)時(shí)溫度值發(fā)送給上位機(jī)顯示出來,串口通信接收模塊能接收上位機(jī)發(fā)送下來的設(shè)定溫度值。3.1.1 按鍵輸入電路本設(shè)計(jì)采用行列式鍵盤,如圖3.1,行列式鍵盤用于按鍵數(shù)量較多的場(chǎng)合,它由行線和列線組成,按鍵位于行、列交叉點(diǎn)上,也稱矩陣鍵盤,相對(duì)于獨(dú)立式鍵盤更加節(jié)省硬件資源。按鍵處理方法采用循環(huán)掃描,即直接在主程序中利用循環(huán)掃描查詢和按鍵相連的I/O電平,然后進(jìn)行相應(yīng)處理。循環(huán)掃描又分為行掃描和列掃描,本設(shè)計(jì)采用的是列掃描,即行線連接的單片機(jī)I/O口作為輸入口,列線連接的單片機(jī)I/O口作為輸出口。具體方法如下:行初始化電平為1,列初始化電平為0。檢查各行線輸入

11、電平是否為全“1”。如果不是全“1”,則有鍵按下。然后逐列置零電平,其余各列為高,檢查行線的電平是否變?yōu)榱悖?,則該行列交叉的按鍵判斷為按下。本設(shè)計(jì)只使用前兩列按鍵,即一個(gè)4行×2列的一個(gè)矩陣鍵盤。各個(gè)按鍵功能是:(1) S2:設(shè)定狀態(tài)下對(duì)選定位加1。(2) S3:設(shè)定狀態(tài)下對(duì)選定位減1。(3) S4:設(shè)定狀態(tài)下左移選定位。(4) S5:設(shè)定狀態(tài)下右移選定位。(5) S6:確定鍵(顯示實(shí)時(shí)溫度)。(6) S7;設(shè)定溫度(顯示設(shè)定溫度)。(7) S9:?jiǎn)?dòng)/停止(開/關(guān)顯示)。圖 3.1 按鍵電路3.1.2 LED數(shù)碼管顯示電路 7段數(shù)碼管一般由8個(gè)發(fā)光二極管組成,其中由7個(gè)細(xì)長的發(fā)光

12、二極管組成數(shù)字顯示,另外一個(gè)圓形的發(fā)光二極管顯示小數(shù)點(diǎn)。當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)點(diǎn)或一個(gè)筆畫發(fā)光??刂葡鄳?yīng)的二極管導(dǎo)通,就能顯示出各種字符,盡管顯示的字符形狀有些失真,能顯示的數(shù)符數(shù)量也有限,但其控制簡(jiǎn)單,使有也方便。數(shù)碼管顯示電路采用共陽極數(shù)碼管,P0作位選,P2作段選。位碼:P0.7 P0.0 0xF7: 1 1 1 1 0 1 1 1LED2 LED1段碼:h g f e d c b a0xC0: 1 1 0 0 0 0 0 0 圖 3.2 數(shù)碼管段碼圖 3.3 四位數(shù)碼管圖3.4 LED顯示電路3.1.3 溫度采集電路三針插孔用來插DS18B20的芯片,DS18B20的數(shù)據(jù)端二腳

13、接到單片機(jī)的P36 管腳,用單片機(jī)來控制DS18B20,實(shí)現(xiàn)電路對(duì)溫度的監(jiān)控。DS18B20為單總路線芯片,單片機(jī)通過對(duì)芯片二管腳的時(shí)序控制,來啟動(dòng)溫度轉(zhuǎn)換和寫入溫度上下限,讀出溫度轉(zhuǎn)換值等一系列操作,并將溫度轉(zhuǎn)換的值存入單片機(jī)中,單片機(jī)通過串口將數(shù)據(jù)傳輸?shù)诫娔X中,通過VB的控件MSCOMM1來接收數(shù)據(jù),并用文本框TEXT顯示出來。該設(shè)計(jì)對(duì)溫度的測(cè)控是用溫度芯片DS18B20來實(shí)現(xiàn)的,該模塊的電路圖如圖3.5所示。通過單線總線端口訪問DS18B20的協(xié)議如下:步驟1.初始化步驟2.ROM操作指令步驟3.DS18B20功能指令每一次DS18B20的操作都必須滿足以上步驟,若是缺少步驟或是順序混亂

14、,器件將不會(huì)返回值。圖3.5 溫度采集電路3.1.4 報(bào)警模塊設(shè)計(jì)本設(shè)計(jì)采用蜂鳴器越限報(bào)方式(實(shí)際用LED代替),當(dāng)采集到的實(shí)時(shí)溫度超過設(shè)定溫度的±2 圍時(shí),將P3.3引腳置為低電平,使LED發(fā)光二極管發(fā)光,其原理圖如圖3.6所示。圖3.6 報(bào)警電路3.1.5 串口通信模塊設(shè)計(jì) MAX232是目前最常用的串行接口標(biāo)準(zhǔn),也是美國電子工業(yè)協(xié)會(huì)正式公布的串行總線標(biāo)準(zhǔn),用來實(shí)現(xiàn)計(jì)算機(jī)與外設(shè)之間、計(jì)算機(jī)與計(jì)算機(jī)之間的數(shù)據(jù)通訊。MAX232 串行接口總線適用于:傳輸速率最大為20kBps,設(shè)備之間的通訊距離不大于15m。MAX232 協(xié)議以-5V-15V表示邏輯1;以+5V15V 表示邏輯0。A

15、Tmega8單片機(jī)帶有一個(gè)通用同步/異步全雙工串行收發(fā)模塊 USART,其主要特點(diǎn)如下:支持同步或異步操作;全雙工操作;同步操作時(shí),可主機(jī)時(shí)鐘同步,也可從機(jī)時(shí)鐘同步;支持5、6、7、8和 9位數(shù)據(jù)位,1 位或2 位停止位的串行數(shù)據(jù)幀結(jié)構(gòu);獨(dú)立的高精度波特率發(fā)生器,不占用定時(shí)/計(jì)數(shù)器;由硬件支持的奇偶校驗(yàn)位發(fā)生和校驗(yàn);數(shù)據(jù)溢出檢測(cè);幀錯(cuò)誤檢測(cè);包括錯(cuò)誤起始位的檢測(cè)的噪聲濾波器和數(shù)字低通濾波器;三個(gè)完全獨(dú)立的中斷,TX發(fā)送完成、TX 發(fā)送數(shù)據(jù)寄存器空、TX接收完成; 支持多機(jī)通信模式; 支持倍速異步通信模式。MAX232串行通信接口電路圖如圖3.7所示。圖3.7 MAX232串口通信原理圖3.1.

16、6電源電路電源電路如圖3.8所示。電源電路為整個(gè)系統(tǒng)提供直流電。J16接USB接口,經(jīng)USB接口提供+5V電壓,開關(guān)S1控制電源是否導(dǎo)通,導(dǎo)通LED燈亮,單片機(jī)上電。電阻R10起到限流的作用,保護(hù)LED燈。圖3.8 電源電路圖3.1.789C52單片機(jī)模塊此模塊主要包含89C52單片機(jī)、時(shí)鐘電路、復(fù)位電路。在此次設(shè)計(jì)中時(shí)鐘電路之所以選擇11.0592M的晶振是因?yàn)樗軌驕?zhǔn)確地劃分成時(shí)鐘頻率,與UART(通用異步接收器/發(fā)送器)常見的波特率相關(guān)。特別是較高的波特率(19600,19200),這些晶振的振蕩頻率都是準(zhǔn)確的。在復(fù)位電路中復(fù)位高電平有效,當(dāng)按鍵沒有按下時(shí),RST端接地,為低電平。按鍵按

17、下,VCC與R22導(dǎo)通,分壓后RST為高電平,單片機(jī)復(fù)位。89C52是89C51增強(qiáng)型單片機(jī)版本,它結(jié)合了CMOS的低功耗特征與CMOS的高速與高密度技術(shù),它基于標(biāo)準(zhǔn)的MCS-51單片機(jī)指令系統(tǒng)和體系結(jié)構(gòu),集成了向上或向下計(jì)數(shù)器和時(shí)鐘輸出等更多的功能,適合于類似機(jī)體控制等應(yīng)用場(chǎng)合。89C52置8位中央處理單元、8k片程序存儲(chǔ)器(ROM)、256字節(jié)部數(shù)據(jù)存儲(chǔ)器(RAM)、32個(gè)雙向輸入/輸出(I/O)口、3個(gè)16位定時(shí)/計(jì)數(shù)器、5個(gè)兩級(jí)中斷結(jié)構(gòu)、一個(gè)全雙工串行通信口和片時(shí)鐘振蕩電路,更優(yōu)于89C51。圖3.9 89C52單片機(jī)模塊3.2特殊器件的介紹本系統(tǒng)中主要使用了DS18B20此功能器件。

18、下面就此器件的功能特點(diǎn)、主要參數(shù)和使用方法作相應(yīng)說明。3.3.1 DS18B20器件介紹獨(dú)特的單線接口僅需一個(gè)端口引腳進(jìn)行通訊每個(gè)器件有唯一的64位的序列號(hào)存儲(chǔ)在部存儲(chǔ)器中簡(jiǎn)單的多點(diǎn)分布式測(cè)溫應(yīng)用無需其他多余外部器件可通過USB數(shù)據(jù)線供電。供電圍為3.0V到5.5V。測(cè)溫圍為-55+125(-67+257)在-10+85圍誤差不超過±0.5溫度計(jì)分辨率可選擇為912位最多在750ms將溫度轉(zhuǎn)換為12位數(shù)字用戶可定義的非易失性溫度報(bào)警設(shè)置報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件與DS1822兼容的軟件圖3.10 DS18B20實(shí)物圖4、軟件設(shè)計(jì)4.1軟件設(shè)計(jì)原理與所

19、用工具 本節(jié)主要介紹系統(tǒng)軟件設(shè)計(jì)原理與KeilC、Proteus與VB軟件開發(fā)環(huán)境。4.1.1設(shè)計(jì)原理 以單片機(jī)STC89C52為主控器件,利用DS18B20采集外部溫度,并將溫度值存入一個(gè)4位數(shù)組num1,按鍵模塊先判斷是否有按鍵按下,若有,則實(shí)現(xiàn)對(duì)應(yīng)的功能對(duì)存設(shè)定溫度值的數(shù)組num某一位進(jìn)行加、減、左移、右移等,LED顯示分兩個(gè)狀態(tài),由按鍵控制,正常狀態(tài)下顯示num1中的實(shí)時(shí)溫度,設(shè)定狀態(tài)下顯示num中的目標(biāo)溫度(門限溫度),報(bào)警模塊將數(shù)組num和num1轉(zhuǎn)化為對(duì)應(yīng)的數(shù)值并比較,若實(shí)時(shí)溫度超過設(shè)定溫度的一定圍,則LED點(diǎn)亮報(bào)警,串口通信發(fā)送模塊將數(shù)組num1中的數(shù)不斷發(fā)送給上位機(jī)VB界面顯

20、示出來,保證顯示的溫度為當(dāng)前溫度,串口通信接收模塊接收上位機(jī)發(fā)送下來的設(shè)定溫度值。4.1.2 KeilC、Proteus與VB軟件介紹Keil C51是由美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、可讀性、結(jié)構(gòu)性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。使用匯編語言后再使用C來開發(fā),體會(huì)更加深刻。Keil C51 軟件提供豐富的函數(shù)庫和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全新Windows界面。另外重要的一點(diǎn)是,只要看一下編譯后生成的匯編代碼,就能明顯體會(huì)到 Keil C51生成的目標(biāo)代碼效率是非常之高的,多數(shù)語句生成的匯編代碼都很緊湊,容易

21、理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。Proteus軟件是由英國Labcenterelectronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)與外圍器件。它是目前最好應(yīng)用最廣的仿真單片機(jī)與外圍器件的工具。雖然目前國推廣剛剛起步,但已經(jīng)受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的老師、致力于單片機(jī)開發(fā)應(yīng)用的科研工作者的青睞。Proteus是世界上著名的仿真軟件,從原理圖布圖、程序調(diào)試到單片機(jī)與外圍電路的協(xié)同仿真,一鍵切換至PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品上的完整設(shè)計(jì)。Proteus是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)

22、計(jì)平臺(tái)。在編譯方面,它也支持Keil、IAR和MPLAB等多種編譯器。Visual Basic是一種由微軟公司開發(fā)的包含協(xié)助開發(fā)環(huán)境的事件驅(qū)動(dòng)編程語言。它源自于BASIC編程語言。從任何標(biāo)準(zhǔn)來說,VB都是世界上使用人數(shù)最多的語言不僅是盛贊VB的開發(fā)者還是抱怨VB的開發(fā)者的數(shù)量。同時(shí)VB擁有快速應(yīng)用程序開發(fā)(RAD)系統(tǒng)和圖形用戶界面(GUI),可以輕易的使用RDO、DAO、ADO連接數(shù)據(jù)庫,還可以輕松的創(chuàng)建ActiveX控件。程序員可以輕松的使用VB提供的組件快速建立一個(gè)應(yīng)用程序。VB的程序可以包含一個(gè)主窗體和多個(gè)子窗體,或者是一個(gè)或多個(gè)窗體,類似于操作系統(tǒng)的樣子。VB的組件既可以擁有用戶界面

23、,也可以沒有。有很少功能的對(duì)話框窗口(比如沒有最大化和最小化按鈕的窗體)可以用來提供彈出功能。這樣一來,服務(wù)器端程序就可以處理增加的模塊。4.2設(shè)計(jì)流程圖4.2.1 主程序設(shè)計(jì)原理圖4.1 軟件設(shè)計(jì)流程圖如圖4.1所示,本設(shè)計(jì)程序流程可分為以下幾個(gè)主要部分:首先初始化,聲明子函數(shù)、全局變量,并且打開、設(shè)定相關(guān)中斷,設(shè)置波特率。然后溫度采集,建立DS18B20的溫度采集協(xié)議,將DS18B20采集到的實(shí)時(shí)溫度保存到數(shù)組中。接下來進(jìn)行按鍵掃描,若沒有按鍵按下,直接顯示實(shí)時(shí)溫度。若點(diǎn)設(shè)定溫度鍵,顯示設(shè)定溫度值,并且選定的那一位閃爍,通過按鍵可對(duì)選定位加1,減1,左移,右移;再點(diǎn)確定鍵,返回正常顯示狀態(tài)

24、,顯示實(shí)時(shí)溫度值。然后再判斷實(shí)時(shí)溫度是否超過設(shè)定溫度的門限圍,若超過則報(bào)警,然后返回溫度采集子程序,如此循環(huán)執(zhí)行,若沒有超過則直接返回溫度采集進(jìn)行循環(huán)。4.2.2 溫度采集子程序流程圖圖4.2 溫度采集子程序流程圖 如上圖所示,由于通過單線總線端口訪問DS18B20必須遵守一定的協(xié)議,因此該子程序的設(shè)計(jì)也必須嚴(yán)格按照協(xié)議步驟的順序?qū)崿F(xiàn)。首先初始化,定義子程序變量,調(diào)用復(fù)位子程序,復(fù)位DS18B20準(zhǔn)備采集溫度。然后調(diào)用寫字節(jié)子程序,執(zhí)行ROM操作命令,將其跳過。然后再次調(diào)用寫字節(jié)子程序,執(zhí)行溫度轉(zhuǎn)換,這里需要一個(gè)延時(shí),等待程序轉(zhuǎn)換完成后,便可將采集到的溫度值的各位對(duì)應(yīng)的寫入存放實(shí)時(shí)溫度的數(shù)組n

25、um1。接下來再次初始化、執(zhí)行ROM操作命令,然后執(zhí)行存儲(chǔ)器操作命令,將溫度值讀出并計(jì)算,從而得到實(shí)時(shí)溫度值的每一位數(shù)值。4.2.3 RS232串口通信的程序流程圖圖4.3 串口通信RS232控件的程序流程圖上位機(jī)使用RS232控件與下位機(jī)通信,程序中使用該控件的OnComm事件,使整個(gè)子程序循環(huán)執(zhí)行,不斷接收下位機(jī)傳上來的數(shù)據(jù)。程序流程如圖4.3所示,首先進(jìn)行初始化,設(shè)置通信端口、波特率等參數(shù),建立通信協(xié)議,然后接收數(shù)據(jù)并轉(zhuǎn)換。當(dāng)收到的數(shù)據(jù)為接收標(biāo)志位時(shí),則清空數(shù)據(jù),等待接收數(shù)據(jù),然后返回接收轉(zhuǎn)換數(shù)據(jù),接收完四個(gè)字節(jié)的數(shù)據(jù)后,將數(shù)據(jù)轉(zhuǎn)換成數(shù)值型,最后顯示在對(duì)應(yīng)的文本框中,然后還要再次返回接收

26、數(shù)據(jù),不斷循環(huán),以保證顯示溫度為當(dāng)前的溫度值。5、系統(tǒng)調(diào)試5.1 硬件調(diào)試經(jīng)過Keil C和Proteus的仿真調(diào)試之后,我們將程序下載到了單片機(jī)實(shí)驗(yàn)板進(jìn)行硬件仿真,基本實(shí)現(xiàn)了和軟件仿真接近的結(jié)果,但是仍然有一些問題:第一,數(shù)碼管總有一位不能點(diǎn)亮,但其位選標(biāo)志P03口控制的LED燈是亮的。用萬用表對(duì)連接在數(shù)碼管上的三極管進(jìn)行導(dǎo)通測(cè)量,發(fā)現(xiàn)三極管不能導(dǎo)通,換了一個(gè)三極管后,那位數(shù)碼管還是不能點(diǎn)亮,再用萬用表檢測(cè),發(fā)現(xiàn)是由于那塊焊盤挨得比較緊密,焊接時(shí)不小心使相鄰兩個(gè)三極管相連,導(dǎo)致PNP不能正常工作。第二,鍵盤和單片機(jī)I/O口連線不正確,導(dǎo)致鍵盤不能起作用。后面結(jié)合原理圖和程序重新連好線即可。由

27、于我們用了報(bào)警電路,其控制端口為P3.3口,在按鍵選用的時(shí)候,也用了P3.3口,導(dǎo)致報(bào)警電路不能正常工作,按鍵按下P3.3口,蜂鳴器就鳴叫,這個(gè)問題修改按鍵的控制端口即可。第三,液晶不能顯示。調(diào)節(jié)W2即液晶的背光調(diào)節(jié)即可正常顯示。5.2軟件調(diào)試程序主要包括按鍵掃描,溫度采集,LED數(shù)碼管顯示掃描,報(bào)警子程序以與串口通信發(fā)送、接收子程序。在程序設(shè)計(jì)初期遇到很多設(shè)計(jì)錯(cuò)誤上的問題,通過反復(fù)整理思路,修改程序流程圖,更正這些錯(cuò)誤。在設(shè)計(jì)后期,程序調(diào)試的過程中,又遇到了幾個(gè)可靠性和穩(wěn)定性方面的問題,經(jīng)過仔細(xì)地研究、反復(fù)地推敲和不斷地嘗試,也逐一解決了這些問題,是整個(gè)系統(tǒng)更加穩(wěn)定可靠。下面介紹一下在整個(gè)調(diào)

28、試過程中遇到的問題,以與我們解決的方法。第一,按鍵時(shí)LED非正常閃爍。最初設(shè)計(jì)的按鍵掃描程序在調(diào)試的時(shí),會(huì)出現(xiàn)一個(gè)問題每按下一次按鍵,LED就會(huì)閃爍一次;若按下按鍵不松開,則LED會(huì)不顯示,直到松開按鍵才會(huì)重新顯示。這是由于先前設(shè)計(jì)的程序中在執(zhí)行按鍵功能之后有一個(gè)while語句判斷按鍵是否松開,即while(P1&0xe2)!=0xe2);若所以當(dāng)按鍵按下到松開按鍵的時(shí)間,整個(gè)程序一直在這里停留,所以不會(huì)顯示或者執(zhí)行其他子程序,從而就使得每按鍵一次LED顯示閃爍一次。解決方法:設(shè)置一個(gè)按鍵標(biāo)志位z,按前z=0,按下后按鍵子程序只講將z置為1,然后跳出,繼續(xù)執(zhí)行其他子程序。下一次掃描按鍵

29、子程序的時(shí)候,先判斷z的值,若為0,則不執(zhí)行按鍵功能程序,若為1,則執(zhí)行按鍵功能程序,并將z重新置為0,等待下一次按鍵的到來。這樣,按鍵子程序不會(huì)進(jìn)入while語句的死循環(huán),因此LED顯示在按鍵時(shí)也就不會(huì)閃爍,使得整個(gè)顯示更加穩(wěn)定、流暢。第二,閃爍顯示時(shí)按鍵不靈敏。在LED閃爍顯示設(shè)定溫度時(shí),按鍵不夠靈敏,有時(shí)有效有時(shí)無效。這是由于LED閃爍顯示是由兩個(gè)90次的循環(huán)程序完成的。因此該子程序的延時(shí)會(huì)相對(duì)較大,所以導(dǎo)致按鍵時(shí)程序可能正在執(zhí)行該循環(huán),并沒有掃描到按鍵,從而按鍵變得不靈敏。解決方法:解決這個(gè)問題的方法很簡(jiǎn)單,只需要在LED閃爍顯示程序的每一次循環(huán)中都調(diào)用一次按鍵子程序Getch(),判

30、斷是否有鍵按下。這樣整個(gè)系統(tǒng)的按鍵會(huì)更加可靠、更加靈敏。第三,串口通信下位機(jī)接收錯(cuò)位。上位機(jī)通過串口向下位機(jī)發(fā)送設(shè)定溫度時(shí),下位機(jī)接收到的數(shù)據(jù)錯(cuò)開一位。這是由于上位機(jī)每一次發(fā)送4個(gè)數(shù),而下位機(jī)程序卻判斷、接收了5次,因此錯(cuò)開一位。解決方法:將原程序中的while語句改成do.while語句并設(shè)置一個(gè)標(biāo)志位t,以判斷4個(gè)數(shù)是否接收完畢。以下是修改前的串口通信下位機(jī)接收子程序(左)和修改后的串口通信下位機(jī)接收子程序(右)的對(duì)比。void R_temp() unchar k; if(RI) for(k=0;k<4;k+) while(!RI); numk=SBUF; RI=0; void R_

31、temp()unchar k=0; do if(RI) numk=SBUF; RI=0; k+; t=1; if(k=4) t=0; ES=0; while(t);第四,延時(shí)問題。DS18B20器件對(duì)時(shí)序要求嚴(yán)格,之前由于延時(shí)問題,導(dǎo)致出現(xiàn)溫度不能正常采集的情況。溫度傳感器DS18B20的延時(shí)首先是一個(gè)480960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖剑⒃陔S后的480微秒時(shí)間對(duì)總線進(jìn)行檢測(cè),如果有低電平出現(xiàn)說明總線上有器件已做出應(yīng)答。若無低電平出現(xiàn)一直都是高電平說明總線上無器件應(yīng)答。做為從器件的DS18B20在一上電后就一直在檢測(cè)總線上是否有480960微秒的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為

32、高電平后等待1560微秒后將總線電平拉低60240微秒做出響應(yīng)存在脈沖,告訴主機(jī)本器件已做好準(zhǔn)備。若沒有檢測(cè)到就一直在檢測(cè)等待。寫周期最少為60微秒,最長不超過120微秒。而完成一個(gè)讀時(shí)序過程,也至少需要60us才能完成等等,對(duì)延時(shí)都有嚴(yán)格的要求,否則溫度不能正常顯示。溫度采集仿真圖如下:圖5.1軟件仿真圖上位機(jī)顯示圖如下:圖5.2上位機(jī)顯示圖6、系統(tǒng)功能、指標(biāo)參數(shù)6.1 系統(tǒng)功能溫度采集模塊會(huì)實(shí)時(shí)地采集當(dāng)前溫度,按鍵模塊判斷是否有按鍵按下,并實(shí)現(xiàn)對(duì)應(yīng)的功能,顯示模塊能顯示正常狀態(tài)下的實(shí)時(shí)溫度和設(shè)定狀態(tài)下的目標(biāo)溫度,報(bào)警模塊實(shí)現(xiàn)越限報(bào)警功能,串口通信發(fā)送模塊將采集到的實(shí)時(shí)溫度值發(fā)送給上位機(jī)顯示

33、出來,串口通信接收模塊能接收上位機(jī)發(fā)送下來的設(shè)定溫度值。6.2 系統(tǒng)指標(biāo)參數(shù)指標(biāo)本系統(tǒng)主要是對(duì)溫度的實(shí)時(shí)監(jiān)測(cè)與控制。所以測(cè)試系統(tǒng)指標(biāo)參數(shù)時(shí)主要是對(duì)溫度值的測(cè)試。表6.1 溫度測(cè)量變化值測(cè)定次數(shù)123456LED顯示手溫變化()29.7530.1231.5031.8732.6234.506.3系統(tǒng)功能與指標(biāo)參數(shù)分析本系統(tǒng)只實(shí)現(xiàn)了主要的溫度測(cè)控功能,對(duì)于比較完善的系統(tǒng)功能實(shí)現(xiàn)則還有比較大的差距。1、本設(shè)計(jì)只能按鍵設(shè)定目標(biāo)溫度,不能設(shè)定目標(biāo)溫度的門限圍,即門限圍只能是目標(biāo)溫度±2,使用者無法通過按鍵設(shè)定這值。2、設(shè)計(jì)中可以把下位機(jī)采集到的實(shí)時(shí)溫度通過串口發(fā)送給上位機(jī)顯示,上位機(jī)也能把設(shè)定溫

34、度通過串口發(fā)送給下位機(jī),但是當(dāng)下位機(jī)通過按鍵設(shè)定目標(biāo)溫度時(shí),不能將設(shè)定的溫度發(fā)送給上位機(jī)顯示,所以程控部分還有待改善。3、上位機(jī)通過串口發(fā)送設(shè)定溫度給下位機(jī)的VB程序中的延時(shí),從10ms1000ms,經(jīng)過反復(fù)調(diào)試最終設(shè)定為30ms,雖已能滿足要求,但是不能在下位機(jī)顯示設(shè)定溫度狀態(tài)下發(fā)送數(shù)據(jù),否則接收錯(cuò)誤。并且對(duì)于該延時(shí)對(duì)系統(tǒng)的影響仍不清楚,有待進(jìn)一步的分析和思考。7、結(jié)論在本次設(shè)計(jì)中,基本完成了本設(shè)計(jì)的主要的要求與功能。在設(shè)計(jì)開始前我對(duì)各個(gè)模塊進(jìn)行了詳細(xì)的分析和設(shè)計(jì)準(zhǔn)備工作,設(shè)計(jì)過程中,相互協(xié)調(diào),積極請(qǐng)教參與完成各個(gè)技術(shù)實(shí)現(xiàn)的難點(diǎn)。本設(shè)計(jì)要現(xiàn)報(bào)警溫控器設(shè)計(jì),實(shí)時(shí)溫度是通過DS18B20采集的,

35、按鍵可以設(shè)定目標(biāo)溫度,實(shí)時(shí)溫度超出設(shè)定的門限圍,則將P3.3口置為低電平,LED燈點(diǎn)亮報(bào)警。VB界面能接收和顯示下位機(jī)傳上來的實(shí)時(shí)溫度值,也能將設(shè)定溫度值(一個(gè)4位的數(shù)組)發(fā)送給下位機(jī),這是本次設(shè)計(jì)的難點(diǎn),也是一個(gè)很大的創(chuàng)新點(diǎn),真正實(shí)現(xiàn)了遠(yuǎn)程測(cè)控的功能,在VB程序中我們?cè)O(shè)置了通信端口選擇,這并不會(huì)出現(xiàn)因?yàn)橥ㄐ哦丝诘牟煌荒軐?shí)現(xiàn)測(cè)控的情況,從而使上位機(jī)與下位機(jī)之間能夠相互通信,遠(yuǎn)程測(cè)控功能對(duì)溫度值有嚴(yán)格要求的系統(tǒng)來說是非常方便的。當(dāng)然,在本次設(shè)計(jì)中,還有存在很多不足的地方。比如,下位機(jī)設(shè)定的目標(biāo)溫度不能發(fā)送給上位機(jī)顯示,這在遠(yuǎn)程測(cè)控系統(tǒng)中是一個(gè)很大的不足,另外,上位機(jī)VB程序的延時(shí)與下位機(jī)接收

36、之間的問題也有待改善,這些不足希望可以在以后的設(shè)計(jì)中加以改善,使系統(tǒng)更加完善。8、總結(jié)與體會(huì)8.1設(shè)計(jì)小結(jié)在本次設(shè)計(jì)中,我遇到了很多不明白的地方,在尋求幫助的情況下,最終完成了設(shè)計(jì)。設(shè)計(jì)難免出現(xiàn)問題,但是出現(xiàn)問題最重要的就是學(xué)會(huì)解決,利用軟、硬件的調(diào)試,將整個(gè)設(shè)計(jì)完善到最好。本次設(shè)計(jì)的主要任務(wù)我達(dá)到了,實(shí)現(xiàn)了設(shè)計(jì)的基本要求。本設(shè)計(jì)采用模塊化設(shè)計(jì)思想,進(jìn)行了軟件設(shè)計(jì),通過對(duì)系統(tǒng)主程序的流程進(jìn)行分析,編寫了系統(tǒng)程序,同時(shí)說明了各模塊的功能,利用軟件仿真、調(diào)試和硬件調(diào)試,最終設(shè)計(jì)出了具有報(bào)警功能的溫控器,基本實(shí)現(xiàn)了其要求。8.2設(shè)計(jì)體會(huì)通過本次的智能化設(shè)計(jì),不論是理論方面,還是實(shí)踐方面,我都獲益匪淺

37、,歸納起來,有以下幾個(gè)方面的收獲:(1)學(xué)習(xí)與掌握了STC89C52單片機(jī)的基本原理與其應(yīng)用,對(duì)它的各種硬件接口與軟件設(shè)計(jì)方法有更加深入的認(rèn)識(shí)和理解。尤其是對(duì)串口通信有了更深的了解。(2)學(xué)會(huì)了基本的C語言編程,掌握了用C語言編程控制51單片機(jī)的方法以與它的具體程序?qū)崿F(xiàn)步驟;(3)進(jìn)一步鞏固了VB知識(shí),學(xué)會(huì)了用VB界面對(duì)電路系統(tǒng)的實(shí)時(shí)測(cè)控。(4)對(duì)利用萬用表檢測(cè)、調(diào)試硬件電路的方法有了非常大的認(rèn)識(shí)與掌握,對(duì)利用萬用表判斷電路導(dǎo)通截止的方法也有了充分的掌握;(5)在這次設(shè)計(jì)中,充分認(rèn)識(shí)到與人協(xié)作和與人交流是非常重要的,對(duì)電路各個(gè)板塊有些不熟悉,但在遇到問題相互討論交流才使問題能得以解決。8.3設(shè)

38、計(jì)改進(jìn)與建議由于時(shí)間、條件和個(gè)人水平與經(jīng)驗(yàn)所限,本次設(shè)計(jì)還有許多不足,需要改進(jìn)。下位機(jī)設(shè)定的目標(biāo)溫度不能發(fā)送給上位機(jī)顯示,這在遠(yuǎn)程測(cè)控系統(tǒng)中是一個(gè)很大的不足,另外,上位機(jī)VB程序的延時(shí)與下位機(jī)接收之間的問題也有待改善,這些不足希望能在以后的學(xué)習(xí)中改進(jìn)。9.辭 在老師的辛勤指導(dǎo)下,在實(shí)驗(yàn)室同學(xué)的友好幫助下,我積極參與討論和思考,完成本此畢業(yè)設(shè)計(jì),此次設(shè)計(jì),使我受益匪淺。我很珍惜有這次畢業(yè)設(shè)計(jì)的機(jī)會(huì),感電氣信息學(xué)院各位老師的幫助。在本次設(shè)計(jì)中,我要特別感海川老師與研究生師兄對(duì)我的指導(dǎo),也要感同學(xué)們對(duì)我的幫助,有了你們的幫助,我才得以順利完成設(shè)計(jì)。10、參考文獻(xiàn)1 毅剛、喜元.單片機(jī)原理與應(yīng)用M.:

39、高等教育,20032 海兵、敏.PROTEL電路設(shè)計(jì)實(shí)例與分析M. :人民郵電,20053 春葆、金晶.C語言程序設(shè)計(jì)輔導(dǎo)M.:清華大學(xué),20074 將新、華軍.單片機(jī)程序設(shè)計(jì)與應(yīng)用(第三版)M. :電子工業(yè),20065 魯捷、焦振宇.PROTEL 2004 電路設(shè)計(jì)M. :清華大學(xué),20066 康光華、大欽.電子技術(shù)基礎(chǔ)模擬部分(第四版)M.高等教育.19877 自美 主編.電子線路設(shè)計(jì).實(shí)驗(yàn).測(cè)試(第二版)M華中理工大學(xué),20058 康光華、鄒壽彬.電子技術(shù)基礎(chǔ)數(shù)字部分(第五版)M. :高等教育,20069 維成、勇.微機(jī)原理與接口技術(shù)M.華中科技大學(xué),200910 徐鳳霞,成安. STC

40、89C52單片機(jī)溫度控制系統(tǒng)J. 大學(xué)學(xué)報(bào) , 2004,(01)11 開生,郭國法. MCS-51單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)J. 微計(jì)算機(jī)信息 , 2005,(07)12 萍. 單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)J. 師專學(xué)報(bào) , 1999,(06)13 馬明建數(shù)據(jù)采集與處理技術(shù)M交通大學(xué),20059,(02)14 龍漢,安才,高占國MCS-51單片機(jī)原理與應(yīng)用M,2004.1015 龔紅軍. 單片機(jī)溫度控制系統(tǒng)J. 電氣時(shí)代 , 2002,(10)附錄一:相關(guān)設(shè)計(jì)圖與源程序1系統(tǒng)的原理電路圖2系統(tǒng)PCB圖3源程序代碼下位機(jī)程序:#include <reg51.h>#include &

41、lt;intrins.h>#define unchar unsigned char#define unint unsigned int#define nop() _nop_()sbit DQ=P36;sbitspeaker=P33;unsigned char dispbitcode8=0xf7,0xfb,0xfd,0xfe/*0xfe,0xef,0xdf,0xbf,0x7f*/;unsigned char dispcode11=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff;unchar t=0;unint temper;un

42、char a1,a2,a3,a4; void displys(void);void delay1ms(void);void delay_10ms(void);void TempDelay(unchar us);void write_byte(unchar date);unchar read_byte();void get_tem();void Alarm123();void Initial_();void T_temp();void R_temp();unint num=0,0,5,2; unint num1=0,0,0,0; unint s=0; unint z=0; unint q=0;u

43、nint mark=4; unint start=0;unsigned char x,y;void reset()unchar st=1;DQ=1;nop();nop();while(st) DQ=0; TempDelay(112);DQ=1;TempDelay(8);/56usif(DQ=1)st=1;elsest=0; TempDelay(74);void write_byte(unchar date)unchar i,temp;DQ=1;nop();nop();for(i=8;i>0;i-) temp=date&0x01;DQ=0;TempDelay(1); if(temp

44、=1)DQ=1; TempDelay(5); DQ=1;date=date>>1;unchar read_byte()unchar i,date;static bit j;for(i=8;i>0;i-)date=date>>1;DQ=1;nop();nop();DQ=0;nop();nop();nop();nop();nop();nop();DQ=1;nop();nop();nop();nop();j=DQ;if(j=1)date=date|0x80;TempDelay(2);return (date);void get_tem()unchar tem1,tem2

45、,tempnum;float aaa;reset();write_byte(0xCC);write_byte(0x44);for(tempnum=100;tempnum>0;tempnum-);num10=a4;num11=a3;num12=a2;num13=a1;reset();write_byte(0xCC); write_byte(0xBE); tem1=read_byte();tem2=read_byte(); aaa=(tem2*256+tem1)*6.25;temper=(int)aaa; a1=temper/1000;a2=temper%1000/100;a3=temper

46、%100/10;a4=temper%10;void TempDelay(unchar us)while(us-); void delay_10ms(void) unsigned char i,j; for(i=0;i>0;i-) for(j=248;j>0;j-);void Getch() P1=P1|0xE2; P3=0x7b; y=P1&0xe2; if(y!=0Xe2) delay_10ms(); if(y!=0Xe2) z=1; P3 = 0XFB; x=P1&0xe2; if(x!=0xe2) q=0; else P3 = 0X7F;x=P1&0x

47、e2; if(x!=0xe2)q=1; else if(z=1) z=0; if(q=0) switch(x) case 0xe0:if(nums=9)nums=0;break; nums=nums+1; break; case 0xc2: if(nums=0)nums=9;break;nums=nums-1;break; case 0xa2:if(s<3) +s,mark=s; break; case 0x62: if(s>0) -s,mark=s; break; else if(q=1) switch(x) case 0xe0: s=0;mark=4; break; case

48、0xc2: s=0;mark=0; break; case 0xa2: break; case 0x62: start=!start;s=0;mark=4;break; void displys() if(start=1) char k;char l;switch(mark) case 4:for(k=0;k<4;k+) P0 = dispbitcodek; P2 = dispcodenum1k;delay1ms(); if(k=2)P2&=0x7f;delay1ms(); P0=0xff; P2=0xc6;P0=0xdf;delay1ms(); P0=0xff; delay1m

49、s(); break; case 0: for(l=0;l<90;l+) Getch();for(k=0;k<4;k+)if(k=0)k+; P0 = dispbitcodek; P2 = dispcodenumk; delay1ms(); if(k=2)P2&=0x7f;delay1ms();P0=0xff; P2=0xc6;P0=0xdf;delay1ms(); P0=0xff; delay1ms();for(l=0;l<90;l+) Getch();for(k=0;k<4;k+) P0 = dispbitcodek; P2 = dispcodenumk;d

50、elay1ms();if(k=2)P2&=0x7f;delay1ms();P0=0xff; P2=0xc6; P0=0xdf;delay1ms();P0=0xff; delay1ms(); break; case 1: for(l=0;l<90;l+) Getch();for(k=0;k<4;k+) if(k=1)k+;P0 = dispbitcodek;P2 = dispcodenumk;delay1ms(); if(k=2) P2&=0x7f; delay1ms(); P0=0xff; P2=0xc6;P0=0xdf;delay1ms();P0=0xff; delay

溫馨提示

  • 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)論