历史上的今天
今天是: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) {
史海拾趣
|
用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 拨号上网遇到的问题 执行的指令如下: AT+CGDCONT=1,\"IP\",\"CMNET\" OK AT%CGPCO=1,\"PAP,,\",1 OK AT$DESTINFO=\"211.103.040.171\",1,9002 $DESTINFO:3\", 1, … 查看全部问答> |
|
计并制作一个非接触供电的LED照明系统,该系统包括能量发送模块和LED照明模块。LED照明模块包括一个带能量接收单元和五个LED灯(每个LED的平均电流为10mA),LED照明模块不得外加任何电源,它的供电只能来自能量发送模块,两个模块之间没有任何导 ...… 查看全部问答> |
|
我用IAR3。2,F149的芯片,编程时在定时中断中定义了一个局部变量,硬件仿真时在WATCH窗口中观察此变量有一个初值102(我定义时没复初值),变量地址(LOCATION)被分配为0X9,有时又被分配为0XB,请问高手这个0X9或0XB是指哪的地址,我在MEMORY窗口中 ...… 查看全部问答> |




