差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
数字温湿度计设计 [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|实验现象}}