测控系统课程说明书曾强西华大学邓成中.docx
- 文档编号:8204161
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:32
- 大小:519.59KB
测控系统课程说明书曾强西华大学邓成中.docx
《测控系统课程说明书曾强西华大学邓成中.docx》由会员分享,可在线阅读,更多相关《测控系统课程说明书曾强西华大学邓成中.docx(32页珍藏版)》请在冰豆网上搜索。
测控系统课程说明书曾强西华大学邓成中
目录
摘要1
1绪论2
1.1课题研究的背景和意义2
1.2本设计的主要要求2
2系统方案设计与选型3
3主要硬件介绍3
3.1DS18B203
3.2AT89C516
3.3LCD16027
3.5DS13027
3.624C02C8
4软件介绍8
4.1Proteus8
4.2Keil8
5硬件设计9
5.1温度采集电路9
5.2单片机最小系统10
5.3按键输入电路11
5.4报警电路12
5.5LCD显示电路13
5.624C02存储电路14
5.7DS1302时钟电路15
5.8串行通讯电路16
6软件设计16
6.1功能概述16
6.2系统软件流程图16
7实验结果:
17
7.1温度显示仿真17
7.2温度存储与串行通讯18
总结20
参考文献21
致谢22
附录A附录内容名称I
摘要
本文基于DS18B20设计了一种多路温度数据采集系统,系统主要由单片机电路和一组DS18B20数字传感器构成,同时具有温度显示、数据存储和串行通讯模块。
软件方面,我们采用keil软件对程序进行编写以及调试,硬件方面,我们通过Proteus软件对硬件电路进行仿真以及测试,该系统结构简单,功耗较低,测温范围为-55℃~+125℃,通过LCD1602显示所测温度。
同时,可以实现高低温报警,若所测温度超出设定范围,相关器件就会自动报警。
我们也可以通过对按键的处理来改变显示不同通道的温度。
我们还可以把测得的温度存储到24C02芯片中,并且可以实现串行通讯,把温度传送到上位机。
该系统硬件分为3部分:
DS18B20温度测量模块、单片机模块、温度显示模块、数据存储模块、上位机与单片机通讯接口电路。
系统的测温精度可以达到±0.5℃,并且能稳定的与单片机和上位机通讯。
关键词:
DS18B20、多路温度测控、高低温报警、串行通讯
1绪论
1.1课题研究的背景和意义
在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。
其中,温度控制也越来越重要。
在工业生产的很多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。
采用单片机对温度进行控制不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而大大提高产品的质量和数量。
因此,单片机对温度的控制问题是工业生产中经常会遇到的控制问题。
目前应用的温度检测系统大多采用由模拟温度传感器、多路模拟开关、A/D转换器及单片机等组成的传输系统。
这种温度采集系统需要大量的测温电缆,才能把现场传感器的信号送到采集卡上.安装和拆卸繁杂,成本也高。
同时线路上传送的是模拟信号,易受干扰和损耗,测量误差也比较大,不利于控制者根据温度变化及时做出决定。
针对这种情况,本文提出一种采用数字化单总线技术的温度采集系统,并利用Proteus和Keil软件对设计电路进行综合虚拟仿真,实现了温度实时测量和显示。
1.2本设计的主要要求
设计一多路温度测控系统,能实现8路及以上的温度点测量和实时显示,可根据设定的上下限输出报警及显示,具有RS485或RS232总线接口。
设计完整的电路原理图和编写相关程序。
用MCS-51系列单片机或其它CPU作为控制器设计一完整测控仪器,包括以下内容:
温度可采用标准系列热电耦或标准热电阻或DS18B20;
用LCD1602显示或用LED显示;
用输入按键可以暂停、转换、通道的显示;
日历时钟显示;
数据记录存贮功能
RS485或RS232通讯
PROTEUS仿真以上一种功能
2系统方案设计与选型
系统主要由硬件和软件两大部分构成,当接收到系统发出的温度转换命令后,DS18B20开始进行温度转换操作并把转化后的结果放到16位暂存寄存器中的温度寄存器内,然后与系统进行数据通信,系统将温度读出并驱动LCD显示。
如果温度值低于设定下限值或高于设定上限值,则自动启动报警装置。
同时,基于本设计的设计要求,存储芯片选用了24C02C,时钟芯片选用了DS1302,显示模块选择的是LCD显示。
由于DS18B20单总线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。
该系统结构图
图1、系统结构图
3主要硬件介绍
3.1DS18B20
DSl820数字温度计是美国Dallas公司生产的数字温度计,它提供9位(二进制)温度读数,指示器件的温度。
信息经过单线接口送入DSl8B20或从DSl8B20送出,因此从主机CPU到DSl8B20仅需一条线。
DSl820的电源可以由数据线本身提供而不需要外部电源。
因为每一个DSl820在出厂时已经给定了唯一的序号,因此任意多DSl820可以存放在同一条单线总线上。
这允许在许多不同的地方放置温度敏感器件。
DSl820的测量范围从-55到+125,增量值为0.5,可在ls(典型值)内把温度变换成数字。
每一个DSl820包括一个唯一的64位长的序号,该序号值存放在DSl820内部ROM(只读存贮器)中。
开始8位是产品类型编码(DSl820编码均为10H)。
接着的48位是每个器件唯一的序号,最后8位是前面56位的CRC(CRC=X8+X5+X4+1)码。
下图为DS18B20的实物图。
图2、DS18B20
图3、DS18B20内部结构
温度/数据关系(表1)
根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:
每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
图4、DS18B20内部指令
3.2AT89C51
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
ATC9C51实物图如图3。
主要参数如下:
·与MCS-51产品指令系统完全兼容
·4k字节可重擦写Flash闪速存储器
·1000次擦写周期
·全静态操作:
0Hz-24MHz
·三级加密程序存储器
·128×8字节内部RAM
·32个可编程I/O口线
·2个16位定时/计数器图5、单片机
·6个中断源
·可编程串行UART通道
·低功耗空闲和掉电模式
3.3LCD1602
由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。
因此,液晶显示器画质高且不会闪烁。
数字式接口液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
体积小、重量轻液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
功耗低相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
LCD1602的实物图如图4,主要参数如下:
·显示容量:
16×2个字符
·芯片工作电压:
4.5—5.5V
·工作电流:
2.0mA(5.0V)
·模块最佳工作电压:
5.0V
·字符尺寸:
2.95×4.35(W×H)mm
图6
3.5DS1302
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
X1,X232.768kHz晶振引脚
GND/RST地/复位
SCLK串行时钟
VCC1电池引脚
VCC2主电源引脚
3.624C02C
24C02是低工作电压的2K位串行电可擦除只读存储器,内部组织为256个字节,每个字节8位,该芯片被广泛应用于低电压及低功耗的工商业领域。
主要特性
工作电压:
1.8V~5.5V
输入/输出引脚兼容5V
应用在内部结构:
256x8(2K)
二线串行接口
输入引脚经施密特触发器滤波抑制噪声
双向数据传输协议
兼容400KHz(1.8V,2.5V,2.7V,3.6V)
支持硬件写保护
高可靠性:
读写次数:
1,000,000次–数据保存:
100年
4软件介绍
4.1Proteus
Proteus是英国Labeenterelectronics公司研发的EDA工具软件。
Proteus不仅是模拟电路、数字电路、模/数混合电路的设计与仿真平台,更是目前世界最先进、最完整的多种型号微控制器系统的设计与仿真平台。
它真正实现了在计算机上完成从原理图设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证到形成PCB的完整电子设计与研发过程。
Proteus产品系列也包含了革命性的VSM技术,可以对基于微控制器的设计连同所有的外围电子器件一起仿真。
4.2Keil
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
5硬件设计
系统硬件设计包括温度采集设计、单片机控制电路设计、通信接口电路设计。
采用数字温度芯片DS18B20测量温度,输出信号全数字化。
便于单片机处理及控制,省去传统的测温方法的很多外围电路。
且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。
DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和单片机构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。
这样,测温系统的结构就比较简单,体积也不大。
采用DS1302时钟芯片可以方便地得到系统时间并且输出方便。
采用了24C02这种应用广泛的芯片进行数据存储。
采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。
该系统利用单片机控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。
下面分别介绍了各个硬件部分的电路连接图。
5.1温度采集电路
采用DS18B20一线制芯片,其中1脚接地,3接电源,2为数据传输线,每个传感器有一个独立的光刻地址,用于区分数据传输次序。
理论上说,这个电路最多能连接8个DS18B20,但是要连接更多,DQ端需要外加驱动电源。
图7.温度采集电路
5.2单片机最小系统
单片机最小系统包括51系列单片机、晶振电路、复位电路。
如下所示:
图8.单片机最小系统
5.3按键输入电路
按键输入如下,其中按下“开始/暂停”按钮LCD开始显示通道的温度,“通道+”用于向上切换测量通道,“通道-”用于向下切换测量通道。
图9.按键输入电路
5.4报警电路
如下所示,LED-H为当高限报警时报警,LED-L为当低限报警时的报警。
图10.报警电路
5.5LCD显示电路
本设计中,LCD只用了四线,实现四线显示。
图11.LCD显示电路
5.624C02存储电路
图12.24C02电路
5.7DS1302时钟电路
图13.DS1302电路
5.8串行通讯电路
图14.串行通讯电路
图中模拟了一个上位机和一个RS232串行接口。
6软件设计
6.1功能概述
本系统的软件由C语言编写,程序的主要功能是负责温度的实时测量、显示、存储并读出存储器中的当前温度值给上位机。
6.2系统软件流程图
图15.系统软件流程图
7实验结果:
7.1温度显示仿真
图中可以看出,LCD第一行显示“027.0”表示0通道的温度为27.0度,第二行显示“22:
04:
19”表示测量温度时的时间。
图16.温度显示仿真
7.2温度存储与串行通讯
如图所示,左边对话框为24C02内存空间,其中“00001B00”意义是“00”为0通道,“00”为正温度,“1B”为十六进制温度(27),“00”为小数部分为0。
右边对话框中模拟的是上位机显示,也是十六进制表示。
图17.温度存储与串行通讯
总结
经过两周多的设计以及调试,实现实验的部分设计要求,能读出并显示DS18B20采集的温度,并且能够实现高低温报警,能够实现温度数据的存储和串行通讯,能通过对按键的处理来切换需要显示的通道温度,使得1条总线上可以读取到8个温度传感器的温度值并将其依次显示在液晶屏幕上,同时液晶屏幕可以清楚显示温度传感器温度值的具体时间。
我在这为期两周多的设计性实验中,我们在老师的指导下,有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。
我希望自己能在今后的深入学习中设计出更好的,力求创新,努力地提升自己,寻求更大的进步!
最后用一句话来结束吧。
“实践是检验真理的唯一标准”。
参考文献
[1]DS18B20、lcdLM1602说明书、DS1302说明书、24C02说明书;
[2]黄惟公等单片机原理与应用技术西安电子科大出版社2007;
[3]周润景等基于PROTEUS的电路及单片机系统设计与仿真北航出版社2006.5
[4]常敏等单片机应用程序开发与实践电子工业出版社2009;
[5]马建国、孟宪元.电子设计自动化技术基础.清华大学出版,2004
[6]姜威.实用电子系统设计基础,2008
[7]姜威.单片机系统的PROTEUS设计与仿真,2007
[8]陈小忠等单片机接口技术实用子程序.北京:
人民邮电出版社2005.9
[9]徐爱钧,彭秀华编著KeilCx51V7.0单片机高级语言编程与μVision2应用实践北京:
电子工业出版
致谢
为期两周的课程设计也接近了尾声。
此次课程设计的完成,凝聚着许多人的关怀和帮助。
首先要感谢我敬爱的指导教师邓成中、刘克福。
他们在学术上的精心指导和严格要求,在系统研究和调试过程中给予的及时帮助。
在完成设计期间给我许多帮助和建议,他们兢兢业业、对工作认真负责的态度为我们做出了好的表率,时刻鞭策着我们向他们学习。
这些使我的课程设计得以顺利完成,并激励着我们在今后的人生道路上不断开拓进取,勇往直前。
在此,我再一次对老师的培养和关怀表示诚挚的谢意!
同时,非常感谢我的同学们,在与他们共同的学习、工作、生活过程中,他们给予了我及时的帮助和建议,开拓了我的思路。
我对他们致以真诚的谢意和衷心的祝福。
最后,向所有帮助过我的人致以最诚挚的谢意!
附录A电路原理图
附录B主要程序
IIC驱动电路:
#include"iic.h"
ucharslaw=0xa0;
ucharslar=0xa1;
voiddelay(ucharn)
{
uchari;
for(i=0;i { nop; } } /*********************************** 功能: 毫秒延时函数 参数: 当晶振为11.0592时x为毫秒数 ********************************/ voiddelayms(unsignedintx) { ucharj; while(x--) { for(j=0;j<113;j++){;} } } /***********************************功能: 起始信号函数 说明: ***********************************/ voidsta(void) { SDA=0; SCL=1; SDA=1; delay(4); SDA=0; SCL=0; delay(4); } /*********************************** 功能: 停止信号函数 说明: ***********************************/ voidstop() { SDA=0;//SDA初始化为低电平“0”_n SCL=1;/*这两句顺序不可以改变*/ delay(4); SDA=1; delay(4); } /*发送应答位函数*/ voidack() { SDA=0; SCL=1; nop; SCL=0; SDA=1; } /*发送应答非位函数*/ voidnack() { SDA=1; SCL=1; nop; SCL=0; SDA=0; } /***********************************功能: 应答检查 参数: 返回检查值=1表示返回异常 说明: 每次发送一个数据后,从即会发送一个0的信号应答 这里先让SDA=1;没有返回值则一直=1应答异常 ***********************************/ bitcack() { bitrdflag; SDA=1;//先释放SDA SCL=1; nop;nop; if(SDA==1) { rdflag=1; } else { rdflag=0; } SCL=0; returnrdflag; } /*********************************** 功能: 写入当前位置的一个字节的函数写入顺序7--0; 说明: 调用此函数前使用sta(void);已经让SCL为0 在上升沿写入数据 ***********************************/ voidWrbytCurrent(uchardat) { uchari; for(i=0;i<8;i++) { nop; SDA=(bit)(dat&0x80); nop; SCL=1; dat<<=1; nop;nop; SCL=0; } } /*********************************** 功能: 在address写入一个字节的函数写入位顺序7--0; 说明: 调用此函数前使用sta(void);已经让SCL为0 在上升沿读取数据 ***********************************/ voidwrbyt(ucharaddress,uchardat) { bitflag; do { sta();//开始 WrbytCurrent(slaw); flag=cack();//应答 }while(flag==1); WrbytCurrent(address); flag=cack();//应答 while(flag==1); WrbytCurrent(dat); flag=cack();//应答 while(flag==1); stop(); delayms(5); } voidWriteSetN(ucharaddress,ucharwr[],ucharn) { uchari; bitflag; do { sta();//开始 WrbytCurrent(slaw);//器件地址 flag=cack();//应答 }while(flag==1);//一直发送到应答成功 WrbytCurrent(address);//数据地址 flag=cack();//应答 while(flag==1); for(i=0;i { WrbytCurrent(wr[i]); flag=cack();//应答 while(flag==1); } stop(); delayms(5); } /*********************************** 功能: 读取当前位置的一个字节的函数读取顺序7--0; 说明: 调用此函数前使用sta(void);已经让SCL为0 在下降沿读取数据 ***********************************/ ucharRdbytCurrent() { uchardat,i; for(i=0;i<8;i++) { SCL=1; nop;nop; dat=(dat<<1)|SDA; SCL=0; nop;nop; } returndat; } ucharReadByte(ucharaddress) { uchardat; sta();//开始 WrbytCurrent(slaw);//器件地址 ack();//应答 WrbytCurrent(address);//写入数据地址 ack(); sta();//应答 WrbytCurrent(slar);//器件地址 ack(); dat=RdbytCurrent();//读取数据 nack(); stop(); delayms(5); returndat; } Timer.c驱动函数: #include #include"const.h" #include"Timer.h" bitg_systTime2Ms=0; bitg_time10Ms=0; bitg_time50Ms=0; voidTimer0_c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测控系统课程说明书曾强 西华大学 邓成中 测控 系统 课程 说明书 西华 大学