SHT11温湿度传感器与1602应用代码及仿真_第1页
SHT11温湿度传感器与1602应用代码及仿真_第2页
SHT11温湿度传感器与1602应用代码及仿真_第3页
SHT11温湿度传感器与1602应用代码及仿真_第4页
SHT11温湿度传感器与1602应用代码及仿真_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档 1欢迎下载 仿真图形 运行后结果 精品文档 2欢迎下载 ifndef ifndef TOU H TOU H define TOU H include include include Keil library define uchar unsigned char enum TEMP HUMI sbit DATA P1 1 sbit SCK P1 0 sbit RS P2 0 sbit RW P2 1 sbit E P2 2 sfr DBPort 0 x80 P0 0 x80 P1 0 x90 P2 0 xA0 P3 0 xB0 数据端口 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 函数声明 void s connectionreset void char s measure unsigned char p value unsigned char p checksum unsigned char mode void calc sth10 float p humidity float p temperature float calc dewpoint float h float t endif SHT10 程序 SHT10 c include 精品文档 3欢迎下载 define noACK 0 继续传输数据 用于判断是否结束通讯 define ACK 1 结束数据传输 地址 命令 读 写 define STATUS REG W 0 x06 000 0011 0 define STATUS REG R 0 x07 000 0011 1 define MEASURE TEMP 0 x03 000 0001 1 define MEASURE HUMI 0 x05 000 0010 1 define RESET 0 x1e 000 1111 0 写字节程序 char s write byte unsigned char value unsigned char i error 0 for i 0 x80 i 0 i 1 高位为 1 循环右移 if i 和要发送的数相与 结果为发送的位 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 0 x80 i 0 i 1 高位为 1 循环右移 SCK 1 if DATA val val i 读一位数据线的值 SCK 0 DATA ack 如果是校验 读取完后结束通讯 SCK 1 nop nop nop 延时 3us 精品文档 4欢迎下载 SCK 0 nop nop nop DATA 1 释放数据线 return val 启动传输 void s transstart void generates a transmission start DATA SCK DATA 1 SCK 0 准备 nop SCK 1 nop DATA 0 nop SCK 0 nop nop nop SCK 1 nop DATA 1 nop SCK 0 连接复位 void s connectionreset void communication reset DATA line 1 and at least 9 SCK cycles followed by transstart DATA SCK unsigned char i DATA 1 SCK 0 准备 for i 0 i 1 in case of no response form the sensor 温湿度测量 char s measure unsigned char p value unsigned char p checksum unsigned char mode 进行温度或者湿度转换 由参数 mode 决定转换内容 enum TEMP HUMI 已经在头文件中定义 unsigned error 0 unsigned int i s transstart 启动传输 switch mode 选择发送命令 精品文档 6欢迎下载 case TEMP error s write byte MEASURE TEMP break 测量温度 case HUMI error s write byte MEASURE HUMI break 测量湿度 default break for i 0 i100 rh true 100 湿度最大修正 if rh true 0 1 rh true 0 1 湿度最小修正 p temperature t C 返回温度结果 p humidity rh true 返回湿度结果 从相对温度和湿度计算露点 float calc dewpoint float h float t float logEx dew point logEx 0 66077 7 5 t 237 3 t log10 h 2 dew point logEx 0 66077 237 3 0 66077 7 5 logEx return dew point 精品文档 7欢迎下载 DS1602 程序 1602 c include 内部等待函数 unsigned char LCD Wait void RS 0 RW 1 nop E 1 nop E 0 return DBPort 向 LCD 写入命令或数据 define LCD COMMAND 0 Command define LCD DATA 1 Data define LCD CLEAR SCREEN 0 x01 清屏 define LCD HOMING 0 x02 光标返回原点 void LCD Write bit style unsigned char input E 0 RS style RW 0 nop DBPort input nop 注意顺序 E 1 nop 注意顺序 E 0 nop LCD Wait 设置显示模式 define LCD SHOW 0 x04 显示开 define LCD HIDE 0 x00 显示关 define LCD CURSOR 0 x02 显示光标 define LCD NO CURSOR 0 x00 无光标 define LCD FLASH 0 x01 光标闪动 define LCD NO FLASH 0 x00 光标不闪动 void LCD SetDisplay unsigned char DisplayMode LCD Write LCD COMMAND 0 x08 DisplayMode 设置输入模式 精品文档 8欢迎下载 define LCD AC UP 0 x02 define LCD AC DOWN 0 x00 default define LCD MOVE 0 x01 画面可平移 define LCD NO MOVE 0 x00 default void LCD SetInput unsigned char InputMode LCD Write LCD COMMAND 0 x04 InputMode 初始化 LCD void LCD Initial E 0 LCD Write LCD COMMAND 0 x38 8 位数据端口 2 行显示 5 7 点阵 LCD Write LCD COMMAND 0 x38 LCD SetDisplay LCD SHOW LCD NO CURSOR 开启显示 无光标 LCD Write LCD COMMAND LCD CLEAR SCREEN 清屏 LCD SetInput LCD AC UP LCD NO MOVE AC 递增 画面不动 液晶字符输入的位置 void GotoXY unsigned char x unsigned char y if y 0 LCD Write LCD COMMAND 0 x80 x if y 1 LCD Write LCD COMMAND 0 x80 x 0 x40 将字符输出到液晶显示 void Print unsigned char str while str 0 LCD Write LCD DATA str str 主函数 main c include 精品文档 9欢迎下载 typedef union 定义共用同类型 unsigned int i float f value 延时函数 void delay int z z 为毫秒数 int x y for x z x 0 x for y 125 y 0 y void main unsigned int temp humi value humi val temp val 定义两个共同体 一个用于湿度 一个用于温度 float dew point 用于记录露点值 unsigned char error 用于检验是否出现错误 unsigned char checksum CRC uchar wendu 6 用于记录温度 uchar shidu 6 用于记录湿度 LCD Initial 初始化液晶 GotoXY 0 0 选择温度显示位置 Print TEMP C 5 格空格 GotoXY 0 1 选择湿度显示位置 Print HUMI RH 5 格空格 s connectionreset 启动连接复位 while 1 error 0 初始化 error 0 即没有错误 error s measure unsigned char 温度测量 error s measure unsigned char 湿度测量 if error 0 s connectionreset 如果发生错误 系统复位 else humi val f float humi val i 转换为浮点数 temp val f float temp val i 转换为浮点数 calc sth10 修正相对湿度及温度 dew point calc dewpoint humi val f temp val f 计算 e dew point temp temp val f 10 humi humi val f 10 GotoXY 5 0 设置温度显示位置 精品文档 10欢迎下载 wendu 0 temp 1000 0 温度百位 wendu 1 temp 1000 100 0 温度十位 wendu 2 temp 100 10 0 温度个位 wendu 3 0 x2E 小数点 wendu 4 temp 10 0 温度小数点后第一位 Print wendu 输出温度 GotoXY 5 1 设置湿度显示位置 sh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论