51单片机的多路温度采集控制系统
多路温度采集及监控系统的设计与实现,温度采集,8051F35.
多路温度采集及监控系统的设计与实现,温度采集,8051F3520,CAN总线,A/D转换1引言温度是生产过程和科学试验中普遍且重要的物理参数。
在工业生产中,为了高效生产,必须对生产过程中的主要参数,如温度、压力、流量、速度等进行有效控制。
其中温度控制在生产过程中占有相当大的比例。
准确地测量和有效地控制温度是优质、高产、低耗和安全生产的主要条件。
2系统概述整个温度控制系统主要由计算机控制系统(上位机)、单片机测控系统(下位机)、温度传感器组、功率加热系统等部分组成。
系统采用了模块化的设计思想1 引言温度是生产过程和科学试验中普遍且重要的物理参数。
在工业生产中,为了高效生产,必须对生产过程中的主要参数,如温度、压力、流量、速度等进行有效控制。
其中温度控制在生产过程中占有相当大的比例。
准确地测量和有效地控制温度是优质、高产、低耗和安全生产的主要条件。
2 系统概述整个温度控制系统主要由计算机控制系统(上位机)、单片机测控系统(下位机)、温度传感器组、功率加热系统等部分组成。
系统采用了模块化的设计思想,组建方式灵活,并可利用多块单片机测控系统组合的方法增加测量点,具有良好的扩展性。
系统结构框图如图1所示。
温度测量采用高精度的温度传感器PT100获得物体当前温度,经过低功耗、低输入失调电压、线性好的OP07A进行信号放大,送至8051F350内部高速率24位A/D转换器,根据系统设定的目标温度(由上位机发送)和控制范围,通过6路PWM控制加热器的工作状况,使物体达到目标温度并且保持恒温状态。
同时可以利用单片机内部的Flash存储器把各通道设定的温度、系统参数存储起来。
当系统断电或复位后,可以继续运行,增强了系统的抗干扰性能。
3 系统硬件设计3.1 主控电路温度采集监控系统的主控电路采用高性能、功能强大的8051F350。
8051F350是由Cygnal公司推出的完全集成的混合信号系统级芯片(SoC),具有CIP-51微控制器内核,与MCS51指令集完全兼容;机器周期由标准的12个系统时钟降为1个系统时钟周期,处理能力大大提高,峰值速度可达25MI/s;内部集成了构成单片机数据采集或控制系统所需要的几乎所有模拟和数字外设及其他功能元件(包括PGA、ADC、DAC、电压比较器、电压基准、温度传感器、SMBus/I2C、UART、SPI、定时器、可编程计数器/定时器阵列、内部振荡器、看门狗定时器以及电源监视器等)。
51单片机多点温度采集系统程序清单
#include <AT89X52.h>#include <Intrins.h>#define DATA P1 //1602驱动端口//ROM操作命令#define READ_ROM 0x33 //读ROM#define SKIP_ROM 0xCC //跳过ROM#define MATCH_ROM 0x55 //匹配ROM#define SEARCH_ROM 0xF0 //搜索ROM#define ALARM_SEARCH 0xEC //告警搜索//存储器操作命令#define ANEW_MOVE 0xB8 //重新调出E^2数据#define READ_POWER 0xB4 //读电源#define TEMP_SWITCH 0x44 //启动温度变换#define READ_MEMORY 0xBE //读暂存存储器#define COPY_MEMORY 0x48 //复制暂存存储器#define WRITE_MEMORY 0x4E //写暂存存储器//数据存储结构typedef struct tagTempData{unsigned char btThird; //百位数据unsigned char btSecond; //十位数据unsigned char btFirst; //个位数据unsigned char btDecimal; //小数点后一位数据unsigned char btNegative; //是否为负数}TEMPDATA;TEMPDATA m_TempData;//引脚定义sbit DQ = P2^7; //数据线端口sbit RS= P2^0;sbit RW= P2^1;sbit E= P2^2;//DS18B20序列号,通过调用GetROMSequence()函数在P1口读出(读8次)const unsigned char code ROMData1[8] = {0x28, 0x33, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0xD7};const unsigned char code ROMData2[8] = {0x28, 0x30, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0x8E};//U2const unsigned char code ROMData3[8] = {0x28, 0x31, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0xB9};//U3const unsigned char code ROMData4[8] = {0x28, 0x32, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0xE0};//U4const unsigned char code ROMData5[8] = {0x28, 0x34, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0x52};//U5const unsigned char code ROMData6[8] = {0x28, 0x35, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0x65};//U6const unsigned char code ROMData7[8] = {0x28, 0x36, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0x3C};//U7const unsigned char code ROMData8[8] = {0x28, 0x37, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0x0B};//U8//判断忙指令void Busy(){DATA = 0xff;RS = 0;RW = 1;while(DATA & 0x80){E = 0;E = 1;}}//写指令程序void WriteCommand(unsigned char btCommand) {Busy();RS = 0;RW = 0;E = 1;DATA = btCommand;E = 0;}//写数据程序void WriteData(unsigned char btData){Busy();RS = 1;RW = 0;E = 1;DATA = btData;E = 0;}void Clear(){WriteCommand(1);}//初始化void Init(){WriteCommand(0x0c); //开显示,无光标显示WriteCommand(0x06); //文字不动,光标自动右移WriteCommand(0x38); //设置显示模式:8位2行5x7点阵}//显示单个字符void DisplayOne(bit bRow, unsigned char btColumn, unsigned char btData, bit bIsNumber) {if (bRow) WriteCommand(0xc0 + btColumn);else WriteCommand(0x80 + btColumn);if (bIsNumber) WriteData(btData + 0x30);else WriteData(btData);}//显示字符串函数void DisplayString(bit bRow, unsigned char btColumn, unsigned char *pData) {while (*pData != '\0'){if (bRow) WriteCommand(0xc0 + btColumn);//显示在第1行else WriteCommand(0x80 + btColumn); //显示在第0行WriteData(*(pData++)); //要显示的数据btColumn++; //列数加一}}//延时16us子函数void Delay16us(){unsigned char a;for (a = 0; a < 4; a++);}//延时60us子函数void Delay60us(){unsigned char a;for (a = 0; a < 18; a++);}//延时480us子函数void Delay480us(){unsigned char a;for (a = 0; a < 158; a++); }//延时240us子函数void Delay240us(){unsigned char a;for (a = 0; a < 78; a++); }//延时500ms子函数void Delay500ms(){unsigned char a, b, c;for (a = 0; a < 250; a++)for (b = 0; b < 3; b++)for (c = 0; c < 220; c++);}//芯片初始化void Initialization(){while(1){DQ = 0;Delay480us(); //延时480usDQ = 1;Delay60us(); //延时60usif(!DQ) //收到ds18b20的应答信号{DQ = 1;Delay240us(); //延时240usbreak;}}}//写一个字节(从低位开始写)void WriteByte(unsigned char btData){unsigned char i, btBuffer;for (i = 0; i < 8; i++){btBuffer = btData >> i;if (btBuffer & 1){DQ = 0;_nop_();_nop_();DQ = 1;Delay60us();}else{DQ = 0;Delay60us();DQ = 1;}}}//读一个字节(从低位开始读) unsigned char ReadByte(){unsigned char i, btDest;for (i = 0; i < 8; i++){btDest >>= 1;DQ = 0;_nop_();_nop_();DQ = 1;Delay16us();if (DQ) btDest |= 0x80;Delay60us();}return btDest;}//序列号匹配void MatchROM(const unsigned char *pMatchData) {unsigned char i;Initialization();WriteByte(MATCH_ROM);for (i = 0; i < 8; i++) WriteByte(*(pMatchData + i)); }//得到64位ROM序列(在P1口显示,必须与Proteus联调且在单步调试下才能得到) /*void GetROMSequence(){unsigned char i;Initialization();WriteByte(READ_ROM);for (i = 0; i < 8; i++)P1 = ReadByte();}*///读取温度值TEMPDATA ReadTemperature(){TEMPDATA TempData;unsigned int iTempDataH;unsigned char btDot, iTempDataL;static unsigned char i = 0;TempData.btNegative = 0; //为0温度为正i++;if (i == 9) i = 1;Initialization();WriteByte(SKIP_ROM); //跳过ROM匹配WriteByte(TEMP_SWITCH); //启动转换Delay500ms(); //调用一次就行Delay500ms();Initialization();//多个芯片的时候用MatchROM(ROMData)换掉WriteByte(SKIP_ROM)switch (i){case 1 : MatchROM(ROMData1); break; //匹配1case 2 : MatchROM(ROMData2); break; //匹配2case 3 : MatchROM(ROMData3); break; //匹配3case 4 : MatchROM(ROMData4); break; //匹配4case 5 : MatchROM(ROMData5); break; //匹配5case 6 : MatchROM(ROMData6); break; //匹配6case 7 : MatchROM(ROMData7); break; //匹配7case 8 : MatchROM(ROMData8); break; //匹配8}//WriteByte(SKIP_ROM); //跳过ROM匹配(单个芯片时用这句换掉上面的switch)WriteByte(READ_MEMORY); //读数据iTempDataL = ReadByte();iTempDataH = ReadByte();iTempDataH <<= 8;iTempDataH |= iTempDataL;if (iTempDataH & 0x8000){TempData.btNegative = 1;iTempDataH = ~iTempDataH + 1; //负数求补}//为了省去浮点运算带来的开销,而采用整数和小数部分分开处理的方法(没有四舍五入)btDot = (unsigned char)(iTempDataH & 0x000F); //得到小数部分iTempDataH >>= 4; //得到整数部分btDot *= 5; //btDot*10/16得到转换后的小数数据btDot >>= 3;//数据处理TempData.btThird = (unsigned char)iTempDataH / 100;TempData.btSecond = (unsigned char)iTempDataH % 100 / 10;TempData.btFirst = (unsigned char)iTempDataH % 10;TempData.btDecimal = btDot;return TempData;}//数据处理子程序void DataProcess(){m_TempData = ReadTemperature();if (m_TempData.btNegative) DisplayOne(1, 6, '-', 0);else DisplayOne(1, 6, m_TempData.btThird, 1);DisplayOne(1, 7, m_TempData.btSecond, 1);DisplayOne(1, 8, m_TempData.btFirst, 1);DisplayOne(1, 10, m_TempData.btDecimal, 1);}void main(){//GetROMSequence();Clear();Init();DisplayString(0, 0, " Temperature");DisplayOne(1, 9, '.', 0);while (1) DataProcess();}。
多路温度采集控制系统方案设计书
基于51单片机的多路温度采集控制系统设计言:随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。
本次设计的目的在于学习基于51单片机的多路温度采集控制系统设计的基本流程。
本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。
单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LED进行显示。
本系统可以实现多路温度信号采集与显示,可以使用按键来设置温度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和继电器的目的。
我所采用的控制芯片为AT89c52,此芯片功能较为强大,能够满足设计要求。
通过对电路的设计,对芯片的外围扩展,来达到对某一车间温度的控制和调节功能。
关键词:温度多路温度采集驱动电路正文:1、温度控制器电路设计本电路由89C51单片机温度传感器、模数转换器ADC0809、窜入并出移位寄存器74LS164、数码管、和LED显示电路等组成。
由热敏电阻温度传感器测量环境温度,将其电压值送入ADC0809的IN0通道进行模数转换,转换所得的数字量由数据端D7-D0输出到89C51的P0口,经软件处理后将测量的温度值经单片机的RXD端窜行输出到74LS164,经74LS164 窜并转换后,输出到数码管的7个显示段,用数字形式显示出当前的温度值。
89C51的P2.0、P2.1、P2.2分别接入ADC0809通道地址选择端A、B、C,因此ADC0809的IN0通道的地址为F0FFH。
输出驱动控制信号由p1.0输出,4个LED 为状态指示,其中,LED1为输出驱动指示,LED2为温度正常指示,LED3为高于上限温度指示,LED4为低于下限温度指示。
当温度高于上限温度值时,有p1.0输出驱动信号,驱动外设电路工作,同时LED1亮、LED2灭、LED3亮、LED4灭。
基于51单片机的温度控制系统的设计
基于单片机的温度控制系统设计1.设计要求要求设计一个温度测量系统,在超过限制值的时候能进行声光报警。
具体设计要求如下:①数码管或液晶显示屏显示室内当前的温度;②在不超过最高温度的情况下,能够通过按键设置想要的温度并显示;设有四个按键,分别是设置键、加1键、减1键和启动/复位键;③DS18B20温度采集;④超过设置值的±5℃时发出超限报警,采用声光报警,上限报警用红灯指示,下限报警用黄灯指示,正常用绿灯指示。
2.方案论证根据设计要求,本次设计是基于单片机的课程设计,由于实现功能比较简单,我们学习中接触到的51系列单片机完全可以实现上述功能,因此可以选用AT89C51单片机。
温度采集直接可以用设计要求中所要求的DS18B20。
报警和指示模块中,可以选用3种不同颜色的LED灯作为指示灯,报警鸣笛采用蜂鸣器。
显示模块有两种方案可供选择。
方案一:使用LED数码管显示采集温度和设定温度;方案二:使用LCD液晶显示屏来显示采集温度和设定温度。
LED数码管结构简单,使用方便,但在使用时,若用动态显示则需要不断更改位选和段选信号,且显示时数码管不断闪动,使人眼容易疲劳;若采用静态显示则又需要更多硬件支持。
LCD显示屏可识别性较好,背光亮度可调,而且比LED 数码管显示更多字符,但是编程要求比LED数码管要高。
综合考虑之后,我选用了LCD显示屏作为温度显示器件,由于显示字符多,在进行上下限警戒值设定时同样可以采集并显示当前温度,可以直观的看到实际温度与警戒温度的对比。
LCD 显示模块可以选用RT1602C。
3.硬件设计根据设计要求,硬件系统主要包含6个部分,即单片机时钟电路、复位电路、键盘接口模块、温度采集模块、LCD 显示模块、报警与指示模块。
其相互联系如下图1所示:图1 硬件电路设计框图3.1单片机时钟电路形成单片机时钟信号的方式有内部时钟方式和外部时钟方式。
本次设计采用内部时钟方式,如图2所示。
单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为此放大器的输入端和输出端,其频率范围为1.2~12MHz ,经由片外晶体振荡器或陶瓷振荡器与两个匹配电容一起形成了一个自激振荡电路,为单片机提供时钟源。
最新51单片机的多路温度采集控制系统设计汇总
51单片机的多路温度采集控制系统设计基于51单片机的多路温度采集控制系统设计言:随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。
本次设计的目的在于学习基于51单片机的多路温度采集控制系统设计的基本流程。
本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。
单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LED进行显示。
本系统可以实现多路温度信号采集与显示,可以使用按键来设置温度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和继电器的目的。
我所采用的控制芯片为AT89c51,此芯片功能较为强大,能够满足设计要求。
通过对电路的设计,对芯片的外围扩展,来达到对某一车间温度的控制和调节功能。
关键词:温度多路温度采集驱动电路正文:1、温度控制器电路设计本电路由89C51单片机温度传感器、模数转换器ADC0809、窜入并出移位寄存器74LS164、数码管、和LED显示电路等组成。
由热敏电阻温度传感器测量环境温度,将其电压值送入ADC0809的IN0通道进行模数转换,转换所得的数字量由数据端D7-D0输出到89C51的P0口,经软件处理后将测量的温度值经单片机的RXD端窜行输出到74LS164,经74LS164 窜并转换后,输出到数码管的7个显示段,用数字形式显示出当前的温度值。
89C51的P2.0、P2.1、P2.2分别接入ADC0809通道地址选择端A、B、C,因此ADC0809的IN0通道的地址为F0FFH。
输出驱动控制信号由p1.0输出,4个LED 为状态指示,其中,LED1为输出驱动指示,LED2为温度正常指示,LED3为高于上限温度指示,LED4为低于下限温度指示。
基于单片机的无线多路温度数据采集系统设计
关键词: AT89C51 温度采集温度传感器DS18B20 RS-232 MAX813 无线收发模块PTR2000AbstractThis paper introduces a kind of wireless monitoring system which is used to control temperature condition. The system adopts wireless network and temperature collect technique. The wireless communication can avoid the shortcoming of remote wire transmission, such as large wastage, high cost etc. This design usesAT89C51,The monolithic integrated circuit is the main hardware, In order to realize design goal this design including temperature gathering, the temperature demonstrated that, the systems control, strung together periphery electric circuit and so on mouth correspondence.The main MCU (AT89C51) takes charge of measurement,control andcommunication with the communication MCU. The communication MCU (AT89C51) is used to control receiving and sending data in the wireless communication. The system wireless temperature control system is uses in the lower position machine establishment temperature the lower limit, with real-time temperature gathering, transmits to on position machine,by achieves to the temperature comparison, the control.Key words:AT89C51Temperature gatheringDS18B20RS-232MAX813PTR2000wireless communication目录第一章绪论 (3)第二章方案论证4第三章系统总体设计63.1系统总体分析63.2设计原理7第四章各个元器件及芯片简介94.1 AT89C51单片机介绍94.2 DS18B20温度传感器简介114.3 PTR2000模块介绍124.4 MAX813芯片介绍134.5 MAX7219芯片介绍144.6 1602液晶显示屏介绍15第五章各部分电路设计165.1 看门狗电路165.2 温度采集电路175.3 串口电路185.4 显示电路195.5 键盘电路20第六章系统总体软件设计 (21)6.1 系统工作流程.................................................216.2 系统地软件设计 (21)6.3 软件设计流程图 (22)结论27致谢词28参考文献29附录1:硬件总图30第一章绪论在工农业生产中,对于采集数据地传输大多采用有线方式,因为有线方式地传输距离、数据传输速率以及抗干扰能力都要优于无线方式;然而对于在野外或者不便于铺设线缆地地区进行数据采集传输时,采用有线方式就受到了限制.针对这一特点,设计了采用无线传输方式地无线数据采集监测系统.该系统采集主要以Atmel公司地AT89C51单片机为控制处理核心,由它完成对数据地采集处理以及控制数据地无线传输.AT89C51单片机是一种低功耗/低电压/高性能地8位单片机,片内带有一个8KB地可编程/可擦除/只读存储器.无线收发一体数传MODEM模块PTR2000芯片性能优异,在业界居领先水平,它地显著特点是所需外围元件少,因而设计非常方便.该模板块在内部需成了高频接收、PLL合成、FSK调制/解调、参量放大、功率放大、频道切换等功能,因而是目前集成度较高地无线数传产品.在本文中,主要说明单片机和无线数据收发模块 PTR 2000地组合,形成单片机地无线数据传输系统,与微机进行无线数据传输.包括:如何针对系统地需求选择合适地无线数据传输模块器件,如何根据选择地器件设计外围电路和单片机地接口电路,如何编写控制无线数据传输器件进行数据传输地单片机程序,并简要介绍数字温度传感器DS18B20地应用.第二章方案论证(一)温度采集方案方案一:模拟温度传感器.采用热敏电阻,将温度值转换为电压值,经运算放大器放大后送A/D转换器将模拟信号变换为数字信号,再由单片机经过比较计算得到温度值.优点:应用广泛,特别是工程领域,采用不同地热敏电阻,可实现低温到超高温地测量.缺点:必须采用高速高位A/D转换器,系统复杂,成本高,还以引进非线性误差,得通过软件差值修正方案二:采用集成数字温度传感器DS18B20.该传感器采用单总线接口,能方便地与单片机通信.测温范围从-55到+125,测温精度9-12位可调,12位时最大转换时间为750ms,完全满足本设计地要求.缺点:不能实现高温测量.从上各种因素,我们采用数字温度传感器方案.(二)无线数据传送方案方案一:采用GSM模块.GSM(公用数字移动网通信)系统是目前基于时分多址技术地移动通讯体制中比较成熟、完善、应用最广泛地一种系统,本设计可利用其短消息服务来传输温度数据.优点:网络覆盖广,可实现远距离传输.缺点:成本高,无法实现实时性.方案二:该采用无线传输模块PTR2000.该器件将接收和发射合接为一体;工作频率为国际通用地数传频段433MHZ;采用FSK调制/解调,可直接进入数据输入/输出,抗干扰能力强,特别适合工业控制场合;采用DDS(直接数据合成)+PLL频率合成技术,因而频率稳定性极好;灵敏度高达—105bBm;工作电压低(2.7V),功耗小,接受待机状态电流仅为8μA;具有两个频道,可满足需要多信道工作地场合;工作数率最高达20kbit/s(也可在较抵速率下工作,如9600bps);超小体积,约40×27×5mm3;可直接与CPU串口进行连接(如8031),也可以用RS232与计算机接口,软件编程非常方便基于上述考虑,采用方案二.(三)显示界面方案方案一:用数码管显示,优点:结构简单,成本低.缺点:只能显示一测量点和有限地符号.方案二:采用LCD显示.可以实现中英文操作提示,方便人机交换.能同时显示多点温度值,通过键盘操作可快速翻屏浏览或监控一测量点温度值.缺点:价格高,体积增大.本系统设计为多点温度采集情况,所以选择LCD显示第三章系统总体设计3.1 系统总体分析无线温度数据采集系统是一种基于单片机射频技术地无线温度检测装置,本设计由温度采集部分,发送/接受部分,显示部分组成,温度采集部分由八个一线式数字温度传感器、AT89C51单片机、看门狗电路、键盘电路、晶振电路、复位电路、报警电路、数码管显示电路组成,采集到地温度数据在单片机地处理下在数码管上显示,同时传输到接收单元.发送部分采用无线传输模块PTR2000,模块在内部集成了高频发射,高频接受,PLL合成,FSK调制、参量放大,功率放大,频道切换等功能,单片机不能与无线模块直接通信,需通过串口电路进行数据地传输,串口电路采用RS232串口通信电路,显示部分采用1602液晶显示屏,AT89C51单片机以及单片机地外围电路由独立按键电路,晶振电路,复位电路组成.系统设计框图如下:发送模块系统框图接收模块系统框图3.2设计原理无线温度采集系统是一种基于无线模块地温度检测装置.本系统由温度采集部分和接收/发送机,以及显示芯片组成.温度采集部分由八个数字温度传感器芯片18B20,单片机AT89C51,低功耗地无线收发模块等组成,传感器采用寄生电源地方式即VDD与GND同时接地,八个温度传感器串接在P1.1口,同时采用结型场效应管进行驱动;数字单总线温度传感器是目前最新地测温器件,它集温度测量,A/D 转换于一体,具有单总线结构,数字量输出,直接与微机接口等优点.打开电源后,本系统由单片机AT89C51向单线数字温度传感器DS18B20芯片发出指令进行测温根据DS18B20地通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定地操作.复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒地存在低脉冲,主CPU收到此信号表示复位成功.在硬件上,DS18B20与单片机地连接采用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O.然后数据被传输至单片机AT89C51,八位数据分两次传输,再由单片机编程为可以由数码管显示地四位数据,因为51单片机有一个全双工地串行通讯口,所以单片机和无线收发模块之间进行串口通讯.进行串行第一位为正负温度数据,后三位为带小数点地当前温度.数据也被送至低功耗无线传输模块进行无线传输.通讯时要满足一定地条件,比如电脑地串口是RS232电平地,而单片机地串口是TTL电平地,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换.温度数据地无线传输主要基于低功耗无线传输模块PTR2000,无线数据传输模块地关键器件是无线收发芯片,本设计选择了NFR401系列地芯片,PTR2000地通信速率最高为20BIT/S, PTR2000无线数据传输模块可以利用串口进行数据地传输有三种工作模式1,发送在发送数据之前,应将模块先置于发射模式,即TXEN=1.然后等待至少5ms后(接收到发射地转换时间)才可以发送任意长度地数据.发送结束后应将模块置于接收状态,即TXEN=0.2, 接收:接收时应将PTR2000置于接收状态,即TXEN=0.然后将接收到地数据直接送到单片机串口.3,待机:当PWR=0时,PTR进入节点模式,此时地功耗大约为8uA,但在待机模式下不能接收和发射数据.数据地收、发由AT89C51控制.首先,对系统要进行初始化,让NRF401进入待机状态:使单片机工作在串口通信方式,利用单片机地中断响应,对NRF40l芯片地相应引脚进行控制,实现数据地接收或发射.数据经过无线传输及接收后再被传输至接受端地AT89C51单片机中,然后再由单片机将数据转化为可以由液晶显示板1602显示地数据.1602液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块地忙标志为低电平,表示不忙,否则此指令失效.要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符. 最后通过液晶显示屏和数码管地温度数据对比,判断进行无线地温度传输数据是否正确.第四章各个元器件及芯片简介4.1 AT89C51单片机介绍AT89C51单片机简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)地低电压,高性能CMOS8位微处理器,俗称单片机.单片机地可擦除只读存储器可以反复擦除100次.该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准地MCS-51指令集和输出管脚相兼容.由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL 地AT89C51是一种高效微控制器,AT89C2051是它地一种精简版本.1.主要特性:1、与MCS-51 兼容2、4K字节可编程闪烁存储器3、1000写/擦循环数据保留时间10年4、全静态工作,0Hz-24Hz·三级程序存储器锁定5、128*8位内部RAM32可编程I/O线6、两个16位定时器/计数器7、5个中断源8、可编程串行通道低功耗地闲置和掉电模式9、片内振荡器和时钟电路2.主要管脚说明:P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流.当P1口地管脚第一次写1时,被定义为高阻输入.P0能够用于外部程序数据存储器,它可以被定义为数据/地址地第八位. P1口:P1口是一个内部提供上拉电阻地8位双向I/O口,P1口缓冲器能接收输出4TTL门电流.P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉地缘故.P2口:P2口为一个内部上拉电阻地8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入.并因此作为输入时,P2口地管脚被外部拉低,将输出电流.P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址地高八位.P3口:P3口管脚是8个带内部上拉电阻地双向I/O口,可接收输出4个TTL门电流.当P3口写入“1”后,它们被内部上拉为高电平,并用作输入.作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉地缘故.4.2 DS18B20温度传感器简介DS18B20是DALLAS公司生产地一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃可编程为9位~12位A/D 转换精度,测温分辨率可达 0.0625℃,被测温度用符号扩展地16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3 根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器地端口较少,可节省大量地引线和逻辑电路.以上特点使DS18B20非常适用于远距离多点温度检测系统.DS18B20地内部结构主要由4部分组成:64 位ROM、温度传感器、非挥发地温度报警触发器TH和TL、配置寄存器.DS18B20地管脚排列如图2所示,DQ 为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端.ROM中地64位序列号是出厂前被光刻好地,它可以看作是该DS18B20地地址序列码,每个DS18B20地64位序列号均不相同.64位ROM地排地循环冗余校验码(CRC=X8+X5+X4+1). ROM地作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20地目地.图1DS18B20地管脚图DS18B20中地温度传感器完成对温度地测量,用16位符号扩展地二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位.例如+125℃地数字输出为07D0H,+25.0625℃地数字输出为0191H,-25.0625℃地数字输出为FF6FH,-55℃地数字输出为 FC90H.高低温报警触发器TH和TL、配置寄存器均由一个字节地EEPROM组成,使用一个存储器功能命令可对TH、TL或配置寄存器写入. R1、R0决定温度转换地精度位数:R1R0=“00”,9位精度,最大转换时间为93.75ms;R1R0=“01”,10位精度,最大转换时间为 187.5ms;R1R0=“10”,11位精度,最大转换时间为375ms;R1R0=“11”,12位精度,最大转换时间为750ms;未编程时默认为12位精度.高速暂存器是一个9字节地存储器.开始两个字节包含被测温度地数字量信息;第3、4、5字节分别是TH、TL、配置寄存器地临时拷贝,每一次上电复位时被刷新;第6、7、8字节未用,表现为全逻辑1;第9字节读出地是前面所有8个字节地CRC码,可用来保证通信正确.4.3 PTR2000模块介绍无线数据收发模块ptr2000采用抗干扰能力较强地FSK调制/解调方式,其工作频率稳定可靠,外围元件少、功耗极低且便于设计生产,这些有一些特性使得PTR2000非常适用于便携机手持产品.可广泛用于遥控、遥测、小型无线网络、无线抄表、门禁系统、小区传呼、工业数据采集、无线标签等系统.无线数据传输模块地关键器件是无线收发芯片.以下是几点选择芯片或者模块地选择标准.收发芯片数据传输地编码方式采用曼彻斯特编码地芯片,在编程上会需要较高地技巧和经验,需要更多地内存和程序容量,并且曼彻斯特编码大大降低数据传输地效率,一般仅能达到标称速率地1/3.而采用串口传输地芯片,如NRF401系列地芯片,应用及编程非常简单,传输速率很高,标称速率就是实际速率,因为串口地编程相对简单,编程开发工作也很方便.收发芯片地分装和管脚数较小地管脚以及分装,有利于较少PCB面积,适合测控地设计.NRF401仅20脚,是管脚和体积最小地.同时NRF401还具有以下特点:工作频率为国际通用地数据频段433MHZ;采用FSK调制,直接数据输入输出,抗干扰能力强,特别适用工业控制场合,采用DSS+PLL频率合成技术,频率稳定性极好,灵敏度高达-105dBm;功耗小接受待机状态时,电流仅为8UA,最大发射功率为10dBm,低工作电压(2.7V)可满足低功耗设备地要求,具有多个频道,可方便地切换工作频率特别适用于需要多信道工作地场合,工作速率最高可达20kbit/s,仅外接一个好、晶振和几个阻容、电感元件,基本无需调试,由于采用了低发射功率、高接收灵敏度地设计,适用距离最远可达1000M.内部电路图如下:4.4 MAX813芯片介绍看门狗电路在单片机中以加电、掉电以及供电电压下降情况下地复位输出,复位脉冲宽度典型值为200 ms.独立地看门狗输出,如果看门狗输入在1.6 s内未被触发,其输出将变为高电平, 1.25 V门限值检测器,用于电源故障报警、电池低电压检测或+5 V 以外地电源监控,低电平有效地手动复位输入.各引脚功能及工作原理1、手动复位输入端()当该端输入低电平保持140 ms以上,MAX813就输出复位信号.该输入端地最小输入脉宽要求可以有效地消除开关地抖动.2、工作电源端(VCC):接+5V电源.3、电源接地端(GND):接0 V参考电平..4、电源故障输入端(PFI)当该端输入电压低于1.25 V时,5号引脚输出端地信号由高电平变为低电平.5、电源故障输出端()电源正常时,保持高电平,电源电压变低或掉电时,输出由高电平变为低电平.6、看门狗信号输入端(WDI)程序正常运行时,必须在小于1.6 s地时间间隔内向该输入端发送一个脉冲信号,以清除芯片内部地看门狗定时器.若超过1.6 s该输入端收不到脉冲信号,则内部定时器溢出,8号引脚由高电平变为低电平.7、复位信号输出端(RST)上电时,自动产生200 ms地复位脉冲;手动复位端输入低电平时,该端也产生复位信号输出.8、看门狗信号输出端().正常工作时输出保持高电平,看门狗输出时,该端输出信号由高电平变为低电平.芯片管脚图如下:4.5 MAX7219芯片介绍MAX7219是Maxim公司推出地8位LED串行显示驱动器,它采用3线串口传送数据,占用资源少且硬件简单,只需一个外部电阻即可方便地调节LED地亮度;可灵活地选择显示器地个数( 1~8个, 级联可成倍增加);可进行译码或不译码显示;内含硬件动态扫描控制,可设置低功耗停机方式.引脚功能和工作原理MAX7219采用24脚双列直插式封装,其引脚如图3所示.SEGA~SEGG和DP 分别为LED七段驱动器线和小数点线,供给显示器源电流;DIG0~DIG7为8位数字驱动线,输出位选信号,从每位LED共阴极吸入电流.图3 MAX7219 引脚功能DIN是串行数据输入端.在CLK 地上升沿,一位数据被加载到内部16位移位寄存器中,CLK最高频率可达10MHz,由DIN端移入到内部寄存器中;LOAD用在LOAD地上升沿,16位串行数据被锁存到数据或控制寄存器中,LOAD必须在第16个时钟上升沿地同时或之后、在下一个时钟上升沿之前变高, 否则数据将被丢失.每组数据为16 位二进制数据包.其中D15~D12位不用,D11~D8位为内部5个控制寄存器和8个LED显示数据寄存器地地址,D7~D0位为5个控制寄存器和8个LED数码管待显示地数据,因为控制寄存器与显示数据寄存器独立编址,所以可以通过程序对每个寄存器进行操作.MAX7219内部有14个可寻址地控制字寄存器.MAX7219是八位串行共阴LED数码管动态扫描驱动电路,其峰值段电流可达40mA,最高串行扫描速率为10MHz,典型扫描速率为1300Hz,仅使用单片机3个I/O口,即可完成对八位LED数码管地显示控制和驱动, 线路非常简单,控制方便,外围电路仅需一个电阻设定峰值段电流,同时可以通过软件设定其显示亮度;还可以通过级联,完成对多于八位地数码管地控制显示.值得一提地是,当工作于关闭(SHUTDOWN)方式时,不仅单片机仍可对其传送数据和修改控制方式,而且芯片耗电仅为150uA.4.6 1602液晶显示屏介绍工业字符型液晶,能够同时显示16x02即32个字符.(16列2行)注:为了表示地方便 ,后文皆以1表示高电平,0表示第电平.1.管脚功能1602采用标准地16脚接口,其中:第1脚:VSS为电源地第2脚:VDD接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K地电位器调整对比度).第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器. 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作.第6脚:E(或EN)端为使能(enable)端.第7~14脚:D0~D7为8位双向数据端.第15~16脚:空脚或背灯电源.15脚背光正极,16脚背光负极.2.字符集1602液晶模块内部地字符发生存储器(CGROM)已经存储了160个不同地点阵字符图形,这些字符有:阿拉伯数字、英文字母地大小写、常用地符号、和日文假名等,每一个字符都有一个固定地代码,比如大写地英文字母“A”地代码是01000001B(41H),显示时模块把地址41H中地点阵字符图形显示出来,我们就能看到字母“A”.第五章各部分电路设计5.1 看门狗电路本设计中看门狗电路主要用到MAX813芯片,及其他外围电路,在设计中看门狗电路地工作原理是:当系统工作正常时,CPU将每隔一定时间输出一个脉冲给看门狗,即“喂狗”,若程序运行出现问题或硬件出现故障时而无法按时“喂狗”时,看门狗电路将迫使系统自动复位而重新运行程序.主要作用是防止程序跑飞或死锁.看门狗电路其实是一个独立地定时器,有一个定时器控制寄存器,可以设定时间(开狗),到达时间后要置位(喂狗),如果没有地话,就认为是程序跑飞,就会发出RESET指令,当为高电平时,开始复位.功能如下:本电路巧妙地利用了MAX813地手动复位输入端.只要程序一旦跑飞引起程序“死机”,端电平由高到低,当变低超过140 ms,将引起MAX813产生一个200 ms地复位脉冲.同时使看门狗定时器清0和使引脚变成高电平.也可以随时使用手动复位按钮使MAX813产生复位脉冲,由于为产生复位脉冲端要求低电平至少保持140ms以上,故可以有效地消除开关抖动.该电路可以实时地监视电源故障(掉电、电压降低等).图6 中R5未经稳压地直流电源.电源正常时,确保R3地电压高于1.26 V,即保证MAX813地PFI 输入端电平高于1.26 V.当电源发生故障,PFI输入端地电平低于1.25 V时,电源故障输出端电平由高变低,引起单片机中断,CPU响应中断,执行相应地中断服务程序,保护数据,断开外部用电电路等.5.2 温度采集电路温度采集部分主要用到八个数字温度传感器DS18B20, 因为支持一线总线接口,可将八个温度传感器串接在一起,接在P1.1口,采用寄生电源方式,将VDD 与GND共同接地,同时采用一结型场效应管进行驱动.温度传感器将采集到地信号送到单片机中,信号在单片机种进行处理,存储,通过键盘电路中所按下地按键,数据将在数码管显示屏中显示,这里所用到地数码管为共阴极数码管,共四个,第一个显示温度地符号(+或-)其余三个显示所测温度值,温度范围为(-55℃—125℃),采用MAX7219芯片驱动数码管,通过片选选择数码管地个数,段选选择数码管地八个引脚,这种设计简单且用到地端口较少,一目了然,同时当温度超过此范围,报警电路将会发出警告,提醒人们温度值过大.同时信号也将被送至无线收发模块.电路图如下:温度采集电路原理图5.3 串口电路单片机从一个I/O引脚逐位传输一些列二进制编码数据,就是串行通信.所谓串行通信是指外设和计算机家门适用一根数据信号线数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定地时间长度,这种通信方式使用地数据线少,传输速度比并行传输慢.串行通信地优点在于远程通信和上下位机通信,51系列单片机通过自身地串口完成通信,高串口是一个可编程地全双工串行通信接口.串口通信协议地内容接口地电气特性在RS-232-C中任何一条信号线地电压均为负逻辑关系.即要求接收器能识别低至+3V地信号作为逻辑“0”,高到-3V地信号作为逻辑“1”.接口地物理结构 RS-232-C接口连接器一般使用型号为DB-25地25芯插头座,通常插头在DCE端,插座在DTE端. 一些设备与PC机连接地RS-232-C接口,因为不使用对方地传送控制信号,只需三条接口线,即“发送数据”、“接收数据”和“信号地”.所以采用DB-9地9芯插头座,传输线采用屏蔽双绞线. 串口电路图如下:C2 0.1uf C1 0.1ufc30.1ufc40.1ufC50.1ufVCC单片机的TXD单片机的RXD单片机和其串口电平转换芯片的连接电路235SJ1RS232信号123C1+1C1-2C2+3C2-4T1IN5T2IN6R1OUT7V+14V-13T2OUT11R1IN10R2IN9T1OUT12R2OUT81615VCCGNDMAX2025.4 显示电路显示电路主要有另一块AT89C51单片机、外围电路及1602液晶显示屏组成.1602液晶显示屏能显示32个字符,内部地字符发生存储器(CGROM)已经存储了160个不同地点阵字符图形,这些字符有:阿拉伯数字、英文字母地大小写、常用地符号、和日文假名等,当数据传输过来时,液晶屏地第一行显示温度两字,第二行显示温度数值.电路图如下:显示模块。
毕业设计_基于AT89C51单片机为核心的多路温度采集系统电路设计
Abstract
This design is proposed based onAT89C51microcontroller as the core of the temperature control system and its digital single-bus technology used inthe design of the greenhouse temperature measurement system. Program uses a new type of digital temperature sensor DS18B20, use DS18B20 temperature sensor embedded inside the greenhouse temperature, transformed into the current changes, and thenaconverted to voltage input ADC, the bus passed through the singleAT89C51comicic-rocontrollerAT89C51microcontroller input and output through the serial port tounat-e with the PC machine.System for real-time multi-point inspection of temperature,w-hile providing instruction based on the temperature of PC-time acquisition.Tempsen-sor for temperature DS18B2collection, microcontroller reads the message from theD-S18B20 temperature and with the effective temperature of the upper and lowerextm-comparison, if more than the effective temperature range, start alarm system, and to the PC, send the appropriate signals, or continue to read from the DS18B20temper- rure. The system has a practical and high reliability。
基于51 单片机的温度采集系统设计
1引言温度与人们的生产生活密切相关,传统的温度采集方法不但费时费力,而且精度差,可靠性也得不到保证,早已满足不了现在各行各业对温度测量的要求[1]。
单片机和温度传感器的出现和运用使得人们对温度的采集和处理方式得到了极大的革新,选取和应用合适的单片机和温度传感器能够提高温度的测量精度和可靠性。
本文基于AT89C51单片机设计的温度采集系统可实时采集环境温度,性能稳定可靠,成本低廉,使用便捷。
2温度采集系统的硬件设计本文设计的温度采集系统利用AT89C51单片机作为数据处理和控制单元,整个电路由温度采集系统模块、单片机控制模块、报警警告模块、温度显示模块和键盘输入模块组成。
首先,温度传感器DS18B20[2]将采集到的温度通过控制总线输入单片机,完成对外界温度的采集;其次,51单片机对接收的温度数据进行分析处理,驱动数码管显示温度信息;最后,把当前环境温度值与使用外部输入键盘设置的上限和下限温度值进行比较,在环境温度超过设定值时触发警报装置进行报警。
温度采集系统框图如图1所示。
图1温度采集系统框图3温度采集系统的软件设计温度采集电路开启运行后,系统将执行温度采集、对采集到的温度值进行处理、超限度警报、键盘输入上下限值和温度显示五项功能。
利用DS18B20将环境温度转化为电信号,然后将采集的温度信号送入单片机处理,进而判断温度的正负值并将温度值和用户设置的温度上下限值进行比较,【基金项目】陕西省自然科学基础研究计划资助项目(2019JQ-493)。
【作者简介】吴迎春(1979-),女,河南唐河人,讲师,从事电子技术研究。
基于51单片机的温度采集系统设计Design of the Temperature Acquisition System Based on 51Single Chip Microcomputer吴迎春,曾利霞(咸阳师范学院物理与电子工程学院,陕西咸阳712000)WU Ying-chun,ZENG Li-xia(College of Physics &Electronic Engineering,Xianyang Normal University,Xianyang 712000,China)【摘要】论文利用AT89C51单片机和DS18B20温度传感器设计了一款能够实现对环境温度进行实时采集并当环境温度超过设定值时进行自动报警的温度采集系统。
基于51单片机和Labview的多路温度采集系统
干货联盟原理图外接USB转TTL线最小系统传感器程序/*************************此部分为18B20的驱动程序*************************************/#include <reg52.H>#include <intrins.h>sbit D18B20=P3^7;#define NOP() _nop_() /* 定义空指令*/#define _Nop() _nop_() /*定义空指令*/void TempDelay (unsigned char idata us);void Init18b20 (void);void WriteByte (unsigned char idata wr); //单字节写入void read_bytes (unsigned char idata j);unsigned char CRC (unsigned char j);void GemTemp (void);void Config18b20 (void);void ReadID (void);void TemperatuerResult(void);bit flag;unsigned int idata Temperature;unsigned char idata temp_buff[9]; //存储读取的字节,read scratchpad为9字节,read rom ID 为8字节unsigned char idata id_buff[8];unsigned char idata *p,TIM;unsigned char idata crc_data;unsigned char code CrcTable [256]={0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65, 157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220, 35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98, 190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154, 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36, 248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185, 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205, 17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238, 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139, 87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53};///*************************************************************Function:延时处理*parameter:*Return:*Modify:*************************************************************/void TempDelay (unsigned char idata us){while(us--);}/************************************************************ *Function:18B20初始化*parameter:*Return:*Modify:*************************************************************/ void Init18b20 (void){D18B20=1;_nop_();D18B20=0;TempDelay(75); //delay 530 uS//80 _nop_();D18B20=1;TempDelay(12); //delay 100 uS//14 _nop_();_nop_();_nop_();if(D18B20==0)flag = 1; //detect 1820 success! elseflag = 0; //detect 1820 fail!TempDelay(18); //20_nop_();_nop_();D18B20 = 1;}/************************************************************ *Function:向18B20写入一个字节*parameter:*Return:*Modify:*************************************************************/ void WriteByte (unsigned char idata wr) //单字节写入{unsigned char idata i;for (i=0;i<8;i++){D18B20 = 0;_nop_();D18B20=wr&0x01;TempDelay(2); //delay 45 uS //3_nop_();_nop_();D18B20=1;wr >>= 1;}}/************************************************************ *Function:读18B20的一个字节*parameter:*Return:*Modify:*************************************************************/ unsigned char ReadByte (void) //读取单字节{unsigned char idata i,u=0;for(i=0;i<8;i++){D18B20 = 0;u >>= 1;D18B20 = 1;if(D18B20==1)u |= 0x80;TempDelay (2);_nop_();}return(u);}/************************************************************ *Function:读18B20*parameter:*Return:*Modify:*************************************************************/ void read_bytes (unsigned char idata j){unsigned char idata i;for(i=0;i<j;i++){*p = ReadByte();p++;}}/************************************************************ *Function:CRC校验*parameter:*Return:*Modify:*************************************************************/ unsigned char CRC (unsigned char j){unsigned char idata i,crc_data=0;for(i=0;i<j;i++) //查表校验crc_data = CrcTable[crc_data^temp_buff[i]];return (crc_data);}/************************************************************ *Function:读取温度*parameter:*Return:*Modify:*************************************************************/ void GemTemp (void){read_bytes (9);if (CRC(9)==0) //校验正确{Temperature = temp_buff[1]*0x100 + temp_buff[0];// Temperature *= 0.625;Temperature /= 16;TempDelay(1);}}/************************************************************ *Function:内部配置*parameter:*Return:*Modify:*************************************************************/void Config18b20 (void) //重新配置报警限定值和分辨率{Init18b20();WriteByte(0xcc); //skip romWriteByte(0x4e); //write scratchpadWriteByte(0x19); //上限WriteByte(0x1a); //下限WriteByte(0x7f); //set 11 bit (0.125)Init18b20();WriteByte(0xcc); //skip romWriteByte(0x48); //保存设定值Init18b20();WriteByte(0xcc); //skip romWriteByte(0xb8); //回调设定值}/************************************************************ *Function:读18B20ID*parameter:*Return:*Modify:*************************************************************/ void ReadID (void)//读取器件id{Init18b20();WriteByte(0x33); //read romread_bytes(8);}/************************************************************ *Function:18B20ID全处理*parameter:*Return:*Modify:*************************************************************/ void TemperatuerResult(void){p = id_buff;ReadID();Config18b20();Init18b20 ();WriteByte(0xcc); //skip romWriteByte(0x44); //Temperature convertInit18b20 ();WriteByte(0xcc); //skip romWriteByte(0xbe); //read Temperaturep = temp_buff;GemTemp();}void GetT emp(){if(TIM==100) //每隔1000ms 读取温度{ TIM=0;TemperatuerResult();}}/************************************* [ t1 (10ms)中断] 中断*************************************/ void timer1() interrupt 1{TH0=(65536-10000)/256;TL0=(65536-10000)%256;TIM++;}} Labview界面。
51单片机的多路温度采集系统程序
51单片机的多路温度采集系统程序ORG 0000HAJMP MAIN;BUF EQU 40H ;显示缓冲区MOTATA EQU 50H ;AD0809数据存放于此WH EQU 48H ;温度上限数据存放区WL EQU 58H ;温度下限数据存放区BUFF1S EQU 38H;BUFF1MS EQU 39H;BUFF5S EQU 3AH;INNAL EQU 3CH;ALARMBUF EQU 33HBUFFH EQU 31H ;八路LED报警信号红灯BUFFL EQU 32H ;八路LED报警信号绿灯BACK EQU 34H ;利用与BUF地址的重复修改路数CHANNEL EQU 35HTEMPBUF EQU 36HREAD_AD BIT 30H ;是否要读写AD0809的标志位DISPIN BIT 31H;SETWARN BIT 32HSOLIDISP BIT 33HENTER BIT P1.2SETH BIT 35HSETL BIT 36HSETIN BIT P1.3ABYTEIN BIT p1.1ORG 0003HAJMP INT_0;ORG 000BHLJMP INT_T0ORG 0100HMAIN: MOV SP, #70H ;设置堆栈位置SETB READ_AD ;初始化标志位SETB EA ;开总中断CLR SETWARN ;清除温度设置标志位SETB SETIN ;当其为0时表示要进行通道数采集LCALL INITWARN ;初始化温度上下限LCALL INIT_2 ;初始化2#工作寄存器区;主循环,启动ADC0809,从第一个通道开始读取LOOP: JNB READ_AD,DIS ;若不读AD0809,则调显示,次标志位也表示1s延时结束;延时已完毕,则计算要显示的温度路数及温度值送缓冲区LCALL WARN ;报警CLR READ_AD ;清楚标志位LCALL READ ;读取一次AD0809LCALL DLY1MS ;此处加1ms的延时,否则数码管会因中断的存在而产生闪动 LCALL ADJUST ;调整显示;在此完成键盘检测及显示任务DIS: LCALL DISPLAY;LCALL KEYCHK ;调键盘检测子程序CJNE A,#0FFH, AKEY ;若有键按下,则跳转LJMP LOOP ;若没有则循环AKEY: LCALL KEYFUNC;CJNE A,#0FFH,CALLRPD ;验证按下的键是否为数字键,若是则处理输入LJMP LOOP ;不为数字键则返回循环CALLRPD: LCALL KEYRPD;SJMP LOOP;;*********初始化2#工作寄存器区************INIT_2: PUSH PSW ;初始化2号工作寄存器区SETB RS1;CLR RS0 ;选择2号工作寄存器区MOV R2, #00H ;存放要显示的路数CLR DISPIN ;初始化路显示标志位;MOV R0, #MOTATA ;R0充当指向MOTATA的指针POP PSW;RET;;*******调整指针*********PADJUST:ONADJUST: DJNZ R2,INADJUST;RET;返回INADJUST: INC R0;SJMP ONADJUST;;*************计算并调整显示缓存区的数据*******ADJUST: PUSH PSW ;保护SETB RS1;CLR RS0 ;选择2号工作寄存器区CJNE R2,#08H,NE08;GE08: MOV R2,#00H;MOV R0,#MOTATA;SJMP LESS08;NE08: JNC GE08;LESS08: JB SETWARN, DISPWARN ;若在设定温度,则也不调整显示JB SOLIDISP, ADJEND ;若为固定显示,则跳过调整JB DISPIN,DLY_5S ;若有键盘值输入,则延时5秒来暂时固定显示INC R0 ;调整R0,使其指向下一个要显示的温度值地址 INC R2 ;调整R2mov channel,r2;SJMP ADJEND;DLY_5S: DJNZ BUFF5S,ADJEND;CLR DISPIN;LJMP ADJENDDISPWARN: JB SETH,DISHIGH ;若在调整上限值则跳转到上限温度显示JB SETL,DISLOW ;若在调整下限值则跳转到下限温度显示SJMP ADJEND ;若不在调整则显示输入路数的当前检测温度值DISLOW: MOV R0,#WL ;将指针调整到温度上限存放区SJMP ADAPT ;跳转到指针调整处DISHIGH:MOV R0,#WH ;将指针调整到温度下限存放区ADAPT: MOV R2,CHANNEL ;调整R2的值为通道数LCALL PADJUST ;指针指向R2 ADJEND: LCALL LOADTEMP ;将当前指针指向数据放到缓冲区POP PSW;RET;;**************** 将当前指针指向数据放到缓冲区******** LOADTEMP: LCALL COMPUTE ;调用COMPUTE得到要显示的当前温度值MOV R1,#BUF;MOV A,channel;MOV @R1,A ;将路数送入显示缓冲区INC R1 ;调整到要显示温度值的缓冲区JB SETH,DISPH ;若设定温度上限,则显示HJB SETL,DISPL ;若设定温度下限,则显示LMov a,#10h ;消隐SJMP DISP2DISPH: MOV A,#11HSJMP DISP2DISPL: MOV A,#12HDISP2: mov @r1,a;INC R1;MOV A,R5;ANL A,#0FH;MOV @R1,A ; 最低位 INC R1;MOV A,R5;ANL A,#0F0H;SWAP A;MOV @R1,A ;次低位 ,应当在此处添加小数点INC R1;MOV A,R4;ANL A,#0FH;MOV @R1,A ;次高位 INC R1;MOV A,R4;ANL A,#0F0H;SWAP A;MOV @R1,A ;最高位RET;;*************读取一次0809的内容***********READ: MOV R6,#08H ;用中断的方式读取一次AD0809MOV R0,#MOTATA ;0号工作寄存器区MOV DPTR,#0FFFEH ;A0作为地址MOV A,#00H ;表示先检测第一个通道MOV INNAL,A ;将检测的路数保存MOVX @DPTR,A ;开启ADC0809 SETB EX0 ;开外部中断0RET ;若已读取完毕,则返回;**********************显示子程序************;要显示的数据入口为BUF(6位);1号工作寄存器区DISPLAY: PUSH PSW ;压栈保护SETB RS0;CLR RS1 ;切换工作寄存器区到 1MOV R0,#BUFMOV R7,#06HMOV R1,#01HNEXTDIS: MOV A,@R0MOV DPTR,#TABLEMOVC A,@A+DPTR ;取段码CJNE R7,#03H,NODIP ;显示小数点ANL A,#07FHNODIP: MOV DPTR,#0FFDCHMOVX @DPTR,A ;送段码MOV DPTR,#0FFDDHMOV A,R1MOVX @DPTR,A ;送位码RL AMOV R1,ALCALL DLY1MSINC R0 ;调整显示DJNZ R7,NEXTDIS;POP PSW;RET;**************************延时1ms****************************DLY1MS: MOV BUFF1MS,#0F9HDJNZ BUFF1MS,$RET;*************************按键检查子程序******************** KEYCHK:MOV A,#00H ;查看是否有键按下MOV DPTR,#0FFDDHMOVX @DPTR,AMOV DPTR,#0FFDEHMOVX A,@DPTRCPL AANL A,#0FHJNZ TEST ;若有键按下则检测,无则返回。
基于51单片机的温控系统设计
基于51单片机的温控系统设计1.引言1.1 概述概述部分的内容可以包括以下几个方面:温控系统是一种广泛应用于各个领域的实时温度控制系统。
随着科技的发展和人们对生活质量的要求提高,温控系统在工业、家居、医疗、农业等领域得到了广泛应用。
温度作为一个重要的物理量,对于许多过程和设备的稳定运行至关重要。
因此,设计一种高效可靠的温控系统对于提高工作效率和产品质量具有重要意义。
本文将基于51单片机设计一个温控系统,通过对系统的整体结构和工作原理的介绍,可以深入了解温控系统在实际应用中的工作机制。
以及本文重点研究的51单片机在温控系统中的应用。
首先,本文将介绍温控系统的原理。
温控系统的核心是温度传感器、控制器和执行器三部分组成。
温度传感器用于实时检测环境温度,通过控制器对温度数据进行处理,并通过执行器对环境温度进行调节。
本文将详细介绍这三个组成部分的工作原理及其在温控系统中的作用。
其次,本文将重点介绍51单片机在温控系统中的应用。
51单片机作为一种经典的微控制器,具有体积小、功耗低、性能稳定等优点,广泛应用于各种嵌入式应用中。
本文将分析51单片机的特点,并介绍其在温控系统中的具体应用,包括温度传感器的数据采集、控制器的数据处理以及执行器的控制等方面。
最后,本文将对设计的可行性进行分析,并总结本文的研究结果。
通过对温控系统的设计和实现,将验证51单片机在温控系统中的应用效果,并对未来的研究方向和发展趋势进行展望。
通过本文的研究,可以为温控系统的设计与应用提供一定的参考和指导,同时也为利用51单片机进行嵌入式系统设计的工程师和研究人员提供一定的技术支持。
1.2文章结构文章结构部分的内容可以包含以下内容:文章结构部分旨在介绍整篇文章的组织结构和各个部分的内容。
本篇文章基于51单片机的温控系统设计,总共分为引言、正文和结论三部分。
引言部分主要包括概述、文章结构和目的三个小节。
首先,概述部分介绍了本文的主题,即基于51单片机的温控系统设计。
基于51单片机的温度采集系统(Labview做上位机)
基于51单片机的温度采集系统(Labview做上位机)做该设计的初衷是为自己的毕设打基础,因为我的毕设要做一个探测机器人,需要对某一地区的各种环境参数进行检测,然后通过WIFI返回到上位机。
所以为了搞懂温度传感器以及练习上位机的设计,花了几天时间做了一个很简单的采集系统。
今天把它拿出来跟各位小伙伴们分享,希望对各位有所帮助,同时也希望大佬们指出不足,起到一个相互学习,相互促进的作用。
该系统原理是:51单片机把ds18b20传感器将采集到的温度值(十六进制)通过串口发送到labview,labview对单片机发来的数据做简单的处理然后显示。
上位机界面上位机(接受程序)简单的硬件连接数据纪录串口部分:void main() {if(flag==1||flag1==1) {S=test/10;Y=test%10;ES=0;flag=0;SBUF=S;while(!TI);TI=0;SBUF=Y;while(!TI);TI=0;if(temperature!=test)flag1=1;ES=1;}}//串口中断void ser() interrupt 4{if(RI==1){RI=0;a=SBUF;if(a=='1') P1=0x55;if(a=='0') P1=0xaa;flag=1;}}温度采集部分:#include#include "ds18b20.h"#include "delay.h"sbit DQ=P2^2; //温度传感器 I/O 口uchar reset_ds18b20(){uchar presence;DQ=0;delay_ds18b20(29); //延时480 - 960 us DQ=1; delay_ds18b20(3); //延时 15 - 60 us presence=DQ;delay_ds18b20(25); //延时 60 - 240 usreturn(presence);}uchar read_bit_ds18b20(){uchar i;DQ=1;delay_ds18b20(1);DQ=0;//delay(1); //延时 15us 也可以不延时DQ=1;//delay(3); //延时 1 - ∞ usfor(i=0;i<3;i++);return(DQ);}void write_bit_ds18b20(uchar dat){DQ=0; //置0 无需延时if(dat==1)DQ=1;delay_ds18b20(1); //延时 60 - 120 us DQ=1;delay_ds18b20(1); //延时 1 - ∞ us }void write_byte_ds18b20(uchar dat){uchar i,j;for(i=0;i<8;i++){j=((dat>>i)&0x01);write_bit_ds18b20(j);//delay(1); //延时 1 - ∞ us}}uchar read_byte_ds18b20(){uchar dat=0;uchar i;for(i=0;i<8;i++){if(read_bit_ds18b20())dat|=0x01<<>//delay(1); //延时 1 - ∞ us}return(dat);}int read_temp_ds18b20(){uchar templ=0,temph=0;int temp=0;reset_ds18b20();//复位write_byte_ds18b20(0xcc); //跳过ROMwrite_byte_ds18b20(0x44); //跳过温度采集delay_ds18b20(10); //750msreset_ds18b20();write_byte_ds18b20(0xcc); //跳过ROMwrite_byte_ds18b20(0xbe); //准备好数据(开始温度转换采集)templ=read_byte_ds18b20();//读低字节温度值temph=read_byte_ds18b20();//读低字节温度值temp=(templ+(temph*256));return(temp); }关键字。
基于51单片机DS18B20温度采集器详解
一核心器件的基本构成及特性1.1 AT89S51功能特性89C51是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51基础型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能。
89C51内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C51还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU 而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
89C51有PDIP(40pin)和PLCC(44pin)两种封装形式。
1.2 AT89S51管脚介绍AT89C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、并行I/O口(4个8位I/O口)、串行口、定时器/计数器、中断系统及特殊功能寄存器。
它们都是通过片内单一总线连接而成,其基本结构依旧是微处理器(CPU)加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式,以实现不同的功能。
AT89C51单片机如图所示。
1.1.1引脚功能介绍Vcc(40引脚):接+5V电源。
Vss(20引脚):接地。
XTAL1(19引脚):片内振荡器反相放大器和时钟发生器电路的输入端。
XTAL2(18引脚):片内震荡器反相放大器的输出端。
RST:复位引脚,高电平有效。
基于51单片机的多路温度检测系统毕业设计论文
论文题目:基于MCS51的多路温度检测终端设计与实现专业:电子与信息工程学生:张泽鑫签名:指导教师:倪云峰签名:摘要温度是工业生产过程中保证产品质量的重要可控参数。
因此,在工农业生产和科学研究中温度的检测与控制在现代经济与社会中越来越受到重视。
传统的监测方法都是单点测量,同时有温度传递不及时、精度不够的缺点,不利于工业控制者根据温度变化及时做出决定,因此多路温度检测终端的设计成了一项重要的研究课题。
本文设计了一种基于单片机的具有多路采集通道的高精度的数字温度检测系统。
硬件上,CPU采用STC89C52为主控芯片,配置DS18B20温度传感器作为信号采集装置,利用LCD1602对四路采集的温度信号进行显示。
软件上运用C语言的编程,用protues仿真和硬件电路的设计,实现了实时温度检测,并能够方便设置温度上下限,实现报警功能,另外还配备了单片机与PC机的通信功能。
文中,终了进行了测试与实验,实验达到了预期的结果。
【关键词】温度测量;单总线;数字温度传感器;单片机【论文类型】设计型Title:The Terminal design and implementation of multi-channel temperature detection based on MCS-51Major:Electronic information engineeringName:Zhang Zexin Signature:Supervisor:Ni Yunfeng Signature:ABSTRACTDuring the industry production process, the temperature is the important parameter of ensuring the quality of the products. Therefore, the detection and control of temperature in industrial and agricultural production and scientific research have playing a more and more important role. Traditional monitoring methods are single point measurement, meanwhile the temperature transfer is not timely and accurate enough .These are not conducive to industrial control according to the temperature change in a timely decision. So it has become an important research topic in the design of multi-channel temperature detection terminal.This paper has designed a multi-channel acquisition channel digital high precision temperature detection system based on single chip microcomputer.On the aspect of hardware, the STC89c52 is used as the main control chip. It equipped with the DS18B20 temperature sensor, which acts as signal acquisition device. The temperature signal of four way's acquisitions are displayed by the LCD1602.On the aspect of software, C-programming language used by Protues simulation and hardware circuit design to achieve a real-time temperature detection. There is a ability to easily set the temperature limit, and the alarm function. Meanwhile it can also communicate with the PC.In this paper, the result of tested has achieved the goal as expected.【Key words】temperature measure;single bus;digital thermometer;single chip processor 【Type of Thesis】Design mode目录1 基础理论............................................................................................................................. - 1 -1.1 概述.......................................................................................................................... - 1 -2.1 单总线简介.............................................................................................................. - 3 -2.1.1 概述............................................................................................................... - 3 -2.1.2单总线的工作原理........................................................................................ - 3 -2.1.3 单总线器件信号传递方式........................................................................... - 4 -1.3 MCS51单片机 ......................................................................................................... - 7 -1.3.1 MCS51单片机概述 ...................................................................................... - 7 -1.3.2 MCS-51单片机的结构 ................................................................................. - 7 -1.3.3 指令系统....................................................................................................... - 9 -1.3.4 中断............................................................................................................. - 10 -1.3.5定时器.......................................................................................................... - 10 -2 硬件设计方案....................................................................................................................- 11 -2.1系统综述..................................................................................................................- 11 -2.2 温度采集与测量系统............................................................................................ - 12 -2.2.1 DS18B20的特性 ......................................................................................... - 12 -2.1.2 DS18B20引脚排列 ..................................................................................... - 13 -2.2.3 DS18B20 的硬件结构 ................................................................................ - 13 -2.2.4 DS18B20的供电方式 ................................................................................. - 14 -2.2.5 DS18B20的ROM指令.............................................................................. - 16 -2.2.6 DS18B20的测温原理 ................................................................................. - 18 -2.3 显示系统................................................................................................................ - 19 -2.3.1 LCM1602显示模块 .................................................................................... - 19 -2.2.3 LCM1602管脚分布 .................................................................................... - 20 -2.4 报警系统及输入设备............................................................................................ - 21 -2.5 最小系统外围电路................................................................................................ - 22 -2.5.1 PC机与单片机的串行通信接口电路........................................................ - 22 -2.5.2 晶振电路以及复位电路............................................................................. - 22 -3 软件系统的设计............................................................................................................... - 24 -3.1 主程序.................................................................................................................... - 24 -3. 2 DS18B20 相关程序 .............................................................................................. - 25 -3.2.1 查询DS18B20的ROM ............................................................................. - 26 -3.2.2 DS18B20 初始化程序 ................................................................................ - 27 -3.2.3 温度采集..................................................................................................... - 27 -3.3 LCM1602 相关程序 .............................................................................................. - 29 -3.3.1 LCM1602 初始化程序 ....................................................................................... - 29 -3.3.2 显示子程序......................................................................................................... - 31 -3.4 报警系统和键盘输入系统相关程序.................................................................... - 32 -3.4.1 报警系统..................................................................................................... - 32 -3.4.2 键盘输入..................................................................................................... - 32 -4 实验结果总结................................................................................................................... - 34 -5总结与展望........................................................................................................................ - 37 -5.1 总结........................................................................................................................ - 37 -5.2 展望........................................................................................................................ - 37 -致谢....................................................................................................................................... - 39 -参考文献............................................................................................................................... - 40 -1 基础理论1.1 概述温度是表征物体冷热程度的物理量,是工业生产和科学实验中一个非常重要的参数。
基于51单片机的温度数据采集系统
8 | 电子制作 2018年11月格的,比如:工厂在生产某一种产品时温度要求范围在25到30摄氏度之间,只有在这个温度范围内才可以生产出合格的产品,还有在进行某些科研实验时对温度的要求就会更加严格,有的精确到1摄氏度以内,甚至有的精确到0.5摄氏度以内。
因此我想设计一个“电子温度计”,基本功能是对温度的采集与显示。
在温度采集的设计上必须要A/D 转换,也就是将模拟信号转化为数字信号,因此我选择了DS18B20温度传感器模块,该模块不仅可以对温度进行实时测控,并且具有较高的灵敏度。
在数据的显示方面我选择了LCD1602显示模块,整个系统采用STC89C52单片机控制。
本设计在Altium Designer 上画出原理图,然后通过热转印制作PCB 板,完成硬件部分。
此次设计在大量科学知识的支持下具有较高的可行性和实用性。
1 系统工作原理该系统是在C 语言编程以及51单片机知识为基础上进行设计的,同时采用了DS18B20温度传感器模块以及LCD1602显示模块,利用KEIL 软件进行软件编程,将编写好的程序录入51单片机中,在51单片机的控制下实现温度数据的采集。
图1 系统整体结构框图整个实时数据采集系统满足以下功能指标:线和表格中。
2 硬件系统设计图2 总体系统结构此系统以STC89C52单片机为控制核心,采用了数字温度传感器模块DS18B20,该模块将采集到的温度数据转化为数字信号,并将信号传送给单片机,单片机处理数据后,通过LCD1602液晶显示器将温度显示出来。
在整个作品上首先提到的是硬件系统的设计,然后就是各个模块的工作原理以及工作特点,详细介绍系统的硬件设计,在给出系统的连接图,通过PROTEL 99SE 进行系统电路原理图的绘制,生成相应的PCB 板,并分析系统的工作原理,在软件方面对整体和各个模块的程序进行设计,在KEIL 中进行编写,在编写过程中如果出现理论错误,系统会给与提示,编程结束后也可手动调试来改正错误,或者修改程序功能。
基于51单片机的多路温度采集控制系统设计.
基于51单片机的多路温度采集控制系统设计言:随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。
本次设计的目的在于学习基于51单片机的多路温度采集控制系统设计的基本流程。
本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。
单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LED进行显示。
本系统可以实现多路温度信号采集与显示,可以使用按键来设置温度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和继电器的目的。
我所采用的控制芯片为AT89c51,此芯片功能较为强大,能够满足设计要求。
通过对电路的设计,对芯片的外围扩展,来达到对某一车间温度的控制和调节功能。
关键词:温度多路温度采集驱动电路正文:1、温度控制器电路设计本电路由89C51单片机温度传感器、模数转换器ADC0809、窜入并出移位寄存器74LS164、数码管、和LED 显示电路等组成。
由热敏电阻温度传感器测量环境温度,将其电压值送入ADC0809的IN0通道进行模数转换,转换所得的数字量由数据端D7-D0输出到89C51的P0口,经软件处理后将测量的温度值经单片机的RXD端窜行输出到74LS164,经74LS164 窜并转换后,输出到数码管的7个显示段,用数字形式显示出当前的温度值。
89C51的P2.0、P2.1、P2.2分别接入ADC0809通道地址选择端A、B、C,因此ADC0809的IN0通道的地址为F0FFH。
输出驱动控制信号由p1.0输出,4个LED为状态指示,其中,LED1为输出驱动指示,LED2为温度正常指示,LED3为高于上限温度指示,LED4为低于下限温度指示。
当温度高于上限温度值时,有p1.0输出驱动信号,驱动外设电路工作,同时LED1亮、LED2灭、LED3亮、LED4灭。
基于51单片机的多路温度采集系统
基于单片机的多路温度采集系统一、摘要:本设计利用单片机及Keil编程软件编程和PROTEUS单片机仿真软件和电子电工等方面知识,用Keil编程软件编程,用PROTEUS单片机仿真软件仿真。
最后制作实物,将程序下载到单片机中,利用(I/O)口采集来自多路温度的数据,根据各路温度的不同,集中准确的显示出来,并且根据所设温度的上下限通过驱动蜂鸣器进行听觉上的报警,同时还可以通过LED灯协助进行视觉上的报警,从而达到多点温度的采集和报警的目的。
以Keil编程软件和PROTEUS软件来进行仿真、分析,调试,为设计提供了一个方便、快捷的途径,为设计节约了设计时间。
关键词:AT89S52单片机温度采集报警二、设计要求1、检测的温度范围:0℃~100℃。
2、检测分辨率 0.1℃。
3、显示的多路的温度值不相互干扰,而且对各个传感器的所属温度都能进行报警。
三、硬件电路设计1、系统的设计思路本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。
单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LCD进行显示。
本系统可以实现多路温度信号采集与显示,可以使用程序来设置温度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和LED进行报警。
2、系统总体设计方案系统总体主要由对单片机进行编程后得到控制,系统的其他功能部件分别接至单片机的对应I/O口。
整体模块如图:3、主控制器本次设计选择Atmel 公司生产的AT89C51作为控制芯片。
AT89C51是高性能的CMOS8位单片机,片内含有4K bytes 的可反复擦写的只读程序存储器和128的随机存取数据存储器。
AT89系列与MCS-51系列单片机相比有两大优势:第一,片内程序存储器采用闪速存储器,使程序的写入更加方便;第二,提供了更小尺寸的芯片,使整个电路体积更小。
基于51单片机的多路温度采集控制系统设计
1 系 统 设 计
在温度采集 系统 中我们常常用到集成 型温度 传感器 ,集成型温度传感器 可以 达到较高 的精 度 ,在集成型温度传感器 的使用过程 中,由于采用 的单 总线传输方 式进行对远距 离的多点温度进行检测 ,所以在程序的控制上 比较 复杂。所以 ,在 温度测量系统 中,采 用抗干扰能力强 的新 型数 字温度传感器 ,新型数字 温度 传感 器D S 1 8 B 2 0 具有体积更 小、精度更 高 、适用 电压更宽、采用 一线总线、可组网等 优点 , 在 实际应用中取 得了 良好的测温效果。系统通过温度传感器获取温度信息 , 通过运算得到温度显示在 L E D显示屏上 , 并 与设 定值进行 比较 ,选择是否进行报 警响应 。系统 的设计框 图如下 图 1 所示 。
3 软件 设计
软件设 计是整个温度采集 系统 的关键 ,即简洁的硬件结构是靠 复杂的软件来 支持的。多个器件挂在一条 总线上为了识别不同的器件 ,在程序设 计过程中一般 有四个步骤 :初始化命令 ;传送 R O M命令 ;传送 R A M命令 ;数据交换命令 。由 于 已经在 上面获取 了多个 D S 1 8 B 2 0的 R O M 代码并 在 A T 8 9 S 5 2单片机 内部 的 E 2 P R O M 中建立 了测量位置点和传感器 6 4位 R O M 代码之间的关系表 。软件系统 框图如下图 2 所示。设计方法如下: ( 1 )采用模块程序设计 。 ( 2 )采用 自 顶 向下的程序设计 。 ( 3 )外部设备和外部事件尽量采用中断方式 与 C P U联络 , 这样既便于系统模块 化, 也可提高程序效率 。 ( 4 )近几年推出的单片机开发系统, 有些是支持高级语言的, 如C 5 1与 P L / M 9 6 的编程和在线跟踪调试。 ( 5 )系统的软件设 计应充分 考虑到软件抗干扰措施 。 系统经过初始化 ,进人 多通道显示 ,然后扫描键盘 ,判断是否有按键按下 , 然后进行按键所 控制的通道的温度采集 。所采集 的温 度与设定的温度相 比较 ,越 限可 以报警 。 由于 D S 1 8 B 2 0 需要初始化才能使用 ,因此 ,首先必须对系统进行初始化并 且 要关闭所有 中断 ,D S I 8 B 2 0 把转换到 的温度读 出,然后放到 累加器 A中,把之前 设置 的温度报警的上限值转换成 D S 1 8 B 2 0的输 出值 ,这样然后再与报警上 限的温 度值进行 比较 ,如果检测的结果是温度没有超限 ,那么系统继续进行检测 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于51单片机的多路温度采集控制系统设计言:随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。
本次设计的目的在于学习基于51单片机的多路温度采集控制系统设计的基本流程。
本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。
单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LED进行显示。
本系统可以实现多路温度信号采集与显示,可以使用按键来设置温度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和继电器的目的。
我所采用的控制芯片为AT89c51,此芯片功能较为强大,能够满足设计要求。
通过对电路的设计,对芯片的外围扩展,来达到对某一车间温度的控制和调节功能。
关键词:温度多路温度采集驱动电路正文:1、温度控制器电路设计本电路由89C51单片机温度传感器、模数转换器ADC0809、窜入并出移位寄存器74LS164、数码管、和LED显示电路等组成。
由热敏电阻温度传感器测量环境温度,将其电压值送入ADC0809的IN0通道进行模数转换,转换所得的数字量由数据端D7-D0输出到89C51的P0口,经软件处理后将测量的温度值经单片机的RXD端窜行输出到74LS164,经74LS164 窜并转换后,输出到数码管的7个显示段,用数字形式显示出当前的温度值。
89C51的P2.0、P2.1、P2.2分别接入ADC0809通道地址选择端A、B、C,因此ADC0809的IN0通道的地址为F0FFH。
输出驱动控制信号由p1.0输出,4个LED为状态指示,其中,LED1为输出驱动指示,LED2为温度正常指示,LED3为高于上限温度指示,LED4为低于下限温度指示。
当温度高于上限温度值时,有p1.0输出驱动信号,驱动外设电路工作,同时LED1亮、LED2灭、LED3亮、LED4灭。
外设电路工作后,温度下降,当温度降到正常温度后,LED1亮、LED2亮、LED3灭、LED4灭。
温度继续下降,当温度降到下限温度值时,p1.0信号停止输出,外设电路停止工作,同时LED1灭、LED2灭、LED3灭、LED4亮。
当外设电路停止工作后,温度开始上升,接着进行下一工作周期。
2、温度控制器程序设计本软件系统有1个主程序,6个子程序组成。
6个子程序为定时/计数器0中断服务程序、温度采集及模数转换子程序ADCON、温度计算子程序CALCU、驱动控制子程序DRVCON、十进制转换子程序METRICCON及数码管显示子程序DISP。
(1)主程序主程序进行系统初始化操作,主要是进行定时/计数器的初始化。
(2)定时/计数器0中断服务程序应用定时计数器0中断的目的是进行定时采样,消除数码管温度显示的闪烁现象,用户可以根据实际环境温度变化率进行采样时间调整。
每当定时时间到,调用温度采集机模数转换子程序ADCON,得到一个温度样本,并将其转换为数字量,传送给89C51单片机,然后在调用温度计算子程序CALCU,驱动控制子程序DRVCON,十进制转换子程序MERTRICCON,温度数码显示子程序DISP。
(3)温度采集及模数转换子程序ADCON该子程序进行温度采样并将其转换为8位数字量传送给89C51的P0口。
采样得到的温度数据存放在片内RAM的20H单元中。
(4)温度计算子程序CALCU根据热敏电阻的分度值和电路参数计算出出一张温度表,存放在DATATAB数据表中,由于篇幅关系,本程序只给出0-49℃的温度数据。
一个温度有两个字节组成,前一字节为温度值,后一字节为该温度所对应的热敏电阻上的电压的数字量。
根据采样值,通过查表及比较的方法计算出当前的温度值,并将其存入片内RAM的21H单元。
采用查表法计算温度值时为了克服热敏电阻的阻值——温度特性曲线的非线性,提高测量精度。
(5)驱动控制子程序DRVCON该子程序调节温度,当温度高于上限温度时(本程序设为30℃),P1.0输出驱动控制信号,驱动外设工作降温;当温度下降到下限温度时(本程序设为25℃),P1.0停止输出,温度上升,周而复始;工作状态有LED1-LED4指示。
(6)十进制转换子程序METRICCON将存放于内部RAM21H单元的当前温度值得二进制数形式转换为十进制数(BCD码)形式,以便输出显示,转换结果存放在片内RAM的32H单元(百位)、31H(十位)、30H单元(个位)。
(7)数码显示子程序DISP该子程序利用89C51串口的方式0串行移位寄存器工作方式,将片内RAM的30H、31H、32H单元的BCD码查表转换为七段码后由RXD端串行发出去,然后经74LS164串并转换,将七段值传送给数码管,以十进制形式显示出当前温度值。
根据以上分析画出的部分程序设计流程图如图1-0至图1-4所示。
图1-0 部分程序设计流程图的设计框架图1-1 主程序流程图图1-2 T0中断服务程序流程图图1-3 温度采样及模数转换子程序流程图图1-4 温度计算子程序流程图3、具体内容(1)温度控制器电器原理图设计按以上分析及相关知识设计出的温度控制器电路原理图如图1-5所示。
图1-5 温度控制电路原理图(2)温度数据表在图1-5所示的电路中,热敏电阻的连接如图1-6所示。
图1-6 热敏电阻的连接本设计所使用的热敏电阻的分度表及ADC0809转换后的电压数字量见附表1-1所示转换后的电压数字量的计算方法为:热敏电阻与R8并并联后的总电阻:R=(Rt*R8)/(Rt+R8)R与R7串联电路中R的分压值(即输入ADC0809的模拟量):V=5R/(R+R7)5V被分成256等分(8位量化),则每份的电压值:△=5/256输入的模拟量电压经8位量化后的数字量:D=V/△例如,热敏电阻在温度为20℃时的阻值为62.254千欧,则根据上述方法计算出的电压数字量为169,注意在计算中R7用实测值19.6千欧代入进入计算。
在实际做该电路时,可根据自己所选择的热敏电阻的分度表计相关电路参数,按上述方法计算出ADC0809转换后的各温度对应的电压数字量。
程序中的温度数据表构成:1个温度数据占2个字节,前一字为温度值,后一个字节为该温度下热敏电阻上的模拟电压转换成德8位数字量。
如在20℃时,热敏电阻对应的电压数字量为169,则20,169组成一个温度为20℃的温度数据。
按这样方法组成的0-49℃的温度数据表如下:DATATAB:DB 0,194,1 ,193 ,2 ,192,3,191,4,190 DB 5,189,6,188,7 ,187,8,186,9,185DB10,184,11,182,12,181,13,180,14,178DB 15,177,16,175,17,174,18,173,19,171DB 20,169,21,168,22,166,23,165,24,163DB 25,161,26,159,27,158,28,,156,29,154DB 30,152,31,150,32,149,33,147,34,145DB 35,143,36,141,37,139,38,147,39,135DB 40,133,41,131,42,129,43,127,44,125DB 45,123,46,121,47,118,48,116,49,114在温度采样机模数转换子程序中,采样得到的当前温度下热敏电阻上的数字电压存于20H单元,在温度计算子程序中通过查表的方法从表中的第一个温度(0℃)下热敏电阻上的数字电压开始,依次取出各温度下热敏电阻上的十字电压,与与存于20H单元的当前温度下热敏电阻上的的数字电压比较,如小于当前温度的数字电压,则在取出下一温度的数字电压与当前温度的数字电压比较;直到大于或等于当前的温度数字电压,比较结束。
如大于则取出前一温度作为当前温度存于21H单元,如等于则将该温度作为但前温度存于20H单元。
这种温度计算方法,避免了温度特性曲线的非线性对温度计算精确性的影响,计算出的温度非常精确。
(3)温度控制程序设计在本设计中,晶体振荡器频率为6MHz,T0定时时间为100ms,T0工作于方式1,则T0的初值为:X=(最大计数值M―定时时间t/及其周期Tm)=216 -100ms/2us=15536=3CB0H按以上任务分析设计出的源程序如下:ORG 0000H;跳转到主程序LJMP MAIN;ORG 000BH;LJMP T0INT;跳转到T0中断服务程序;主程序ORG 0100H;MAIN:MOV R1,#10; T0 100马上定时溢出计数寄存器R1赋初值10 MOV P1,#0FFH; 所有指示灯灭MOV SP,#60H; 堆栈指针赋初值60HMOV TMOD,#01H; T0定时、方式1、软启动MOV TL0,#0B0H; T0赋初值MOV TH0,#3CH;MOV IE,#82H; 开放T0中断SETB TR0; 启动T0SJMP $;定时/计数器0中断服务程序ORG 0200H;T0INT:DJNZ R1,NEXT; T0溢出10次,即1s进一次采样处理LCALL ADCON; 调用温度采样及模数转换子程序LCALL CALCU; 调用温度计算子程序LCALL DRVCON; 调用驱动控制子程序LCALL METRICCON; 调用十进制转换子程序LCALL DISP; 调用数码管显示子程序MOV R1,#10; R1重赋值10NEXT:MOV TL0,#0B0H; T0重装初值MOV TH0,#3CH;RETI;温度采样及模数转换子程序ORG 0300H;ADCON:MOV DPTR,#0F0FFH; 选通ADC0809通道0MOV A,#00H;MOVX @DPTR,A; 启动A/D转换HERE:JNB P3.3,HERE; 判断数据转换是否结束,没结束则等待MOVX A,@DPTR; 读取转换后的数据MOV 20H,A; 将从ADC0809中读取的当前温度下热敏电阻上的电压值存于20H单元RET ;温度计算子程序ORG 0400H;CALCU:MOV R2,#01H; R2为数据表的索引值寄存器MOV DPTR,#DATATAB; 温度数据表首地址送DPTRNEXT1:MOV A,R2; 索引值送AMOVC A,@A+DPTR; 查表取出某一温度的数字电压值CJNE A,20H,K1; 与当前温度的数字电压值比较DEC R2; 等于当前温度的数字电压值,则查表取出该温度值作为当前温度值MOV A,R2;MOVC A,@A+DPTR;LJMP K3;K1:JNC K2; 大于当前温度的数字电压值,则继续取出下一温度的数字电压进行比较DEC R2; 小于当前温度的数字电压值,则查表取出前一个温度值作为当前温度值DEC R2DEC R2MOV A,R2;MOVC A,@A+DPTR;LJMP K3;K2:INC R2;INC R2;LJMP NEXT1;K3:MOV 21H,A; 将当前温度值存于21H单元RET;DATATAB;DB 0,194,1,193,2,192,3,191,4,190;温度数据表DB 5,189,6,188,7,187,8,186,9,185DB 10,184,11,182,12,181,13,180,14,178DB 15,177,16,175,17,174,18,173,19,171DB 20,169,21,168,22,166,23,165,24,163DB 25,161,26,159,27,158,28,156,29,154DB 30,152,31,150,32,149,33,147,34,145DB 35,143,36,141,37,139,38,137,39,135DB 40,133,41,131,42,129,43,127,44,125DB 45,123,46,121,47,118,48,116,49,114驱动控制子程序ORG 0500H;DRVCON:MOV A,21H; 取出当前温度值CJNE A,#30,J1; 与上限温度值(30℃)比较LJMP GO;J1:JNC DRV1; 若高于上限温度,则输出驱动信号,同时高于上限温度指示灯点亮CJNE A,#25,J2; 与显现温度(25℃)比较LJMP GO;J2:JC DRV2; 弱低于下限温度,则驱动信号停止输出,同时点亮低于下限温度的指示灯LJMP GO;DRV1:CLR P1.0;SETB P1.1;CLR P1.2;SETB P1.3;LJMP OVER;DRV2:SETB P1.0SETB P1.1;CLR P1.2;SETB P1.3;LJMP OVER;DRV2:SETB P1.0;SETB P1.1;SETB P1.1;SETB P1.2;CLR P1.3;LJMP OVER;GO:CLR P1.1; 在下线温度(25℃)至上限温度(30℃)之间,则驱动信号保持前面状态,同时温度正常指示灯点亮SETB P1.2;SETB P1.3;OVER:RET;;十进制转换子程序ORG 0600H;METRICCON:MOV R3,#00H; 将存于21H单元中的当前温度转换为BCD码MOV R4,#00H; 百位存于32H单元,十位存于31H单元,个位存于30H单元MOV A,21H;CLR C;W1:SUBB A,#100;JC W2;INC R4;AJMP W1;W2:ADD A,#100;CLR C;W3:SUBB A,#10;JC W4;INC R3;AJMP W3;W4:ADD A,#10;MOV 30H,A;MOV 31H,R3;MOV 32H,R4;RET;;数码管显示子程序ORG 0700H;DISP:MOV R5,#03H; 将存于32H单元、31H单元、30H单元中的温度BCD码查表转换为七段码MOV R0,#30H; 通过串行通信方式0输出驱动3个数码管,显示当前温度MOV DPTR,#TAB;LOOP:MOV A,@R0;MOVC A,@A+DPTR;MOV SBUF,A;WAIT:JNB T1,WAIT;CLR T1;INC R0;DJNZ R5,LOOP;RET;TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;七段码数据表附表:1-1热敏电阻分度表及经ADC0809转换后的电压数字量19 65.0972 17120 62.254 16921 59.5519 16822 56.9829 16623 54.5392 16524 52.2138 1625 50 16126 47.8916 15927 45.8829 15828 43.9683 15629 42.1428 15430 40.4017 15231 38.7405 15032 37.1552 14933 35.6418 14734 34.1967 14535 32.8164 14336 31.4979 14137 30.238 13938 29.0339 13739 27.883 13540 26.7828 133参考文献:1.贾好来主编.MCS-51单片机原理及应用.北京:机械工业出版社,2006.2.江太辉,石秀芳主编. MCS-51单片机原理及应用.广东:华南理工大学出版社,2004.3.曹龙汉,刘安才主编. MCS-51单片机原理及应用.重庆:重庆出版社,2004.4.劳动和社会保障部教材办公室主编.单片机应用技术(汇编语言).北京:中国劳动社会保障出版社,2006.5.何立民主编. MCS-51单片机应用系统设计.北京:北京航天航空大学出版社,1990.6.朱定华主编.单片机原理及接口技术实验.北京:北京大学出版社,2002.- 21 -。