單片機源程序如下:
- #include "lcd1602.h"
- #include "18b20.h"
- #include "key_contrl.h"
- #include "adc0832.h"
- #include <reg52.h>
- int temp[2];
- int timecount,flag=0,number=0,count=0;
- extern char temph; //初始下限值
- unsigned char SN[2][8]={{0x28,0xb3,0x75,0x79,0x97,0x16,0x03,0x32},
- {0x28, 0xaa, 0x0f, 0xc6,0x1b,0x13,0x02, 0x5c}
- };//二維數組存取序列號
- extern char series;
- char alarmLevel = 2,talarm = 0;
- unsigned char value1,value;
- float nongdu1,nongdu;
- extern bit sdflag;
- unsigned int data dis1[4]={0x00,0x00,0x00,0x00}; //定義3個顯示數據單元和一個數據存儲單元
- unsigned int data dis[4]={0x00,0x00,0x00,0x00}; //定義3個顯示數據單元和一個數據存儲單元
- unsigned char level1=0,level=0;
- unsigned char tempFlag=0,nongduFlag=0;
- sbit ledblue = P0^1;
- sbit ledred = P0^3;
- void countLevel1()
- {
- dis1[2]=value1/51; //AD值轉換為3為BCD碼,最大為5.00V。
- dis1[3]=value1%51; //余數暫存
- dis1[3]=dis1[3]*10; //計算小數第一位
- dis1[1]=dis1[3]/51;
- dis1[3]=dis1[3]%51;
- dis1[3]=dis1[3]*10; //計算小數第二位
- dis1[0]=dis1[3]/51;
- dis[2]=value/51; //AD值轉換為3為BCD碼,最大為5.00V。
- dis[3]=value%51; //余數暫存
- dis[3]=dis[3]*10; //計算小數第一位
- dis[1]=dis[3]/51;
- dis[3]=dis[3]%51;
- dis[3]=dis[3]*10; //計算小數第二位
- dis[0]=dis[3]/51;
- nongdu = dis[2]*1.0+dis[1]*0.1+dis[0]*0.01;
- nongdu1 = dis1[2]*1.0+dis1[1]*0.1+dis1[0]*0.01;
- if(nongdu1<0.70)
- {
- level1=1;
- }
- else if(0.70<=nongdu1<0.85)
- {
- level1=2;
-
- }
- else if(0.85<=nongdu1<0.90)
- {
- level1=3;
-
- }
- else if(0.90<=nongdu1<0.95)
- {
- level1=4;
-
- }
- else if(0.95<=nongdu1<1.00)
- {
- level1=5;
- }
- if(1.00<=nongdu1)
- {
- level1=6;
- }
- if(nongdu<0.70)
- {
- level=1;
- }
- else if(0.70<=nongdu<0.85)
- {
- level=2;
-
- }
- else if(0.85<=nongdu<0.90)
- {
- level=3;
-
- }
- else if(0.90<=nongdu<0.95)
- {
- level=4;
-
- }
- else if(0.95<=nongdu<1.00)
- {
- level=5;
- }
- if(1.00<=nongdu)
- {
- level=6;
- }
- }
- void t0(void) interrupt 1 using 0
- { TH0=(65535-50000)/256; //50ms定時
- TL0=(65535-50000)%256;
- timecount++;//re_disp++;
- if(timecount>9){timecount=0;flag=~flag;} //50ms到了則反顯
- //if(re_disp>200){re_disp=0;if(id)id=0;} //10秒到了則由調整模式自動進入正常顯示模式
- }
- void t1(void) interrupt 3 using 0
- {
- TH1=(65535-50000)/256;//50ms定時
- TL1=(65535-50000)%256;
- number++;
- if(number>10)
- {
- number=0;
- count++;
- //beep=0;
- }
- }
- void baojin(void)
- {
-
- if(level1>=2||level>=2)
- {
- nongduFlag=1;
- }
- else
- {
- nongduFlag=0;
- }
- if(tempFlag|nongduFlag|sdflag)
- {
- beep=0;
- ledblue=1;ledred = 0;
- }
- else
- {
- beep=1;ledblue=0;ledred = 1;
- }
- }
- void main(void)
- {
- //flag =1;
- TMOD=0x11;//定時器0c初始化
- TH0=(65535-50000)/256;
- TL0=(65535-50000)%256;
- TH1=(65535-50000)/256;
- TL1=(65535-50000)%256;
- EA=1;
- ET0=1;
- ET1=1;
- TR0=0;
- TR1=0;
- LCMInit(); //LCM初始化
- Delay5Ms(); //延時片刻(可不要)
- Init_DS18B20();//溫度 芯片初始化
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
源程序.zip
(99.33 KB, 下載次數: 18)
2019-5-26 18:47 上傳
點擊文件名下載附件
|