嵌入式系統(tǒng)原理及應(yīng)用基于ARM7的溫度報(bào)警系統(tǒng)的設(shè)計(jì)_第1頁(yè)
嵌入式系統(tǒng)原理及應(yīng)用基于ARM7的溫度報(bào)警系統(tǒng)的設(shè)計(jì)_第2頁(yè)
嵌入式系統(tǒng)原理及應(yīng)用基于ARM7的溫度報(bào)警系統(tǒng)的設(shè)計(jì)_第3頁(yè)
嵌入式系統(tǒng)原理及應(yīng)用基于ARM7的溫度報(bào)警系統(tǒng)的設(shè)計(jì)_第4頁(yè)
嵌入式系統(tǒng)原理及應(yīng)用基于ARM7的溫度報(bào)警系統(tǒng)的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、嵌入式系統(tǒng)原理及應(yīng)用課程設(shè)計(jì) 題目: 基于ARM7溫度監(jiān)測(cè)系統(tǒng)設(shè)計(jì) 班 級(jí) 學(xué) 號(hào) 姓 名 二一三年十一月 基于ARM7的溫度監(jiān)測(cè)系統(tǒng)的設(shè)計(jì) 摘要 本系統(tǒng)基于ARM7LPC2210、溫度傳感器DS18B20、液晶屏LCD1302、LED顯示燈,開關(guān)等組成,系統(tǒng)可以實(shí)現(xiàn)對(duì)溫度的初值設(shè)定、環(huán)境溫度監(jiān)控以及當(dāng)溫度超限時(shí),產(chǎn)生報(bào)警LED閃爍)同時(shí)通過(guò)串口通信發(fā)送上位機(jī)顯示,從而實(shí)現(xiàn)對(duì)溫度的監(jiān)控。該系統(tǒng)硬件結(jié)構(gòu)簡(jiǎn)單,監(jiān)控溫度范圍大,精度高,能廣泛應(yīng)用于對(duì)溫度控制要求較高的各種場(chǎng)合,市場(chǎng)前景廣闊。關(guān)鍵詞:LPC2210 DS18B20 LCD 1602 溫度超限報(bào)警 目錄 1引言.3 2系統(tǒng)總體方案.3

2、3硬件設(shè)計(jì) 3.1DS18B20溫度傳感器的設(shè)計(jì).4 3.2LCD1602液晶顯示屏的設(shè)計(jì).5 3.3串口設(shè)計(jì).6 3.4程序硬件接線圖.6 4程序代碼設(shè)計(jì)及調(diào)試仿真 4.2 液晶顯示功能模塊.7 4.3 串口通信模塊.8 4.4主函數(shù)功能模塊.9 6設(shè)計(jì)結(jié)果演示.9-10 7設(shè)計(jì)體會(huì).111 引言近年來(lái)隨著科技的飛速發(fā)展,嵌入式的應(yīng)用正在不斷深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)技術(shù)日益更新。在實(shí)時(shí)檢測(cè)和自動(dòng)控制的嵌入式應(yīng)用系統(tǒng)中,嵌入式往往作為一個(gè)核心部件來(lái)使用,僅嵌入式方面知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。溫度是一種最基本的環(huán)境參數(shù),人們生活與環(huán)境溫度息息相關(guān),在工業(yè)生產(chǎn)過(guò)程中

3、需要實(shí)時(shí)測(cè)量溫度,在工業(yè)生產(chǎn)中也離不開溫度的測(cè)量,因此研究溫度的測(cè)量方法和控制具有重要的意義。DS18B20是美國(guó)DALLAS半導(dǎo)體公司繼DS1820之后最新推出的一種改進(jìn)型智能溫度傳感器,通過(guò)此次項(xiàng)目設(shè)計(jì),可以在原有的理論基礎(chǔ)上,更加深入的了解傳感器的工作原理特別是DS18B20溫度傳感器的工作原理,同時(shí)提高我們的實(shí)踐動(dòng)手能力以及邏輯思維能力,特別是拓寬了對(duì)ARM控制器的使用視野。本系統(tǒng)采用LPC2210系列ARM芯片和可編程串行I/O接口芯片DS18B20為中心器件來(lái)設(shè)計(jì)溫度監(jiān)測(cè)系統(tǒng),實(shí)現(xiàn)了設(shè)計(jì)一個(gè)數(shù)字溫度采集并監(jiān)控的系統(tǒng),利用LCD液晶屏和上位機(jī)顯示溫度,并具有溫度超限報(bào)警功能,該系統(tǒng)能

