C51单片机代码##这是主要的代码 需要添加一个 报警器响了10s 开启另一个装置的代码 求教
#include"LCD.H"
#include"AD0832.H"
#include"DAC0832.H"
#include"DS18B20.H"
sbit qx=P1^3; //定义取消报警按键
sbit sp=P1^5; //定义报警
sbit d1=P1^6; //定义指示灯
sbit d2=P1^7;
unsigned char n=0;
unsigned char Serial[64]={0};
unsigned char dd[]={0}; //定义浓度
unsigned char CTemp[]={0}; //定义温度
unsigned char code tab[]="0123456789. ";
unsigned char code T[8]={0x18,0x18,0x0F,0x1F,0x18,0x18,0x1F,0x0F};
void delayms(long dly) //延时程序
{
int i;
char j;
for(i=0;i<dly;i++)
for(j=0;j<120;j++);
}
void speak() //报警子程序
{
sp=0;
delayms(1000);
sp=1;
}
int main (void)
{
unsigned char i=255,v=0,temp=0;
IT0=1; //中断定义
EX0=1;
EA=1;
delayms(600);
LCD_Init();
WriteStringToLcd(0,0,"Nd:"); //调用显示
WriteStringToLcd(7,0,"ppm");
WriteStringToLcd(0,1,"Wd:");
Write_self(T);
Write_selfString(8,1,0);
delayms(200);
while(1)
{
v=ReadAdc0832(0); //浓度计算显示
dd[0]=tab[v/51];
dd[1]=tab[10];
dd[2]=tab[10*v/51%10];
dd[3]=tab[100*v/510%10];
WriteStringToLcd(3,0,dd);
if(v/51>=1.0) //浓度超额报警
{
d1=1;d2=0;speak();delayms(50);
}
else
{
d1=1;d2=1;
}
temp=ReadTempreture(Serial,9); //温度计算显示
if(temp>100)
{
CTemp[0]=tab[temp/100];
CTemp[1]=tab[temp%100/10];
CTemp[2]=tab[temp%100%10];
}
else
{
CTemp[0]=tab[temp/10];
CTemp[1]=tab[temp%10];
CTemp[2]=tab[11];
if(temp>32) //温度超额报警
{
d1=0;d2=1;speak();delayms(50);
}
else
{
d1=1;d2=1;
}
}
delayms(200);
WriteStringToLcd(5,1,CTemp);
}
}
void int0() interrupt 0 using 1 //中断程序
{
sp=1;
d1=1;
d2=1;
delayms(1000000000);
}
|