单片机测温系统

想要更多项目私wo!!!

一、简介

此系统主要由AT89C51、DS18B20温度模块和LCD1602组成。
大致的原理是DS18B20温度采集到的数据传送给AT89C51的P3.3/INT1(外部中断1),最后通过LCD1602显示当前的实时温度。

二、效果图

模拟仿真图

三、源代码

/*想要更多项目私wo!!!*/
/***************   writer:shopping.w   ******************/
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define delayNOP() {_nop_();_nop_();_nop_();_nop_();}sbit DQ = P3^3;
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;uchar code Temp_Disp_Title[]={"Current Temp :   "};
uchar Current_Temp_Display_Buffer[]={" TEMP:   "};uchar code Temperature_Char[8] =
{0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00
};uchar code df_Table[]=
{0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9
};uchar CurrentT = 0;
uchar Temp_Value[]={0x00,0x00};
uchar Display_Digit[]={0,0,0,0};
bit DS18B20_IS_OK = 1;void DelayXus(uint x)
{uchar i;while(x--){for(i=0;i<200;i++);}
}bit LCD_Busy_Check()
{bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;delayNOP();result = (bit)(P0&0x80);LCD_EN=0;return result;
}void Write_LCD_Command(uchar cmd)
{while(LCD_Busy_Check());LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();P0 = cmd;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0;
}void Write_LCD_Data(uchar dat)
{while(LCD_Busy_Check());LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0;
}void LCD_Initialise()
{Write_LCD_Command(0x01);DelayXus(5);Write_LCD_Command(0x38);DelayXus(5);Write_LCD_Command(0x0c);DelayXus(5);Write_LCD_Command(0x06);DelayXus(5);
}void Set_LCD_POS(uchar pos)
{Write_LCD_Command(pos|0x80);
}void Delay(uint x)
{while(--x);
}uchar Init_DS18B20()
{uchar status;DQ = 1;Delay(8);DQ = 0;Delay(90);DQ = 1;Delay(8);DQ = 1;return status;
}uchar ReadOneByte()
{uchar i,dat=0;DQ = 1;_nop_();for(i=0;i<8;i++){DQ = 0;dat >>= 1;DQ = 1;_nop_();_nop_();if(DQ)dat |= 0X80;Delay(30);DQ = 1;}return dat;
}void WriteOneByte(uchar dat)
{uchar i;for(i=0;i<8;i++){DQ = 0;DQ = dat& 0x01;Delay(5);DQ = 1;dat >>= 1;}
}void Read_Temperature()
{if(Init_DS18B20()==1)DS18B20_IS_OK=0;else{WriteOneByte(0xcc);WriteOneByte(0x44);Init_DS18B20();WriteOneByte(0xcc);WriteOneByte(0xbe);Temp_Value[0] = ReadOneByte(); Temp_Value[1] = ReadOneByte();DS18B20_IS_OK=1;   }
}void Display_Temperature()
{uchar i;uchar t = 150, ng = 0;if((Temp_Value[1]&0xf8)==0xf8){Temp_Value[1] = ~Temp_Value[1];Temp_Value[0] = ~Temp_Value[0]+1;if(Temp_Value[0]==0x00)Temp_Value[1]++;ng = 1;    }Display_Digit[0] = df_Table[Temp_Value[0]&0x0f];CurrentT = ((Temp_Value[0]&0xf0)>>4) | ((Temp_Value[1]&0x07)<<4);Display_Digit[3] = CurrentT/100;Display_Digit[2] = CurrentT%100/10;Display_Digit[1] = CurrentT%10;Current_Temp_Display_Buffer[11] = Display_Digit[0] + '0';Current_Temp_Display_Buffer[10] = '.';Current_Temp_Display_Buffer[9]  = Display_Digit[1] + '0';Current_Temp_Display_Buffer[8]  = Display_Digit[2] + '0';Current_Temp_Display_Buffer[7]  = Display_Digit[3] + '0';if(Display_Digit[3] == 0)Current_Temp_Display_Buffer[7]  = ' ';if(Display_Digit[2] == 0&&Display_Digit[3]==0)Current_Temp_Display_Buffer[8]  = ' ';if(ng){if(Current_Temp_Display_Buffer[8]  == ' ')Current_Temp_Display_Buffer[8]  = '-';else if(Current_Temp_Display_Buffer[7]  == ' ')Current_Temp_Display_Buffer[7]  = '-';else Current_Temp_Display_Buffer[6]  = '-';}Set_LCD_POS(0x00);for(i=0;i<16;i++){Write_LCD_Data(Temp_Disp_Title[i]);     }Set_LCD_POS(0x40);for(i=0;i<16;i++){Write_LCD_Data(Current_Temp_Display_Buffer[i]);  }       Set_LCD_POS(0x4d);Write_LCD_Data(0x00);Set_LCD_POS(0x4e);Write_LCD_Data('C');
}void main()
{LCD_Initialise();Read_Temperature();Delay(50000);Delay(50000);while(1){Read_Temperature();if(DS18B20_IS_OK) Display_Temperature();DelayXus(100);       }}

