凝露温度监控装置C语言源程序清单Word文档格式.doc
《凝露温度监控装置C语言源程序清单Word文档格式.doc》由会员分享,可在线阅读,更多相关《凝露温度监控装置C语言源程序清单Word文档格式.doc(20页珍藏版)》请在冰豆网上搜索。
**************************/
#defineLOAD0x00 //加载数据
#definePROG0x48//编程
#defineERS_PROG0x68//擦除编程
#defineERS_S0x71//擦除扇区
#defineERS_P0x70//擦除页
;
----变量定义区------
sbitKey1=P1^5;
sbitKey2=P1^3;
sbitKey3=P1^2;
sbitRead_P=P1^4;
sbitC_out=P0^0;
bitbdataKey_sign;
//按键处理标志位
bitbdataKey_enter;
//按键进入标志位
bitbdataFun_key;
//功能键处理辅助位
bitbdataRH_T_sign=0;
//温湿度标志位
bitbdataR_control=0;
//读温湿度控制辅助位
bitbdatadithering_sign;
//消抖动标志位
bitbdatasave_sign;
//保存处理标志位
bitbdataadjust_sign;
//调节标志位
bitbdataglitter_sign;
//闪烁标志位
bitbdatawork;
//工作与否标志位
bitbdatahe_cosign;
//加热冷却调节标志位
//bitbdataF0;
//加热/冷却切换辅助位
bitbdataF0_sign;
//应答检查辅助位
bitbdataassistant;
bitbdatagu=1;
//个位调整标志位
bitbdatashi;
//十位调整标志位
bitbdatabai;
//百位调整标志位
uintaddr,RH_T_data;
uchartime=2,time2,L_dat,H_dat,RhL_dat,RhH_dat,d,g,j,Wdat,Rdat,wedat;
uchark=3;
//键进入预置量
ucharnum,count=0x5F;
//连续计数辅助寄存器
ucharfun_sign;
//功能切换标志量
ucharshow_dat;
//显示缓冲寄存器
ucharT_offhand;
//采集温度即时量
//ucharRH_offhand;
//采集湿度即时量
uchardat_H,dat_L,dat=0;
uintdat_HL;
ucharU8RH_data_H,U8RH_data_L;
------段码代码表-------
ucharcodeTable[]={
0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,
0xE0,0xFE,0xF6,0x1C,0x6E,0x00,0x00,
0x00,0x1A,0xBC,0x3A,0x7A,0x2E,0x9E};
/***************************
----温度小数部分代码表-----
****************************/
ucharcodedecimal[]={
0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,
0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
ucharshow[4];
voidinit_wdt();
voidwdt_R();
bitwflash();
//voidwflash();
//bitwflash();
voidrflash();
voiddelay(uint);
//voidT_RH();
//voidCOM();
voidHex_BcdBLOCK();
//voiddelay(uint);
voiddithering();
//键消抖动处理子函数
voidKey1_js();
//Key1解释子函数
voidKey2_js();
//Key2解释子函数
voidKey3_js();
//Key3解释子函数
voidsave_data();
//保存数据子函数
voidHex_Bcdshow();
//显示数据处理子函数
voidRead_DS18B20();
//读DS18B20函数
voidInit_DS18B20();
//初始化DS18B20子函数
ReadOneChar(uchar);
//读一个字节子函数
WriteOneChar(uchar);
//写一个字节子函数
voidresponsion();
//应答检查子函数
/*************************************/
/*************************************
-------------主程序main--------------
**************************************/
voidmain()
{
//U8j;
//uchardata*show;
ucharm,n;
C_out=0;
//控制输出端口信号
d=0;
//读DS18B20启始"
随机数"
控制辅助变量
init_wdt();
P0M1=0x00;
P0M2=0x3D;
P1M1=0x20;
P1M2=0x03;
P1=0xFF;
TCON=0x05;
TMOD=0x11;
SCON=0x00;
//10H
TL0=0x1B;
TH0=0x50;
TL1=0x88;
TH1=0x98;
RTCL=0x7F;
RTCH=0x70;
RTCCON=0x63;
IEN0=0xDA;
addr=0x7F1;
rflash();
L_dat=Rdat;
addr=0x7F2;
H_dat=Rdat;
addr=0x7F6;
PSW=Rdat;
while
(1)
{
wdt_R();
n=0;
wedat=0x04;
for(n=0;
n<
4;
n++)
{
m=0;
if(wedat==0x04) //加小数点处理(位值比较)
{
if(!
Key_enter) //按键进入标志位
{
m=0x01;
}
}
SBUF=Table[show[n]]+m;
//送段码数据
P0=(P0&
0x03|wedat);
//送位码数据
if(Key_enter) //按键进入标志位//调节标志位
if(glitter_sign)//闪烁标志位
if(gu) //闪烁处理程序区()
{
P0=P0&
0xDF;
}
if(shi)
0xEF;
}
if(bai)
0xF7;
if(he_cosign)//加热冷却调节标志位
0xCF;
}
}
if(!
Key_enter) //按键进入标志位
if(work) //输出工作与否标志位
if(glitter_sign)//闪烁标志位
0xC3;
}
}
wedat=wedat<
<
1;
//位变量
R_control) //读温湿度部分
Read_DS18B20();
//T_RH();
Hex_BcdBLOCK();
R_control=1;
//读温湿度控制辅助位
Key1)
{dithering();
}
Key2)
Key3)
if(Key1&
Key2&
Key_sign=0;
//按键处理标志位
dithering_sign=0;
//消抖动标志位
count=0x5F;
//连续计数辅助寄存器赋初始值
delay(300);
}
count--;
//连续计数辅助寄存器