1 / 7
文档名称:

51温控系统说明书.doc

格式:doc   大小:103KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

51温控系统说明书.doc

上传人:63229029 2017/4/12 文件大小:103 KB

下载得到文件列表

51温控系统说明书.doc

文档介绍

文档介绍:基于单片机的简单温控系统机控学院自动化 12-2 潘星光 3120619213 实现功能: 利用单片机 89C52 和热电偶进行测量发热电阻的温度,利用 LCD1602 进行显示的温度和人工可设置温度的上限与下限值,即有两个按键是来控制上限值的大小,而另两个按键则是控制下限值的大小的。发热电阻从系统上电后就立即通电发热,设置好所需要温度范围,则测量温度显示的数值会随发热电阻通电时间的增大而增大,当测量的温度超出所设定的上限值时,就会驱动蜂鸣器报警,发热电阻停止通电,同时也会驱动马达扇风来降温;而当测量温度低于所设定的下限值时,也会进行报警,但电机不会被启动和发热电阻也继续通电发热。当然当测量温度在上限值和下限值之间时,是不会进行报警和驱动马达的,但发热电阻仍处于通电状态中。电路原理图: 主程序: #include<> #include<> #include<> sbit ds= P2^2; sbit beep = P2^3; sbit rd= P3^7; sbit k= P1^0; bit flag; uchar ds_rom[8]; uchar H,L,Key_value; void TempDelay(uchar us) { while(us--); // } void ds_reset() { ds=1; _nop_(); ds=0; TempDelay(80);//52 0us ds=1; TempDelay(5); if(ds==0) flag=1; else flag=0; TempDelay(20); ds=1; } bit ds_read_bit() { bit dat; ds=0; _nop_(); _nop_(); ds=1; _nop_(); dat=ds; TempDelay(12); return dat; } uchar ds_read_byte() { uchar i,j,value; for(i=0;i<8;i++) { j=ds_read_bit(); value=(j<<7)|(value> >1); } return value; } void ds_write_byte(uchar dat) { uchar i,onebit; for(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; }} void ds_change() { ds_reset(); ds_write_byte(); ds_write_byte(0x44) ;} uchar get_temperature() { uint temp; uchar a,b,c; ds_reset(); ds_write_byte(); ds_write_byte(0xbe); a=ds_read_byte(); b=ds_read_byte(); temp=b; temp<<=8; temp|=a; c= temp*; return c;} void key