基于的电压检测报警系统.doc

上传人:土8路 文档编号:10378909 上传时间:2021-05-13 格式:DOC 页数:20 大小:322.50KB
返回 下载 相关 举报
基于的电压检测报警系统.doc_第1页
第1页 / 共20页
基于的电压检测报警系统.doc_第2页
第2页 / 共20页
基于的电压检测报警系统.doc_第3页
第3页 / 共20页
基于的电压检测报警系统.doc_第4页
第4页 / 共20页
基于的电压检测报警系统.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《基于的电压检测报警系统.doc》由会员分享,可在线阅读,更多相关《基于的电压检测报警系统.doc(20页珍藏版)》请在三一文库上搜索。

1、目录一、引言- 2 -1.1设计目的- 2 -1.2设计要求- 2 -二、总体设计方案- 3 -2.1系统总体方案- 3 -2.2系统原理图- 4 -三、硬件设计- 5 -3.1设计思路- 5 -3.2系统电路设计- 5 -四、软件设计- 8 -4.1设计思路- 8 -4.2串口通信子程序- 8 -五、程序设计与调试- 9 -5.1程序代码设计- 9 -5.2程序代码调试- 15 -六、设计结果演示- 16 -七、心得体会- 17 -参考文献- 18 -基于的电压检测报警系统摘要:本设计是基于嵌入式技术作为主处理器的电压报警系统,利用LPC318作为主控CPU,辅以电压采集模块采集数据,用滑动

2、变阻器与之相连。实现了简单的电压报警功能。运用LM016L液晶动态显示提高系统的显示质,且其数字式接口使操作更简单。解决了传统的数据采集系统由于存在响应慢、精度低、可靠性差、效率低、操作繁琐等弊端,能够完全适应现代化工业的高速发展。关键词:嵌入式系统 ARM LPC318 LM016L液晶显示 电压采集 电压报警一、引言1.1设计目的1. 通过本课程设计,熟悉嵌入式系统开发方法和流程。2. 能结合课堂所学自主设计实现一个简单的监测报警系统。3. 进一步学会应用定时器、A/D、显示等模块功能1.2设计要求1. 根据题目,自行设计方案,并编写程序2. 要求能利用学过的A/D转换、定时器、按键等模块

3、,实现温度(可用DS18B20传感器)或电压(可用滑动电阻)的检测、显示、阈值设置,以及超过阈值能声光报警。3. 扩展功能:将温度/电压数据通过串行通信(UART)发送到PC上位机显示,由上位机可显示实时监测数据、历史曲线,并可发送控制命令给ARM实现报警或关闭加热源/电源。注:上位机软件程序可用VB、VC+做界面,也可简单地通过“串口调试软件”显示。2、 总体方案设计2.1系统总体方案 Philips公司的32位ARM7微控制器LPC2138具有强大的存储空间,内嵌32 KB片内静态RAM和512 KB的Flash存储器;可以实现在系统可编程(ISP)、在应用可编程(IAP);2个8路10位

4、AD转换器,1个DA转换器,转换迅速准确;引脚资源丰富,多达47个可承受5 V电压的通用IO口;多个串行接口,包括2个16C550工业标准UART、2个高速I2C接口、SPI,以及具有缓冲作用和数据长度可变功能的SSP协议。LPC2138可以移植C0S-II操作系统,软件的可移植性好,工作可靠。LM016L液晶应用非常广泛,操作简单,功能强大,通过对 LM016L的编程来读取滑动变阻器和按键的值来获取相应的信息,再通过对液晶的编程控制将获取到的信息通过一系列转换从而显示到液晶屏上。最后达到有电压采集显示和报警等功能。系统论证时通过在 proteus的仿真,能够达到预期的效果!系统设计方案的确定

5、核心控制体:LPC2138 显示:LM016L电压检测传感器:滑动变阻器报警模块,LED报警。2.2系统原理图三、硬件设计3.1设计思路本设计的基于ARM 的电压报警系统框图如下图所示。由图可见,本系统采用“ARM 核心控制模块电压采集模块+报警模块”实现所需功能。并考虑到系统的可扩展性和延伸性,本系统添加了按键模块,使系统更加完善,提高了扩展性。ARM处理器按键模块电压检测模块LCD显示器报警模块 系统原理框图3.2系统电路设计3.2.1 电压检测模块电路设计通过改变滑动变阻器串入的阻值来改变采样电阻所分电压值,此值可以通过A/D转换模块将采样所得的电压值转换为数字信号,从而显示到显示模块。

6、3.2.2按键模块电路设计设有两个按键,按上上面的按键阀值增加1000mv,按下下面的按键阀值减少1000mv。界面简单,操作方便。3.2.3报警模块电路设计报警系统由LED构成,在被测电压超过阀值时LED变亮发出警告。数据端口接P0.21(由LPC的P0.21直接输出驱动)。3.2.4 LCD显示模块电路设计运行时,上面显示的是此刻检测到的电压,下面显示的是报警电压阀值。四、软件设计4.1设计思路本系统软件设计是在CodeWarrior for ADS开发环境下完成的。本电压报警系统的主体由LPC2138核心控制模块构成,所以系统软件也是围绕这个模块来编写的。程序流程图如下图。开始ARM初始

7、化LED显示初始化串口显示初始化AD转换,显示屏显示,串口显示运行VI N Y指示灯发光调节按键 改变电阻或改变报警电压由该流程图可看出,刚上电时,要先进行ARM 内部的初始化,以使ARM进入相应的状态和模式;然后初始化硬件装置,以使硬件系统可以正常支持电压数据采集;然后初始化LCD显示和键盘,在LCD上显示相应的菜单列表,供用户通过按钮操作;至此,系统初始化完成,并进入正常主程序循环状态。在正常主程序循环状态中,首先扫描键盘,以快速的响应用户的按键操作;若没有键值按下,则ARM立即进行数据的采集、处理与显示,以实现实时数据采集与显示等功能。 其主程序包括电压采集程序、ARM获取电压子程序、电

