附 录
附图1 热释电红外感应模块
附图2 温度传感器实物图
、
26
1. 附图:
2. 系统所用部分程序: 单片机主程序:main.c
#include\#include\
#define uchar unsigned char #define uint unsigned int #define databus P0
sbit rs = P2^0; //指令数据选择
sbit e = P2^2; //指令数据控制
sbit cs1 = P2^3; //左屏幕选择,低电平有效 sbit cs2 = P2^4; //右屏幕选择 sbit wr = P2^1; //读写控制 sbit fire_key=P1^6;
sbit body_key=P1^7; sbit led=P3^1;
void SendCommand(uchar command); //写指令 void WriteData(uchar dat);//写数据 void LcdDelay(uint time); //延时
void SetOnOff(uchar onoff);//开关显示 void ClearScreen(uchar screen); //清屏 void SetLine(uchar line); //置页地址 void SetColum(uchar colum);//置列地址 void SetStartLine(uchar startline);//置显示起始行 void SelectScreen(uchar screen);//选择屏幕
void Show1616(uchar lin,uchar colum,uchar *address);//显示一个汉字 void InitLcd(); //初始化 void ResetLcd(); //复位
void Show_english(uchar lin,uchar colum,uchar *address);
unsigned char code Music_Code[]={ 0x17,0x17, 0x17,0x17, 0x17,0x17, 0x17,0x17, 0x17,0x17, 0x17,0x17, 0x17,0x17, 0x17,0x17, 0x0D,0x03, 0x18,0x04, 0x0D,0x03, 0x16,0x04, 0x0B,0x03, 0x11,0x04, 0x10,0x03, 0x11,0x04, 0x15,0x02, 0x10,0x16, 0x00,0x00 }; const uchar code num[] ={
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*\
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*\
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*\
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,/*\
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,/*\
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,/*\
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,/*\
27
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,/*\
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,/*\
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,/*\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,/*\};
const uchar code chin[] = {
//温(0) 度(1) 非(2) 正(3) 常(4) 发(5) 生(6) 火(7) 灾(8) 有(9) 人(10) 闯(11) 入(12) !(13) 0x00,0x44,0x8C,0x18,0x00,0xFC,0xA4,0xA4,0xA4,0xA4,0xA4,0xA4,0x24,0xFC,0x00,0x00,
0x00,0xC0,0x38,0x87,0xF8,0x84,0x84,0xFC,0x84,0x84,0xFC,0x84,0x85,0xFC,0x80,0x00,/*\温\
0x00,0xF0,0x08,0x28,0x28,0xF8,0x28,0x28,0x2C,0x28,0x28,0xF8,0x28,0x28,0x08,0x00,
0x80,0x7F,0x80,0x84,0x84,0x8C,0x55,0x65,0x25,0x65,0x55,0x95,0x8C,0x80,0x80,0x00,/*\度\
0x00,0x08,0x08,0x08,0x08,0x08,0xFC,0x00,0x00,0xFE,0x08,0x08,0x08,0x08,0x00,0x00,
0x00,0x11,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,0xFF,0x11,0x11,0x11,0x10,0x10,0x00,/*\非\
0x00,0x00,0x04,0xC4,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
0x80,0x80,0x80,0xFF,0x80,0x80,0x80,0x80,0xFF,0x81,0x81,0x81,0x81,0x81,0x80,0x00,/*\正\
0x00,0x70,0x10,0xD4,0x58,0x50,0x50,0x5C,0x50,0x50,0x50,0x58,0xD4,0x10,0x70,0x00,
0x00,0x00,0xF8,0x05,0x06,0x06,0x06,0x7E,0x06,0x06,0x06,0x86,0x85,0x78,0x00,0x00,/*\常\
0x00,0x00,0x00,0xF0,0x08,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0xF0,0x08,0x00,0x00,
0x00,0x80,0x81,0x40,0x20,0x30,0x18,0x07,0x06,0x08,0x10,0x21,0x40,0x80,0x80,0x00,/*\火\
0x00,0x78,0x08,0x08,0xC8,0x08,0x08,0xFE,0x08,0x08,0x08,0x08,0xC8,0x08,0x38,0x00,
0x00,0x80,0x80,0x47,0x60,0x30,0x08,0x07,0x04,0x18,0x34,0x23,0x40,0x80,0x80,0x00,/*\灾\
0x00,0x88,0x88,0xC8,0x68,0x58,0x4C,0x4A,0x48,0x48,0x48,0x48,0x48,0xC8,0x08,0x00,
0x01,0x00,0x00,0xFF,0x12,0x12,0x12,0x12,0x12,0x12,0x92,0x92,0x92,0xFF,0x00,0x00,/*\有\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x00,/*\人\
0x00,0xF0,0x04,0x08,0xF4,0x14,0x14,0x14,0x14,0x14,0xE4,0x04,0x04,0x04,0xFC,0x00,
0x00,0xFF,0x00,0x00,0x0B,0x0A,0x0A,0x0A,0x0A,0x4A,0x4B,0xF2,0x0C,0x00,0xFF,0x00,/*\闯\
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xCC,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x40,0x20,0x18,0x04,0x03,0x00,0x00,0x00,0x03,0x0C,0x30,0x40,0x80,0x00,/*\入\
0x00,0x18,0x24,0x24,0x18,0x00,0xF8,0x04,0x02,0x02,0x02,0x04,0x08,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x08,0x00,0x00,0x00,/*\
28
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*\0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*\};
extern uchar qian,bai,shi,ge; void main() {
uchar v;
playm_init_sound(); InitLcd(); while(1) { SetOnOff(1);//显示开,注意:如果这里设置显示关,显示会出现错误 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ds18b20_read_temp(); v=bai*10+shi;
SelectScreen(0); //选择左屏
Show1616(0,16,chin);
Show1616(0,32,chin+32); //Show_english(0,40,num+qian*16); Show_english(0,48,num+bai*16); Show_english(0,56,num+shi*16); SelectScreen(1);
Show_english(0,0,num+10*16);
Show_english(0,8,num+ge*16);
Show1616(0,16,chin+448); if(fire_key==1||body_key==1) { SelectScreen(0);
Show1616(2,48,chin+480); SelectScreen(1);
Show1616(2,0,chin+480); SelectScreen(0); Show1616(2,16,chin+64); Show1616(2,32,chin+96); Show1616(2,48,chin+128); } else { SelectScreen(0);
Show1616(2,16,chin+480);
Show1616(2,32,chin+480); Show1616(2,48,chin+480); SelectScreen(0);
Show1616(2,48,chin+96);
SelectScreen(1);
Show1616(2,0,chin+128);
29
} /**/
if(fire_key==1||(v>=50)) { SelectScreen(0);
Show1616(4,48,chin+224); SelectScreen(1);
Show1616(4,0,chin+256); led=1; playm_play_music(Music_Code,0,3,360);
led=1;
} else { SelectScreen(0);
Show1616(4,48,chin+480);
SelectScreen(1);
Show1616(4,0,chin+480); led=0; }
if(body_key==1) { SelectScreen(0); Show1616(6,32,chin+288);
Show1616(6,48,chin+320);
SelectScreen(1);
Show1616(6,0,chin+352); Show1616(6,16,chin+385); led=1; playm_play_music(Music_Code,0,3,360);
led=1; } else { SelectScreen(0);
Show1616(6,32,chin+480);
Show1616(6,48,chin+480); SelectScreen(1); Show1616(6,0,chin+480); Show1616(6,16,chin+480);
led=0;
}
SetOnOff(1);
}
}/********************************** 延时函数
**********************************/
30