人体红外测温仪 毕业设计论文 - 图文(6)

2019-04-21 23:10

附录3 程序

# include //头文件 # include # include # include # include # include # include sbit upalarm=P3^0;

//测温头文件

//液晶显示头文件

//上限温度报警信号

//超过上限温度,报警 //加1和减1标志

#include sbit dc_motor_run=P2^6; bit up_one,down_one; bit alarm_up_flag; bit alarm_switch;

unsigned char user_temper=37; 是0.25C unsigned

unsigned char t[2],*pt; 数组与主函数通信的

unsigned char TempBuffer1[17]={0x2b,0x20,0x30,0x30,0x2e,0x30,0x30,0x20,

0x53,0x45,0x2b,0x20,0x30,0x30,0x2e,0x30,'\\0'}; //显示实时温度,上电时显示+ 00.00 SET+ 00 0x54,0x4c,0x3a,0x2b,0x20,0x30,0x30,0x20,'\\0'}; //显示温度上下限,上电时显示TH:+ 00 TL:+ 00

//用来存放温度值,测温程序就是通过这个 //用户标定温度

unsigned char TH=30,TL=20,RS=0x3f; //上限温度50,下限20,分辨率10位,也就bit set_temper_flag;

bit set_temper_dot_flag;

//上限报警设置标志

//设置控制标志温度标志 //报警开关

unsigned char TempBuffer0[17]={0x54,0x48,0x3a,0x2b,0x20,0x30,0x30,0x20,

unsigned char code dotcode[4]={0,25,50,75};

因显示分辨率为0.25,但小数运算比较麻烦,故采用查表的方法*

再将表值分离出十位和个位后送到十分位和百分位********************/ void sounddelay(); void tempsound();

23

/***********用户设定温度转换为LCD显示数据************** *功能:将用户设定温度user_temper,分离出符号位,百、十、个位 { 码

TempBuffer1[11]=temper/100+0x30;

//分离出temper的

百十个位

if( TempBuffer1[11]==0x30) TempBuffer1[11]=0xfe; //百位数消隐 TempBuffer1[12]=(temper0)/10+0x30; 位 }

/***************温度转换为LCD显示数据************

*功能:将报警温度,分离出符号位,百、十、个位,并将它们转化为ACSII码,送到液晶显示缓冲区

void alarm_LCD( unsigned char TH, unsigned char TL) {

TempBuffer0[3]=0x2b; if(TL>0x7f)

else TempBuffer0[11]=0x2b; //0x2B为\的ASCII码 TempBuffer0[4]=TH/100+0x30; 十个位

if( TempBuffer0[4]==0x30) TempBuffer0[4]=0xfe; //百位数消隐 TempBuffer0[5]=(TH0)/10+0x30; TempBuffer0[6]=(TH0)+0x30; TempBuffer0[12]=TL/100+0x30; 十个位

if( TempBuffer0[12]==0x30) TempBuffer0[12]=0xfe; / /百位数消隐 TempBuffer0[13]=(TL0)/10+0x30; TempBuffer0[14]=(TL0)+0x30;

//分离出十位 //分离出个位

//分离出十位 //分离出个位

//分离出TH的百

//0x2B为\的ASCII码

TempBuffer1[15]=user_dot_temper+0x30;

//分离出十位

//分离出个

TempBuffer1[13]=(temper0)+0x30;

TempBuffer1[10]=0x2b; / /0x2B为\的ASCII 并将它们转化为ACSII码,送到液晶显示缓冲区 void user_temper_LCD(unsigned char temper)

//分离出TL的百

24

}

/**********温度转换为LCD显示数据**************** *功能:将两个字节的温度值,分离出符号位,整数及小数 {

unsigned char x=0x00,y=0x00; t[0]=*pt; pt++; t[1]=*pt; }

else TempBuffer1[0]=0x2b; t[1]<<=4; 位

t[1]=t[1]&0x70; 个有效数字位 x=t[0]; 还要用到它 x>>=4; 右移4位 x=x&0x0f; 位代表小数 t[1]=t[1]|x; 成一个字节 soundvalue1=t[1];

if(t[1]>user_temper) {dc_motor_run=1;} //如果温度高于用户标定温度,则报警

else {dc_motor_run=0;} TempBuffer1[1]=t[1]/100+0x30; ASCII码

if( TempBuffer1[1]==0x30) TempBuffer1[1]=0xfe; //百位数消隐 TempBuffer1[2]=(t[1]0)/10+0x30; TempBuffer1[3]=(t[1]0)+0x30; t[0]=t[0]&0x0c;

//分离出十位 //分离出个位

//+0x30 为变 0~9

//将高低字节的有效值的整数部分拼

//和前面两句就是取出t[0]的高四位,t[0]的低四

//

//将t[0]暂存到X,因为取小数部分 //取出高字节的3

//0xfe为变\的ASCII码

//将高字节左移4

并将它们转化为ACSII码,送到液晶显示缓冲区 void temper_LCD(void)

//取有效的两位小数

25

t[0]>>=2; x=t[0];

//左移两位,以便查表

//查表换算成实际的小数

//分离出十分位 //分离出百分位

y=dotcode[x]; soundvalue2=y;

TempBuffer1[5]=y/10+0x30; }

TempBuffer1[6]=y+0x30;

26


人体红外测温仪 毕业设计论文 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:六年级上册近反义词练习

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: