|
具有按鍵設(shè)置,聲光報警,顯示,自動調(diào)節(jié)等功能
使用DS18B20測試箱內(nèi)溫度,可控硅0,1控制燈泡亮滅,由此控制溫度,具有LCD1602顯示,按鍵設(shè)置上下限,聲光報警功能。
單片機(jī)源程序如下:
- #include <reg52.h>
- #include "temp.h"
- #include "lcd.h"
- #define uchar unsigned char
- #define uint unsigned int
-
- sbit key1=P3^1;//+
- sbit key2=P3^0;//-
- sbit silicon=P2^1; //可控硅
- sbit BZ=P1^5; //蜂鳴器
- sbit LED=P2^0; //led標(biāo)志位
-
- uint temp,temps=26;//溫度緩存變量,設(shè)定溫度變量
- void delay(uint us)//延時函數(shù)
- {
- for(;us>0;us--);
- }
- void keyson() //按鍵掃描程序
- {
- if(!key1&&temps<60)
- {
- delay(30);
- temps++;
- while(!key1);
- }
- if(!key2&&temps>0)
- {
- delay(30);
- temps--;
- while(!key2);
- }
- }
- void display() //lcd1602顯示界面
- {
- LcdWriteCom(0x85);//當(dāng)前溫度
- LcdWriteData('C');
- LcdWriteData(':');
- LcdWriteData(temp/10+0x30);
- LcdWriteData(temp%10+0x30);
- LcdWriteData(0xdf);
- LcdWriteData('C');
- LcdWriteCom(0x80+0x45);//設(shè)置溫度
- LcdWriteData('S');
- LcdWriteData(':');
- LcdWriteData(temps/10+0x30);
- LcdWriteData(temps%10+0x30);
- LcdWriteData(0xdf);
- LcdWriteData('C');
- }
- void beep()
- {
- uchar k,g;
- for (k=0;k<80;k++)
- {
- BZ=~BZ;
- for(g=0;g<200;g++);
- }
- }
- void main()
- {
- uint i,j,flag=1,flag1;//標(biāo)志位
- LcdInit(); //lcd1602初始化
- for(i=0;i<60;i++)
- temp=(float)Ds18b20ReadTemp()*0.0625;
- while(1)
- {
- temp=(float)Ds18b20ReadTemp()*0.0625;
- display(); //lcd1602顯示界面
- keyson(); //按鍵掃描程序
- if(temp<temps)
- {
- silicon=0; //低于設(shè)定溫度,可控硅打開
- LED=0;
- flag=1;
- }
- if(temp>=temps)
- {
- silicon=1;
- if(flag==1)flag1=1,flag=0;
- }
- if(flag1==1) //高于設(shè)定溫度,可控硅關(guān)閉,聲光報警
- {
- LED=0;
- // BZ=0;
- // delay(40);
- // BZ=1;
- beep();
- delay(1);
- j++;
- if(j>35)flag1=0,j=0;
- }
- else LED=1,BZ=1;
- }
- }
復(fù)制代碼
Keil代碼下載:
恒溫箱-.zip
(55.74 KB, 下載次數(shù): 93)
2019-3-24 11:45 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|