基于ARM7的電壓監(jiān)測報(bào)警系統(tǒng)_第1頁
基于ARM7的電壓監(jiān)測報(bào)警系統(tǒng)_第2頁
基于ARM7的電壓監(jiān)測報(bào)警系統(tǒng)_第3頁
基于ARM7的電壓監(jiān)測報(bào)警系統(tǒng)_第4頁
基于ARM7的電壓監(jiān)測報(bào)警系統(tǒng)_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、嵌入式系統(tǒng)設(shè)計(jì)導(dǎo)論課程設(shè)計(jì) 題目: 基于ARM7的電壓監(jiān)測報(bào)警系統(tǒng) 學(xué)院 班 級 學(xué) 號 姓 名 二一三年四月基于ARM7的電壓監(jiān)測報(bào)警系統(tǒng) 摘 要本系統(tǒng)采用LPC2138系列的ARM硬件、WS-1型電位器、液晶屏LM016L 、按鍵、蜂鳴器、虛擬終端和上位機(jī)等組成,系統(tǒng)可實(shí)現(xiàn)在液晶屏實(shí)時(shí)顯示電壓的功能,并將電壓數(shù)據(jù)串口通信傳遞給上位機(jī),通過按鍵可調(diào)節(jié)閾值電壓,系統(tǒng)除基本數(shù)字電壓表功能外,還具有電壓超限時(shí)聲光報(bào)警等功能。在設(shè)計(jì)中我們應(yīng)用具有豐富的硬件資源的ARM7開發(fā)板。本設(shè)計(jì)采用電位器實(shí)現(xiàn)對電壓信號的采集,利用LPC2138內(nèi)部的ADC模塊將轉(zhuǎn)換后的電壓傳送給LCD液晶顯示,虛擬終端再將數(shù)據(jù)

2、傳遞給上位機(jī),同時(shí)按鍵可調(diào)節(jié)閾值電壓,當(dāng)當(dāng)前電壓超過閾值電壓時(shí),報(bào)警通過蜂鳴器鳴叫和LED燈亮來提示。本文詳細(xì)介紹了AD采樣、與PC機(jī)的串口通信、液晶屏顯示等部分,具有較強(qiáng)的實(shí)用性和推廣性。 關(guān)鍵詞:LPC2138;上位機(jī);LM016L液晶屏;電壓超限報(bào)警;一、設(shè)計(jì)目的1. 通過本課程設(shè)計(jì),熟悉嵌入式系統(tǒng)開發(fā)方法和流程。2. 能結(jié)合課堂所學(xué)自主設(shè)計(jì)實(shí)現(xiàn)一個(gè)簡單的監(jiān)測報(bào)警系統(tǒng)。3. 進(jìn)一步學(xué)會應(yīng)用定時(shí)器、A/D、顯示等模塊功能二、設(shè)計(jì)要求1. 能利用學(xué)過的A/D轉(zhuǎn)換、定時(shí)器、按鍵等模塊,實(shí)現(xiàn)溫度(可用DS18B20 傳感器)或電壓(可用滑動電阻)的檢測、顯示、閾值設(shè)置,以及超過閾值能聲光報(bào)警。2

3、. 將溫度/電壓數(shù)據(jù)通過串行通信(UART)發(fā)送到PC上位機(jī)顯示,由上位機(jī)可顯示實(shí)時(shí)監(jiān)測數(shù)據(jù)、歷史曲線,并可發(fā)送控制命令給ARM實(shí)現(xiàn)報(bào)警或關(guān)閉加熱源/電源。注:上位機(jī)軟件程序可用VB、VC+做界面,也可簡單地通過“串口調(diào)試軟件”顯示。三、系統(tǒng)總體方案3.1總體方案設(shè)計(jì) 利用ARM7控制芯片、LCD液晶屏、LED、電位器、虛擬終端等分別實(shí)現(xiàn);(1)通過電位器的移動來調(diào)節(jié)應(yīng)采集的電壓信號的大??;(2)通過液晶顯示當(dāng)前電壓值和閾值及其大小關(guān)系;(3)通過蜂鳴器和LED燈實(shí)現(xiàn)超限報(bào)警;(4)虛擬終端將實(shí)時(shí)電壓顯示出來,并通過串口物理端口將數(shù)據(jù)傳遞給上位 機(jī)。圖1 設(shè)計(jì)方案總體框圖系統(tǒng)初始化后,通過調(diào)節(jié)