单片机设计_单路测温系统(AT89C51、DS18B20温度传感器、LCD1602)相关推荐

  1. 单片机设计_室内环境智能监测系统(STM32 OLED ESP8266 DHT11 MQ-2 加湿器)

    想要更多项目私wo!!! 一.电路设计 室内环境智能监测系统 主要功能:         1.检测空气温湿度         2.检测光照强度         3.检测烟雾浓度         4.数 ...

  2. 单片机设计_智能农业大棚环境监测系统(STM32 OLED ESP8266 DHT11 光敏 土壤湿度)

    想要更多项目私wo!!! 一.电路设计 智能农业大棚环境监测系统.可以测量空气的温湿度,土壤的温湿度,光照强度,等等通过OLED 屏幕显示,然ESP8266-01SWiFi模块连接手机,APP可以远程 ...

  3. 【单片机毕业设计】【mcuclub-jk-003】基于单片机的非接触红外测温的设计

    最近设计了一个项目基于单片机的非接触红外测温系统,与大家分享一下: 一.基本介绍 项目名:非接触红外测温 项目编号:mcuclub-jk-003 单片机类型:STC89C52.STM32F103C8T ...

  4. AI战“疫“之路:​揭秘高精准无感测温系统的全栈AI 技术

    在这个全民抗疫的特殊时期,今年的春节返潮来得比往年迟了许多.如今不少企业结束了远程办公,开始陆续复工,一时间,无论是重点防控的机场.火车站,还是学校.企业.社区等密集型场所,都安排了密集的防疫驻扎点. ...

  5. 52单片机制作打卡考勤+测温一体系统(含后端管理平台)

    52单片机制作打卡考勤+测温一体系统(含后端管理平台) 技术要求 python+flask+tcp基础(管理系统后端代码) angular(管理系统前端代码) C基础(单片机代码,主要涉及:iic,t ...

  6. 智能无感人体测温系统解决方案

    中国已全面进入"全民战疫"的非常状态.随着春运返程高峰的到来,全国各大城市的防疫形势更加严峻,防控进入关键时期.6108方案凭借自身在AIoT领域的技术优势,推出了一套智能无感人体 ...

  7. 浅谈非接触式母线槽测温系统的应用及产品选型

    安科瑞王丹丹acrel2021 摘 要:针对小区内密集型母线槽与插接箱相连接的触点位置容易发生老化而导致老化部位异常升温的问题,设计了一种非接触式密集型母线槽测温系统.通过非接触式红外测温模块进行母线 ...

  8. 浅谈安科瑞无线测温系统在生物制药工厂中的应用

    安科瑞王丹丹acrel2021 摘要:针对生物制药生产工艺过程中的温度测量及控制,本文介绍一种适用于生物制药生产工艺过程中的温度测量及控制系统.该系统采用一线总线制的集成温度变送,嵌入式微电脑.锂电池 ...

  9. 分布式光纤测温系统DTS-BLY-5S

    分布式光纤测温系统DTS-BLY-5S 一:系统简介 分布式光纤测温系统DTS-BLY-5S是一款连续分布式光纤温度传感系统(Distributed Temperature Sensing Syste ...

最新文章

  1. mongodb - 查看正在执行的操作
  2. C/C 输入输出缓冲区
  3. authentication plugin caching_sha2
  4. nacos注册中心demo
  5. 超全opencv常见图像处理操作总结及效果展示(附python代码)
  6. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第4节 maven生命周期和概念模型图_08maven生命周期...
  7. 国内C语言教材中几种值得商榷的说法
  8. 家庭收支软件用java写,eclipse编写的Java家庭收支记账软件
  9. CFA大起底:三百六十度无死角详解CFA到底是个啥?
  10. 设置共享文件夹以计算机用户名和密码访问,Win10正式版系统怎么设置共享文件夹密码访问...
  11. trouble processing xxxx.class: Ill-advised or mistaken usage of a core class (java.* or javax.*)
  12. excel 单元格显示公式_如何在单元格中显示公式并在Excel 2013中完全隐藏公式
  13. 宝塔无法访问页面解决方法
  14. 【机器学习】阿里云天池竞赛——工业蒸汽量预测(5)
  15. 百度地图--绘制自定义铁路线
  16. 软件项目管理(CMMI成熟度)实践——之决策分析(2)
  17. Stata分享:一个在线-Stata-教程网站
  18. 短视频为何吸引人-锦鸿凌云
  19. jquery jsonp_结合JSONP和jQuery快速构建功能强大的混搭
  20. MDK硬件调试_在Debug printf Viewer窗口显示打印信息_ITM

热门文章

  1. 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-937 抗击虫群
  2. pyqt5实现导航栏
  3. vue:单文件的使用
  4. CORS跨域漏洞学习
  5. 三四月份面试阿里菜鸟+腾讯IEG,在这边有一些心得分享给大家(Java岗)
  6. 微信小程序背景图设置不生效的问题
  7. RewriteCond RewriteRule
  8. 不想去面试了,需要主动联系HR吗?
  9. 绘制一个绿色平面,创建一个掩码,split()将图像分成红绿蓝图像。
  10. linux Ubuntu之make:make命令行工具的简介、安装、使用方法之详细攻略