温度报警开关按键设定报警值 一、简要说明 模块尺寸:长88.1mmX宽44.7mm X 高20mm 工作电压:直流12伏; 模块功耗:0.03A(继电器吸合) 主要芯片:STC12C5204AD或STC12C5604AD、LM7805 二、特点: 1、 可编程(通过下载口下载),标准TTL接口 2、三个按键调节,可以编程实现想要的调节功能 3、下载程序时,通过USB转TTL免断电下载线,有需要顾客请点此 4、使用C语言编程,和普通51单片机编程一样,使用keil软件编程 5、有两路路输入控制端(低电平有效,即用电源负极触发) 6、两路输入也可做AD采集,采集0到5V电压 7、有电源带指示灯 8、继电器吸合时有指示灯 9、可控制交流220V/10A一下设备。(最大控制设备2000W) 10、提供程序免费定制服务 11、提供相关程序例程、原理图、使用说明和相关资料 三、使用场合: 工业控制、汽车设备改装、电子竞赛、毕业设计、单片机学习等等 四、接线说明: 1、DS18B20位置也可接10k电位器,通过编程采集电位器电压值来,来实现各种延时时间的调节参数 2、三个按键调节可以通过编程实现各种调节功能,比如时间设定等 3、IN1和IN2两路模拟量输入,可以采集0到5V模拟电压 五、下载程序步骤:
1、下载硬件连接
2、使用stc下载软件下载程序 六、默认功能: 注意:如顾客无特殊要求,板子下载默认功能程序 - 温度设定要有存储功能,断电重新启动时,设定的温度值有记忆。
- 设定报警温度值,设定温度范围是0到125度
- 温度设定用三个按键完成。分别为:key1功能键、key2调节键
- 按键要有防抖动功能。
- 按功能键key1时显示上次的温度设定值。同时设定温度的百位值闪烁,按上调键一次温度升高一度,同理,再次按下功能键时,十位进行调节。。
- 开机显示设定温度值,过5秒后显示实测温度。
- 当超过设定温度值时继电器吸合,低于设定温度时断开
七、DS18B20简介 DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。 1: 技术性能描述 ①、 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 ② 、测温范围 -55℃~+125℃,固有测温误差(注意,不是分辨率,这里之前是错误的)0.5℃。 ③、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。 ④、工作电源: 3~5V/DC ⑤ 、在使用中不需要任何外围元件 ⑥、 测量结果以9~12位数字量方式串行传送 ⑦ 、不锈钢保护管直径 Φ6 ⑧ 、适用于DN15~25, DN40~DN250各种介质工业管道和狭小空间设备测温 ⑨、 标准安装螺纹 M10X1, M12X1.5, G1/2”任选 ⑩ 、PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接 【整板标注】 1、用于各类延时,可用电位器调节延时时间 - 如用电位器调节延时时间的话,最大调节时间范围是0-255s
- 如用按键调节,最大调节时间是0-9999,具有掉电存储功能
- IN1和IN2两路信号输入端,可作为AD采样输入用
2、用于温度控制 【下载程序图示】 【改装晶振后可485接口传送温度】 【产品展示】 提供开发相关例程
触发启动停止继电器通、断时间都可调控制单片机源程序如下:
- /********************************************************************
- 按键调节延时控制类
- 实现功能:带停止,启动控制继电器通、断时间都可调控制程序(eeprom)
- 使用芯片:STC12C5204AD
- 晶振:11.0592MHZ
- 编译环境:Keil
- 硬件环境:四位数显两路输入三按键
- 作者:yang
- QQ:790244909
- /********************************************************************
- /********************************************************************
- 功能说明:继电器循环通断控制程序
- 继电器接通、断开时间都可调,
- IN1启动按键,短接GND,注意该触发端电压不能高于5V,否则烧坏单片机
- IN2停止按键,短接GND,注意该触发端电压不能高于5V,否则烧坏单片机
- key1功能键:调节模式与实时显示模式转换
- keynum=0:实时显示计时模式
- keynum=1:调整继电器设定闭合秒
- keynum=2:调整继电器设定闭合分
- keynum=3:调整继电器设定断开秒
- keynum=4:调整继电器设定断开分
- 以上四个设定值设定好后都存入eeprom,掉电可记忆
- 上电时,继电器吸合,数显开始计时,到达设定闭合时间后断开;数显清零,
- 数显开始计时,到设定时间,继电器闭合,数显清零。。。
- 循环下去。。
- 设定断开时间最大是99分59秒
- 设定闭合时间最大是99分59秒
- ********************************************************************/
- #include<STC12C5A60S2.H> //库文件
- #include <intrins.h>
- #include"eprom.h"
- #define uchar unsigned char//宏定义无符号字符型
- #define uint unsigned int //宏定义无符号整型
- #define DUAN P2 //P0口控制段
- #define WEI P1 //P2口控制位
- //输入控制端
- sbit IN1=P1^6;
- sbit IN2=P1^7;
- sbit jdq= P3^7;
- sbit key1=P3^2; //功能按键
- sbit key2=P3^3; //增加
- sbit key3=P3^4; //减小
- /********************************************************************
- 初始定义
- *********************************************************************/
- code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //显示段码 数码管字跟
- uchar wei[4]={0X01,0X02,0X04,0X08}; //位的控制端
- uchar numb[4]; //定义字符串
- uchar cnt,keynum;
- uchar setfen,setmiao;
- uchar setdf,setdm;
- uchar miao,fen;
- void IapEraseSector(uint addr);
- void IapProgramByte(uint addr,uchar dat);
- uchar IapReadByte(uint addr);
- bit flag=1; //闭合断开标志位
- /********************************************************************
- 延时函数
- *********************************************************************/
- void delay(uchar x) //延时程序 0.1秒
- {
- uchar m,n,s;
- for(m=x;m>0;m--)
- for(n=20;n>0;n--)
- for(s=248;s>0;s--);
- }
- /********************************************************************
- 显示函数
- *********************************************************************/
- void display(uchar a ,uchar b) //显示函数
- {
- WEI&=0XF0;
- DUAN=seg7code[a/10];
- WEI|=wei[0];
- delay(2);
- WEI&=0XF0;
- DUAN=seg7code[a%10]&0x7f;
- WEI|=wei[1];
- delay(2);
- WEI&=0XF0;
- DUAN=seg7code[b/10];
- WEI|=wei[2];
- delay(2);
- WEI&=0XF0;
- DUAN=seg7code[b%10];
- WEI|=wei[3];
- delay(2);
-
- WEI&=0XF0;
- }
- /********************************************************************
- 按键扫描
- *********************************************************************/
- void keyscan(void)
- {
- if(key1==0)
- { delay(1);
- if(key1==0)
- {
- while(!key1);
- keynum++;
- if(keynum>=1&&keynum<=4)
- {
- TR0=0;
- cnt=0;
- miao=0;
- jdq=1;
- fen=0;
- }
- if(keynum>=5)
- {
- keynum=0;
- miao=fen=0;
- TR0=1;
- jdq=0;
- }
- }
- }
- switch(keynum)
- {
- case 1: if(key2==0)
- {
- delay(5);
- if(key2==0)
- {
- while(!key2)display(setfen,setmiao);
- setmiao++;
- if(setmiao>59)
- setmiao=59;
- IapEraseSector(0);
- IapProgramByte(0,setmiao); //写入函数
- }
- }
- if(key3==0)
- {
- delay(5);
- if(key3==0)
- {
- while(!key3)display(setfen,setmiao);
- setmiao--;
- if(setmiao==0||setmiao>=250)
- setmiao=0;
- IapEraseSector(0);
- IapProgramByte(0,setmiao); //写入函数
- }
- }
- display(setfen,setmiao);
- break;
- case 2: if(key2==0)
- {
- delay(5);
- if(key2==0)
- {
- while(!key2)display(setfen,setmiao);
- setfen++;
- if(setfen>99)
- setfen=99;
- IapEraseSector(512);
- IapProgramByte(512,setfen); //写入函数
- }
- }
- if(key3==0)
- {
- delay(5);
- if(key3==0)
- {
- while(!key3)display(setfen,setmiao);
- setfen--;
- if(setfen==0||setfen>=250)
- setfen=0;
- IapEraseSector(512);
- IapProgramByte(512,setfen); //写入函数
- }
- }
- // display(setfen,setmiao);
- break;
- case 3:
- if(key2==0)
- {
- delay(5);
- if(key2==0)
- {
- while(!key2)display(setdf,setdm);
- setdm++;
- if(setdm>59)
- setdm=59;
- IapEraseSector(0);
- IapProgramByte(0,setmiao); //写设定闭合时间秒
- IapProgramByte(1,setdm); //写设定断开时间秒
- }
- }
- if(key3==0)
- {
- delay(5);
- if(key3==0)
- {
- while(!key3)
- display(setdf,setdm);
- setdm--;
- if(setdm==0||setdm>=250)
- setdm=0;
- IapEraseSector(0);
- IapProgramByte(0,setmiao); //写设定闭合时间秒
- IapProgramByte(1,setdm); ////写设定断开时间秒
- }
- }
- break;
- case 4:if(key2==0)
- {
- delay(5);
- if(key2==0)
- {
- while(!key2)
- display(setdf,setdm);;
- setdf++;
- if(setdf>10)
- setdf=10;
- IapEraseSector(512);
- IapProgramByte(512,setfen); //写设定闭合时间分
- IapProgramByte(513,setdf); //写设定断开时间秒
- }
- }
- if(key3==0)
- {
- delay(5);
- if(key3==0)
- {
- while(!key3)
- display(setdf,setdm);
- setdf--;
- if(setdf==0||setdf>=250)
- setdf=0;
- IapEraseSector(512);
- IapProgramByte(512,setfen); //写设定闭合时间分
- IapProgramByte(513,setdf); //写设定断开时间分
- }
- }
- //
- break;
- default : break;
- }
- }
- /********************************************************************
- 定时器T0初始化
- *********************************************************************/
- void cshh()
- {
- TMOD|=0X01; //定义定时器工作方式
- TH0=(65535-50000)/256;
- TL0=(65535-50000)%256;
- ET0=1;
- // TR0=1; //开定时器
- EA=1; //开中断
- }
- /********************************************************************
- 初始化函数
- *********************************************************************/
- void init_all(void)
- {
- P2M1=0;
- P2M0=0xff;
- P1M1=0;
- P1M0=0x0f;
- P3M1&=0x7f;
- P3M0|=0x80;
- P3=0xff;
- }
- /********************************************************************
- 主函数
- *********************************************************************/
- void main()
- {
- init_all();
- setfen=IapReadByte(512); //读设定闭合分钟
- setdf= IapReadByte(513); //读设定断开分钟
- setmiao=IapReadByte(0); //读设定闭合秒钟
- setdm=IapReadByte(1); //读设定断开秒钟
- cshh();
- while(1)
- {
- if(keynum==0) //实时计时模式
- {
- display(fen,miao);
- }
- if(keynum>0&&keynum<3) //设定闭合分和秒模式
- display(setfen,setmiao);
- if(keynum>=3&&keynum<5) //设定断开分和秒模式
- display(setdf,setdm);
- keyscan();
- if(IN1==0)
- {
- delay(5);
- if(IN1==0)
- {
- TR0=1;
- cnt=0;
- miao=0;fen=0;
- jdq=0; //定时器初始化
- while(!IN1);
- }
- }
- if(IN2==0)
- {
- delay(5);
- if(IN2==0)
- {
- TR0=0;
- jdq=1; //定时器初始化
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码 011、三路模拟量采集并显示(AD—UART发送)\
01、设定报警温度范围-55到125度\
01、设定报警温度范围-55到125度 - 共阴\
02、继电器通、断时间都可调控制程序(eeprom)\
04、0~5V模拟量采集显示\
05、用电位器调节继电器延时闭合(0到255秒)可调\
05、采用ADC控制继电器延时通断时间(0~255)秒、分可调\
06、接通电源延时30分钟断开2012.12.28\
07、继电器循环通断控制程序(eeprom)\
08、DS18B20基础程序\
09、用电位器调节继电器延时时间\
10、按键调节时间可调掉电记忆\
顾客定制\
01、设定报警温度范围-55到125度.zip
全部资料51hei下载地址:
两入一出数显按键温度发货资料.7z
(7.39 MB, 下载次数: 55)
|