4、廣泛應(yīng)用于各種行業(yè),例如智能家居系統(tǒng),化工廠和釀酒廠,市場(chǎng)前景廣闊,具有很高的實(shí)用價(jià)值。 2 系統(tǒng)的總體方案系統(tǒng)初始化后,LCD和上位機(jī)上顯示當(dāng)前室內(nèi)溫度 ,通過(guò)功能鍵能實(shí)現(xiàn)對(duì)溫度初值的設(shè)定,如果溫度超過(guò)預(yù)先設(shè)定的溫度值,LED燈會(huì)閃爍提示溫度超限,上位機(jī)會(huì)顯示警告,提醒值班人員檢查溫度異常的原因。1. 液晶顯示模塊LCD1602資料介紹 使用LCD液晶屏1602作為溫度的顯示,LCD 液晶顯示器的構(gòu)造是在兩片平行的玻璃當(dāng)中放置液態(tài)的晶體,兩片玻璃中間有許多垂直和水平的細(xì)小電線,透過(guò)通電與否來(lái)控制桿狀水晶分子改變方向,將光線折射出來(lái)產(chǎn)生畫面。顯示清晰,實(shí)現(xiàn)功能全,如果利用數(shù)碼管顯示溫度,則不能

5、順利顯示英文而且還會(huì)用到鎖存器,這會(huì)導(dǎo)致系統(tǒng)更加繁雜,綜合各種考慮,我們選用1602液晶顯示。此外,此液晶的功耗小,顯示內(nèi)容豐富。如果要想液晶顯示漢字,我們可以選擇另外一種芯片LCD12864。1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”。1602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:VSS為電源地第2腳:VCC接5V電源正極

6、第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高。第4腳:RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。第5腳:RW為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。第6腳:E(或EN)端為使能(enable)端,高電平(1)時(shí)讀取信息,負(fù)跳變時(shí) 執(zhí)行指令。第714腳:D0D7為8位雙向數(shù)據(jù)端。 第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。 LCD1602最重要的部分是第4,5,6三個(gè)引腳。這三個(gè)引腳決定了數(shù)據(jù)的讀和寫,我們寫程序的重點(diǎn)是控制這三個(gè)引腳的狀態(tài)2. 溫度傳感器設(shè)計(jì) DS18B20數(shù)字溫度傳感

7、器,該產(chǎn)品采用美國(guó)DALLAS公司生產(chǎn)的 DS18B20可組網(wǎng)數(shù)字溫度傳感器芯片封裝而成,具有耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域。由于DS18B20性能已經(jīng)夠好,控制起來(lái)也比較方便,故我們直接選用DS18B20作為溫度傳感器。 在仿真圖中的引腳安裝 DS13820采用獨(dú)特的單口接線方式傳輸,在與微處理器連接時(shí)只需要一條口線即可實(shí)現(xiàn)微處理器與DS1380的雙向通信,不需要外圍元件,外加電壓范圍是3.05.5V,測(cè)量溫度范圍是-55125.在-10到+85的范圍內(nèi)的固有分辨率是0.5,測(cè)量結(jié)果以9位到12位的數(shù)字量方式直接輸出數(shù)字信號(hào),以“一線總線”

8、方式傳給CPU,同時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾能力,適用于環(huán)境惡劣的現(xiàn)場(chǎng)溫度測(cè)量。由于它的這種特性,我們只需要把它的引腳與ARMP1.25相連即可,VCC接電源,GND接地(如在仿真中的接線圖)整個(gè)操作主要包括三個(gè)關(guān)鍵過(guò)程:主機(jī)搜索DS18B20序列號(hào)、啟動(dòng)在線DS18B20做溫度轉(zhuǎn)換、讀取溫度值。DS18B20嚴(yán)格遵循單總線協(xié)議,工作時(shí),主機(jī)先發(fā)一復(fù)位脈沖,使總線上的所有DS18B20都被復(fù)位,接著發(fā)送ROM操作指令,使序列號(hào)編碼匹配的DS18B20被激活,準(zhǔn)備接受下面的RAM訪問(wèn)指令。RAM訪問(wèn)指令控制選中的DS18B20工作狀態(tài),完成整個(gè)溫度轉(zhuǎn)換,讀取等工作。在ROM命令發(fā)送之

