|
51單片機(jī)做的智能溫控器設(shè)計(jì):ADC0809,proteus與程序,用一個(gè)可變電阻代替熱敏電阻來(lái)實(shí)現(xiàn)仿真控制.
下面是仿真原理圖:
51單片機(jī)源程序:
- //設(shè)計(jì)要求:智能溫控設(shè)
- //用ADC0809檢測(cè)溫度,如果大于設(shè)定溫度則斷開(kāi)回路,小于
- //則進(jìn)行加熱,等于設(shè)定溫度則保持不變
- //其中分別用數(shù)碼管顯示設(shè)定溫度與實(shí)際溫度
- //用兩個(gè)按鍵進(jìn)行加減設(shè)定溫度
- //收獲ADC0809高位應(yīng)該與單片機(jī)低位連接
- //在讀取溫度時(shí)必須先將P1口復(fù)位為1,不然會(huì)發(fā)生短路現(xiàn)象
- #include<reg51.h>
- #include<intrins.h>
- #define Duan P0
- sbit wei1=P2^0;//數(shù)碼管選通
- sbit wei2=P2^1;
- sbit wei3=P2^2;
- sbit wei4=P2^3;
- sbit Relay=P2^4;//控制電路繼電器閉合,使加熱
- sbit Start=P2^5;//AD0809開(kāi)始轉(zhuǎn)化端口
- sbit EOC=P2^6; //ADC0809轉(zhuǎn)化標(biāo)志口
- void System_Init(); //系統(tǒng)初始化
- unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數(shù)碼管段位
- char shezhi=50;
- int val;//轉(zhuǎn)化值
- 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; //開(kāi)始轉(zhuǎn)化
- _nop_();
- Start=0;
- _nop_();
- while(!EOC); //轉(zhuǎn)化結(jié)束
- val=(P1*100/256); //量程轉(zhuǎn)化
- if(val>shezhi)//是否繼續(xù)加熱
- 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;
-
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
全部資料下載(仿真工程文件和源碼):
智能溫控器.zip
(84.57 KB, 下載次數(shù): 260)
2017-4-12 11:46 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|