无线温度检测程序完整版.docx

上传人:b****6 文档编号:3192690 上传时间:2022-11-19 格式:DOCX 页数:36 大小:25.94KB
下载 相关 举报
无线温度检测程序完整版.docx_第1页
第1页 / 共36页
无线温度检测程序完整版.docx_第2页
第2页 / 共36页
无线温度检测程序完整版.docx_第3页
第3页 / 共36页
无线温度检测程序完整版.docx_第4页
第4页 / 共36页
无线温度检测程序完整版.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

无线温度检测程序完整版.docx

《无线温度检测程序完整版.docx》由会员分享,可在线阅读,更多相关《无线温度检测程序完整版.docx(36页珍藏版)》请在冰豆网上搜索。

无线温度检测程序完整版.docx

无线温度检测程序完整版

从机采用温度传感器DS18B20将测出的温度,通过红外线发射模块将数据发送,主机通过红外线接收模块在主机上通过4位数码管显示,同时在从机上也能看到当前从机采集到的温度数据;如果温度超过设置的上下限,会通过蜂鸣器报警提示。

[1]单片机的C语言应用程序设计(马忠梅、)

[2]新编单片机应用程序设计(张毅刚)

[3]崔双虎.温室无线传感器网络监测系统的设计研究:

硕士论文.中国农业大学,2007

[4]马琦.基于无线传感器网络的温室温湿度监测系统研究:

硕士论文.中北大学,2009

[5]庞娜,程德福.基于ZigBee无线传感器网络的温室监测系统设计[J].吉林大学学报,2010,28

(1):

55-60

[6]陈小忠,黄宁.单片机接口技术实用子程序[M].2007

主机程序

Main.c

#include"reg52.h"

#include"hs0038.h"

#include"LCD1602_8.h"

externUCHARR_DATA[7];

//-----------------------------------------------------

/*---------------------主函数-----------------------*/

voidmain(void)

{

LCD_initial();

Init_main();

Beep=0;

while

(1)

{

if(Succes)

{

LCD1602_write_char(1,3,R_DATA[0]);

LCD1602_write_char(1,4,R_DATA[3]);

LCD1602_write_char(1,5,R_DATA[4]);

LCD1602_write_char(1,6,R_DATA[5]);

LCD1602_write_char(1,7,R_DATA[6]);

Succes=0;

}

}

}

 

LCD1602_8.h

----------------------------------------------------------------------*/

#ifndef__LCD1602_H__

#define__LCD1602_H__

#include

#defineucharunsignedchar

#defineuintunsignedint

/*---------------------------------------------------------

LCD数据、控制口定义

---------------------------------------------------------*/

#defineLCD_DATAP0//LCD的数据口

sbitLCD_BUSY=LCD_DATA^7;//LCD忙信号位

sbitLCD_RS=P1^2;//LCD寄存器选择

sbitLCD_RW=P1^1;//LCD读写控制

sbitLCD_EN=P1^0;//LCD使能信号*/

/*---------------------------------------------------------

LCD数据定义

---------------------------------------------------------*/

#defineLCD_GO_HOME0x02//AC=0,光标、画面回HOME位

//输入方式设置

#defineLCD_AC_AUTO_INCREMENT0x06//数据读、写操作后,AC自动增一

#defineLCD_AC_AUTO_DECREASE0x04//数据读、写操作后,AC自动减一

#defineLCD_MOVE_ENABLE0x05//数据读、写操作,画面平移

#defineLCD_MOVE_DISENABLE0x04//数据读、写操作,画面不动

//设置显示、光标及闪烁开、关

#defineLCD_DISPLAY_ON0x0C//显示开

#defineLCD_DISPLAY_OFF0x08//显示关

#defineLCD_CURSOR_ON0x0A//光标显示

#defineLCD_CURSOR_OFF0x08//光标不显示

#defineLCD_CURSOR_BLINK_ON0x09//光标闪烁

#defineLCD_CURSOR_BLINK_OFF0x08//光标不闪烁

//光标、画面移动,不影响DDRAM

#defineLCD_LEFT_MOVE0x18//LCD显示(整屏)右移一位0x05

#defineLCD_RIGHT_MOVE0x1C//LCD显示(整屏)左移一位0x07

#defineLCD_CURSOR_LEFT_MOVE0x10//光标左移一位

