51单片机的多路温度采集控制系统

合集下载

多路温度采集及监控系统的设计与实现,温度采集,8051F35.

多路温度采集及监控系统的设计与实现,温度采集,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单片机多点温度采集系统程序清单

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单片机的温度控制系统的设计

基于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单片机的多路温度采集控制系统设计言:随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。

本次设计的目的在于学习基于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单片机为核心的多路温度采集系统电路设计

毕业设计_基于AT89C51单片机为核心的多路温度采集系统电路设计
关键词:数字温度传感器(DS18B20);单片机(AT89C51);液晶(LCD1602)显示器。
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 单片机的温度采集系统设计

基于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温度传感器设计了一款能够实现对环境温度进行实时采集并当环境温度超过设定值时进行自动报警的温度采集系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 -。

相关文档
最新文档