4、電位器來調(diào)節(jié)采集電壓信號的大小,通過LCD上顯示當(dāng)前電壓值和閾值 ,通過按鍵實(shí)現(xiàn)電壓閾值設(shè)定,如果采集的電壓值超過設(shè)定的閾值電壓,蜂鳴器會鳴叫且LED等亮提示電壓超限,起到報(bào)警的作用。3.2 ARM7 LPC2138 EasyARM2131 開發(fā)板是廣州周立功公司設(shè)計(jì)的 EasyARM 系列開發(fā)套件之一,采用 了 PHILIPS 公司基于 ARM7TDMI-S 核、單電源供電、LQFP64 封裝的 LPC2131,具有 JTAG 仿真調(diào)試、ISP 編程等功能。開發(fā)板上提供了一些鍵盤、LED、蜂鳴器等常用功能部件,還具有RS232 接口電路、 I2C存儲器電路。另外,用戶也可以更換兼容的CPU進(jìn)

5、行仿真調(diào)試,如LPC2132、LPC2138、 LPC2142 等。靈活的跳線組合(開發(fā)板內(nèi)使用的所有I/O均可斷開連接),還有用戶I/O接 口,極大地方便了用戶進(jìn)行 32 位ARM嵌入式系統(tǒng)的開發(fā)實(shí)驗(yàn)。EasyARM2131 實(shí)驗(yàn)板功能特點(diǎn):* 完全自主設(shè)計(jì)的軟硬件、擁有自主版權(quán)的 JTAG 仿真技術(shù);* 支持 ADS1.2 集成開發(fā)環(huán)境及其 PHILIPS 所有型號 ARM 微控制器的仿真與開發(fā);* 采用“主板CPU PACK 適配器SD 卡適配器(標(biāo)準(zhǔn)配置)多種可選配置適配器”* 的 形 式構(gòu)成 EasyARM2131 開發(fā) 套 件,標(biāo) 準(zhǔn) 配置的 CPU PACK 主 芯片為 LPC2

6、131FBD;* 板上的功能部件與 CPU 之間,可以使用跳線器選擇連接;* 全面支持 9 種型號的 64 PIN 小管腳 ARM7 微控制器:LPC213x(LPC2131/2132/2134/2136/2138)內(nèi)置 USB 接口的 LPC214x(LPC2142/2144/2146/2148)* 多種免費(fèi)商業(yè)化軟件包及其詳細(xì)的開發(fā)文檔:* 移植C/OSII到ARM7 軟件包四、硬件設(shè)計(jì) 4.1 AD采樣模塊設(shè)計(jì)左圖為電壓信號調(diào)節(jié)電路,如圖所示,電源電壓Vcc=3.3V,故測量范圍為(03.3V),電位器RV2=1K,信號采集端接到ARM7芯片P0.27口,通過調(diào)節(jié)電位器改變采集P0.2口

7、的電壓值,送至芯片內(nèi)部AIN0(AD轉(zhuǎn)換器)進(jìn)行A/D轉(zhuǎn)換。A/D沒有獨(dú)立的參考電壓引腳,A/D的參考電壓與供電電壓連接在一起即3.3V,假定從ADDR寄存器中讀取到的10位A/D轉(zhuǎn)換結(jié)果為VALUE,則對應(yīng)的時(shí)間電壓為: 圖2 信號采集電路圖4.2 LCD液晶屏顯示設(shè)計(jì)LCD液晶屏顯示電路如圖4-2所示。該液晶可實(shí)現(xiàn)顯示當(dāng)前電壓值和信號顯示時(shí)間,具體控制和實(shí)現(xiàn)方法如下:(1) ARM7的P1.16-P1.23口連接液晶屏的DBO-DB7,控制對液晶屏并行數(shù)據(jù) 讀和寫;(2)ARM7的P1.24口連接液晶屏的RS口,控制并行的指令/數(shù)據(jù)選擇信號;(3)ARM7的P1.25口連接液晶屏的R/W口

8、,控制并行的讀寫選擇信號;(4)ARM7的P1.26口連接液晶屏的EN口,控制并行的使能信號;圖3 LCD液晶屏電路圖4.2.1 LCD內(nèi)部的11條指令序號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DD

9、RAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容 表1 LCD內(nèi)部指令表指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動方向,高電平左移,低電平右移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動顯示的文字,低電平時(shí)移動光標(biāo)。指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線

