资源描述:
《温控系统说明书.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于单片机的简单温控系统机控学院自动化12-2潘星光实现功能:利用单片机89C52和热电偶进行测量发热电阻的温度,利用LCD1602进行显示的温度和人工可设置温度的上限与下限值,即有两个按键是来控制上限值的大小,而另两个按键则是控制下限值的大小的。发热电阻从系统上电后就立即通电发热,设置好所需要温度范围,则测量温度显示的数值会随发热电阻通电时间的增大而增大,当测量的温度超出所设定的上限值时,就会驱动蜂鸣器报警,发热电阻停止通电,同时也会驱动马达扇风来降温;而当测量温度低于所设定的下限值时,也会进行报警,但电机不会被启动和发热电阻也继续通电发热。当然当测量温度在上限值和下限值之间时
2、,是不会进行报警和驱动马达的,但发热电阻仍处于通电状态中。电路原理图:主程序:#include#include<1602.h>#includesbitds=P2^2;sbitbeep=P2^3;sbitrd=P3^7;sbitk=P1^0;bitflag;uchards_rom[8];ucharH,L,Key_value;voidTempDelay(ucharus){while(us--);//6.51us}voidds_reset(){ds=1;_nop_();ds=0;TempDelay(80);//520usds=1;TempDela
3、y(5);if(ds==0)flag=1;elseflag=0;TempDelay(20);ds=1;}bitds_read_bit(){bitdat;ds=0;_nop_();_nop_();ds=1;_nop_();dat=ds;TempDelay(12);returndat;}uchards_read_byte(){uchari,j,value;for(i=0;i<8;i++){j=ds_read_bit();value=(j<<7)
4、(value>>1);}returnvalue;}voidds_write_byte(uchardat){uchari,onebit;for
5、(i=0;i<8;i++){onebit=dat&0x01;if(onebit)//写1{ds=0;TempDelay(1);ds=1;_nop_();}else//写0{ds=0;TempDelay(11);ds=1;_nop_();}dat>>=1;}}voidds_change(){ds_reset();ds_write_byte(0xcc);ds_write_byte(0x44);}ucharget_temperature(){uinttemp;uchara,b,c;ds_reset();ds_write_byte(0xcc);ds_write_byte(0xbe);a=
6、ds_read_byte();b=ds_read_byte();temp=b;temp<<=8;temp
7、=a;c=temp*0.0625;returnc;}voidkey(){Key_value=P3;Key_value=Key_value&0x0f;if(Key_value!=0x0f){delay(5);if(Key_value!=0x0f){switch(Key_value){case0x0e:H++;break;case0x0d:H--;break;case0x0b:L++;break;case0x07:L--;break;}}}}voidmain(){uchari;r
8、d=0;init_1602();write_com(0x80+0+3);write_data('H');write_com(0x80+0+8);write_data('L');lcd_distostr(1,1,0);H=35;L=25;k=1;while(1){ds_change();i=get_temperature();lcd_dis(1,14,uchartostr(i));lcd_dis(0,5,uchartostr(H));lcd_dis(0,10,uchartostr(L));if(i>=H){beep=0;k=0;}elseif(i<=L){beep=0;k=1;}e
9、lse{beep=1;k=1;}key();}}头文件1602.h程序:#defineucharunsignedchar#defineuintunsignedintsbitwela=P2^7;sbitdula=P2^6;sbitLCDEN=P3^4;sbitrs=P3^5;sbitrw=P3^6;uchardatstr[]="Temperature:";ucharstr[4];//uchartostr函数转换的字符串同时可以把16进制转成10进制voiddelay(uintz)/