当前位置:首页 > 基于单片机的数字频率计的课程设计 1HZ-10MHZ概要
图7 两种数码管内部原理图
因为这里用的是共阳极数码管,它的公共端为高电平,因此要让其中各段(DP,A,B,C,D,E,F,G)的发光二极管发光,只要使它另一端置为低电平,即置0。 3.4.1 频率数值显示电路
图8共阳极数码管显示电路图
3.4.2 频率数值单位显示电路
图9 LED档位指示电路
四、系统软件设计
本文中系统软件设计采用模块化设计,整个系统分为初始化模块、频率测量模块、量程自动切换模块和显示模块等。
整个系统软件设计的程序由C语言编写,通俗易懂。 系统软件设计模块框图:
图10系统软件设计模块框图
4.1 开始
程序预处理,先声明头文件,定义一些变量。 程序入口,main()函数框图:
图11 主函数框图
4.2 初始化模块
初始化模块初始化分频器、量程档位、LED显示、工作寄存器、中断控制和定时/计数器的工作方式等。
4.3 频率测量模块和量程自动切换模块
经过初始化计数器1,每一次下降沿触发一次计数器1中断,每次中断执行中断处理程序则fCnt加1,因此fCnt为信号下降沿次数;经过初始化定时器0, 每50ms触发一次定时器0中断,每次中断执行中断处理程序则对数据下降沿次数fCnt进行处理,通过对数据的大小判断实现量程自动切换等,从而计算出信号的频率,然后调用显示模块把频率值显示出来。其中,16位定时/计数器的最高计数值为65535,因此,还需要先由硬件十分频后,再有定时/计数器对被测信号计数,加大测量的精度和范围。
计数器0(或者1)和定时器2的中断处理框图:
图12 计数器0(或者1)中断处理 图13定时器2中断处理
量程自动切换模块框图:
图14 量程自动切换程序总流程图
4.4 显示模块
显示程序将频率值和量程档位在数码管和LED管显示出来。由于所有4位数码管的8 根段选线由单片机的P0口控制,因此,在每一瞬间4位数码管会显示相同的字符,要想每位显示不同的字符就必须采用扫描方法轮流点亮各位数码管,即在每一瞬间只点亮某一位显示字符,由P1.0-P1.3逐位轮流点亮各个数码管,在此瞬间,段选控制口P0输出相应字符。P2.4-P2.6控制三个发光二极管,通过光颜色的不同表示量程档位的不同。
P1.0-P1.3对应共阳极数码管的1,2,3,4;P0.0-P0.7对应共阳极数码管的A,B,C,D,E,F,G,DP;P2.4-P2.6对应发光二极管的颜色:绿色(MHZ档),黄色(KHZ),红色(HZ)。发光二极管全亮表示所测信号频率超出测量范围。
显示模块框图:
图15 显示子程序流程图
4.5 延时模块
延时模块框图:
图16 延时程序流程图
共分享92篇相关文档