10、,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。 液晶顯示部分的程序可根據(jù)上表進(jìn)行編寫,本文中如果電壓超過設(shè)定值w,則顯示屏上顯示當(dāng)前電壓且大于設(shè)定電壓,否則,顯示當(dāng)前電壓且小于設(shè)定電壓,清晰的看出當(dāng)前電壓情況。4.3按鍵調(diào)節(jié)電路 按鍵SWI和按鍵SWI1分別接到芯片的P0.26、P0.30口,當(dāng)按鍵SW

11、I按下時(shí),P0.26口的變?yōu)榈碗妷?,?dāng)程序檢測到IO0PIN的改變,閾值電壓w=w+200; 同理,當(dāng)按鍵SWI1按下時(shí),閾值電壓w=w-200; 同時(shí)液晶屏上會顯示此時(shí)電壓閾值電壓,或此時(shí)電壓W,則蜂鳴器鳴叫 報(bào)警,否則蜂鳴器不鳴叫。(5)循環(huán)執(zhí)行(2)(4)。圖7 系統(tǒng)主流程圖5.2液晶顯示功能模塊圖5-2 為液晶顯示功能模塊流程圖; 圖8 液晶顯示功能模塊流程圖5.2.1 1602LCD的一般初始化(復(fù)位)過程延時(shí)15mS寫指令38H(不檢測忙信號)延時(shí)5mS寫指令38H(不檢測忙信號)延時(shí)5mS寫指令38H(不檢測忙信號)以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號寫指令38H:顯示

12、模式設(shè)置寫指令08H:顯示關(guān)閉寫指令01H:顯示清屏寫指令06H:顯示光標(biāo)移動設(shè)置寫指令0CH:顯示開及光標(biāo)設(shè)置5.3 串口通信模塊串口通信模塊的流程圖如下:圖9 串口通信流程圖5.3.1 串口通信的基本步驟(1) 選擇串口UART0;(2) 設(shè)置UART0的工作模式為:8位字符長度,1個(gè)停止位,無奇偶校驗(yàn),使能除數(shù)鎖存寄存器(3) 確定除數(shù)鎖存寄存器高8位和低8位的數(shù)據(jù);(4) 串口通信還需鎖相環(huán)(PLL)來實(shí)現(xiàn)輸出信號頻率對輸入信號頻率的跟蹤,PLL主要由下面這3個(gè)寄存器來控制狀態(tài): PLLCON寄存器:控制PLL是否進(jìn)行連接,這個(gè)連接需要在向PLLFEED發(fā)送正確的信息(饋送序列)的時(shí)候

13、才生效,且PLLCON必須在PLL開始連接之前就設(shè)置好,否則會造成系統(tǒng)不可預(yù)知的錯(cuò)誤。 PLLCFG寄存器:這個(gè)寄存器是用來設(shè)置倍頻系數(shù)M和分頻系數(shù)N的,這兩個(gè)值決定了倍頻和分頻的頻率。 PLLFEED:向此寄存器以連續(xù)的VPB總線周期寫入0xAA,Ox55,即饋送序列,在正確的序列被寫入PLLFEED之后,PLLCON,PLLCFG才生效,PLL電路才能正確的連接到電路中。(5)UART0查詢方式發(fā)送字節(jié)數(shù)據(jù)。5.4 AD轉(zhuǎn)換模塊AD轉(zhuǎn)換模塊的流程圖如下:圖10 AD轉(zhuǎn)換流程圖 使用ADC模塊時(shí),先要將測量通道引腳設(shè)置為AINx功能,然后通過ADCR寄存器設(shè)置ADC的工作模式、ADC轉(zhuǎn)換通道

14、、CLKDIV時(shí)鐘分頻值,并啟動ADC轉(zhuǎn)換??梢酝ㄟ^查詢或中斷的方式等待ADC轉(zhuǎn)換完畢,轉(zhuǎn)換數(shù)據(jù)保存在ADDR寄存器中。6、 設(shè)計(jì)結(jié)果演示圖 10 系統(tǒng)總體仿真圖由圖可看出當(dāng)前電壓和閾值電壓,也可直接通過LED燈看出電壓是否超過閾值,按鍵的按下能及時(shí)反映在液晶屏上閾值大小的變化。圖11 虛擬終端的電壓顯示圖圖12 串口調(diào)試軟件接收數(shù)據(jù)圖七、設(shè)計(jì)體會回顧此次ARM課程設(shè)計(jì),我感觸頗多,最深刻的體會是:事情只有做了那你才能知道是什么結(jié)果,開始覺得程序很難懂,每次編都有好多錯(cuò)誤,很多垂頭喪氣的時(shí)候都想要放棄,可是最終都放下情緒堅(jiān)持了下來,因?yàn)槲覉?jiān)信:付出終會有收獲,同時(shí)也懂得了理論與實(shí)踐相結(jié)合是很重

