单片机双路可编程温度控制系统

发布者:变形金刚最新更新时间:2020-01-28 来源: 51hei关键字:单片机  双路可编程  温度控制系统 手机看文章 扫描二维码
随时随地手机看文章

【简要说明】

一、尺寸:长72mmX宽99mmX高20mm
二、 主要芯片:单片机、DS18B20、数码管
三、 工作电压:输入电压小于12V,另有24V 可选。功耗小于2W
四、  特点:1、具有输出电压指示灯。
            2、输出具有指示灯。
            3、采用螺旋压接端子
            4、强大的滤波电路。
            5、具有四位数码管显示,可以显示小数点。
            6、具有系统复位功能
            7、具有完善的保护电路:电流限制、热关断电路、电源防接反功能、续流保护、光耦隔离等
            8、可接两个DS18B20传感器
            9、两路继电器独立工作控制

            10、可以自由编程,提供参考程序
            11、继电器所有触点全部输出

            12、三个输入控制按键,通过程序也可以自由设定
            13、工作稳定可靠。           

            14、工作温度范围-40℃~+70℃

            15、工作湿度 40%  ~ 80%RH

            16、可装入槽型板,并安装在DIN导轨上。


GYJ-0033_双路可编程温度控制系统原理图及PCB图
 

元件清单:
 

实物图与接线图:
 

A为传感器1的当前温度,B为传感器2的当前温度,C为设定的差值温度。

当满足:(A-B)>=C,时,继电器吸合,不满足条件时继电器断开。

因为内部是6M晶振  外部是11.0592M  如果选择外部时钟,读取时间达不到60um就不能运行。

两路温控两个探头温度差控制单片机源程序如下:

/***********************************************************************

单品片机;60s2

板子;     双路温控继电器,两个温控探头,上面的温控探头是A面显示的温度,  下面的温控探头是B面显示的温度,

操作过程; 下完程序先设定C,先按加温度键,然后再按减温键,断一下电再上电,这样是为了设定掉电存储

板子功能;  当A的温度大于B的温度到设定值时,继电器A吸合,当再这个设定范围时,断开。有个问题,当B大于A时也会吸合

*************************************************************************/

#include

#include

#include "INTRINS.H" 

#define uchar unsigned char

#define uint  unsigned int

//数码管显示段码 

code unsigned char duan[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88, 0x83,  0xC6,  0xBF,0x7f}; 

                                                                              

unsigned char dong[4] = { 0xFF, 0xFF, 0xFF, 0xFF};        //数码管显示缓冲区

uchar i = 0;  //数码管扫描动态索引

uint time2,time3;

uchar gai = 0;

uchar mode = 1;           //换页变量


/********************掉电存储*********************************************/

typedef unsigned char  INT8U;

typedef unsigned int   INT16U;


sfr IAP_DATA    = 0xC2;

sfr IAP_ADDRH   = 0xC3;

sfr IAP_ADDRL   = 0xC4;

sfr IAP_CMD     = 0xC5;

sfr IAP_TRIG    = 0xC6;

sfr IAP_CONTR   = 0xC7;

#define ENABLE_ISP 0x82 //系统工作时钟<20MHz 时,对IAP_CONTR 寄存器设置此值


union union_temp16

{

    INT16U un_temp16;

    INT8U  un_temp8[2];

}my_unTemp16;


INT8U Byte_Read(INT16U add);              //读一字节,调用前需打开IAP 功能

void Byte_Program(INT16U add, INT8U ch);  //字节编程,调用前需打开IAP 功能

void Sector_Erase(INT16U add);            //擦除扇区

void IAP_Disable();                       //关闭IAP 功能

void Delay();

/******************************18b20*************************************************************/

bit flag1s = 0;          //1s定时标志


extern bit Start18B20();   //18b20初始化函数

extern bit Get18B20Temp(int *temp);        //18b20温度读取函数

/******************************第二路温控*************************************************/

bit flag1ss = 0;          //1s定时标志


extern bit Start18B200();   //18b20初始化函数

extern bit Get18B20Tempp(int *tempp);        //18b20温度读取函数

/*******************************************************************************************/


sbit wei1 = P2^3;         //数码管的位断开关

sbit wei2 = P2^4;         

sbit wei3 = P2^5;

