单片机源程序如下:
- #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)
|