差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
数字温湿度计设计 [2018/10/23 17:23] anran [实验原理] |
数字温湿度计设计 [2018/10/23 17:27] (当前版本) anran [实验原理] |
||
---|---|---|---|
行 162: | 行 162: | ||
SHT-20驱动模块得到的是温度和湿度的编码值,想要得到℃和%RH的温度和湿度的数据还需要运算,运算后的数据是二进制数,想要显示在数码管上还需要BCD转码。先考虑运算: | SHT-20驱动模块得到的是温度和湿度的编码值,想要得到℃和%RH的温度和湿度的数据还需要运算,运算后的数据是二进制数,想要显示在数码管上还需要BCD转码。先考虑运算: | ||
- | {{:10-温度运算.png?400|温度运算}} {{:10-湿度运算.png?400|湿度运算}} | + | {{:10-温度运算.png?200|温度运算}} {{:10-湿度运算.png?200|湿度运算}} |
这里我们以温度的运算为例,FPGA不擅长小数的运算,我们可以将小数运算转换成整数运算处理,如下: | 这里我们以温度的运算为例,FPGA不擅长小数的运算,我们可以将小数运算转换成整数运算处理,如下: | ||
行 177: | 行 177: | ||
</code> | </code> | ||
- | 上面程序中没有除以100的运算,没有集成专用除法器的FPGA实现除法运算非常麻烦,需要大量的逻辑资源且性能不佳,通常我们不在FPGA中直接做除法运算,上面程序中两个除法,⑴除以2^16可以通过右移16位方式解决 ⑵除以100在二进制数中不好解决,而在BCD码的十进制数据很好处理,相当于小数点左移两位(十进制位),所以等完成BCD码后再来处理。 | + | 上面程序中没有除以100的运算,没有集成专用除法器的FPGA实现除法运算非常麻烦,需要大量的逻辑资源且性能不佳,通常我们不在FPGA中直接做除法运算,上面程序中两个除法。 |
+ | |||
+ | ⑴除以2^16可以通过右移16位方式解决。 | ||
+ | |||
+ | ⑵除以100在二进制数中不好解决,而在BCD码的十进制数据很好处理,相当于小数点左移两位(十进制位),所以等完成BCD码后再来处理。 | ||
BCD转码在前面电压器实验中介绍过,这里直接例化,程序实现如下: | BCD转码在前面电压器实验中介绍过,这里直接例化,程序实现如下: | ||
行 224: | 行 228: | ||
====实验现象==== | ====实验现象==== | ||
+ | |||
+ | 将程序加载到FPGA,观察数码管显示,左边4位数码管显示温度,右边4位数码管显示湿度,用手接触温湿度传感器,观察显示变化。 | ||
+ | |||
+ | {{:10-实验现象.png?400|实验现象}} |