第 西南交通大学本科毕业设计(论文) 24 页
图2-17. LM324的引脚排列图
由于LM358具有电源电压范围宽,价格低廉,功耗小,可单电源使用等优点,因此LM358被广泛应用在各种运放电路中。而我们此次设计中正好要用到两个运算放大器,所以就选择了LM358。
第3章 软件仿真及程序编写
3.1 仿真软件和编程软件
本次设计中我们采用仿真和编程所用到的软件分别是Proteus和Keil。 Proteus软件是一款EDA仿真软件,经常用来搭建模拟与单片机相关的一些仿真,由英国Lab Center Electronics出版。由于单片机实物制作麻烦,耗时长,所以一个能仿真单片机的软件就很好地解决了这个问题。人们不需要再去花钱购买实物,也不用去花费心思去设计电路板,只需要在proteus中找到相关元件,并用鼠标进行连
第 西南交通大学本科毕业设计(论文) 25 页 线,这样一个仿真就搭建好了。由于Proteus功能强大,现在的应用范围很广泛,所以得到了全球的认可,深受单片机爱好者的喜爱。
在搭建仿真的过程中,我们要到元件库中去搜寻我们所需要的元件,比如电阻是RES,电容是CAP,单片机芯片我们直接选择AT89C51,LCD则搜索LM016L,其他的也都可以在元件库中找到。在搭建过程中也有一些小技巧,比如缩放中找不到仿真图了,我们按F8像是当前工作区,当发现元件的位置不对且需要旋转时,我们可以用+-号进行旋转,当然也可用右键对元件进行X-Y轴对称。当我们搭建好仿真后,可以双击51芯片,然后选择生成的hex文件,最后点击运行按钮就可以运行仿真了。
图3-1 proteus软件启动画面
要完成仿真,必须要用到hex文件,而hex文件则是程序编译后生成的文件。所以我们还需要编程软件,编程软件我们用到的就是美国Keil Software公司出品的Keil软件。Keil可以可以用来编写多种程序,Atmel系列单片机只是其中的一种,而且Keil可以使用汇编语言或者C语言进行程序编写,只是创建文件时的后缀名不一样,我们此次设计采用C语言编写程序。编写完毕后,我们要选择Target Options进行设置,在output选项中勾选create HEX files,这样就能在编译时生成仿真运行所需要的hex文件了 。
第 西南交通大学本科毕业设计(论文) 26 页
图3-2 Keil μVision4软件
3.2 整体电路仿真原理图
函数信号发生器的整体仿真原理如图3-3,AT89C51的P0口作为向D/A转换芯片DAC0832发送数据的端口,P1口作为控制LCD1602显示的端口,P2口和P3口分别用来控制DAC0832、LCD1602的是使能端和按键。
图3-3.整体电路仿真图
第 西南交通大学本科毕业设计(论文) 27 页
3.3 程序编写思路及编写结果
我们实验中常用的波形如正弦波、方波和三角波都是周期波形,我们只需知道一个周期的波形即可知道整个波形是什么样子。所以我们可以对波形进行采样处理可以得到一个周期的波形波码,比如正弦波的波码如下:
第 西南交通大学本科毕业设计(论文) 28 页
程序编写思路流程图:
图3-4 程序流程图
Waveform=0 输出正弦波 Waveform=1 输出三角波 Waveform=2 输出方波 Waveform=3 输出锯齿波 Waveform++ 频率增加 频率减小 S1按下 S2按下 S3按下 否 按键按下? 开始 芯片初始化 是所以我们可以利用c51单片机把波码数据通过P1口发送给D/A转换芯片DAC0832处理,依照此思路进行,我通过查阅资料和上网查询一些信号发生器程序的范例,然后整理思路编写自己的程序。编写的过程中随时进行调试并检查错误,不懂的地方请教老师同学并查阅更多的资料,梳理思路,最终完成程序编写,完整的程序见附录2。
在Keil输出设置中勾选输出hex文件,然后编译并产生hex文件,用于后面的仿真和硬件实现功能。
LCD显示 3.4 仿真结果
在仿真图中,双击AT89C51芯片,设置一些参数并选择调用Keil生成的hex文件,点击软件左下角的开始运行按钮,观察仿真现象及结果。输出波形截图如下: