描述
<div>
<h3 style="line-height:1.8">1、参考文档</h3>
<hr>
<p style="line-height:1.8">嘉立创EDA课程项目文档 204:桌面温湿度仪项目文档</p>
<p style="line-height:1.8"><a title="桌面温湿度仪" href="https://www.yuque.com/wldz/jlceda/dqetva01onq5tgdz" target="_blank">https://www.yuque.com/wldz/jlceda/dqetva01onq5tgdz</a></p>
<h3 style="line-height:1.8">2、项目功能介绍</h3>
<hr>
<p style="line-height:1.8"><span style="color:#95a5a6;font-size:14px">通过按键唤醒MCU,获取温湿度传感器数据并计算,通过数码管显示。</span></p>
<h3 style="line-height:1.8">3、项目属性</h3>
<hr>
<p style="line-height:1.8"><span style="color:#95a5a6;font-size:14px">公开,非原创。</span></p>
<h3 style="line-height:1.8">4、开源协议</h3>
<hr>
<p style="line-height:1.8"><span style="color:#95a5a6;font-size:14px">Public Domain</span></p>
<h3 style="line-height:1.8">5、硬件部分</h3>
根据手册可知,主控芯片支持低速无源晶振或高速有源晶振(本项目选择了低速无源晶振)</div>
<div><hr>
<p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/266fea4017f942b283f4fc9273328b37.png" alt="晶振" width="1000" height="651"></p>
<p style="line-height:1.8">SHT40温湿度传感器模块需要外接电阻</p>
<p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/fbec2b34785e4a35b5a8dc415e118379.png" alt="SHT40" width="600" height="259"></p>
<p style="line-height:1.8">电池部分</p>
<p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/24422a62618b40cc950292b8da1fb615.png" alt="BAT" width="1000" height="379"></p>
<p style="line-height:1.8"> </p>
<p style="line-height:1.8"> </p>
<h3 style="line-height:1.8">6、软件部分</h3>
<hr>
<p style="line-height:1.8"><strong>温湿度传感器</strong></p>
<p style="line-height:1.8"><strong><img src="//image.lceda.cn/oshwhub/56afd035cefd4c41bc2483b0fe59c44a.png" alt="addr" width="1000" height="891"></strong></p>
<p style="line-height:1.8"><strong><img src="//image.lceda.cn/oshwhub/69cdd28e2b42494ab3f010d40f9bf0dd.png" alt="I2C" width="1000" height="923"></strong></p>
<p style="line-height:1.8"><strong><img src="//image.lceda.cn/oshwhub/31d4c04b03254e29987be6f730fac661.png" alt="amd" width="1000" height="971"></strong></p>
<p style="line-height:1.8"><strong><img src="//image.lceda.cn/oshwhub/33e0fa3a95194996b77306d7bc4d0dfc.png" alt="digital" width="1000" height="886"></strong></p>
<p style="line-height:1.8">由数据手册可知,0x44是IIC地址;</p>
<p style="line-height:1.8">当地址最低位是1表示读数据,最低位是0表示写数据;</p>
<p style="line-height:1.8">当发送0xFD指令时,代表高精度测量温湿度;</p>
<p style="line-height:1.8">通过对数据进行公式计算可以得出温湿度;</p>
<p style="line-height:1.8">在工程中,增多了一个i2c文件,这里存放有相关的初始化代码;重点是i2c的句柄变量,这个后续在进行i2c协议发送和接收时都会使用,这个句柄在i2c.h头文件中进行了声明,后续直接使用即可。</p>
<p style="line-height:1.8">I2C_HandleTypeDef hi2c1;</p>
<p style="line-height:1.8">直接在主函数中编写相关的SHT40驱动代码;根据前面SHT40相关的介绍,直接调用HAL库的主机IIC发送函数即可;发送完测量指令后,读取相关的数据并进行计算得到温湿度值;</p>
<p style="line-height:1.8">HAL_I2C_Master_Transmit(&hi2c1, (uint16_t)SHT40_Write, (uint8_t *)writeData, 1, HAL_MAX_DELAY);<br>HAL_Delay(10);<br>HAL_I2C_Master_Receive(&hi2c1, (uint16_t)SHT40_Read, (uint8_t *)readData, 6, HAL_MAX_DELAY);</p>
<p style="line-height:1.8">Temperature = (1.0 * 175 * (readData[0] * 256 + readData[1])) / 65535.0 - 45;<br>Humidity = (1.0 * 125 * (readData[3] * 256 + readData[4])) / 65535.0 - 6.0;</p>
<p style="line-height:1.8">对温湿度进行读取,同时放大十倍后取出每一个数据在数码管上进行显示。</p>
<p style="line-height:1.8">Temp = (uint16_t)(Temperature * 10);<br>Humi = (uint16_t)(Humidity * 10);</p>
<p style="line-height:1.8"><strong>数码管显示优化</strong></p>
<p style="line-height:1.8">如果显示数据后立刻进行消影操作,此时CPU主频为64Mhz,执行速度较快,导致数据显示过暗。加入一个us延时,数据显示出来后,延时一点点时间再消影,这样显示效果就好很多了。</p>
<p style="line-height:1.8">/* 64Mhz时钟时,当ulCount为1,函数耗时3个时钟,延时=3*1/64us */<br>__asm void SysCtlDelay(unsigned long ulCount)<br>{<br> SUBS r0,#1;<br> BNE SysCtlDelay;<br> BX lr;<br>}</p>
<p style="line-height:1.8"> </p>
<p style="line-height:1.8"> </p>
<h3 style="line-height:1.8">7、BOM清单</h3>
<hr>
<p style="line-height:1.8">见附件。</p>
<h3 style="line-height:1.8">8、物品展示</h3>
<hr>
<p style="line-height:1.8">见视频。</p>
</div>
评论(0)