8、压处理和转换子程序。当ARM 处理器接收到正确的电压数据后,立即进行相应的电压数据处理与转换,变成可被LCD直接显示的值。4.2 串口通信子程序串口通信程序流程图如图所示。 串口通信子程序流程图五、程序设计与调试5.1程序代码#define uint unsigned int#define uchar unsigned char#define uint8 unsigned char#define uint32 unsigned int#include stdio.h#include lpc21xx.h#define RS (124) #define RW (125) #define E (12

9、6) #define BUSY (123)#define baojing (11)uint32 adc_data,v_test,a,b,c,d,v_set,e,f,g,h;uint8 dis=v: mv; uint8 str=l: mv; uint32 v_test,adc_data; void CheckBusy() IO1DIR = (0x700)16; while(1) IO1CLR = RS; IO1SET = RW; IO1SET = E; if(!(IO1PIN & BUSY) break; IO1CLR = E; IO1DIR = (0x7ff)16; void WriteCom

10、mand(unsigned char command) CheckBusy(); IO1CLR = RS; IO1CLR = RW; IO1CLR = (0xff)16; IO1SET = command16; IO1SET = E; IO1CLR = E; void WriteData(unsigned char data) CheckBusy(); IO1SET = RS; IO1CLR = RW; IO1CLR = (0xff)16; IO1SET = data16; IO1SET = E; IO1CLR = E; void Set_XY(unsigned char x,unsigned

11、 char y) switch(x) case 0: y+=0x80; break; case 1: y+=0xc0; break; WriteCommand(y); void DisplayChar(unsigned char x,unsigned char y,unsigned char data) Set_XY(x,y); WriteData(data); void DisplayString(unsigned char x,unsigned char y,unsigned char *str) Set_XY(x,y); while(*str) WriteData(*str); str+

12、; void InitLcd() WriteCommand(0x01); WriteCommand(0x38); WriteCommand(0x0C); void delay1ms(uint n)uint i,j;for(i=0;in;i+)for(j=1;j2500;j+);void delay(uint n)uint i,j;for(i=0;in;i+)for(j=1;j500;j+); void ADC(void) PINSEL1=0x00400000;ADCR=(10)|(12000000/1000000-1)8)|(016)|(017)|(121)|(022)|(124)|(06)&

13、0x3ff;v_test=(long)adc_data*3300/1024; char keyscan()char i=0; if(IO0PIN&0x01)=0)delay1ms(10);if(IO0PIN&0x01)=0) i=1; delay1ms(10); if(IO0PIN&0x04)=0)delay1ms(10);if(IO0PIN&0x04)=0) i=2; delay1ms(10); return(i);int main() int i; v_set=2500;PINSEL0=0x00000000;PINSEL1=0x400000 ;IO0DIR|=2;IO1DIR|=0x7ff

14、0000;IO0CLR|=baojing; InitLcd() ; DisplayString(0,0,dis); DisplayString(1,0,str); while(1) if(i=1) v_set=v_set-100; if(i=2) v_set=v_set+100; i=0; ADC(); a=v_test/1000; b=v_test%1000/100;c=v_test%1000%100/10; d=v_test%1000%100%10;DisplayChar(0,2,a+0x30);DisplayChar(0,3,b+0x30); DisplayChar(0,4,c+0x30

15、); DisplayChar(0,5,d+0x30); e=v_set/1000; f=v_set%1000/100;g=v_set%1000%100/10; h=v_set%1000%100%10;DisplayChar(1,2,e+0x30);DisplayChar(1,3,f+0x30); DisplayChar(1,4,g+0x30); DisplayChar(1,5,h+0x30); if( v_testv_set) IO0SET|=baojing; delay(5); else IO0CLR|=baojing; i=keyscan(); 5.2程序代码调试调试工具:Proteus仿

16、真工具、keil3用Protues仿真工具画好原理图,打开keil,选用LPC2138芯片,在keil中新建工程,设置好端口,将编好的程序添加再加以编译,生成axf文件,双击Protues中LPC2138芯片,点击打开生成axf文件,然后可以进行仿真 。 六、设计结果演示6.1当前电压小于报警电压 当当前电压小于报警电压时,报警器不发光。6.2当前电压大于报警电压当当前电压大于报警电压时,报警器发光。七、心得体会在这次ARM嵌入式系统课程设计中,老师给我们的设计课题是基于ARM的电压报警系统设计。通过这次课程设计,我对ARM嵌入式系统尤其是数据处理中的温度采集系统有了更进一步的了解,同时知识面

17、也进一步得到了扩展和加深。本次课程设计的任务主要是自行设计出电压报警装置,帮助我们更好的理解嵌入式系统和电压采集系统的原理和应用。这次的设计时通过电压检测模块对当前电压进行数据的收集与处理,最后得到我们所需要的有用的数字信号并送入系统的下一环节进行其他操作。在现代化社会中,这类的器件功能越来越强大,越来越人性化,将来有更多的功能等待我们去实现。所以,学习和应用ARM为基础的各种设计及其应用技术对我们以后的学习和工作有着十分重要的意义。参考文献1 周立功,ARM嵌入式系统基础教程M. 北京:北京航空航天大学出版社 20082 周立功,深入浅出ARM7-LPC213X/214XM. 北京:北京航空航天大学出版社20063 周立功,从51到ARM-32位嵌入式系统入门M. 北京:北京航空航天大学出版社2006

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1