|
研究目標(biāo):
研究課題是多功能水溫控制系統(tǒng)的設(shè)計。要求系統(tǒng)溫度測量范圍大于要求的30~90℃,最小區(qū)分度為0.1℃,控制精度在0.5℃以內(nèi),溫度控制的靜態(tài)誤差小于1℃?衫冒存I系統(tǒng)調(diào)整控制水溫的上下限設(shè)定。如果發(fā)現(xiàn)采集的溫度值低于下限值就進(jìn)行報警,并通過控制繼電器使加熱設(shè)備持續(xù)加熱直到接近溫度上限的溫度,系統(tǒng)等待水溫冷卻在控制范圍內(nèi)。如果采集的溫度值高于上限值,那么也有相應(yīng)的報警聲提示操作人員對水溫進(jìn)行控制。如果并沒有超過上下限則不會報警。采集到的溫度用數(shù)碼管顯示進(jìn)行顯示。本系統(tǒng)不僅具有一般水溫控制系統(tǒng)的特點如設(shè)置溫度上下限、報警等,還可以在水溫過低時控制繼電器使加熱設(shè)備持續(xù)加熱。廢話不多說,直接上圖。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):
6WMZ2T1]1OOBGO[JO1Z9FNO.png (16.94 KB, 下載次數(shù): 91)
下載附件
2018-2-7 17:29 上傳
0.png (59.77 KB, 下載次數(shù): 86)
下載附件
2018-2-8 00:11 上傳
單片機(jī)源程序如下:
- #include<reg52.h>
- #include<intrins.h>
- #include<wendu.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit key1=P3^0;
- sbit key2=P3^1;
- sbit key3=P3^2;
- sbit led=P3^3;
- sbit shenwen=P3^4;
- sbit baojing=P3^5;
-
- uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xbf,0xc7,0x89};
- uchar code tab3[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x3f,0xff};
- uchar yi,er,san,si,san1;
- uint shangxian=90,xiaxian=30,flag=0;
- void delay(int ma);
- void display1(uchar yi,uchar er,uchar san,uchar si);
- void display2(uchar yi,uchar er,uchar san1,uchar si);
- void keyscan();
- void main()
- {
- float wendu=0;
- int wenduzhen=0;
- yi=11;er=11;san=11;si=11;
- baojing=shenwen=1;//關(guān)閉蜂鳴器,繼電器
-
- while(1)
- {
- keyscan();
- if(flag==0)//溫度測試界面
- {
- wendu=temget();
-
- if(wendu<xiaxian)//燒水且報警
- {
- shenwen=0;
- baojing=0;
- }
- else if((wendu>=xiaxian) && (wendu<=shangxian) )
- {
- baojing=1;//報警關(guān)閉
- }
- else if(wendu>=shangxian)//報警開啟,燒水功能關(guān)閉
- {
- shenwen=1;
- baojing=0;
- }
- wenduzhen=wendu*10;
- yi=wenduzhen/1000;
- er=wenduzhen%1000/100;
- san=wenduzhen%100/10;
- si=wenduzhen%10;
- display1(yi,er,san,si);
- }
-
- else if(flag==1)//溫度下限設(shè)置界面
- {
- yi=13;er=12;
- san1=xiaxian%100/10;
- si=xiaxian%10;
-
- display2(yi,er,san1,si);
- }
- else if(flag==2)//溫度上限設(shè)置界面
- {
- yi=14;er=12;
- san1=shangxian%100/10;
- si=shangxian%10;
-
- display2(yi,er,san1,si);
- }
-
- if(xiaxian>=shangxian)led=0;//下限超過上限led亮
- else led=1;
- }
- }
- void keyscan()
- {
- if(key1==0)//設(shè)置界面
- {
- delay(5);
- if(key1==0)
- {
- flag++;
- if(flag>2)flag=0;
- }
- while(!key1);
- }
- if(key2==0)//加數(shù)值
- {
- delay(5);
- if(key2==0)
- {
- if(flag==1)
- {
- xiaxian++;
- if(xiaxian>=89)xiaxian=89;
- }
- else if(flag==2)
- {
- shangxian++;
- if(shangxian>=90)shangxian=90;
- }
- }
- while(!key2);
- }
- if(key3==0)//減數(shù)值
- {
- delay(5);
- if(key3==0)
- {
- if(flag==1)
- {
- xiaxian--;
- if(xiaxian<0)xiaxian=0;
- }
- else if(flag==2)
- {
- shangxian--;
- if(shangxian<1)xiaxian=1;
- }
- }
- while(!key3);
- }
- }
- void display1(uchar yi,uchar er,uchar san,uchar si)
- {
- P2=0X01;
- P0=tab[yi];
- delay(1);
-
- P2=0X02;
- P0=tab[er];
- delay(1);
- P2=0X04;
- P0=tab3[san];
- delay(1);
-
- P2=0X08;
- P0=tab[si];
- delay(1);
- }
- void display2(uchar yi,uchar er,uchar san1,uchar si)
- {
- P2=0X01;
- P0=tab[yi];
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
temp.rar
(50.54 KB, 下載次數(shù): 358)
2018-2-7 17:30 上傳
點擊文件名下載附件
這是仿真和源程序 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|