|
自己搞的
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png (48.56 KB, 下載次數(shù): 79)
下載附件
2017-8-25 16:07 上傳
0.png (36.53 KB, 下載次數(shù): 61)
下載附件
2017-8-25 16:07 上傳
單片機源程序如下:
- #include "102.h" //聲音 暫停
- #include "EEPROM.h"
- unsigned char in;
- sbit fmq = P5^4;
- unsigned char key=0;
- unsigned char wendu;
- bit fl100ms;
- unsigned char yanshi;
- unsigned char te;
- unsigned int time;
- int wenduh=500;
- int wendul=200;
- unsigned char huicha;
- unsigned int tempflg[2];
- signed int temp[2];
- bit gz;
- bit gzbz=0;
- void baocuen();
- void duqu();
- void sy();
- void sy2();
- unsigned char ysbz;
- unsigned int syt;
- unsigned int ysjs;
- void main()
- {
- unsigned u;
- init();
- while(1)
- {
- ADC_convert();
- panduan();
- sy2();
- if(temp[0]<0)
- { u=abs(temp[0]);
- dis1(21 ,u/100,u%100/10);
- }
- else if(temp[0]>999)
- { dis1(temp[0]/1000 ,temp[0]%1000/100,temp[0]%100/10);}
- else
- dis1(temp[0]/100 ,(temp[0]%100/10)+10,temp[0]%10);
-
- if(!set)
- { sy();
- while(1)
- {
- if(temp[0]<0)
- {
- temp[0]=abs(temp[0]);
- dis1(21 ,temp[0]/10,temp[0]%10);
- }
- else if(temp[0]>999)
- {
- dis1(temp[0]/1000 ,temp[0]%1000/100,temp[0]%100/10);
- }
- else
- dis1(temp[0]/100 ,(temp[0]%100/10)+10,temp[0]%10);
- if(set)
- {
- out=0;
- shezhi();
- baocuen();
- goto loop2;
- }
- }
-
- loop2:te=0;
- }
- if(!up)
- { sy();
- if(temp[0]<0)
- { temp[0]=abs(temp[0]);
- dis1(21 ,temp[0]/10,temp[0]%10);
- }
- else if(temp[0]>999)
- { dis1(temp[0]/1000 ,temp[0]%1000/100,temp[0]%100/10);}
- else
- dis1(temp[0]/100 ,(temp[0]%100/10)+10,temp[0]%10);
- if(up)
- {
- P3=0;
- LED1=LED2=LED3=0;
- out=0;
- fmq=0;
- while(1)
- {
- CLK_DIV = 0x07; //將IDL(PCON.0)置1,MCU將進(jìn)入空閑模式
- _nop_(); //此時CPU?時鐘,不執(zhí)行指?
- if(!up)
- { sy();
- while(1)
- {
- if(up)
- {
- CLK_DIV = 0x00;
- goto loop2;}
- }
- }
- }}}
- }
- }
-
- void init()
- {
- AUXR &= 0x7F; //定時器時鐘12T模式
- TMOD=0x01; //設(shè)置T0為自動裝入的16位定時器
- TL0 = (65536-10000)/256;
- TH0 = (65536-10000)%256;
- P3M1 = 0x00;
- P3M0 = 0xff;
- P1M1 = 0x00;
- P1M0 = 0x00;
- P5M1 = 0x00;
- P5M0 = 0xff;
- EA = 1;
- ET0=1;
- TR0=1;
- InitADC();
- duqu();
- }
- void Timer0Init(void) interrupt 1 //2毫秒@11.0592MHz
- {
- unsigned char te;
- bit biaozhi7=1;
- TL0 = 0xCD; //設(shè)置定時初值
- TH0 = 0xF8; //設(shè)置定時初值
- te++;
- time++;
- WDT_CONTR=0x37; //喂狗 8.4S
- //////////////////////////////
- if(te>220)
- {
- fl100ms=1;
- te=0;
- }
- syt++;
- if(syt==100)
- { fmq=0;}
- ysjs++;
-
- }
- void ADC_convert(void) //ad數(shù)據(jù)得出
- {
-
- if(fl100ms==1)
- {
- GetADCResult(1,&tempflg[0]); //1-通道號 temp[0]-ADC轉(zhuǎn)換數(shù)值
- fl100ms=0;
- }
- temp[0] = (signed int) ( ( 3950.0 / ( 11.33657 + log( 6.04 * (float)tempflg[0] / ( 1024.0 - (float)tempflg[0] ) ) ) - 278.15) * 10 );//273.15
- }
- void shezhi()
- {
- unsigned b;
- unsigned mode=0;
- bit caidan=0;
- bit a=1;
- dis1(20 ,21,mode);
- while(1)
- {
- if(caidan==0)
- {
- dis1(20 ,21,mode);
- if(!up)
- { sy();
- a=1;
- while(a)
- {
- dis1(20 ,21,mode);
- if(up)
- {
- mode++;
- if(mode>4)
- {mode=0;}
- a=0;
- }
- }
- }
- if(!down)
- { sy();
- { a=1;
- while(a)
- {
- dis1(20 ,21,mode);
- if(down)
- {
- if(mode==0)
- {mode=4;}
- else mode--;
- a=0;
- }
- }
- }
- }
- if(!set)
- {
- sy();
- time=0;
- a=1;
- while(a)
- {
- dis1(20 ,21,mode);
- if(set)
- {
- if(time>100)
- { sy();
- goto loop1;}
- else
- { caidan=1;
- a=0;
- }
- }
-
- }
- }
- }
- if(caidan==1)
- {
- if(mode==0)
- {
- dis1(0,0,gz);
- }
- if(mode==1)
- {
- if(wenduh<0)
- {
- b=abs(wenduh);
- dis1(21 ,b/100,b%100/10);
- }
- else if(wenduh>999)
- {
- dis1(wenduh/1000 ,wenduh%1000/100,wenduh%100/10);
- }
- else
- dis1(wenduh/100 ,(wenduh%100/10)+10,wenduh%10);
- }
- if(mode==2)
- {
- if(wenduh<0)
- {
- b=abs(wendul);
- dis1(21 ,b/100,b%100/10);
- }
- else if(wendul>999)
- {
- dis1(wendul/1000 ,wendul%1000/100,wendul%100/10);
- }
- else
- dis1(wendul/100 ,(wendul%100/10)+10,wendul%10);
- }
- if(mode==4)
- {
- dis1(yanshi/100 ,yanshi%100/10,yanshi%10);}
- if(!up)
- {
- sy();
- time=0;
- a=1;
- while(a)
- { if(mode==0)
- { dis1(0,0,gz);}
- if(mode==1)
- {if(wenduh<0)
- { b=abs(wenduh);
- dis1(21 ,b/100,b%100/10);
- }
- else if(wenduh>999)
- {
- dis1(wenduh/1000 ,wenduh%1000/100,wenduh%100/10);
- }
- else
- dis1(wenduh/100 ,wenduh%100/10+10,wenduh%10);
- }
- if(mode==2)
- {
- if(wenduh<0)
- {
- b=abs(wendul);
- dis1(21 ,b/100,b%100/10);
- }
- else if(wendul>999)
- {
- dis1(wendul/1000 ,wendul%1000/100,wendul%100/10);
- }
- else
- dis1(wendul/100 ,wendul%100/10+10,wendul%10);
- }
- if(mode==4)
- {
- dis1(yanshi/100 ,yanshi%100/10,yanshi%10);
- }
- if(up)
- {
- a=0;
- if(mode==0)
- {
- if(gz==0)
- {gz=1;}
- else
- gz=0;
- }
- if(mode==1) //溫度上限
- {
- if(wenduh>1000)
- {
- wenduh=wenduh+10;
- }
- else if(wenduh<0)
- {
- wenduh=wenduh+10;
- }
- else
- wenduh++;
- if(wenduh>1200)
- {
- wenduh=-550;
- }
- }
- if(mode==4)
- {
- if(yanshi==180)
- {
- yanshi=0;
- }
- else yanshi++;
- }
- if(mode==2) //溫度下線
- {
- if(wendul>1000)
- {
- wendul=wendul+10;
- }
- else if(wendul<0)
- {
- wendul=wendul+10;
- }
- else
- wendul++;
- if(wendul>1200)
- {
- wendul=-550;
- }
- }
- if(mode==3) //回差
- {
- huicha++;
- if(huicha>200)
- {
- wendul=0;
- }
- }
- }
- if(time>300)
- {
- if(mode==1) //溫度上限
- {
- wenduh=wenduh+1;
- if(wenduh>1200)
- {
- wenduh=-550;
- }
- }
- if(mode==2) //溫度下線
- {
- wendul=wendul+1;
- if(wendul>1200)
- {
- wendul=-550;
- }
- }
- if(mode==4) //溫度下線
- {
- yanshi=yanshi+1;
- if(yanshi>180)
- {
- yanshi=0;
- }
- }
- }
- }
- }
- if(!down)
- {
- sy();
- time=0;
- a=1;
- while(a)
- {
- if(mode==0)
- {
- dis1(0,0,gz);
- }
- if(mode==1)
- {
- if(wenduh<0)
- {
- b=abs(wenduh);
- dis1(21 ,b/100,b%100/10);
- }
- else if(wenduh>999)
- {
- dis1(wenduh/1000 ,wenduh%1000/100,wenduh%100/10);
- }
- else
- dis1(wenduh/100 ,wenduh%100/10+10,wenduh%10);
- }
- if(mode==2)
- {
- if(wenduh<0)
- {
- b=abs(wendul);
- dis1(21 ,b/100,b%100/10);
- }
- else if(wendul>999)
- {
- dis1(wendul/1000 ,wendul%1000/100,wendul%100/10);
- }
- else
- dis1(wendul/100 ,wendul%100/10+10,wendul%10);}
- if(mode==4)
- {
- dis1(yanshi/100 ,yanshi%100/10,yanshi%10);
- }
- if(down)
- {
- a=0;
- if(mode==0)
- {
- if(gz==0)
- {
- gz=1;
- }
- else
- gz=0;
- }
- if(mode==1) //溫度上限
- {
- if(wenduh>999)
- {
- wenduh=wenduh-10;
- }
- else if(wenduh<0)
- {
- wenduh=wenduh-10;
- }
- else wenduh--;
- if(wenduh<-550)
- {
- wenduh=1200;
- }
- }
- if(mode==2) //溫度下線
- {
- if(wendul>999)
- {
- wendul=wendul-10;
- }
- else if(wendul<0)
- {
- wendul=wendul-10;
- }
- else wendul--;
- if(wendul<-550)
- {
- wendul=1200;
- }
- }
- if(mode==3) //回差
- {
- huicha--;
- if(huicha<0)
- {
- wendul=200;
- }
- }
-
- if(mode==4)
- {
- if(yanshi==0)
- {
- yanshi=180;
- }
- else yanshi--;
- }
- }
- if(time>300)
- {
- if(mode==1) //溫度上限
- {
- wenduh=wenduh-1;
- if(wenduh<-550)
- {
- wenduh=1200;
- }
- }
- if(mode==2) //溫度下線
- {
- wendul=wenduh-1;
- if(wendul<-550)
- {
- wendul=1200;
- }
- }
- if(mode==4) //yanshi
- {
- if(yanshi==0)
- {
- yanshi=180;
- }
- else yanshi=yanshi-1;
- }
- }
- }
- }
- if(!set)
- {
- sy();
- a=1;
- while(a)
- {
- if(mode==0)
- {
- dis1(0,0,gz);
- }
- if(mode==1)
- {
- if(wenduh<0)
- {
- b=abs(wenduh);
- dis1(11 ,b/100,b%100/10);
- }
- else if(wenduh>999)
- {
- dis1(wenduh/1000 ,wenduh%1000/100,wenduh%100/10);
- }
- else
- dis1(wenduh/100 ,wenduh%100/10+10,wenduh%10);
- }
- if(mode==2)
- {
- if(wenduh<0)
- {
- b=abs(wendul);
- dis1(11 ,b/100,b%100/10);
- }
- else if(wendul>999)
- {
- dis1(wendul/1000 ,wendul%1000/100,wendul%100/10);
- }
- else
- dis1(wendul/100 ,wendul%100/10+10,wendul%10);
- }
- if(mode==4)
- {
- dis1(yanshi/100 ,yanshi%100/10,yanshi%10);
- }
- if(set)
- {
- a=0;
- caidan=0;
- }
- }
- }
-
-
- }
- }
- loop1:baocuen(); //baocun(); //保存函數(shù)還沒寫
- }
- void panduan()
- {
- signed int a;
- if(gz==0) //制冷模式
- { a=wenduh+huicha;
- if(gzbz==0)
- {
- if(temp[0]>a)
- {
- gzbz=1;
- }
- ysjs=0;
- ysbz=0;
- }
- if(gzbz==1)
- {
- if(temp[0]<wenduh)
- {
- out=0;
- gzbz=0;
- }
- }
- }
- if(gz==1) //加熱模式
- { a=wenduh-huicha;
- if(gzbz==0)
- {
- if(temp[0]<a)
- {
- gzbz=1;
- }
- ysjs=0;
- ysbz=0;
- }
- if(gzbz==1)
- {
- if(temp[0]>wendul)
- {
- out=0;
- gzbz=0;
- }
- }
- }
- if(gzbz==1)
- {
- if(ysjs>500)
- {ysbz++;
- ysjs=0;
- }
- if(ysbz==yanshi)
- {out=1;}
- }
- }
- void baocuen()
- { bit q1,q2;
- int h,l;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
源碼:
2017102.zip
(92.11 KB, 下載次數(shù): 40)
2017-8-25 11:29 上傳
點擊文件名下載附件
源程序 下載積分: 黑幣 -5
數(shù)顯溫度控制器板.zip
(43.35 KB, 下載次數(shù): 36)
2017-8-25 11:28 上傳
點擊文件名下載附件
ad16畫的板 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|