|
51单片机做的智能温控器设计:ADC0809,proteus与程序,用一个可变电阻代替热敏电阻来实现仿真控制.
下面是仿真原理图:
51单片机源程序:
- //设计要求:智能温控设
- //用ADC0809检测温度,如果大于设定温度则断开回路,小于
- //则进行加热,等于设定温度则保持不变
- //其中分别用数码管显示设定温度与实际温度
- //用两个按键进行加减设定温度
- //收获ADC0809高位应该与单片机低位连接
- //在读取温度时必须先将P1口复位为1,不然会发生短路现象
- #include<reg51.h>
- #include<intrins.h>
- #define Duan P0
- sbit wei1=P2^0;//数码管选通
- sbit wei2=P2^1;
- sbit wei3=P2^2;
- sbit wei4=P2^3;
- sbit Relay=P2^4;//控制电路继电器闭合,使加热
- sbit Start=P2^5;//AD0809开始转化端口
- sbit EOC=P2^6; //ADC0809转化标志口
- void System_Init(); //系统初始化
- unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管段位
- char shezhi=50;
- int val;//转化值
- char i=0;
- void delay1ms(void) //误差 0us
- {
- unsigned char a,b,c;
- for(c=1;c>0;c--)
- for(b=142;b>0;b--)
- for(a=2;a>0;a--);
- }
- void main()
- {
- System_Init();
- while(1)
- {
- P1=0xff;
- Start=0;
- Start=1; //开始转化
- _nop_();
- Start=0;
- _nop_();
- while(!EOC); //转化结束
- val=(P1*100/256); //量程转化
- if(val>shezhi)//是否继续加热
- Relay=0;
- else
- Relay=1;
- }
- }
- void System_Init()
- {
- TMOD=0x01;
- EA=1;
- ET0=1;
- TH0=(65535-5000)/256;
- TL0=(65535-5000)%256;
- TR0=1;
- EX0=1;
- EX1=1;
-
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
全部资料下载(仿真工程文件和源码):
智能温控器.zip
(84.57 KB, 下载次数: 260)
|
评分
-
查看全部评分
|