当前位置:首页 > 温度控制系统C程序
#include
#define uint unsigned int #define uchar unsigned char #define LCD1602 P0 sbit SET=P3^1; //设置 上下限 sbit DEC=P3^2; //减 sbit ADD=P3^3; //加
sbit DQ=P3^7; //传感器DS18B20 sbit ALAM=P1^2; //报警显示灯 sbit ALAM1=P1^4;
sbit BUZZ=P3^6; //蜂鸣器 sbit rs=P2^7 sbit en=P2^6 bit shansuo_st; bit beep_st; uchar x=0;
uchar code tab1{\ Tem: . C%uchar code tab2{\ C TL: C\ ; uint c;
uchar Mode=0; //状态标志 signed char TH=40; // signed char TL=10; //
//////////////////////////////DS18B20//////////////////////////////////////////////// ////////////////////////////////DS18B20/////////////////////////////////////////////// //延时
//************************************************************************/ // 函数:
// 描述: 延时t ms函数 // 参数: t // 返回: 无
// 备注: 12MHZ t=1延时时间约1ms // 版本: 2011/01/01 First version
//************************************************************************/
void Delay_DS18B20(int num) {
while(num--) ; }
void Delay(uint x ms) {
uint x,y;
for(x=xms;x>0;x--) for(y=110;y>0;y--) ; }
//初始化DS18B20
void Init_DS18B20(void) {
uchar char x=0; DQ = 0; Delay_DS18B20(80); //延时 DQ = 1; Delay(90);//延时 DQ = 1; Delay_DS18B20(14); X = DQ; Delay_DS18B20(20); }
//读一个字节
uchar ReadOneChar(void) {
uchar i,dat=0; for(i=8;i>0;i--) { DQ = 0; dat >>= 1; DQ = 1; if(DQ) dat |= 0X80; Delay_DS18B20(4); } return (dat); }
//写一个字节
void WriteOneChar(uchar dat) {
uchar i=0; for(i=8;i>0;i--) DQ = 0; DQ= dat |= 0X01;
Delay_DS18B20(5); DQ = 1; dat >>= 1; } }
//读温度值
unsigned int Read_Temperature(void) { unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC) ; WriteOneChar(0x44) ; Init_DS18B20(); a= ReadOneChar(); t<<=8; t=t|a; tt=t*0.0625; t=tt*10+0.5; return(t) ; }
//读温度值
void check_wendu(void) {
c= Read_Temperature-5; if(c>1200) c=1200; }
//---------------1602--------------------------------------
void write_1602com(uchar com) //1602液晶写指令
{
rs=0; delay(1); en=1; delay(1); en=0; }
void write_1602dat(uchar dat) //1602液晶写数据 { rs=1; LCD1602=dat; delay(1); en=1; delayms(1); en=0; }
void lcd_init() //初始化液晶,及画面初始化 { uchar a; write_1602com(0x38); write_1602com(0x0c); write_1602com(0x06); write_1602com(0x01); write_1602com(0x80); for(a=0;a<16;a++) // { write_1602dat(tab1[a]); delay(3); } write_1602com(0x80+0x40); for(a=0;a<16;a++) // { write_1602dat(tab2[a]);
共分享92篇相关文档