sbit wei4 = P2^6;         

         

bit d1 = 1;   //换画面按键当前值

bit d2 = 1;          //计数加按键当前值

bit d3 = 1;          //计数减按键当前值


sbit s1 =   P2^0;    //计数加

sbit s2 =   P2^1;         //计数减

sbit s3 =   P2^2;         //换画面按钮


sbit out1 = P1^2;         //高温启动

sbit out2 = P1^3;         //低温启动


uchar T0RH = 0;  //T0重载值的高字节

uchar T0RL = 0;  //T0重载值的低字节



void peizhit0(uint ms);        //配置t0定时器

void key();                                //按键扫描函数


void main()

{

        bit q1 = 1;

        bit q2 = 1;

        bit q3 = 1;

/***********************18b20***************************************/

        int intT, decT;  //温度值的整数和小数部分

        bit res ;

    int temp;        //读取到的当前温度值

        /***********************第二路18b20***************************************/

        int  intTT, decTT;  //温度值的整数和小数部分

        bit ress ;

    int tempp;        //读取到的当前温度值


        Start18B20(); /*启动DS18B20*/


        Start18B200(); /*启动DS18B20*/


/***********************开机读掉电存储内容******************************************************/

                 

                

                time2 = Byte_Read(0x03)*255+Byte_Read(0x02);           //注意这是把高字节和低字节合在一起

                time3 = Byte_Read(0x05)*255+Byte_Read(0x04);           //读三的时间

            EA = 1;       //开总中断

            peizhit0(1);  //配置T0定时1ms


        while(1)

        {

/*********************第一个按键换页按键************************************/

                 if(d3 != q3)

                {

                        q3 = d3;

                        if(d3 == 0)

                        {

                                mode = mode+1;                                 //功能设置,4个参数,4个周期为一个循环

                                if(mode == 4)

                                {

                                        mode = 1;

                                }

                        }

                }

/*******************************第二个按键按下*************************/


                 if(d2 != q2)

                         {

                                 q2 = d2;

                                if(d2 == 0)

                                {

                                  

                                         if(mode ==2)

                                        {

                                                if(time2>0)

                                                {

                                                        time2--;

                                                }

                                        }

                                        else if(mode ==3)

                                        {

[1] [2] [3] [4]
关键字:单片机  双路可编程  温度控制系统 引用地址:单片机双路可编程温度控制系统

上一篇:单片机控制28BYJ-48步进电机驱动源码
下一篇:单片机RGB彩灯渐变七彩灯无频闪 源程序

推荐阅读最新更新时间:2024-11-16 15:16

51单片机学习笔记(六)_串口中断通信+定时器2串口中断
51单片机默认使用定时器1作为串口通信的波特率发生器、定时器1中断通信,串口与定时器1冲突,在遇到定时器不够用的时候可以用定时器2 #include reg52.h void DelayMs(unsigned int i); void SerialInit(); void SendByte(unsigned char sbyte); void SendString(unsigned char *pstr); void main(void) { SerialInit(); while(1); //注:必需要无限循环 } /* //单片机时钟周期:11.0592MHz 以时钟1作为波特率发生器 void SerialInit
[单片机]
贸泽开售英飞凌MOTIX™ TLE989x MCU: 单芯片功率IC,更适合汽车/BLDC电机控制
2023 年 10 月 23 日 – 提供超丰富半导体和电子元器件™的业界知名新品引入 (NPI) 代理商贸泽电子 贸泽开售英飞凌MOTIX™ TLE989x MCU: 配备CAN (FD) 接口的单芯片功率IC,更适合汽车/BLDC电机控制 (Mouser Electronics) 即日起开售英飞凌MOTIX™ TLE989x微控制器 (MCU)。 TLE989x系列微控制器扩展了其全面且经过验证的MOTIX™ MCU嵌入式功率IC产品组合,并采用CAN (FD) 作为通信接口。与TLE987x产品系列相比,此系列的处理能力提高了约60%,同时还拥有额外的功能安全和网络安全功能,如安全启动和密钥
[工业控制]
贸泽开售英飞凌MOTIX™ TLE989x <font color='red'>MCU</font>:  单芯片功率IC,更适合汽车/BLDC电机控制
单片机为核心的便携式电子产品解析方案
近年来以单片机为核心的便携式电子产品越来越多。为延长电池的使用寿命(或充电时间的间隔),要求稳压电源的压差(输人电压与输出电压之差)小、功耗小(静态电流小),并且要求在电池电压降落到 一定程度时,稳压器输出电压可降到门限电压,这样就能输出一个电池低电压信号(或称欠压信号),令 单片机复位。tps73系列就是为这一要求开发的有复位功能的低压差稳压器。 1.tps73系列的基本特点 tps73系列有3.3v,4.85v和5v固定电压输出及输出为1.2~9.75v可设定输出电压等4个品种,最大输出 电流可达500ma。 该系列主要特点有: ①输出电压精度高(20%); ②输出噪声低(2μa); ③压差低,在输出为100ma时
[单片机]
以<font color='red'>单片机</font>为核心的便携式电子产品解析方案
单片机实验板2011_V1.1-ADC0809练习程序
原理图: ADC0809控制时序: 测试程序 /************单片机教学实验板 ******************/ /*功能描述:ADC0809练习 */ /*作者:郑 文 */ /*编写时间:2011.3.1 */ /*接外部晶振11.0592 MHZ */ /*功能描述*/ //AD采集声音 LED输出 #include reg52.h #include STC_Delay.h #include stdio.h #include stdlib.
[单片机]
<font color='red'>单片机</font>实验板2011_V1.1-ADC0809练习程序
多费率电能表中基于单片机串行口红外通信的设计
作者Email: 3-14159265@163.com 摘要:利用单片机的串行口、定时器/计数器T0、定时器/计数器T1、红外发射管和红外接收管等简单的软硬件就可靠地实现了多费率电能表的红外通信功能。本设计详细介绍了串行口红外通信的软硬件设计方法,并给出了具体的电路原理图、波形图和51单片机程序。 关键词: 红外通信 串行接口 电能表 SSU7301单片机 0 引言 多费率电能表是我国目前节约用电和计划用电政策下不可缺少的电能计量产品,多费率电能表的通信接口一般兼有红外接口和RS485接口。红外通信具有直观、操作简便、可靠性高等优点,是电能表中使用最为普遍的一种通信方式,是电能表和掌机之间实现抄表、编程、校时、数据管理
[单片机]
单片机C语言教程(一)
  使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码,这样单片机才能执行编写好的程序。KEIL uVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。   以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。KEIL51是一个商业的软件,对于我们这些普通爱好者可以到KEIL中国代理周立功公司的网站上下载
[单片机]
<font color='red'>单片机</font>C语言教程(一)
浅谈USB闪存盘与PIC微控制器系统的连接
  作为现今普遍接受的移动存储工具,USB闪存盘在各种嵌入式系统中也获得广泛应用。本文介绍低成本PIC控制器通过USB2.0全速接口与闪存盘进行连接的实现过程,并着重针对PIC微控制器和VinculumUSB接口芯片说明有关嵌入式接口的硬件设计以及程序的编写。   如今各种闪存盘和USB外设价格已相当低廉,并被广泛应用到带USB接口的PC中.而要将它们应用于8位或16位嵌入式系统中,如何解决成本和功耗等问题才是关键.这其中的原因主要是这类系统中用到的嵌入式控制器,如Microchip公司推出并得到广泛应用的PIC系列器件具有多种存储密度和外设,但由于缺乏接口、资源和性能,无法作为USB的主控制器。   在实际应用中,可用VNC1LV
[单片机]
节约单片机端口资源的键盘电路
    摘要: I/O端口是单片机实现对目标控制的端口,一般小型单片机的I/O端口都十分宝贵。文中介绍了一种可节省单片机I/O端口的键盘电路,分析了新型键盘电路结构和工作原理。最后给出了基于该键盘电路C51语言程序和软件处理过程。     关键词: 单片机 I/O端口 键盘 组合 扫描 1 新型键盘电路 键盘电路是单片机应用系统最常用的人机接口,往往要占用较多的I/O端口,利用本文介绍的电路,可以最大限度地减少键盘电路对I/O端口的点用。本电路特别适合一些引脚少、结构紧凑的单片机,可为其节省宝贵的I/O资源。 这里以3根I/O线为例,普通接法只能接3个键,即使是采用改进后的组合接法 ,最多也只能接7个
[工业控制]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved