嵌入式系统原理及应用基于ARM7的温度报警系统的设计_第1页
嵌入式系统原理及应用基于ARM7的温度报警系统的设计_第2页
嵌入式系统原理及应用基于ARM7的温度报警系统的设计_第3页
嵌入式系统原理及应用基于ARM7的温度报警系统的设计_第4页
嵌入式系统原理及应用基于ARM7的温度报警系统的设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上嵌入式系统原理及应用课程设计 题目: 基于ARM7温度监测系统设计 班 级 学 号 姓 名 二一三年十一月 专心-专注-专业基于ARM7的温度监测系统的设计 摘要 本系统基于ARM7LPC2210、温度传感器DS18B20、液晶屏LCD1302、LED显示灯,开关等组成,系统可以实现对温度的初值设定、环境温度监控以及当温度超限时,产生报警LED闪烁)同时通过串口通信发送上位机显示,从而实现对温度的监控。该系统硬件结构简单,监控温度范围大,精度高,能广泛应用于对温度控制要求较高的各种场合,市场前景广阔。关键词:LPC2210 DS18B20 LCD 1602 温度超限报

2、警 目录 1引言.3 2系统总体方案.3 3硬件设计 3.1DS18B20温度传感器的设计.4 3.2LCD1602液晶显示屏的设计.5 3.3串口设计.6 3.4程序硬件接线图.6 4程序代码设计及调试仿真 4.2 液晶显示功能模块.7 4.3 串口通信模块.8 4.4主函数功能模块.9 6设计结果演示.9-10 7设计体会.111 引言近年来随着科技的飞速发展,嵌入式的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的嵌入式应用系统中,嵌入式往往作为一个核心部件来使用,仅嵌入式方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。温度是一种最基本的环境参数,人

3、们生活与环境温度息息相关,在工业生产过程中需要实时测量温度,在工业生产中也离不开温度的测量,因此研究温度的测量方法和控制具有重要的意义。DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器,通过此次项目设计,可以在原有的理论基础上,更加深入的了解传感器的工作原理特别是DS18B20温度传感器的工作原理,同时提高我们的实践动手能力以及逻辑思维能力,特别是拓宽了对ARM控制器的使用视野。本系统采用LPC2210系列ARM芯片和可编程串行I/O接口芯片DS18B20为中心器件来设计温度监测系统,实现了设计一个数字温度采集并监控的系统,利用LCD液晶屏和上位机

4、显示温度,并具有温度超限报警功能,该系统能广泛应用于各种行业,例如智能家居系统,化工厂和酿酒厂,市场前景广阔,具有很高的实用价值。 2 系统的总体方案系统初始化后,LCD和上位机上显示当前室内温度 ,通过功能键能实现对温度初值的设定,如果温度超过预先设定的温度值,LED灯会闪烁提示温度超限,上位机会显示警告,提醒值班人员检查温度异常的原因。1. 液晶显示模块LCD1602资料介绍 使用LCD液晶屏1602作为温度的显示,LCD 液晶显示器的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。显示清晰,

5、实现功能全,如果利用数码管显示温度,则不能顺利显示英文而且还会用到锁存器,这会导致系统更加繁杂,综合各种考虑,我们选用1602液晶显示。此外,此液晶的功耗小,显示内容丰富。如果要想液晶显示汉字,我们可以选择另外一种芯片LCD12864。1602液晶模块内部的发生()已经存储了160个不同的字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,大写的英文字母“A”的代码是B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。1602采用标准的16脚接口,其中:第1脚:VSS为第2脚:VCC接5V电源正极第3脚:

6、V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。第4脚:RS为选择,高电平1时选择、低电平0时选择。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时 执行指令。第714脚:D0D7为8位双向数据端。 第1516脚:或背灯电源。15脚背光正极,16脚背光负极。 LCD1602最重要的部分是第4,5,6三个引脚。这三个引脚决定了数据的读和写,我们写程序的重点是控制这三个引脚的状态2. 温度传感器设计 DS18B20数字温度传感器,该产品采用DALLAS公司生产的

7、DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。由于DS18B20性能已经够好,控制起来也比较方便,故我们直接选用DS18B20作为温度传感器。 在仿真图中的引脚安装 DS13820采用独特的单口接线方式传输,在与微处理器连接时只需要一条口线即可实现微处理器与DS1380的双向通信,不需要外围元件,外加电压范围是3.05.5V,测量温度范围是-55125.在-10到+85的范围内的固有分辨率是0.5,测量结果以9位到12位的数字量方式直接输出数字信号,以“一线总线”方式传给CPU,同时可传送CRC校验码,具

