当前位置:文档之家› 8路温度巡检系统

8路温度巡检系统

图7温度检测模块电路图
三、仿真结果
本系统程序包括主程序、时钟复位子程序、数码管显示子程序、温度检测子程序等。主程序用于系统初始化,子程序调度等。复位子程序用来使计数恢复初始状态,数码管显示子程序用来显示温度和温度点,温度检测子程序用来检测对哪一点的温度值。
在温度点1的软件仿真图
在温度点2的软件仿真图
case 3:P20=1;P21=1;P22=1;P23=0;
if(Nflag==1)P0=disp[10];else P0=0x00;break;
default:break;
}
P1=disp[num+1];
delay(20);
if(++i>3)i=0;
}
void main()
{
IE=0x8b;
TMOD=0x11;
return sflag;
}
#include "main.h"
#include "ds18b20.h"
bit timeflag=0;
uint8 timecount=0,cyclecount=0;
uint8 code disp[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x40};
电路设计过程及参数确定比较烦琐,我在算时会遇到很多问题,有时实在算不出来了就想放弃,但很快自己会意识到那是一种错误的想法,所以自己会给自己鼓劲继续往下进行,当算到最后时便会有很大的成就感,这强烈的激起了我学习的兴趣,我想这次课程设计对我以后的专业课程学习将有很大帮助。
这里,我首先要感谢我的指导老师,他细心地帮我解决了一系列问题,帮助我成功地完成了这次实验设计。其次,我还要感谢我的同学们,帮助我更好地完成设计了此次课程设计。
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
TH1=(65536-8000)/256;
TL1=(65536-8000)%256;
TR1=1;
IT0=1;
while(1)
{
if(timeflag)
{
timeflag=0;
Nflag=read_temperature(temp,rom[num]);
num++;
if(num>7)
图5温度显示电路图
图6温度点显示电路图
(4)温度检测模块
本系统采用的是单片机基于数字温度传感器DS18B20的系统。,对于温度信号的采集具有大范围、高精度的特点。DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。DS18B20的最大特点之一采用了单总线的数据传输,节约了单片机有限的I/O资源,由数字温度计DS1820和微控制器AT89C51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。通过数码管能够实时显示8路温度,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
(2)时钟复位模块
在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,52芯片便循环复位。复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的000H处开始运行程序。复位是外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。当时钟频率选用12MHz时,C1,C2取22pF,R1为10kΩ,C3为10uf。复位操作不会对内部RAM有所影响。
{
uint8 temp;
uint16 temp1;
uint8 i=8;
bit sflag=0;//负数标志位
reset_ds18b20();
wr_byte_ds18b20(0x55)0(*rom++);
}
wr_byte_ds18b20(0xbe);
uint8 temp[3];
uint8 num=0;
uint8 rom[][8]={{0x28,0x30,0xc5,0xb8,0x00,0x00,0x00,0x8e}, //8个ds18b20的rom
{0x28,0x31,0xc5,0xb8,0x00,0x00,0x00,0xb9},
{0x28,0x32,0xc5,0xb8,0x00,0x00,0x00,0xe0},
{0x28,0x37,0xc5,0xb8,0x00,0x00,0x00,0x0b}};
bit Nflag;
void delay(uint16del)
{
while(del--);
}
void display(uint8 *temp)
{
uint8 i;
P20=1;P21=1;P22=1;P23=1;
switch(i)
赣南师院
物理与电子信息学院
专业技能测试设计报告书
姓名:赖新
班级:电子信息工程09级
学号:090802016
指导老师:刘小燕
时间:2011年12月21日
论文题目
8路温度巡检系统
课程论文
要求
1、设某粮库有8个粮仓,粮仓的温度变化范围为-30℃~+50℃。
2、设计一个系统对这8个粮仓的温度进行巡回检测并显示,每路显示2
秒。
3、要求温度的检测精度为±0.1℃。用Proteus仿真。不用做出实物。
设计过程
(包括:设计方案、电路分析、仿真结果、设计收获和体会、元件清单)
一、设计方案
本方案以ATC89C52单片机系统为核心,对多点的温度进行实时控制巡检。各检测单元(从机)能独立完成各自功能,根据主控机的指令对温度进行实时或定时采集,测量结果不仅能在本地储存、显示,而且可以利用单片机串行口,通过总线及通信协议将将采集的数据传送到主控机,进行进一步的分析、存档、处理。主控机负责控制指令发送,控制各个从机进行温度采集,收集测量数据,并对测量结果(包括历史数据)进行整理、显示和打印。主控机与各从机之间能够相互联系、相互协调,从而达到了系统整体统一和谐的控制效果。
uint8 rd_byte_ds18b20()
{
uint8 i=8,temp=0;
while(i--)
{
DQ=1;
DQ=0;
temp>>=1;
DQ=1;
if(DQ) temp|=0x80;
delay(6);
}
DQ=1;
return temp;
}
bit read_temperature(uint8 *p,uint8 *rom)
{
tempH++;
}
}
temp=(tempL>>4)|(tempH<<4);
*p++=temp/10;
*p++=(temp%10);
temp=tempL&0x0f;
*p=temp*5/8;
reset_ds18b20();
wr_byte_ds18b20(0xcc);
wr_byte_ds18b20(0x44);
二、电路分析
系统电路如下:
(1)控制器模块
本系统控制器芯片采用AT89S52单片机,其管脚图如图所示。
图3 AT89S52管脚图
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。AT89S52的主要特性是:与MCS-51单片机产品兼容;8K字节在系统可编程Flash存储器;1000次擦写周期;三级加密程序存储器;32个可编程I/O口线;三个16位定时器/计数器;8个中断源;全双工UAR串行通道;低功耗空闲和掉电模式;掉电后中断可唤醒;有看门狗定时器;双数据指针。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
{0x28,0x33,0xc5,0xb8,0x00,0x00,0x00,0xd7},
{0x28,0x34,0xc5,0xb8,0x00,0x00,0x00,0x52},
{0x28,0x35,0xc5,0xb8,0x00,0x00,0x00,0x65},
{0x28,0x36,0xc5,0xb8,0x00,0x00,0x00,0x3c},
四、元器件清单
表1系统元器件清单
器件
数量
器件
数量
AT89S52
1
电阻(10k)
9
4段数码管
1
按键开关
相关主题