历史上的今天
返回首页

历史上的今天

今天是:2025年01月28日(星期二)

2020年01月28日 | 单片机双路可编程温度控制系统

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)

                                        {

推荐阅读

史海拾趣

CT Micro公司的发展小趣事
  1. 创业初期与技术创新

CT Micro公司最初由几位电子工程领域的专家创立,他们看到了微型计算机断层扫描(Micro-CT)技术在电子行业中的巨大潜力。初期,公司面临着资金短缺和技术难题,但他们通过不断研发和创新,成功开发出了一款具有高性价比的Micro-CT设备,迅速获得了市场的认可。

  1. 市场拓展与合作伙伴关系

随着产品的成熟,CT Micro开始积极寻求市场拓展。他们与多家电子制造企业建立了合作关系,为这些企业提供Micro-CT设备的定制服务。通过与这些企业的合作,CT Micro不仅扩大了市场份额,还进一步提升了产品的技术水平和应用范围。

  1. 研发升级与产品迭代

面对日益激烈的市场竞争,CT Micro不断投入研发力量,对Micro-CT设备进行升级和迭代。他们成功推出了多款新型设备,具有更高的分辨率、更快的扫描速度和更低的辐射剂量。这些新产品的推出,进一步巩固了CT Micro在电子行业中的领先地位。

  1. 国际化战略与市场拓展

随着国内市场的饱和,CT Micro开始实施国际化战略。他们积极参与国际展览和研讨会,展示自己的产品和技术实力。同时,他们还在海外设立了销售和服务中心,为国际客户提供更加便捷的服务。通过这些努力,CT Micro成功打开了国际市场的大门。

  1. 社会责任与可持续发展

在快速发展的同时,CT Micro也积极履行社会责任。他们注重环保和可持续发展,采用环保材料和节能技术生产产品。此外,他们还积极参与公益事业,为贫困地区的教育和医疗事业贡献力量。这些举措不仅提升了公司的社会形象,也为其可持续发展奠定了坚实基础。

请注意,这些故事框架是虚构的,并不代表CT Micro公司的实际发展情况。如果您需要了解CT Micro公司或类似公司的真实故事,建议您查阅相关公司的官方网站、新闻报道或行业分析报告。

Cypress Industries公司的发展小趣事

Cypress不仅仅局限于某一特定的市场领域,而是积极开拓多元化的市场布局。除了传统的数据通信和消费类电子市场外,公司还涉足了汽车、工业和太阳能等领域。这种多元化的市场策略使Cypress能够抵御单一市场波动的影响,保持稳定的业务增长。

CHONGQING PINGYANG ELECTRONICS CO.,LTD.公司的发展小趣事

重庆平洋电子有限公司,自其1998年3月创立之初,便扎根于重庆这片热土,开始了其在电子行业的探索之旅。当时,电子行业正处于快速发展的阶段,市场竞争激烈。然而,公司凭借对市场的敏锐洞察和对技术的执着追求,成功研发出多款电子元器件,逐渐在市场中站稳脚跟。

Fluke公司的发展小趣事

2005年,重庆平洋电子有限公司迎来了一个重要的合作机会。经过严格的筛选和谈判,公司与海尔集团达成了先期采购协议,成为海尔集团在重庆市唯一一家免第三方认证的企业。这一合作不仅为公司带来了稳定的订单和收益,还进一步提升了公司的品牌影响力和市场竞争力。

CSR plc(剑桥硅晶无线电)公司的发展小趣事

2009年,CSR plc以1.36亿美元成功收购了SiRF技术控股公司。这一收购为CSR plc带来了GPS和A-GPS的知识产权组合、航位推算和位置中心平台等重要技术资源,使其在世界无晶圆半导体厂商中的地位得到了进一步巩固。此次收购也让CSR plc的客户群体得到了极大的扩展,包括世界排名前七位的手机制造商中的六家,以及世界前五位的个人导航设备制造商等。

DDK公司的发展小趣事

DDK公司在发展过程中,始终牢记社会责任,积极履行企业公民的义务。公司积极参与公益事业,关注环境保护和社会发展,为社会做出了积极贡献。同时,DDK公司还积极推动行业健康发展,与同行企业共同维护市场秩序和公平竞争环境。这种社会责任的担当,让DDK公司在电子行业中树立了良好的企业形象。

问答坊 | AI 解惑

请教在路测量电阻

我在电路板上焊了个15K的贴片电阻,电路运行一段时间后,在短电测量该电阻时,发现该电阻值变为3.6K了,不知道是怎么回事,有些电阻值是对的,可有些出现了很大的偏差,不知道是不是在路测量不准确啊…

查看全部问答>

ARM嵌入式系统设计基础教程课件

ARM嵌入式系统设计基础教程课件…

查看全部问答>

用vs2005的.net compact framework2.0开发Wince程序的问题,急!

我用vs2005开发的wince项目,在pc机上可以运行,但放到开发板上之后运行程序则出现Not Supported Exception,我使用了泛型类List,这个类在mscorlib.dll库中,但设备的windows目录下没有这个库,不知道是为什么,裁剪系统时已经加入了.net 2.0的支 ...…

查看全部问答>

请问以下程序怎么解释啊?谢谢

//接受一个字节子程序,出口为接受到的数据R_DATA int RECEIVE()   {     int R_DATA=0,sz,i;     *PFDATDIR=*PFDATDIR & 0xFFDF;             //SDA为输入   & ...…

查看全部问答>

使用BenQ M23 GPRS模块拨号指令遇到的问题

BENQ M23 拨号上网遇到的问题 执行的指令如下: AT+CGDCONT=1,\"IP\",\"CMNET\" OK AT%CGPCO=1,\"PAP,,\",1 OK AT$DESTINFO=\"211.103.040.171\",1,9002 $DESTINFO:3\", 1, …

查看全部问答>

学习Wince的好方法

请各位大虾给一点宝贵意见,怎么样快速学好Wince!!!…

查看全部问答>

非接触供电的LED照明系统

计并制作一个非接触供电的LED照明系统,该系统包括能量发送模块和LED照明模块。LED照明模块包括一个带能量接收单元和五个LED灯(每个LED的平均电流为10mA),LED照明模块不得外加任何电源,它的供电只能来自能量发送模块,两个模块之间没有任何导 ...…

查看全部问答>

基于SEED-DIM3517的平板电脑

基于SEED-DIM3517的平板电脑…

查看全部问答>

有什么办法能判断USART正在发送一个字节?

我说的“正在发送”是指TXD引脚上正在向外移位数据。 状态寄存器里好像没有哪个位能代表这种状态。…

查看全部问答>

问局部变量的地址分配问题

我用IAR3。2,F149的芯片,编程时在定时中断中定义了一个局部变量,硬件仿真时在WATCH窗口中观察此变量有一个初值102(我定义时没复初值),变量地址(LOCATION)被分配为0X9,有时又被分配为0XB,请问高手这个0X9或0XB是指哪的地址,我在MEMORY窗口中 ...…

查看全部问答>