已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
仿真图形 运行后结果 ifndef 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 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 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 选择发送命令 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 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 设置输入模式 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 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 设置温度显示位置 wendu 0 temp 1000 0 温度百位 wendu 1 temp 1000 100 0 温度十位 wendu 2 temp 100 10 0 温度个位 wendu 3 0 x2E 小数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 31657-3:2025 EN Plain bearings - Hydrodynamic plain journal bearings under steady-state conditions - Part 3: Characteristic values for calculation of tilting pad journal
- 河南省驻马店市2025-2026学年高一上册期中检测语文试题 含答案
- 低碳转型与区域均衡发展
- Unit6 Do you like bananas1单元作业设计
- PLC实验题及试题答案
- 小学四年级奥数培训综合训练及答案
- 河南特岗教师考试真题及答案
- 师生防火安全测试题及答案
- 2025年佳能招聘考试题库及答案
- XX市生态环境局XX分局2025年度巩固拓展脱贫攻坚成果同乡村振兴有效衔接工作情况报告
- 用友软件操作实训教程
- 前期物业服务招投标管理暂行办法
- 2024年职业技能:NACE调整涂装检查员技术及理论知识考试题库(附含答案)
- 智能制造装备技术
- 水产养殖技术模式发展
- 韭菜栽培技术课件
- 美导下店标准化流程
- 生产保密配方管理办法
- 草莓授粉培训课件图片
- 建筑企业安全生产目标责任书范本
- 阴式手术的围手术期护理
评论
0/150
提交评论