#defineLCD_CURSOR_RIGHT_MOVE0x14//光标右移一位

//工作方式设置

#defineLCD_DISPLAY_DOUBLE_LINE0x38//两行显示

#defineLCD_DISPLAY_SINGLE_LINE0x30//单行显示

/*---------------------------------------------------------

延时程序

---------------------------------------------------------*/

voiddelay_us(unsignedintt)//延时US

{

while(t--);

}

voiddelay_ms(unsignedintt)//延时MS

{

unsignedinti;

unsignedcharj;

for(i=0;i

for(j=0;j<125;j++);//11.0592--j=125;12M--j=110;

}

/*---------------------------------------------------------

LCD程序

---------------------------------------------------------*/

voidLCD_check_busy(void)//检测LCD状态,看它是不是还在忙呢

{

while

(1)

{

LCD_EN=0;//下降沿触发

LCD_RS=0;//1:

数据寄存器;0:

命令寄存器

LCD_RW=1;//1:

读;0:

LCD_DATA=0xff;

LCD_EN=1;

if(!

LCD_BUSY)break;

}

LCD_EN=0;

}

voidLCD_cls(void)//LCD清屏

{

LCD_check_busy();

LCD_RS=0;

LCD_RW=0;

LCD_DATA=1;

LCD_EN=1;

}

voidLCD_write_instruction(unsignedcharLCD_instruction)//写指令到LCD

{

LCD_check_busy();

LCD_RS=0;

LCD_RW=0;

LCD_DATA=LCD_instruction;

LCD_EN=1;

}

voidLCD_write_data(unsignedcharLCD_data)//写一个字节数据到LCD

{

LCD_check_busy();

LCD_RS=1;

LCD_RW=0;

LCD_DATA=LCD_data;

LCD_EN=1;

LCD_EN=0;

}

voidLCD1602_write_string(unsignedx,unsignedchary,unsignedchar*s)////写入字符串到第x(1,2)行y(0,15)列

{

unsignedchari=0;

x=(x-1)*0x40;//第几行

y=x+y;//第几列

LCD_write_instruction(0x80+y);

while(s[i]!

=0x00)//写入字符串值

{

LCD_write_data(s[i]);

i++;

}

}

 

voidLCD1602_write_char(unsignedx,unsignedchary,unsignedchardat)////写入字符到第x(1,2)行y(0,15)列

{

unsignedchari=0;

x=(x-1)*0x40;//第几行

y=x+y;//第几列

LCD_write_instruction(0x80+y);

LCD_write_data(dat);//写入字符串值

}

voidLCD1602_move(charx)//整屏向左移动次数:

X

{

LCD_write_instruction(0x07);//设置成写空整屏就向左移动

for(;x>0;x--)

{

LCD_write_instruction(0x80+0x27);//在最后的那个位置写空格

LCD_write_data('');

delay_ms(130);

}

LCD_write_instruction(0x06);//关设置

}

voidLCD1602_CURSOR(unsignedcharwei,unsignedcharx,unsignedchary)//光标定位(0x00~0X0F0X40~0X4F),显示?

(1/0),闪烁?

(1/0)

{

LCD_write_instruction(0x80+wei);//0x00~0X0F0X40~0X4F

if(x==1&&y==0)

{LCD_write_instruction(LCD_DISPLAY_ON|LCD_CURSOR_ON|LCD_CURSOR_BLINK_OFF);//显示?

光标?

闪烁?

LCD_write_instruction(LCD_DISPLAY_ON|LCD_CURSOR_ON|LCD_CURSOR_BLINK_OFF);}

elseif(x==0&&y==1)

{LCD_write_instruction(LCD_DISPLAY_ON|LCD_CURSOR_OFF|LCD_CURSOR_BLINK_ON);

LCD_write_instruction(LCD_DISPLAY_ON|LCD_CURSOR_OFF|LCD_CURSOR_BLINK_ON);}

elseif(x==1&&y==1)

{LCD_write_instruction(LCD_DISPLAY_ON|LCD_CURSOR_ON|LCD_CURSOR_BLINK_ON);

LCD_write_instruction(LCD_DISPLAY_ON|LCD_CURSOR_ON|LCD_CURSOR_BLINK_ON);}

else

{LCD_write_instruction(LCD_DISPLAY_ON|LCD_CURSOR_OFF|LCD_CURSOR_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1