9、前,RAM命令命令不起作用。3. 串口的設(shè)計(jì) LPC2210含有兩個(gè)符合工業(yè)標(biāo)準(zhǔn)的異步串行口,UART0和UART1。 系統(tǒng)仿真接線圖RXD和TXD分別連接ARM的P0.1和P0.0 上位機(jī)的RXD和也和ARM的P0.0相連。系統(tǒng)報(bào)警模塊用一個(gè)LED燈模擬,當(dāng)出現(xiàn)狀況時(shí),LED燈會(huì)不停的閃爍,達(dá)到報(bào)警的目的。 系統(tǒng)硬件總設(shè)計(jì)圖4軟件代碼設(shè)計(jì)及調(diào)試仿真結(jié)果軟件設(shè)計(jì)時(shí)用到了模塊化設(shè)計(jì)思想,代碼包含了若干個(gè)頭文件,包括lpc2100.h ,stdio.h ,ds18b20.h, lcd.h,uart.h下面我們截取重要的幾個(gè)頭文件程序進(jìn)行并分析LCD液晶模塊程序設(shè)計(jì)(部分)void ChkBusy(

10、)IO0DIR=0xf0;while(1)IO0CLR=rs;IO0SET=rw;IO0SET=en;if(!(IO0PIN & busy)break;IO0CLR=en;IO0DIR=0xffffffff;void WrOp(uint8 dat)ChkBusy();IO0CLR=rs;IO0CLR=rw;IO0CLR=IO0CLR|0xff00;/先清零IO0SET=dat<<8;/再送數(shù)IO0SET=en;IO0CLR=en;void WrDat(uint8 dat)ChkBusy();IO0SET=rs;IO0CLR=rw;IO0CLR=IO0CLR|0xff00;/

11、先清零IO0SET=dat<<8;/再送數(shù)IO0SET=en;IO0CLR=en;void lcd_init(void)WrOp(0x38);WrOp(0x06);WrOp(0x0c);第一個(gè)函數(shù)作用是監(jiān)測(cè)lcd是否忙碌,第二個(gè)函數(shù)是用來(lái)寫數(shù)據(jù)的,rs,rw,en的狀態(tài)很重要,是正確讀數(shù)據(jù)的關(guān)鍵,第三個(gè)函數(shù)是寫指令的函數(shù),和前一個(gè)一樣,rs,rw,en狀態(tài)是很關(guān)鍵的,最后一個(gè)是lcd的初始化函數(shù),其他函數(shù)在這里不做介紹。UART串口程序設(shè)計(jì)(部分)void UART0_Init(void) uint Fdiv; U0LCR = 0x83;/ 8位數(shù)據(jù),無(wú)效驗(yàn),一個(gè)停止位, 除數(shù)鎖存

12、訪問(wèn)(DLAB = 1,可設(shè)置波特率) Fdiv = (Fpclk / 16) / UART_Baud; / 設(shè)置波特率, Fpclk=11059200 U0DLM = Fdiv / 256; / 設(shè)置分頻寄存器高字節(jié) U0DLL = Fdiv % 256; / 設(shè)置分頻寄存器低字節(jié) /U0DLL=72;/ 12MHz 或 11.0592MHz /U0DLL=97;/ 15MHZ U0LCR = 0x03;uint8 UART0_GetByte (void) uint8 rcv_dat;while (U0LSR & 0x01) = 0); / 等待接收標(biāo)志置位rcv_dat = U0R

13、BR; / 讀取數(shù)據(jù)return (rcv_dat);void UART0_SendByte(uint8 data) U0THR = data; / 發(fā)送數(shù)據(jù) while (U0LSR&0x20)=0); / 等待數(shù)據(jù)發(fā)送完畢 0x40void UART0_SendStr(uint8 const *str) while(1) if(*str='0') break; UART0_SendByte(*str+); / 發(fā)送數(shù)據(jù) void UART0_GetStr(uint8 *s, uint32 n) for ( ; n>0; n-) *s+ = UART0_GetB

14、yte(); void UART0_SendChar(int ch) if (ch = 'n') while (!(U0LSR & 0x20); U0THR = 0x0D; while (!(U0LSR & 0x20); U0THR = ch;主函數(shù)程序設(shè)計(jì)(部分)#define UART_Baud 9600#include "DS18B20.h"#include "LCD.h"#include "UART.h"#define LED1(1<<17)/ uint16 set_temp=150

15、; /設(shè)定溫度為15度,超過(guò)的話則報(bào)警,串口出現(xiàn)warning LED1開始閃爍。uint16 measure_temp=0;void _irq IRQ_T0(void)T0TCR = 0;/ 計(jì)數(shù)器使能 measure_temp=ReadTemp();ConvertTemperature(measure_temp); / 溫度轉(zhuǎn)換 if(measure_temp>set_temp) IO1CLR |= LED1;Delayms(100);IO1SET|=LED1;Delayms(100); UART0_SendStr("WARNING!! TOO HIGH!! ")

16、; DisText(0xc4,Tp);else if(measure_temp<100) / 小于10度,則報(bào)警IO1CLR |= LED1;Delayms(100);IO1SET|=LED1;Delayms(100); UART0_SendStr("WARNING!! TOO LOW!"); DisText(0xc4,Tp);else UART0_SendStr(" NORMOL!");UART0_SendStr(Tp);/ 發(fā)送溫度UART0_SendStr("rn");/ 回車DisText(0xc4,Tp);/ 顯示當(dāng)前溫度T0IR=0x02;/清除MR1中斷標(biāo)志VICVectAddr=0x00;/通知VIC中斷處理結(jié)束T0TCR = 1;/ 計(jì)數(shù)器使能 在以上程序是環(huán)境溫度起判斷作用的關(guān)鍵,設(shè)定安全溫度為15和10,當(dāng)環(huán)境溫度高于15或者低

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論