8、有极强的抗干扰能力,适用于环境恶劣的现场温度测量。由于它的这种特性,我们只需要把它的引脚与ARMP1.25相连即可,VCC接电源,GND接地(如在仿真中的接线图)整个操作主要包括三个关键过程:主机搜索DS18B20序列号、启动在线DS18B20做温度转换、读取温度值。DS18B20严格遵循单总线协议,工作时,主机先发一复位脉冲,使总线上的所有DS18B20都被复位,接着发送ROM操作指令,使序列号编码匹配的DS18B20被激活,准备接受下面的RAM访问指令。RAM访问指令控制选中的DS18B20工作状态,完成整个温度转换,读取等工作。在ROM命令发送之前,RAM命令命令不起作用。3. 串口的设

9、计 LPC2210含有两个符合工业标准的异步串行口,UART0和UART1。 系统仿真接线图RXD和TXD分别连接ARM的P0.1和P0.0 上位机的RXD和也和ARM的P0.0相连。系统报警模块用一个LED灯模拟,当出现状况时,LED灯会不停的闪烁,达到报警的目的。 系统硬件总设计图4软件代码设计及调试仿真结果软件设计时用到了模块化设计思想,代码包含了若干个头文件,包括lpc2100.h ,stdio.h ,ds18b20.h, lcd.h,uart.h下面我们截取重要的几个头文件程序进行并分析LCD液晶模块程序设计(部分)void ChkBusy()IO0DIR=0xf0;while(1)

10、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;/再送数IO0SET=en;IO0CLR=en;void WrDat(uint8 dat)ChkBusy();IO0SET=rs;IO0CLR=rw;IO0CLR=IO0CLR|0xff00;/先清零IO0SET=dat<<

11、8;/再送数IO0SET=en;IO0CLR=en;void lcd_init(void)WrOp(0x38);WrOp(0x06);WrOp(0x0c);第一个函数作用是监测lcd是否忙碌,第二个函数是用来写数据的,rs,rw,en的状态很重要,是正确读数据的关键,第三个函数是写指令的函数,和前一个一样,rs,rw,en状态是很关键的,最后一个是lcd的初始化函数,其他函数在这里不做介绍。UART串口程序设计(部分)void UART0_Init(void) uint Fdiv; U0LCR = 0x83;/ 8位数据,无效验,一个停止位, 除数锁存访问(DLAB = 1,可设置波特率) F

12、div = (Fpclk / 16) / UART_Baud; / 设置波特率, Fpclk= U0DLM = Fdiv / 256; / 设置分频寄存器高字节 U0DLL = Fdiv % 256; / 设置分频寄存器低字节 /U0DLL=72;/ 12MHz 或 11.0592MHz /U0DLL=97;/ 15MHZ U0LCR = 0x03;uint8 UART0_GetByte (void) uint8 rcv_dat;while (U0LSR & 0x01) = 0); / 等待接收标志置位rcv_dat = U0RBR; / 读取数据return (rcv_dat);vo

13、id UART0_SendByte(uint8 data) U0THR = data; / 发送数据 while (U0LSR&0x20)=0); / 等待数据发送完毕 0x40void UART0_SendStr(uint8 const *str) while(1) if(*str='0') break; UART0_SendByte(*str+); / 发送数据 void UART0_GetStr(uint8 *s, uint32 n) for ( ; n>0; n-) *s+ = UART0_GetByte(); void UART0_SendChar(in

14、t ch) if (ch = 'n') while (!(U0LSR & 0x20); U0THR = 0x0D; while (!(U0LSR & 0x20); U0THR = ch;主函数程序设计(部分)#define UART_Baud 9600#include "DS18B20.h"#include "LCD.h"#include "UART.h"#define LED1(1<<17)/ uint16 set_temp=150; /设定温度为15度,超过的话则报警,串口出现warni

15、ng LED1开始闪烁。uint16 measure_temp=0;void _irq IRQ_T0(void)T0TCR = 0;/ 计数器使能 measure_temp=ReadTemp();ConvertTemperature(measure_temp); / 温度转换 if(measure_temp>set_temp) IO1CLR |= LED1;Delayms(100);IO1SET|=LED1;Delayms(100); UART0_SendStr("WARNING!! TOO HIGH!! "); DisText(0xc4,Tp);else if(me

16、asure_temp<100) / 小于10度,则报警IO1CLR |= LED1;Delayms(100);IO1SET|=LED1;Delayms(100); UART0_SendStr("WARNING!! TOO LOW!"); DisText(0xc4,Tp);else UART0_SendStr(" NORMOL!");UART0_SendStr(Tp);/ 发送温度UART0_SendStr("rn");/ 回车DisText(0xc4,Tp);/ 显示当前温度T0IR=0x02;/清除MR1中断标志VICVectAddr=0x00;/通知VIC中断处理结束T0TCR = 1;/ 计数器使能 在以上程序是环境温度起判断作用的关键,设定安全温度为15和10,当环境温度高于15或者低于

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论