




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
凝露温度监控装置C语言源程序清单/*/*/#include #include #include #include #define uint unsigned int#define uchar unsigned char/#pragma OT(5,speed)typedef unsigned char U8; /* 无符号8位整型变量 */typedef signed char S8; /* 有符号8位整型变量 */typedef unsigned int U16; /* 无符号16位整型变量 */typedef signed int S16; /* 有符号16位整型变量 */sfr FMCON = 0xE4;sfr FMDATA = 0xE5;sfr FMADRL = 0xE6;sfr FMADRH = 0xE7;sfr TCCON = 0xD1;/* 定义FLASH控制命令字 */#define LOAD 0x00 / 加载数据 #define PROG 0x48 / 编程 #define ERS_PROG 0x68 / 擦除编程 #define ERS_S 0x71 / 擦除扇区 #define ERS_P 0x70 / 擦除页 /* ;-变量定义区-*/sbit Key1=P15;sbit Key2=P13;sbit Key3=P12;sbit Read_P=P14;sbit C_out=P00;bit bdata Key_sign; / 按键处理标志位bit bdata Key_enter; / 按键进入标志位bit bdata Fun_key; / 功能键处理辅助位bit bdata RH_T_sign=0; / 温湿度标志位bit bdata R_control=0; / 读温湿度控制辅助位bit bdata dithering_sign; / 消抖动标志位bit bdata save_sign; / 保存处理标志位bit bdata adjust_sign; / 调节标志位bit bdata glitter_sign; / 闪烁标志位bit bdata work; / 工作与否标志位bit bdata he_cosign; / 加热冷却调节标志位/bit bdata F0; / 加热/冷却切换辅助位bit bdata F0_sign; / 应答检查辅助位bit bdata assistant;bit bdata gu=1; / 个位调整标志位bit bdata shi; / 十位调整标志位bit bdata bai; / 百位调整标志位uint addr,RH_T_data;uchar time=2,time2,L_dat,H_dat,RhL_dat,RhH_dat,d,g,j,Wdat,Rdat,wedat;uchar k=3; / 键进入预置量uchar num,count=0x5F; / 连续计数辅助寄存器uchar fun_sign; / 功能切换标志量uchar show_dat; / 显示缓冲寄存器uchar T_offhand; / 采集温度即时量/uchar RH_offhand; / 采集湿度即时量uchar dat_H,dat_L,dat = 0;uint dat_HL;uchar U8RH_data_H,U8RH_data_L;/* -段码代码表- */uchar code Table= 0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE,0xE0, 0xFE, 0xF6, 0x1C, 0x6E, 0x00, 0x00, 0x00, 0x1A, 0xBC, 0x3A, 0x7A, 0x2E, 0x9E ;/* -温度小数部分代码表- */uchar code decimal=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09; uchar show4;void init_wdt();void wdt_R(); bit wflash();/void wflash();/bit wflash();void rflash();void delay(uint);/void T_RH();/void COM();void Hex_BcdBLOCK();/void delay(uint);void dithering(); / 键消抖动处理子函数void Key1_js(); / Key1解释子函数void Key2_js(); / Key2解释子函数void Key3_js(); / Key3解释子函数void save_data(); / 保存数据子函数void Hex_Bcdshow(); / 显示数据处理子函数void Read_DS18B20();/ 读DS18B20函数void Init_DS18B20();/ 初始化DS18B20子函数ReadOneChar(uchar);/ 读一个字节子函数WriteOneChar(uchar);/ 写一个字节子函数void responsion();/ 应答检查子函数/*/* -主程序main- */void main()/U8 j;/uchar data *show;uchar m,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; /10HTL0=0x1B; TH0=0x50; TL1=0x88; TH1=0x98; RTCL=0x7F; RTCH=0x70; RTCCON=0x63;IEN0=0xDA; addr=0x7F1;rflash();L_dat=Rdat;addr=0x7F2;rflash();H_dat=Rdat;addr=0x7F6;rflash();PSW=Rdat;while(1)wdt_R();n=0;wedat=0x04;for(n=0;n4;n+)m=0;if(wedat=0x04) / 加小数点处理(位值比较)if(!Key_enter) / 按键进入标志位m=0x01;SBUF= Tableshown+m; / 送段码数据P0=(P0&0x03|wedat); / 送位码数据if(Key_enter) / 按键进入标志位 / 调节标志位if(glitter_sign) / 闪烁标志位if(gu) / 闪烁处理程序区()P0=P0&0xDF; if(shi)P0=P0&0xEF;if(bai)P0=P0&0xF7;if(he_cosign) / 加热冷却调节标志位P0=P0&0xCF; if(!Key_enter) / 按键进入标志位 if(work) / 输出工作与否标志位if(glitter_sign) / 闪烁标志位P0=P0&0xC3;wedat=wedat1; / 位变量if(!R_control) / 读温湿度部分Read_DS18B20(); / T_RH();Hex_BcdBLOCK();R_control=1; / 读温湿度控制辅助位if(!Key1)dithering();if(!Key2)dithering();if(!Key3)dithering();if(Key1&Key2&Key3)Key_sign=0; / 按键处理标志位dithering_sign=0;/ 消抖动标志位count=0x5F; / 连续计数辅助寄存器赋初始值delay(300);count-; / 连续计数辅助寄存器if(count=0)Key_sign=0; / 按键处理标志位count=0x26; /* -Key1解释子程序- */void Key1_js()num=0;save_sign=0; / 保存处理标志位Key_sign=1; / 按键处理标志位if(!Fun_key) / 功能键处理辅助位k-; / 按键进入辅助量if(k=0)k=3;Fun_key=1;if(Fun_key)Key_enter=1; / 按键进入标志位if(adjust_sign) / 调节标志位save_data(); if(!save_sign) / 保存处理标志位fun_sign+; / 功能切换标志量switch(fun_sign)case 0:Hex_BcdBLOCK();break;case 1:show_dat=L_dat;show0=0x0A;Hex_Bcdshow();gu=1;shi=0;bai=0;break;case 2:show_dat=H_dat;show0=0x0B;Hex_Bcdshow();gu=1;shi=0;bai=0;break;case 3:if(F0) / 加热/冷却切换辅助位show0=0x05;show1=0x0C;show2=0x0F;show3=0x11;he_cosign=1; / 加热冷却调节标志位if(!F0)show0=0x05;show1=0x0C;show2=0x0B;show3=0x14;he_cosign=1; / 加热冷却调节标志位 break;case 4:Key_enter=0; / 按键进入标志位Fun_key=0; / 功能键处理辅助位fun_sign=0; / 功能切换标志量he_cosign=0; / 加热冷却调节标志位gu=1; / 个位调整标志位Hex_BcdBLOCK();break;/* -Key2解释子程序- */void Key2_js()/uchar num;Key_sign=1; / 按键处理标志位if(!Key_enter) / 按键进入标志位C_out=C_out; / 控制输出端if(C_out)work=1; / 输出工作与否标志位if(!C_out)work=0; / 工作与否标志位if(Key_enter) / 按键进入标志位adjust_sign=1; / 调节标志位if(!he_cosign) / 加热冷却调节标志位num+;switch(num)case 1:gu=0;shi=1;bai=0;break;case 2:gu=0;shi=0;bai=1;break;case 3:gu=1;shi=0;bai=0;num=0;break;if(he_cosign) / 加热冷却调节标志位F0=F0;if(F0) / 加热/冷却切换辅助位show0=0x05;show1=0x0C;show2=0x0F;show3=0x11;gu=0;if(!F0)show0=0x05;show1=0x0C;show2=0x0B;show3=0x14;gu=0;/* -Key3解释子程序- */void Key3_js()Key_sign=1; / 按键处理标志位if(!Key_enter) / 按键进入标志位RH_T_sign=RH_T_sign; / 读湿度_温度转换辅助位if(Key_enter) / 按键进入标志位adjust_sign=1; / 调节标志位if(gu) / 数据设置处理程序区(个)if(show3=10)show3=0;if(shi) / (十)if(show2=10)show2=0;if(bai) / (百)if(show1=2)show1=0;/* -延时子程序- */void delay(uint num) / delay while(num-); /* ;看门狗初始化子程序 ;注意初始化后启动看门狗 */void init_wdt() EA=0;ACC = WDCON; /读取WDT控制寄存器 ACC = ACC|0x04; /置位ACC.2准备启动WDT WDL = 0x80; /设置8位倒计时器初值 WDCON = ACC; /启动WDT WFEED1 = 0xA5; /清零第一部分 WFEED2 = 0x5A; /清零第二部分EA=1; /* ;喂狗子程序 ;注意程序中开启中断 */void wdt_R() EA = 0; /关闭中断 WFEED1=0xA5; /执行清零第一部分 WFEED2=0x5A; /执行清零第二部分 EA=1; /开中断 /* ;-键消抖动处理子程序- */void dithering()TR0=1;if(dithering_sign) / 消抖动标志位if(!Key_sign) / 按键处理标志位time2=0;if(!Key1)Key1_js();if(!Key2)Key2_js();if(!Key3)Key3_js(); /* ;-T0中断服务程序- */void T0_ISR() interrupt 1 TL0=0x1B; TH0=0x50;dithering_sign=1;TR0=0;/* ;-RTC中断服务程序- */void RTC_ISR() interrupt 10 TCCON&=0x63; / 清除RTC中断标志位glitter_sign=glitter_sign; / 闪烁标志位+time;if(time=3)time=0;if(!Key_enter) / 按键进入标志位R_control=0; / 读温湿度控制辅助位+time2;if(time2=50)time2=0;k=3; / 按键进入辅助量fun_sign=0; / 功能切换标志量Fun_key=0; / 功能键处理辅助位Key_enter=0; / 按键进入标志位/* ;-UART中断服务程序- */void UART_ISR(void) interrupt 4SCON=SCON&0xFC;/*/ /*-保存数据子程序- */*/void save_data()switch(fun_sign)case 1:if(show1=0x0c) / 消隐之还原处理show1=0;if(show2=0x0c)show2=0;L_dat=(show1*100)+(show2*10)+show3);if(L_dat+5)=H_dat)Wdat=L_dat;addr=0x7F1;wflash();if(!(L_dat+5)=(L_dat+5)Wdat=H_dat;addr=0x7F2;wflash();if(!(L_dat+5)8; / 设置写入地址 FMADRL=addr&0xFF; FMDATA=Wdat; / 写入数据 FMCON=ERS_PROG; / 擦除编程 if( (FMCON&0x0F)!=0x00 ) return(0); else return(1); EA=1;/* -读Flash数据子程序- */ void rflash() uint code *readp;readp = addr-0x01; / readp = addr;因地址偏移Rdat= *readp;/* ;-数据处理子程序- */void Hex_BcdBLOCK()/uchar RH_offhand; / 采集湿度即时量/uchar T_offhand; / 采集温度即时量if(RH_T_sign) RH_T_data=U8RH_data_H; RH_T_data=RH_T_data=RhH_dat)if(!F0)C_out=1; / 控制输出端if(F0)C_out=0;if(RH_offhandRhL_dat)if(!F0)C_out=1;work=1; / 输出工作与否标志位if(F0)C_out=0;work=0; / 输出工作与否标志位 */if(!RH_T_sign)RH_T_data=(dat_H&0x0f)4);g=dat_L&0x0f;/show0=RH_T_data/100;show0=RH_T_data%100/10; show1=RH_T_data%10;show2=decimalg;show3=0xf;/*RH_T_data=U8T_data_H;RH_T_data=RH_T_data3) / 读DS18B20启始随机数控制辅助变量 if(T_offhand=H_dat)if(!F0)C_out=1; / 控制输出端work=1; / 输出工作与否标志位 if(F0)C_out=0;work=0; / 输出工作与否标志位if(T_offhandL_dat)if(!F0)C_out=0;work=0; / 输出工作与否标志位if(F0)C_out=1; / 控制输出端work=1; / 输出工作与否标志位/*/ /*-显示数据处理子程序-*/ /*/void Hex_Bcdshow()show1=show_dat/100;show2=show_dat%100/10;show3=show_dat%10;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年玉米采购合同书范本
- 2025环保型建材供应合同
- 2025北京家具买卖合同
- 治疗方案沟通核心框架
- 干呕的日常护理
- 巴基斯坦时间管理体系解析
- 天津市南开中学2024-2025学年高三下学期第五次月考数学试卷
- 普通心理学(第2版)课件 第二章 心理的生理机制
- 2025年电工基础知识试题
- 遗传性球形红细胞增多症的临床护理
- 夜场水烟合作协议书
- 河南省青桐鸣大联考普通高中2024-2025学年高三考前适应性考试地理试题及答案
- 管道劳务分包协议书
- 2025年中考理化生实验操作考试考务培训大纲
- 拆迁服务方案
- 2025-2030中国锂电子电池行业市场深度调研及前景趋势与投资研究报告
- 天津市部分区小学2025年小升初数学自主招生备考卷含解析
- 2021年高考地理试卷(全国甲卷)(空白卷)
- (二模)2024~2025学年度苏锡常镇四市高三教学情况调研(二)数学试卷(含答案详解)
- 2024初级社会工作者职业资格笔试题库附答案
- 江苏省南京市建邺区2023-2024学年八年级下学期期末考试物理试题【含答案解析】
评论
0/150
提交评论