张飞基于单片机的温度报警器设计论文(初稿) - 图文(8)

2019-02-15 12:26

WriteOneChar(0x44); //启动温度转换 }

/*****读取温度*****/

unsigned int ReadTemperature(void) {

unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Tmpchange(); Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器 a=ReadOneChar(); //读低8位 b=ReadOneChar(); //读高8位 t=b; t<<=8; t=t|a;

tt=t*0.0625;

t= tt*100+0.5; //放大10倍输出并四舍五入 return(t); }

/*****显示温度子程序*****/ void wendu_dat() {

e=ReadTemperature(); //获取温度值 a=e/1000; if(shezhi==0) {

temp3[0]=a; //计算得到十位数字 b=e/100-a*10; //计算得到个位数字 temp3[1]=b;

d=e; //计算得到小数点后两位 temp3[2]=d;

c=(e0)/10; //计算得到小数点后一位 temp3[3]=c; } else {

temp3[0]=shangxian/10; temp3[1]=shangxian; temp3[2]=xiaxian/10; temp3[3]=xiaxian; }

wendu=e/100;

33

if(moshi==0)

{if(wendu>=shangxian || wendu<=xiaxian || num>=num1) baojing=1;

else baojing=0; } else

baojing=0; }

/*****************************************************

函数功能:显示气体浓度和设定的报警极限值

*****************************************************/ void rongdu_dat() {

uchar ad; ad=A_D(); num=ad;

if(shezhi==0) {

temp2[0]=num/10000;

temp2[1]=num000/1000; temp2[2]=num00000/100; temp2[3]=num000000/10; temp2[4]=num; } else {

temp2[0]=num1/10000;

temp2[1]=num1000/1000; temp2[2]=num100000/100; temp2[3]=num1000000/10; temp2[4]=num1; }

if(moshi==0)

{if(wendu>=shangxian || wendu<=xiaxian || num>=num1) baojing=1;

else baojing=0; } else

baojing=0; }

void display() { if(shezhi==0)

{write_com(0x80+0);

34

if(num>=num1) write_data('*'); else

write_data(' '); write_data('S'); write_data('M'); write_data('O'); write_data('G'); write_data(':');

write_data(0x30+temp2[0]); write_data(0x30+temp2[1]); write_data(0x30+temp2[2]); write_data(0x30+temp2[3]); write_data(0x30+temp2[4]); write_data('m'); write_data('g'); write_data('/'); write_data('l'); write_data(' ');

write_com(0x80+0x40);

if(wendu>=shangxian || wendu<=xiaxian) write_data('*'); else

write_data(' '); write_data('T'); write_data('E'); write_data('M'); write_data('P'); write_data(':');

write_data(0x30+temp3[0]); write_data(0x30+temp3[1]); write_data('.');

write_data(0x30+temp3[2]); write_data(0x30+temp3[3]); write_data('C'); write_data(' '); write_data(' '); write_data(' '); write_data(' '); } else

{write_com(0x80+0); write_data('S'); write_data('M');

35

write_data('O'); write_data('G'); write_data('_'); write_data('H'); write_data(':'); if(shezhi==1) {if(ss==1) {

write_data(0x30+temp2[0]); write_data(0x30+temp2[1]); write_data(0x30+temp2[2]); write_data(0x30+temp2[3]); write_data(0x30+temp2[4]); } else {

write_data(' '); write_data(' '); write_data(' '); write_data(' '); write_data(' '); } } else {

write_data(0x30+temp2[0]); write_data(0x30+temp2[1]); write_data(0x30+temp2[2]); write_data(0x30+temp2[3]); write_data(0x30+temp2[4]); }

write_data('m'); write_data('g'); write_data('/'); write_data('l');

write_com(0x80+0x40); write_data('T'); write_data('E'); write_data('M'); write_data('P'); write_data(' '); write_data(' '); write_data('H'); write_data(':');

36

if(shezhi==2) {if(ss==1) {

write_data(0x30+temp3[0]); write_data(0x30+temp3[1]); } else {

write_data(' '); write_data(' '); } } else {

write_data(0x30+temp3[0]); write_data(0x30+temp3[1]); }

write_data(' '); write_data(' '); write_data('L'); write_data(':'); if(shezhi==3) {if(ss==1) {

write_data(0x30+temp3[2]); write_data(0x30+temp3[3]); } else {

write_data(' '); write_data(' '); } } else {

write_data(0x30+temp3[2]); write_data(0x30+temp3[3]); } } }

/***************************************************** 函数功能:主函数

*****************************************************/

37

void main(void) { rw=0; init();

TMOD=0x1; TH0=0xb1; TL0=0xe0; TR0=1;

ET0=1; EA=1; //定义中断 while(1)

{ adstart(); wendu_dat(); rongdu_dat(); key();

display(); } }

void time0(void) interrupt 1 //中断 { TH0=0xb1; TL0=0xe0; if(shezhi>0) { pinlv++;

if(pinlv==30) ss=!ss;

if(pinlv==60) {ss=!ss;pinlv=0;} } else

{ss=0;pinlv=0;}

if(baojing==1) { pinlv1++;

if(pinlv1==30) ss1=!ss1;

if(pinlv1==60) {ss1=!ss1;pinlv1=0;} } else

{ss1=0;pinlv1=0;} LED1=!moshi; LED2=!ss1; fmq=!ss1; }

38


张飞基于单片机的温度报警器设计论文(初稿) - 图文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:北京外国语学院网络教育国际商务谈判 01次作业(第1-4单元)答题

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

马上注册会员

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