温度监测系统 单片机C51程序Word文档下载推荐.docx

上传人:b****6 文档编号:17992746 上传时间:2022-12-12 格式:DOCX 页数:19 大小:179.98KB
下载 相关 举报
温度监测系统 单片机C51程序Word文档下载推荐.docx_第1页
第1页 / 共19页
温度监测系统 单片机C51程序Word文档下载推荐.docx_第2页
第2页 / 共19页
温度监测系统 单片机C51程序Word文档下载推荐.docx_第3页
第3页 / 共19页
温度监测系统 单片机C51程序Word文档下载推荐.docx_第4页
第4页 / 共19页
温度监测系统 单片机C51程序Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

温度监测系统 单片机C51程序Word文档下载推荐.docx

《温度监测系统 单片机C51程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《温度监测系统 单片机C51程序Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

温度监测系统 单片机C51程序Word文档下载推荐.docx

unsignedcharss;

unsignedcharxs;

unsignedcharxx;

unsignedchari;

unsignedcharmiao;

unsignedcharfen;

unsignedcharshi;

unsignedchard;

bitf;

unsignedchardat;

doubledat1;

doubletemp;

doublez;

BYTEcodedis1[]={"

0123456789.-+:

a="

};

unsignedchardispbuf[8]={0,0,0,0,0,0,0,0};

//////////////////////////////////////////////////////////

ucharreadadc1(void)//0832函数

{

uchari;

AD_CS=1;

AD_CLK=0;

_nop_();

AD_CS=0;

AD_DI=1;

AD_CLK=1;

AD_DI=0;

//配置位1

//配置位2

for(i=0;

i<

=8;

i++)

{

dat=dat<

<

1;

if(AD_DI)

{

dat|=0x01;

}

return(dat);

}

delay(intms)//延时子程序

{

inti;

while(ms--)

for(i=0;

i<

250;

i++)

{

////////////////////////////////////////////////////////////////////////

BOOLlcd_bz()//测试LCD忙碌状态

BOOLresult;

LCD_RS=0;

LCD_RW=1;

LCD_EP=1;

_nop_();

result=(BOOL)(P0&

0x80);

LCD_EP=0;

returnresult;

lcd_wcmd(BYTEcmd)//写入指令数据到LCD

while(lcd_bz());

LCD_RW=0;

P0=cmd;

lcd_pos(BYTEpos)//设定显示位置

lcd_wcmd(pos|0x80);

lcd_wdat(BYTEdat)//写入字符显示数据到LCD

LCD_RS=1;

P0=dat;

lcd_init()//LCD初始化设定

lcd_wcmd(0x38);

delay

(1);

lcd_wcmd(0x0c);

lcd_wcmd(0x06);

lcd_wcmd(0x01);

///////////////////////////////////////////////////////////////////

voidwdkz(void)//上下限温度时间调整函数

switch(a)

case1:

{c=1;

if(k1==0)

delay(50);

if(k1==1)

ss++;

elsess=ss+5;

if(k2==0)

if(k2==1)

ss--;

elsess=ss-5;

}break;

case2:

if(k1==0)

xx++;

elsexx=xx+5;

if(k2==1)

xx--;

elsexx=xx-5;

case5:

miao++;

elsemiao=miao+5;

if(miao>

59)

miao=0;

miao--;

elsemiao=miao-5;

if(miao==0)

miao=59;

case4:

fen++;

elsefen=fen+5;

if(fen>

fen=0;

fen--;

elsefen=fen-5;

if(fen==0)

fen=59;

case3:

shi++;

elseshi=shi+5;

if(shi>

23)

shi=0;

shi--;

elseshi=shi-5;

if(shi==0)

shi=23;

/////////////////////////////////////////////////////////////////

voidxians()//显示函数

lcd_wcmd(0x06);

lcd_pos(0x00);

//上限温度

lcd_wdat(dis1[ss/100]);

lcd_pos(0x01);

lcd_wdat(dis1[ss/10%10]);

lcd_pos(0x02);

lcd_wdat(dis1[ss%10]);

lcd_pos(0x08);

lcd_wdat(dis1[shi/10]);

lcd_pos(0x09);

lcd_wdat(dis1[shi%10]);

lcd_pos(0x0a);

lcd_wdat(dis1[13]);

lcd_pos(0x0b);

lcd_wdat(dis1[fen/10]);

lcd_pos(0x0c);

lcd_wdat(dis1[fen%10]);

lcd_pos(0x0d);

lcd_pos(0x0e);

lcd_wdat(dis1[miao/10]);

lcd_pos(0x0f);

lcd_wdat(dis1[miao%10]);

lcd_pos(0x40);

lcd_wdat(dis1[xx/100]);

lcd_pos(0x41);

lcd_wdat(dis1[xx/10%10]);

lcd_pos(0x42);

lcd_wdat(dis1[xx%10]);

lcd_pos(0x45);

lcd_wdat(dis1[14]);

lcd_pos(0x46);

lcd_wdat(dis1[15]);

lcd_pos(0x47);

lcd_wdat(dis1[a]);

lcd_pos(0x4a);

lcd_wdat(dis1[dispbuf[0]]);

lcd_pos(0x4b);

lcd_wdat(dis1[dispbuf[1]]);

lcd_pos(0x4c);

lcd_wdat(dis1[dispbuf[2]]);

lcd_pos(0x4d);

lcd_wdat(dis1[dispbuf[3]]);

lcd_pos(0x4e);

lcd_wdat(dis1[dispbuf[4]]);

lcd_pos(0x4f);

lcd_wdat(dis1[dispbuf[5]]);

voidbaojing()//报警

lb=1;

if(temp>

ss)

lb=0;

if(temp<

xx)

/*fm=1;

fm=0;

}*/

//////////////////////////////////////////////////////////////////

zhuanhuan()//转换函数

z=dat*0.01960784;

if(z>

2.602)

dispbuf[0]=12;

temp=(z-2.602)*100;

zs=(unsignedchar)temp;

xs=(unsignedchar)((temp-zs)*10);

dispbuf[1]=zs/100;

dispbuf[2]=zs/10%10;

dispbuf[3]=zs%10;

dispbuf[4]=10;

dispbuf[5]=xs;

else

dispbuf[0]=11;

temp=(2.602-z)*100;

xs=(unsignedchar)((temp-zs)*100);

dispbuf[2]=zs/10%10;

dispbuf[5]=xs/10;

dispbuf[6]=xs%10;

}

main()//主函数

lcd_init();

delay(10);

ss=123;

xx=3;

f=1;

TMOD=0x11;

TL1=0xb0;

TH1=0x3c;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR1=1;

TR0=1;

ET0=1;

ET1=1;

EA=1;

IT0=1;

EX0=1;

while

(1)

xians();

baojing();

wdkz();

if(f==1)

readadc1();

zhuanhuan();

f=0;

}

////////////////////////////////////////////////////////////////

voidt1(void)interrupt3using0//定时1

d++;

if(d==20)

d=0;

////////////////////////////////////////////////////////////////

voidX0(void)interrupt0//中断

delay(20);

if(kw==0)

a++;

if(a==6)

a=0;

voidt0(void)interrupt1using0//定时0

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

b++;

if(b==15)

b=0;

}

///

完!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1