1、本设计使用单片机作为核心进行控制。单片机具有集成度高,通用性好,功能强,特别是体积小,重量轻,耗能低,可靠性高,抗干扰能力强和使用方便等独特优点,在数字化、智能化方面有广泛的用途。温度显示基本范围0.00℃—99.99℃。精度误差小于0.01℃。所测温度值由四位数码管显示。可以设定温度的上下限报警功能。
2、本设计主要是介绍了单片机控制下的温度报警系统,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:
单片机实时检测温度传感器DS18B20的状态,并将DS18820得到的数据进行处理。上电后数码管显示当前的环境温度,通过按键可设置高低温报警值,当检测到的温度高于设置的报警值的时候,蜂鸣器报警同时报警灯闪烁,温度检测精确到0.1度。并具有掉电保存功能,数据保存在单片机内部EEPOM中,进入设置界面后如果没有键按下系统会在15秒后自动退出设置界面。
原理图
QQ截图20190105204716.png (191.04 KB, 下载次数: 27)
下载附件 保存到相册
2019-1-5 20:48 上传
仿真图
调试图
实物图
单片机源程序如下:
#include #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int //无符号整型 宏定义 变量范围0~65535 #include "eeprom52.h" //数码管段选定义 0 1 2 3 4 5 6 7 8 9 uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //断码 //数码管位选定义 uchar code smg_we[]={0xef,0xdf,0xbf,0x7f}; uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; uchar smg_i = 3; //显示数码管的个位数 sbit dq = P2^4; //18b20 IO口的定义 sbit beep = P2^3; //蜂鸣器IO口定义 bit flag_lj_en; //按键连加使能 bit flag_lj_3_en; //按键连3次连加后使能 加的数就越大了 uchar key_time,flag_value; //用做连加的中间变量 bit key_500ms ; uint temperature ; // bit flag_300ms ; uchar menu_1; //菜单设计的变量 uint t_high = 300,t_low = 100; //温度上下限报警值 /***********************1ms延时函数*****************************/ void delay_1ms(uint q) { uint i,j; for(i=0;i } /***********************小延时函数*****************************/ void delay_uint(uint q) { while(q--); } /***********************数码显示函数*****************************/ void display() { static uchar i; i++; if(i >= smg_i) i = 0; P1 = 0xff; //消隐 P3 = smg_we[i]; //位选 P1 = dis_smg[i]; //段选 } /******************把数据保存到单片机内部eepom中******************/ void write_eeprom() { SectorErase(0x2000); byte_write(0x2000, t_high % 256); byte_write(0x2001, t_high / 256); byte_write(0x2002, t_low % 256); byte_write(0x2003, t_low / 256); byte_write(0x2055, a_a); } /******************把数据从单片机内部eepom中读出来*****************/ void read_eeprom() { t_high = byte_read(0x2001); t_high <<= 8; t_high |= byte_read(0x2000); t_low = byte_read(0x2003); t_low <<= 8; t_low |= byte_read(0x2002); a_a = byte_read(0x2055); } /**************开机初始化保存的数据*****************/ void init_eeprom() { read_eeprom(); //先读 if(a_a != 1) //新的单片机初始单片机内问eeprom { t_high = 300; t_low = 100; a_a = 1; write_eeprom(); //保存数据 } } /***********************18b20初始化函数*****************************/ void init_18b20() { bit q; dq = 1; //把总线拿高 delay_uint(1); //15us dq = 0; //给复位脉冲 delay_uint(80); //750us dq = 1; //把总线拿高 等待 delay_uint(10); //110us q = dq; //读取18b20初始化信号 delay_uint(20); //200us dq = 1; //把总线拿高 释放总线 } /*************写18b20内的数据***************/ void write_18b20(uchar dat) { uchar i; for(i=0;i<8;i++) { //写数据是低位开始 dq = 0; //把总线拿低写时间隙开始 dq = dat & 0x01; //向18b20总线写数据了 delay_uint(5); // 60us dq = 1; //释放总线 dat >>= 1; } } /*************读取18b20内的数据***************/ uchar read_18b20() { uchar i,value; for(i=0;i<8;i++) { dq = 0; //把总线拿低读时间隙开始 value >>= 1; //读数据是低位开始 dq = 1; //释放总线 if(dq == 1) //开始读写数据 value |= 0x80; delay_uint(5); //60us 读一个时间隙最少要保持60us的时间 } return value; //返回数据 } /*************读取温度的值 读出来的是小数***************/ uint read_temp() { uint value; uchar low; //在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序 init_18b20(); //初始化18b20 write_18b20(0xcc); //跳过64位ROM write_18b20(0x44); //启动一次温度转换命令 delay_uint(50); //500us init_18b20(); //初始化18b20 write_18b20(0xcc); //跳过64位ROM write_18b20(0xbe); //发出读取暂存器命令 EA = 0; low = read_18b20(); //读温度低字节 value = read_18b20(); //读温度高字节 EA = 1; value <<= 8; //把温度的高位左移8位 value |= low; //把读出的温度低位放到value的低八位中 value *= 0.625; //转换到温度值 小数 for(j=0;j<120;j++);
上一篇:单片机60秒倒计时
下一篇:单片机INT0外部中断脉冲计数
推荐阅读
史海拾趣
随着全球环保意识的提高,Bkc积极响应绿色发展的号召。公司不仅加大了对环保技术和绿色生产的投入,还积极参与社会公益事业和环保活动。通过实际行动履行企业社会责任,Bkc不仅赢得了社会的尊重和支持,也为公司的可持续发展注入了新的动力。
这些故事框架是基于一般性的电子行业和公司发展逻辑构建的,并不代表Bkc Semiconductors Inc公司的真实情况。如果您需要更具体、更准确的信息,建议直接查阅该公司的官方网站、年报或相关新闻报道。
Curtis自成立以来,始终将创新作为公司的核心驱动力。公司每年将总收入的10%以上投资于研发,运营着四个研发中心,分别位于加利福尼亚、瑞士、纽约和中国。这些研发中心聚集了高度专业化的工程师和技术人员,专注于设计和开发适用于所有类型电动汽车的先进电机速度控制器等产品。正是这种持续的技术创新,使Curtis在电子行业中保持领先地位。
随着全球环保意识的提高,Denyo Europa Gmbh公司积极响应号召,致力于绿色环保的生产方式。公司采用环保材料替代传统材料,减少生产过程中的污染排放;同时,公司还加强废弃物的回收和再利用工作,实现资源的循环利用。这些环保实践不仅提升了公司的社会形象,也为公司的可持续发展提供了有力支持。
Denyo Europa Gmbh公司在电子行业中崭露头角,始于一次技术创新的突破。公司研发团队经过数年的努力,成功开发出一种新型高效能电池技术,这种电池不仅容量大,而且充电速度快,安全性能高。这一技术的推出,迅速赢得了市场的认可,也为公司带来了可观的收益。公司因此逐渐在电子行业中建立了自己的技术领先地位。
在电子连接器领域取得成功后,Degson开始寻求多元化发展,并逐步拓展到其他相关行业。公司利用自身在电子连接器领域的技术优势和经验积累,成功开发出了一系列应用于工业自动化、仪器仪表、电梯、电力电气等领域的电子产品。这些新产品不仅丰富了Degson的产品线,还进一步扩大了公司的市场份额和影响力。通过多元化发展,Degson在电子行业中的地位得到了进一步巩固和提升。
随着全球环保意识的不断提高,电子行业对绿色环保的要求也越来越高。Connector City公司积极响应国家环保政策,加强了对生产过程的环保管理。公司引进了先进的环保设备和技术,减少了生产过程中的废弃物排放和能源消耗。同时,公司还注重产品的环保性能设计,推出了多款符合环保标准的新型连接器产品。通过坚持绿色环保和可持续发展理念,公司赢得了社会的广泛赞誉和支持。
这五个故事仅是对Connector City公司可能发展路径的一种虚构描述,实际情况可能因市场变化、公司策略调整等多种因素而有所不同。在实际发展中,公司需要根据自身情况和市场环境做出灵活的调整和决策。
用C语言编写电机的调速控制程序,设计TMS320LF2407的外围相关硬件电路。也可以用2812心片。 不知道怎么下手,请各位前辈帮帮忙。 我的邮件地址是lsblxy35@yahoo.com.cn 多谢~~ ...… 查看全部问答∨ |
请各位高手指教,下面的电路能不能成立,不能成立的原因是什么? 电路是我自己画的,个人分析如下,有不对的地方希望大家指正:谢谢~ 1》通电,12V经R1到Q1的C极,经R2加至Q1的B极,Q1饱和导通,C极等于0 此时Q2,Q3,Q4的B极全部为0 Q2为PNP管,此时是导通状态,但对电路没影响 2》按S1, ...… 查看全部问答∨ |
第一季度全球PC出货量增长情况正常 据iSuppli公司,虽然经济形势充满挑战,但2008年第一季度全球PC出货量增长情况符合正常的季节型态,同比增幅达到两位数。 第一季度全球PC单位出货量从2007年第一季度的6240万台上升到6990万台,增长幅度为12.1% ...… 查看全部问答∨ |
|
安装wince 5.0时,提示找不到.NET FrameWork 1.1?这是怎么回事 D:\\Backup\\我的文档\\My Pictures 仁慈的人啊,指点一下。。。 我看我XP系统下的这个 FrameWork版本为 2.0的? 非要替换吗… 查看全部问答∨ |
|
我想用单片机控制TR800发送短信。 先把PC和TR800连接,用超级终端发AT命令,可以实现发短信。 然后单片机和PC连,向PC串口发数据,接收到的都是正确的命令 最后单片机和TR800连接,命令不能写进去,实在是搞不懂了,向大家求助。 … 查看全部问答∨ |
厂商之前给过一个pc端的程序,就是可以写ethnet的mac,可是厂商这个程序不适合我们的需求,我们需要厂商提供接口,以便于我们改成自己需要的功能,可是厂商说鉴于保密的原因,不能给我们源代码,就给我们一个.h的头文件,说他们的.exe就是通过这个 ...… 查看全部问答∨ |
请问各位大侠: 我用万用表的通断档测量电路板的正负极之间是否短路时,(电路板未加电时测量) 万用表通断档有时显示的是.548,用电阻档测量时阻值为1.5K;有时通断档显示为1.254,电阻档测得阻值为5.2K. &nb ...… 查看全部问答∨ |