危险气体检测报警系统MQ-2 - 图文(5)

2019-01-03 16:25

2.放置其它器件或者仿真仪器:(1)然后选择器件,液晶Lcd1602显示器,及所需的元器件,RP1,电容,电阻等。(2)添加两个加减按键,以及报警器,发光二极管,电阻R2,R4等。(3)添加AD转换器tlc549,以及MQ-2传感器; 3.用导线以及者总线连接各个器件; 4.调入HEX文件,如图所示:

5.进行仿真观察。如图所示:;

开始调试,按下加按键显示器的设定数据增加1,按下按键减则减小1,调试完成后

4 .3按键模块程序设计

void key() //按键检测程序 {

set=1;

if(sw3==0) {

delay(10); if(sw3==0) {

set++;

if (set>=2) { set=0;

while(sw3==0);

} } }

if(set==1)//上限设置 {

if(sw1==0) //上限减功能 {

delay(50); if(sw1==0)

{ //while(sw1==0); if(shangxian>0) shangxian--; else( shangxian=255); } }

if(sw2==0) //上限加功能 {

delay(50); if(sw2==0)

{ //while(sw2==0) ;

if(shangxian<255) shangxian++; else( shangxian=0); } }

} }

4 .4AD 转换模块程序

unsigned char TLC549_AD(void)//TLC549转换函数 { unsigned char i,x; CLK = 0; DAT = 1; CS = 0;

for(i = 0;i<8;i++) {

CLK = 1; x<<=1;

if(1 == DAT) x++; CLK = 0; }

CS = 1;

for(i=0;i<8;i++) _nop_(); return (x); }

4.5液晶显示模块程序

#include #include

#define uint unsigned int #define uchar unsigned char

void delay(uint z) {

uint a,b;

for(a=z;a>0;a--)

for(b=120;b>0;b--); }

//Port Definitions********************************************************** sbit LcdRs = P1^0; sbit LcdRw = P1^1; sbit LcdEn = P1^2;

sfr DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口

//内部等待函数************************************************************************** unsigned char LCD_Wait(void) {

LcdRs=0;

LcdRw=1; _nop_();

LcdEn=1; _nop_(); LcdEn=0;

return DBPort; }

//向LCD写入命令或数据************************************************************ #define LCD_COMMAND 0 // Command #define LCD_DATA 1 // Data #define LCD_CLEAR_SCREEN 0x01 // 清屏

#define LCD_HOMING 0x02 // 光标返回原点 void LCD_Write(bit style, unsigned char input) {

LcdEn=0;

LcdRs=style;

LcdRw=0; _nop_();

DBPort=input; _nop_();//注意顺序 LcdEn=1; _nop_();//注意顺序 LcdEn=0; _nop_(); LCD_Wait(); }

//设置显示模式************************************************************ #define LCD_SHOW 0x04 //显示开 #define LCD_HIDE 0x00 //显示关

#define LCD_CURSOR 0x02 //显示光标

#define LCD_NO_CURSOR 0x00 //无光标

#define LCD_FLASH 0x01 //光标闪动 #define LCD_NO_FLASH 0x00 //光标不闪动

void LCD_SetDisplay(unsigned char DisplayMode) {

LCD_Write(LCD_COMMAND, 0x08|DisplayMode); }

//设置输入模式************************************************************ #define LCD_AC_UP 0x02

#define LCD_AC_DOWN 0x00 // default

#define LCD_MOVE 0x01 // 画面可平移 #define LCD_NO_MOVE 0x00 //default

void LCD_SetInput(unsigned char InputMode) {

LCD_Write(LCD_COMMAND, 0x04|InputMode); }

//初始化LCD************************************************************ void LCD_Initial() {

LcdEn=0;

LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,5*7点阵 delay(5);

LCD_Write(LCD_COMMAND,0x38); delay(5);

LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标 delay(5);

LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏 delay(5);

LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不动 delay(5); }

//液晶字符输入的位置************************ void GotoXY(unsigned char x, unsigned char y) {

if(y==0)

LCD_Write(LCD_COMMAND,0x80|x); if(y==1)

LCD_Write(LCD_COMMAND,0x80|(x-0x40)); }

//将字符输出到液晶显示

void Print(unsigned char *str) {

while(*str!='\\0') {

LCD_Write(LCD_DATA,*str); str++; delay(1); }


危险气体检测报警系统MQ-2 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:原电池和电解池知识点总结 讲座

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: