教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

温控自动风扇系统论文(3)

来源:网络收集 时间:2026-10-03
导读: 4.2 子程序 4.2.1温度数据显示处理函数 首先使用DS18B20进行温度数据采集,经过处理后的数据在由4个数码管进行数据显示。其中要进行温度值正负判断,负温度求补码,标志位置1等问题。 void tem_deal(uint tem) { /**

4.2 子程序

4.2.1温度数据显示处理函数

首先使用DS18B20进行温度数据采集,经过处理后的数据在由4个数码管进行数据显示。其中要进行温度值正负判断,负温度求补码,标志位置1等问题。

void tem_deal(uint tem) {

/*************温度数据处理*****************/ if(!flag) {

if(tem>6348) // 温度值正负判断

{tem=65536-tem;flag1=1;} // 负温度求补码,标志位置1 Dis_play[4]=tem&0x0f; // 取小数部分的值 Dis_play[3]=ditab[Dis_play[4]]; // 存入小数部分显示值

Dis_play[4]=tem>>4; // 取中间八位,即整数部分的值 Dis_play[0]=Dis_play[4]/100; // 取百位数据暂存 Dis_play[2]=Dis_play[4]0; // 取后两位数据暂存 Dis_play[1]=Dis_play[2]/10; // 取十位数据暂存 Dis_play[2]=Dis_play[2]; // 取个位数据暂存 if(!Dis_play[0]) // 最高位为0都不显示 {

Dis_play[0]=0x0a; // 先判断百位是否为0 if(!Dis_play[1]) {

Dis_play[1]=0x0a; // 再判断十位是否为0 } }

// if(flag1) // {

// Dis_play[3]=0x0b; // 为负数时,最高位显示 \ // } } }

/******************************************/ /* 温度数据显示 */ /******************************************/ void display() {

char k;

11

for(k=0;k<4;k++) //4位LED扫描控制 { Disdata=table[Dis_play[k]]; //数据显示 if (k==2){DIN=0;} //小数点显示 discan=scan_con[k]; //位选 delay(90); //延时 discan=0x0; } }

4.2.2超温报警可控程序

程序设定好三个按键来用来设定用户预想设定的报警值,和BS18B20采集过来的温度数据进行对比,如果超出了原来预定设的值时,就会立刻调用程序执行报警命令。

void Annu(void) { uchar temp,tim; temp=Dis_play[1]*10+Dis_play[2]; if(KEY1==0) { delay(5000); if(KEY1==0) { while(!KEY1) display(); flag3=0; display(); flag++; BUZ=0; BUZ1=1; if(flag==3) { flag3=1; flag=0; } } } if(flag==1) { DC1=0; if(KEY2==0) { delay(5000);

12

if(KEY2==0) { while(!KEY2) display(); tem1++; } }

if(KEY3==0) { delay(5000); if(KEY3==0) { while(!KEY3) display(); tem1--; } } }

if(temp>tem1) { if(!flag) { BUZ=1; BUZ1=0; } } else { BUZ=0; BUZ1=1; }

if(tem1==-1) tem1=50; if(tem1==51) tem1=0;

if(flag==2) { if(KEY2==0) { delay(5000); if(KEY2==0) { while(!KEY2)

13

{ display(); DC_change(tim); } tem2++; } }

if(KEY3==0) { delay(5000); if(KEY3==0) { while(!KEY3) { display(); DC_change(tim); } tem2--; } } Dis_play[1]=tem2/10; Dis_play[2]=tem2; Dis_play[3]=0; if(!Dis_play[1]) Dis_play[1]=0x0a; // 再判断十位是否为0 display(); if(tem2==0) { DC_clos(); } if(tem2==1) { flag3=1; tim=50; DC_change(tim); } if(tem2==2) { flag3=1; tim=125; DC_change(tim); } if(tem2==3) {

14

flag3=1; tim=200; DC_change(tim); } if(tem2==4) { DC_max(); } if(tem2==5) tem2=0; if(tem2==-1) tem2=4; }

// BUZ=0; if(flag==1) { Dis_play[1]=tem1/10; Dis_play[2]=tem1; Dis_play[3]=0; if(!Dis_play[1]) { Dis_play[1]=0x0a; // 再判断十位是否为0 } display(); } }

4.2.3定时器0函数

设置好定时器0的工作方式。 void timer0_int(void) interrupt 1 {

TR0=0; TH0=(65536-100)/256; TL0=(65536-100)%6; TR0=1; timer++; }

15

…… 此处隐藏:340字,全部文档内容请下载后查看。喜欢就下载吧 ……
温控自动风扇系统论文(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/446479.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)