整体布图
此温度报警系统具体为3路检测及报警,二路显示。
温度上下限自由设置,但被传感器(ds18b20)限制。报警则为由3盏led灯分别对应各自传感器,一旦超过上下限,则灯长亮。
主要有四个部分构成单片机部分,显示部分,led报警部分,传感器部分
单片机及LED报警部分
采用80c51 时钟频率为12MHz
以下为具体配置
传感器ds18b20 部分
以下为具体配置
显示器LCD1602部分
以下为具体配置
代码部分
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^4;
sbit RW=P2^1;
sbit EN=P2^2;
sbit DQ=P3^2;
sbit LED1=P1^0;
sbit LED2=P1^3;
sbit LED3=P1^7;
uchar code str1[]={
0x28,0x30,0xc5,0xb8,0x00,0x00,0x00,0x8e};
uchar code str2[]={
0x28,0x31,0xc5,0xb8,0x00,0x00,0x00,0xb9};
uchar code str3[]={
0x28,0x32,0xc5,0xb8,0x00,0x00,0x00,0xe0};
uchar code table[8]={
0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00};
uchar data disdata[5];
uint tvalue;//温度数据储存
uchar tflag;//温度符号位
uint high=600;//最高温
uint low=100;//最低温
/*************************lcd1602初始化**************************/
void delay1ms(uint ms)//1ms延时
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<100;j++);
}
void wr_com(uchar com) //向LCD1602写入指令
{
delay1ms(1);
RS=0;//指令
RW=0;//写入
EN=0;//
P0=com;
delay1ms(1);
EN=1;//允许
delay1ms(1);
EN=0;