实现功能: 设计基于51系列的单片机的智能火灾报警系统,其主要模块为烟雾传感器、温度传感器、蜂鸣报警器以及2个16×16的点阵、6个按键。单片机一方面对运行的烟雾传感器和温度传感器检测环境传过来的信号处理,并且通过点阵进行实时显示,(点阵个数就按你说的用2个,这个显示形式有静止、移入移出,这个显示形式能过通过按键进行选择,所以这里需要1个按键来进行显示形式的切换);单片机另一方面能够通过与预设的烟 雾和温度阈值进行比较并判断是否要报警(报警就用蜂鸣器),通过加、减按键可设置报警的阈值,设置有紧急报警按键以应对突发情况(这里需要2对加减按键,1对用来对烟雾进行加减报警设置,另1对用力对温度进行加减报警设置,外加1个紧急报警按键,所以整个系统是6个按键)。
电路图
部分代码
void delay(uchar us); //delay
float gettemp(void);
void delay(uchar us) //delay time
{while(us--) _nop_();
}
/*串口初始化*/
void serial_init ( unsigned char bt ) {
SCON = 0x50; /* mode 1: 8-bit UART, enable receiver */
TMOD = 0x21; /* timer 1 mode 2: 8-Bit reload */
switch(bt){
case 0: //38400
TH1=0xfd;
PCON=0x80;
break;
case 1: //19200
TH1=0xfd;
PCON=0;
break;
case 2: //9600
TH1=0xfa;
PCON=0;
break;
case 3: //4800
TH1=0xf4;
PCON=0;
break;
case 4: //2400
TH1=0xe8;
PCON = 0;
break;
case 5: //1200
TH1=208;
PCON = 0;
break;
case 6: //600
TH1=160;
PCON = 0;
break;
case 7: //300
TH1=64;
PCON = 0;
break;
default:
TH1=0xfa;
PCON=0;
break;
}
TR1 = 1; /* timer 1 run */
// ES = 1;
// EA=1;
}
void putbyte(char c)
{
SBUF=c;
while (!TI) _nop_();
TI=0;
}
void putint(unsigned int ui)
{unsigned char ls;
ls=(ui/10000+0x30);
putbyte(ls);
ls=((ui%10000)/1000+0x30);
putbyte(ls);
ls=((ui%1000)/100+0x30);
putbyte(ls);
ls=((ui%100)/10+0x30);
putbyte(ls);
ls=(ui%10+0x30);
putbyte(ls);
}
/*************************************/
/*发送一个字节的hex码,分成两个字节发。*/
unsigned char code hex_[]={"0123456789ABCDEF"};
puthex(unsigned char c)
{int ch;
ch=(c>>4)&0x0f;
putbyte(hex_[ch]);
ch=c&0x0f;
putbyte(hex_[ch]);
}
|