标题:
单片机温度监测Proteus仿真和程序
[打印本页]
作者:
1357801154
时间:
2017-6-21 20:09
标题:
单片机温度监测Proteus仿真和程序
基于51单片机的温度监测,proteus仿真,有程序。
0.png
(16.07 KB, 下载次数: 59)
下载附件
2017-6-21 21:22 上传
0.png
(54.88 KB, 下载次数: 46)
下载附件
2017-6-21 21:21 上传
单片机源程序如下:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P3^7;
sbit beep=P3^0;
void reset(); //DS18B20复位函数
void write_byte(uchar val); //DS18B20写命令函数
uchar read_byte(void); //DS18B20读1字节函数
void read_temp(); //温度读取函数
void LED_display();
void alarm();
uchar tempH,tempL,num;
uchar table[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0~9的LED字符编码
uchar setValue_low=15;
uchar setValue_high=30;
main()
{
while(1)
{
read_temp();
LED_display();
alarm();
}
}
void delay(uint t)
{
for(;t>0;t--);
}
void reset() //DS18B20的复位
{
uchar presence=1;
while(presence)
{
while(presence)
{
DQ=1;_nop_();_nop_();
DQ=0;
delay(50);
DQ=1;
delay(6);
presence=DQ;
}
delay(45);
presence=~DQ;
}
DQ=1;
}
void write_byte(uchar val) //DS18B20写一个字节
{
uchar i;
for(i=8;i>0;i--)
{
DQ=1;_nop_();_nop_();
DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();
DQ=val&0x01;
delay(6);
val=val>>1;
}
DQ=1;
_nop_();
}
uchar read_byte(void) //DS18B20读一个字节
{
uchar i;
uchar value=0;
for(i=8;i>0;i--)
{
DQ=1;_nop_();_nop_();
value>>=1;
DQ=0;
_nop_();_nop_();_nop_();_nop_();
DQ=1;_nop_();_nop_();_nop_();_nop_();
if(DQ)
value|=0x80;
delay(6);
}
DQ=1;
return(value);
}
void read_temp() //从DS18B20读取温度值
{
uchar ch1,ch2;
reset();
write_byte(0xcc);
write_byte(0x44);
reset();
write_byte(0xcc);
write_byte(0xbe);
ch1=read_byte(); //DS18B20的温度数值是16位的二进制,精度高,最后四位是温度的小数部分,最高五位为符号位(即正负温度)
ch2=read_byte();
num=(ch2<<4)|(ch1>>4); //只取温度值的中间八位,小数部分舍去,符号位舍去四位。
tempH=num/10; //温度的十位
tempL=num-tempH*10; //温度的个位
}
void LED_display() //显示检测的温度
{
P2=0x0;
P2=2;
P0=table[tempL];
delay(50);
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
温度监测.zip
(64.79 KB, 下载次数: 29)
2017-6-21 20:08 上传
点击文件名下载附件
温度监测
下载积分: 黑币 -5
作者:
lb981225
时间:
2017-12-4 11:16
好东西一定要分享
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1