|
C51單片機(jī)代碼##這是主要的代碼 需要添加一個(gè) 報(bào)警器響了10s 開啟另一個(gè)裝置的代碼 求教
#include"LCD.H"
#include"AD0832.H"
#include"DAC0832.H"
#include"DS18B20.H"
sbit qx=P1^3; //定義取消報(bào)警按鍵
sbit sp=P1^5; //定義報(bào)警
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) //延時(shí)程序
{
int i;
char j;
for(i=0;i<dly;i++)
for(j=0;j<120;j++);
}
void speak() //報(bào)警子程序
{
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:"); //調(diào)用顯示
WriteStringToLcd(7,0,"ppm");
WriteStringToLcd(0,1,"Wd:");
Write_self(T);
Write_selfString(8,1,0);
delayms(200);
while(1)
{
v=ReadAdc0832(0); //濃度計(jì)算顯示
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) //濃度超額報(bào)警
{
d1=1;d2=0;speak();delayms(50);
}
else
{
d1=1;d2=1;
}
temp=ReadTempreture(Serial,9); //溫度計(jì)算顯示
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) //溫度超額報(bào)警
{
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);
}
|
|