图7 LED显示电路图
3. 系统软件设计
3.1 程序流程图
首先对程序初始化,静态显示09-05.06两秒,然后判断是否有键值按下,若有键值按下则计算相关参数,一方面利用中断定时和查询查表输出波形,另一方面送段选口和位选口数据使LED显示相关波形类型和频率,最后反馈回去构成循环,判断按键相关信息。其程序框图如图8所示。
图8 程序流程图
3.2 软件整体设计
本系统的软件包括以下几个程序模块。
(1) 初始化程序。
(2) 显示程序。
(3) 键盘扫描程序与处理程序。
(4) 定时器0服务程序。
(5) 正弦波发生程序及其服务程序。
(6) 三角波发生程序。
(7) 方波发生程序。
(8) 锯齿波发生程序。
3.3 程序模块功能设计
3.3.1 系统初始化设计
复位程序完成如下工作。
(1)显示2秒的09-05.06初始界面。
(2)初始频率设置为888Hz。
(3)将频率值转换成定时器的初值。
(4)置定时器0工作于方式1,即16位定时器方式,送入定时器0定时初值,启动定时器0工作。
(5)显示初始频率和产生波形的类型。
(6)转键盘扫描程序。
3.3.2 键盘扫描程序与处理程序设计
键盘采用矩阵式键盘(如表1所示),由软件产生相应编码,再根据相应编码调用相应的子程序。编码产生原理,P1口低四位表示行,高四位表示列。键盘所在的行和所在的列用0表示,其它的行和列用1表示。如第一行第一列GW编码值为(11101110)2=0xee,第二行第三列ZKBJ编码值为(10111101)2=0xbd。
表1 键盘处理程序
键值 对应处理程序
0x7d Key 1 键选择波形类型(1为正弦波,2为三角波,3方波)
0xee Key 2 个位频率调整(GW)
0xde Key 3 十位频率调整(SW)
0xbe Key 4 百位频率调整(BW)
0x7e Key 5 千位频率调整(QW)
0xed Key 6 万位频率调整(WW)
0xdd Key 7 占空比增大调整(ZKBZ)
0xbd Key 8 占空比减小调整(ZKBJ)
3.3.3 正弦波的产生
正弦波波形[8]设计通过程序仿真得出。
图9 正弦波仿真波形图
其性能指标为:幅值:5V,频率:30Hz,波形无失真。
3.3.4 锯齿波的产生
图10 锯齿波仿真波形图
其性能指标为:幅值:5V,频率:30Hz,波形无失真。
锯齿波[9]的斜线是用一个一个小台阶来近似逼近,从一个周期中的最小值开始逐步的递增,当达到最大值时再回到最小值,如此一一循环,如果台阶的间隔非常小时,波形就基本上类似于直线。如果选择适当的循环时间,就会得到不同频率的锯齿波。锯齿波产生的原理与方波类似,只是高低两个延时的常数不同,所以用延时法,来产生锯齿波。
3.3.5 方波的产生
方波[10]发生程序运用延时的方法实现,只用一个主程序即可,因为产生一个方波只需高低两个数,所以程序比较简单。要给一个频率,再计算所需的延时即可。
图11 方波仿真波形图
其性能指标为:幅值:5V,频率:30Hz,波形有较小失真。
3.3.6 三角波的产生
图12 三角波仿真波形图 51单片机函数信号发生器的设计+源码+电路图(7):http://www.youerw.com/tongxin/lunwen_335.html