15、要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)際編程相結(jié)合起來,才能充分運(yùn)用和體會所學(xué)知識。我在設(shè)計(jì)中遇到了許多問題,同時(shí)也發(fā)現(xiàn)了自己的不足之處,比如:不夠耐心,部分程序思路不清等,在今后的學(xué)習(xí)中我會慢慢改正。最后,很感激老師的指導(dǎo),我會繼續(xù)努力的!附:系統(tǒng)總程序#include#include#define uchar unsigned char#define uint unsigned int#define uint8 unsigned char#define uint32 unsigned int#define uint16 unsigned int#define Fpclk

16、11059200 /晶振頻率#define UART_BPS 9600#define LED (128)#define BEE (129)#define SWI (130)#define SWI1 (126)#define rs (124) #define rw (125) #define en (126)uint32 ADC_data,u,i,w;uchar *q; char str20;char dis5;void delay(unsigned int a) /延遲函數(shù)while(-a!=0)for(i=0;i500;i+);void UART0_Ini(void) /初始化串口0uint

17、16 Fdiv;U0LCR=0x83;Fdiv=(Fpclk/16)/UART_BPS;U0DLM=Fdiv/256;U0DLL=Fdiv%256;U0LCR=0x03;void lcd_init(void) /液晶屏初始化IO1CLR=IO1CLR|rs; IO1CLR=IO1CLR|rw; IO1CLR=IO1CLR|0x00ff0000; /D1D7 先清零 IO1SET=IO1SET|0x00380000; /再送數(shù)(置功能雙行顯示) IO1SET=IO1SET|en; IO1CLR=IO1CLR|en;delay(5);IO1CLR=IO1CLR|rs; /全部清零 IO1CLR=I

18、O1CLR|rw; IO1CLR=IO1CLR|0x00ff0000; /先清零 IO1SET=IO1SET|0x00060000; /再送數(shù) (置輸入模式)IO1SET=IO1SET|en; IO1CLR=IO1CLR|en;delay(5);IO1CLR=IO1CLR|rs; /全部清零 IO1CLR=IO1CLR|rw; IO1CLR=IO1CLR|0x00ff0000; /先清零 IO1SET=IO1SET|0x000c0000; /再送數(shù) (顯示開關(guān)控制)IO1SET=IO1SET|en; IO1CLR=IO1CLR|en;delay(5);void lcd_printf(char

19、*s,long temp_data) /液晶屏顯示if(temp_data0)temp_data=-temp_data; *s=-;else *s= ;*+s =temp_data/1000+0x30; *+s =temp_data%1000/100+0x30; temp_data=temp_data%100; /取余運(yùn)算 *+s =temp_data/10+0x30; temp_data=temp_data%10; /取余運(yùn)算 *+s =temp_data+0x30; void Add(long dat) dat=dat16;delay(5); IO1CLR=IO1CLR|rs; /全部清零

20、 IO1CLR=IO1CLR|rw; IO1CLR=IO1CLR|0x00ff0000; /先清零 IO1SET=IO1SET|dat; /再送數(shù) (DDRAM地址設(shè)置)IO1SET=IO1SET|en; IO1CLR=IO1CLR|en;void WrDat(long dat) dat=dat6)&0x3ff; /處理轉(zhuǎn)換值u=(long)ADC_data*3300/1024; /得到實(shí)際電壓if(IO0PIN&SWI)=0) /閾值調(diào)節(jié)w=w+200;if(IO0PIN&SWI1)=0)w=w-200; if(uw)/報(bào)警顯示IO1SET=IO1SET|LED; IO1SET=IO1SET

21、|BEE;Add(0x89); WrDat(62);Add(0x8a); WrDat(119);elseIO1CLR=IO1CLR|LED; IO1CLR=IO1CLR|BEE;Add(0x89); WrDat(60);Add(0x8a); WrDat(119);delay(100);Add(0x83);WrDat(u/1000+0x30); Add(0x84);WrDat(u%1000/100+0x30);Add(0x85);WrDat(u%1000%100/10+0x30);Add(0x86);WrDat(u%1000%100%10+0x30); Add(0x87);WrDat(109); Add(0x88);WrDat(86);Add(0x8b); WrDat(0x3d);Add(0x8c);WrDat(w/1000+0x30);Add(0x8d);WrDat(w%1000/100+0x30);Add(0x8e);WrDat(w%1000%100/10+0x30);Add(0x8f);Wr

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論