八位单片机存储的数据是八位,两个字节16位。不过你不用关心这问题,对你来说他就是一个整数而已,你的编译器会帮你搞定。
hundreds = temp/100; //百位
decade = temp/10%10; //十位
units = temp%10; //个位
此外:temp=TMR1H*256+TMR1L这一句改改
temp=TMR1H8+TMR1L
现在很多编译器会帮你改成这样,不过自己写成这样总不会错的。
用LZ的方法,肯定会存在误差。数字方式都会有误差,误差范围可以接收就是好的设计。
用AD方法误差形成的原因:
无法在正弦波周期极值点正好是采样时刻而准确的采样到这个极值数据。采样点越多,精度才更高。
程序中程序执行、计算的时间没有准确统计。
解决方法:
采用硬件方式,将正弦波转成方波送如PIC的一个端口,程序中定时计数就可以了。运算速度快,精度好控制。编程可能也容易些。甚至可以用外围电路组成0.1秒或者1秒闸门的计数器,程序中定时对计数器清零读数就可以了。缺点是硬件投入大一些,电路复杂一些。
仍采用AD方式,也是可以的,需要在预测频率的几个周期内AD采样点足够多才能找出比较准确的极值点。这就需要AD的速度够快,采样的频率要可知(知道每2个采样点的时间间隔,或者一个数组的总时间消耗),程序上要效率高。
PIC单片机为1至2机器周期指令,每个机器周期需要4个时钟脉冲。所以,PIC18单片机的时钟频率/8 = 输入的最高脉冲频率。这是对外部脉冲进行计数,执行指令所需的最短时间。
pic单片机计数器频率的介绍到此就结束了,感谢您耐心阅读,谢谢。
本文标签:pic单片机计数器频率