reigys 发表于 2009-8-28 13:51:44

请教马老师:书中P324的函数freq_to_disbuff()

请教马老师,您的书中P324页例11.1中的程序中有个函数freq_to_disbuff(), 其中的变量i为什么是0到4呢?总共8个数码管,这个函数只给dis_buff到dis_buff赋值,那dis_buff, dis_buff, dis_buff的值怎么确定呢?学生愚昧,望老师赐教。

canjany 发表于 2009-8-28 15:01:43

书中的dis_buff在那个函数的最后赋值:dis_buff=freg;,这就已经给dis_buff赋值了。至于dis_buff和dis_buff我也没看到哪里有赋值的地方。可能默认为零了。

reigys 发表于 2009-8-28 16:33:55

是的,如果dis_buff,dif_buff不赋值的话,高两位的数码管不是永远是0吗?

machao 发表于 2009-9-3 19:14:32

1。因为频率是int型的二进制数,最大只能是65535,所以转换成BCD码只有5位
2。又因为这个频率值是100ms的次数,所以要乘上10才是真正的频率,也只有6位。
3。因此,在这个简单的例子中,高2位永远是“0”

    正式的产品或仪器的话,显示的数据在前面出现零是不美观的(除了小数点左边一位必须显示外),因此需要在显示前做处理:从最高位看下一位,若为“0”,则本位显示“ ”(空);然后从看次高再看次次高位。。。。。一直递推到个位。

任何一位看下一位时,如果不是“0”,则本位显示“ ”(空),递推停止进行。

自己照这个思路写代码吧,这个与测频率无关,我的例子主要让大家掌握频率的测量方法。

书到用时方狠少。这句老话通常是年轻的时候不消一顾,等到真正体会到它的含义时,来不及了。
页: [1]
查看完整版本: 请教马老师:书中P324的函数freq_to_disbuff()