使用Proteus软件探讨51单片机的计数问题 前 言 近来在网上看到一个网友在“提问者采纳”处写道“․․․这四个引脚都可以在下降边沿的时候才计数一次”,他的意思是说,当给51单片机的计数器引脚(P3.4和P3.5)或外部中断引脚(P3.2和P3.3)输入1个脉冲信号时,当脉冲信号在下降时,单片机才计数1次。那末问题随之而来了,即:单片机能对正弦波信号进行计数吗?若能进行计数的话,那末所输入的正弦波信号的振幅的下限值是多少?当输入的矩形波信号的低电平为0V时,其幅值(高电平)的下限是多少时,单片机可以对其进行计数?为了解决这些疑问,我使用Proteus软件进行了一系列的仿真实验,例如使用DAC0808这个8位数模转换集成芯片将单片机发出的若干个8位的二进制数转换成为若干个输出电压。 一、单片机可以对振幅在2.6V以上的正弦波信号进行计数 若把51单片机当做频率计用时,当给P3.5(或P3.4)引脚输入1个振幅为2.6V、频率为5KHz的正弦波,并且采取1mS计时,那末计算出来的数值被分别送往4个7段BCD数码管后显示出来1个16进制的数字“5”,将其换算成10进制数后,也是数字“5”。其电路运行时的QQ截图见附件s31。在附件s31所示的电路中,若不断的改变正弦波信号发生器所发出的正弦波信号的振幅和频率,例如,令正弦波信号的振幅为2.5V,且频率为1MHz,运行该电路,发现单片机不能对其计数;若将正弦波信号的振幅改为2.6V, 频率保持不变仍为1MHz,再次运行该电路,发现单片机可以对其计数。类似的,在进行了大量的仿真实验后,可以推测出所输入的正弦波信号的振幅的下限值是2.6V。 二、单片机可以对幅值在2.5V以上的矩形波信号进行计数 本文中所指的矩形波信号是低电平为0V的矩形波信号。由于Proteus软件中所提供的矩形波信号发生器(CLOCK)只能发出幅值为5V的矩形波信号,为了获得1个可调幅值的矩形波信号,我采用了阶梯波信号发生器(其中有51单片机和DAC0808这个8位数模转换集成芯片)。附件s32既是阶梯波信号发生器发出1个幅值约为2.5V的矩形波信号时的电路运行时的QQ截图。在附件s32中,单片机U4做频率计用,而用单片机U3的P0口输出1个8位的二进制数,并将其送入DAC0808这个8位数模转换集成芯片中进行处理,而DAC0808外加运放OPAMP完成电流—电压的转换。由于运放OPAMP的同向端接地,显然它是一个反相比例器。最后将运放的输出电压U(out)送入单片机U4的P3.5(也就是T1)引脚进行计数,并把计算出来的数值分别送往4个7段BCD数码管显示出来。从附件s32中可以见到组合在一起的数码管显示出来的16进制数为“3”,它也是10进制数“3”。再观察附件s32中U(out)的动态分析(ANALOGUE ANALYSIS)图像,在0~125mS这个区间内,U(out)的幅值为10.1V,关于这一现象的解释是比较复杂的,在本文中就予以省略了。而在125mS~1S这个区间内只有两个幅值约为2.5V的矩形波,很显然,这两个幅值约为2.5V的矩形波使单片机U4进行计数了。改变R3或R1的数值是可以改变U(out)的幅值的。通过仿真实验得知,当U(out)的幅值小于2.5V时,单片机U4不能对其进行计数。由此可见,输入的矩形波信号的幅值的下限是2.5V时,单片机可以对其进行计数。 结 束 语 通常情况下,我们一般认为51单片机只能对幅值为5V且低电平为0V的矩形波信号进行计数,通过本文的探讨,更正了我们的观念。当然了,这个探讨是有其实际意义的。例如我在本版块所发表的《采 用 单 片 机 控 制 的 无 线 电 遥 控 接 收 机 的 一 种 新 的 形 式》一文中就阐述了利用单片机的P3.5(或P3.4)引脚来对解调后的低频调制信号进行计数,若是满足预先设置的条件的话,就可以让一个继电器动作。 |