資源簡介
STC89C51采集DS18B20溫度,控制2個繼電器 溫度低于一定的時候動作1個 高于一定的時候動作另1個

代碼片段和文件信息
#include?“reg52.h“
#include?????????//函數處理頭文件
#include??????????//字符串處理頭文件??
#include???????????//?輸入輸出函數頭文件
#define?uchar?unsigned?char ???//宏定義?無符號字符串型
#define?uint?unsigned?int ???//宏定義?無符號整型
sbit?rs =?P1^2; //LCD1602控制腳聲明
sbit?rw?=?P1^1;
sbit?ep?=?P1^0;
sbit?D3=P1^4; //DS18B20信號線聲明
sbit?J1=P1^6; //繼電器控制1
sbit?J2=P1^7; //繼電器控制2
sbit?fmq=P2^7;
sbit?k1=P2^0; //DS18B20信號線聲明
sbit?k2=P2^1; //繼電器控制1
sbit?k3=P2^2; //繼電器控制2
sbit?k4=P2^3; //DS18B20信號線聲明
sbit?k5=P2^4; //繼電器控制1
sbit?k6=P2^5; //繼電器控制2
void?InitializeSystem();
void?Delay(uint?time);
void?delay1(uint?a); //小延時函數聲明
void?init_18b20(); //18B20溫度傳感器初始化函數申明 ?
void?weite(uchar?dat); //向18b20寫一個字節函數聲明
uchar?read(); //向18b20讀一個字節函數聲明
uchar?read_tu(); //讀18b20溫度函數聲明
bit?lcd_bz();
lcd_wcmd(uchar?cmd);
lcd_pos(uchar?pos);
lcd_wdat(uchar?dat);
lcd_init();
LCD1206();
void?RS232()?;
void?kk(viod);
void?pro();
unsigned?char?code?dis0[]?=?{“TEMP:“};//聲明一些字符串
unsigned?char?code?dis1[]?=?{“.“};?
unsigned?char?code?dis2[]?=?{“C“};??
unsigned?char?code?dis3[]?=?{“ON?“};
unsigned?char?code?dis4[]?=?{“OFF“};//關
unsigned?char?code?dis5[]?=?{“k1:“};
unsigned?char?code?dis6[]?=?{“k2:“};????
unsigned?char?code?dis7[]?=?{“0123456789“};?
unsigned?char?code?dis8[]?=?{“auto“};?
unsigned?char?code?dis9[]?=?{“shou“};?
unsigned?char?code?dis10[]?=?{“H?“};?
unsigned?char?code?dis11[]?=?{“L?“};?
?
uint?ctttkeyfalgKCOMh=40l=10mode=0J1FALGJ2FALGa;???
uint?temp_data[2];??
float?temp;????????????
void?main(?)
{????
?????Delay(30); ????? //上電延時,目的是去干擾
?????InitializeSystem();//系統初始化
?????init_18b20(); //DS18B20初始化
?RS232(); //串口初始化
?????while?(?1?)
?????{???
read_tu();??????//將讀回的溫度賦值給c
LCD1206();??????//顯示處理
a++;
??if(a>=100)
??{
?? a=0;
ES=0;
TI=1;?????????????
????? printf(“%u“t);//
ES=1;
??}
?}???????
}
void?InitializeSystem() //系統初始化
{?????
?????P0?=?0xFF;
?P1?=?0xFF;
?P2?=?0xFF;?
?P3?=?0xFF;
?J1=1;
?J2=1;
?lcd_init(); //?初始化LCD
?Delay(1);
}
void?Delay(uint?time)??????????//大延時函數
{
??uint?ik??;
??for(i=0;i<255;i++)
????for(k=0;k??????_nop_(); ??
}
bit?lcd_bz() ??? ?????????//?測試LCD忙碌狀態
{
bit?result;
rs?=?0;
rw?=?1;
ep?=?1;
_nop_();
_nop_();
_nop_();
_nop_();
result?=?(bit)(P0?&?0x80);
ep?=?0;
return?result;
}
lcd_wcmd(uchar?cmd)//?寫入指令數據到LCD
{
while(lcd_bz());
rs?=?0;
rw?=?0;
ep?=?0;
_nop_();
_nop_();
P0?=?cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep?=?1;
_nop_();
_nop_();
_nop_();
_nop_();
ep?=?0;
}
lcd_pos(uchar?pos)
{ //設定顯示位置
lcd_wcmd(pos?|?0x80);
}
lcd_wdat(uchar?dat)
{ //寫入字符顯示數據到LCD
while(lcd_bz());
rs?=?1;
rw?=?0;
ep?=?0;
P0?=?dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep?=?1;
_nop_();
_nop_();
_nop_();
_nop_();
ep?=?0;
}
lcd_init() ?//LCD初始化設定
{
lcd_wcmd(0
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????27893??2013-05-26?19:13??DS18B20自動控制溫度\ds18b20
?????文件??????12877??2013-05-26?19:13??DS18B20自動控制溫度\ds18b20.hex
?????文件?????????59??2013-05-26?19:13??DS18B20自動控制溫度\ds18b20.lnp
?????文件??????32443??2013-05-26?19:13??DS18B20自動控制溫度\ds18b20.M51
?????文件???????1072??2013-05-26?19:15??DS18B20自動控制溫度\ds18b20.Opt
?????文件????????190??2015-11-25?19:03??DS18B20自動控制溫度\ds18b20.plg
?????文件???????2034??2013-05-26?19:15??DS18B20自動控制溫度\ds18b20.uv2
?????文件???????1073??2013-05-26?19:15??DS18B20自動控制溫度\ds18b20_Opt.Bak
?????文件???????9815??2013-05-26?19:15??DS18B20自動控制溫度\main.c
?????文件??????23737??2013-05-26?19:13??DS18B20自動控制溫度\main.LST
?????文件??????27730??2013-05-26?19:13??DS18B20自動控制溫度\main.OBJ
?????文件???????5115??2002-04-16?14:32??DS18B20自動控制溫度\STARTUP.A51
?????文件??????11665??2013-05-26?19:13??DS18B20自動控制溫度\STARTUP.LST
?????文件????????749??2013-05-26?19:13??DS18B20自動控制溫度\STARTUP.OBJ
?????目錄??????????0??2016-01-11?21:33??DS18B20自動控制溫度
-----------?---------??----------?-----??----
???????????????156452????????????????????15
- 上一篇:DTkey掃號器
- 下一篇:BP神經網絡fortran仿真程序
評論
共有 條評論