- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
SHT11溫湿度传感器与1602应用的程序代码
#ifndef __TOU_H__
#define __TOU_H__
#includereg51.h
#include intrins.h
//#include math.h //Keil library
#define uchar unsigned char
enum {TEMP,HUMI};
#define uchar unsigned char
#define uint unsigned int
#define DELAY delay_ms(10)
sbit DATA = P1^0;
sbit SCK = P1^1;
sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P2^2;
sfr DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
/******** DS1602函数声明 ********/
void LCD_Initial();
void GotoXY(unsigned char x, unsigned char y);
void Print(unsigned char *str);
void LCD_Write(bit style, unsigned char input);
/***********************************************************************************************************************************************************/
//SHT10程序(SHT10.c):
//#includetou.h
#define noACK 0 //继续传输数据,用于判断是否结束通讯
#define ACK 1 //结束数据传输;
//地址 命令 读/写
#define STATUS_REG_W 0x06 //000 011 0
#define STATUS_REG_R 0x07 //000 0111 1
#define MEASURE_TEMP 0x03 //000 0011 1
#define MEASURE_HUMI 0x05 //000 0101 1
#define RESET 0x1e //000 1111 0
//写字节程序
char s_write_byte(unsigned char value)
{
unsigned char i,error=0;
for (i=0x80;i0;i=1) //高位为1,循环右移
{
if (ivalue) DATA=1; //和要发送的数相与,结果为发送的位
else DATA=0;
SCK=1;
_nop_();_nop_();_nop_(); //延时3us
SCK=0;
}
DATA=1; //释放数据线
SCK=1;
error=DATA; //检查应答信号,确认通讯正常
_nop_();_nop_();_nop_();
SCK=0;
DATA=1;
return error; //error=1 通讯错误
}
//读字节程序
char s_read_byte(unsigned char ack)
//----------------------------------------------------------------------------------
{
unsigned char i,val=0;
DATA=1; //释放数据线
for(i=0x80;i0;i=1) //高位为1,循环右移
{
SCK=1;
if(DATA) val=(val|i); //读一位数据
文档评论(0)