基于单片机的波形发生器(C语言)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机原理及接口技术
课程设计报告
波形发生器设计
波形发生器作为一种常用的信号源,是现代测试领域内应用最为广泛的通用仪器之一。
在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都学要有信号源,由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。信号发生器是电子测量领域中最基本、应用最广泛的一类电子仪器。它可以产生多种波形信号,如正弦波,三角波,方波等,因而广泛用于通信、雷达、导航、宇航等领域。
本系统利用单片机AT89C51采用程序设计方法产生锯齿波、正弦波、三角波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制三种波形的类型选择、频率变化,并通过LED显示其各自的周期。
本次关于产生不同低频信号的信号源的设计方案,不仅在理论和实践上都能满足实验的要求,而且具有很强的可行性。该信号源的特点是:体积小、价格低廉、性能稳定、实现方便、功能齐全。
1. 设计任务
结合实际情况,基于AT89C51单片机设计一个波形发生器。该系统应满足的功能要求为:
(1) 产生三种波形(三角波、锯齿波、正弦波);
(2) 按键选择波形,加减键选择频率;
(3) 在示波器中显示三种波形;
(4) 在六位数码管上显示周期;
主要硬件设备:单片机实验开发系统、AT89C51单片机、DAC数模转换芯电路、六位数码管(LED)、矩阵键盘、8155芯片、示波器。
2. 整体方案设计
波形发生器系统以AT89C51单片机作为整个系统的控制核心,应用其强大的接口功能,构成整个波形发生器系统。
利用 AT89S52 单片机构造多功能信号发生器,可产生正弦波,方波,三角波,锯齿波四种波形,通过 C 语言对单片机的编程即可产生相应的波形信号,并可以通过键盘进行各种功能的转换和信号频率的控制,当输出的数字信号通过
数模转换成模拟信号也就得到所需要的信号波形,通过运算放大器的放大输出波形,同时让显示器显示输出的波形信息。
(1)三角波产生思路
首先,根据按键设定的波形频率,选择一个周期内合适的点数,根据点数和峰值计算相邻2个点的幅度的步进值,根据点数和频率设定相邻2点的时间值,计算出定时器的初值,然后,设置一个变量每进一次定时中断DA数据就加幅值步进,当等于总点数的一半时,每进一次定时中断就把DA数据减幅值步进直到DA数据为0,计数变量清零。每进一次定时中断输出刷新DA的数据就可以产生一定频率和幅值的三角波。
(2)锯齿波产生思路
首先,根据按键设定的波形频率,选择一个周期内合适的点数,根据点数和峰值计算相邻2个点的幅度的步进值,根据点数和频率设定相邻2点的时间值,计算出定时器的初值,然后,定时输出刷新DA的数据就可以产生一定频率和幅值的波形。
(3)正弦波产生思路
首先,写一个表格,然后根据按键设定的波形频率,选择一个周期内合适的点数,根据点数和峰值计算相邻2个点的幅度的步进值,根据点数和频率设定相邻2点的时间值,计算出定时器的初值,然后,设置一个变量每进一次定时中断DA数据就加幅值步进,当等于总点数的一半时,每进一次定时中断就查表把DA数据减幅值步进直到DA数据为0,计数变量清零。每进一次定时中断查表输出刷新DA的数据就可以产生一定频率和幅值的正弦波。
图2-1 系统的整体方案设计图
本系统硬件主要由D/A转换器、显示系统、矩阵键盘等几部分组成。各模块的主要功能如下:
(1) D/A转换器的功能是把单片机输出的数字信号转换成0-5V的模拟信号。
(2) 显示系统中六位数码管显示波形频率,示波器显示波形。
(3) 矩阵键盘选择波形,增加减少频率。
3. 系统硬件电路设计
3.1 时钟电路
单片机的时钟信号通常用两种电路形式得到:内部振荡和外部振荡方式。在引脚XTAL1 和 XTAL2 外接晶体振荡器,构成了内部振荡方式。由于单片机内部有一个高增益的反相放大器,当外接晶振后,就构成了自激振荡,并产生振动时钟脉冲。晶振通常选用 6MHZ、12MHZ、24MHZ。本设计中时钟电路图如图3-1,我们选择了12MHZ和晶振分别接引脚XTAL1和XTAL2,电容 C1,C2 均选择为30pF,对振荡器的频率有稳定作用,当频率较大时,正弦波、三角波、锯齿波中每一点的延时时间为几微妙,故延时时间还要加上指令时间才能获得较大的频率波形。
单片机的时序单位
振荡周期:晶振的振荡周期,又称时钟周期,为最小的时序单位。
机器周期:1个机器周期由12个振荡周期组成,是计算机执行一种基本操作的时间单位。
指令周期:执行一条指令所需的时间。一个指令周期由1-4个机器周期组成,依据指令不同而不同.
图3-1 时钟电路
3.2 复位电路
复位引脚 RST 通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的 S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。复位电路通常采用上电自动复位和按钮复位两种方式。本设计选择了按键复位如图3-2,在系统运行时,按一下按键,就在 RST 断出现一段高电平,使器件复位。此时 ALE、PSEN、P0、图3-2时钟电路图P1、P2、P4 输出高电平,RST 上输入返回低电平以后,变退出复位状态开始工作。
图3-2 复位电路
单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM 为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。51单片机在系统复位时,将其内部的一些重要寄存器设置为特定的值,至于内部RAM内部的数据则不变。