单片机波形发生器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章波形发生器概述
在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域,经常需要用到各种各样的信号波形发生器。
随着集成电路的迅速发展,用集成电路可很方便地构成各种信号波形发生器。
用集成电路实现的信号波形发生器与其它信号波形发生器相比,其波形质量、幅度和频率稳定性等性能指标,都有了很大的提高。
1.1课题的来源与技术背景
不论是在生产还是在科研与教学上,信号发生器都是电子工程师仿真实验的最佳工具。
随着我国经济和科技的发展,对相应的测试仪器和测试手段也提出了更高的要求,信号发生器己成为测试仪器中至关重要的一类,因此开发信号发生器具有重大意义。
传统的信号发生器采用专用芯片,成本高,控制方式不灵活。
本设计充分利用单片机灵活的控制、丰富的外设处理能力,采用DDS技术,实现频率、幅值可调的函数波形的输出,同时可以根据需要方便地实现各种比较复杂的调频、调相和调幅功能,具有良好的实用性。
根据其频率发生方法又可分为谐振法和合成法两种。
一般的传统发生器都是采用的谐振法,即用具有频率选择性的回路来产生正弦振荡,来获得所需频率,也可以根据频率合成技术来获得所需频率。
利用频率合成技术制成的合成波形发生器,通常被称为频率合成器或频率综合器。
频率综合器是指利用频率合成技术合成的频率源,它常常是没有调制的,也没有足够宽的和足够准确的输出电平调节,其工作范围往往也不宽,最小频率间隔也比较大,一般做专用设备使用,或做某一个系统中的一个组成部分。
1.2波形发生器设计的目的及意义
(1)利用所学单片机机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。
(2)我们这次的课程设计是以单片机为基础,设计并开发能输出多种波形(正弦波、三角波、锯齿波、方波)且频率、幅度可变的波形发生器。
(3)掌握各个接口芯片(如0832等)的功能特性及接口方法,并能运用其实现一个简单的单片机应用系统功能器件。
(4)在平时的学习中,我们所学的知识大都是课本上的,在机房的练习大家也都是分散的对各个章节的内容进行练习。
因此,缺乏一种系统的设计锻炼。
在课程所学结束以后,这样的课程设计十分有助于学生的知识系统的总结到一起。
(5)通过这几个波形进行组合形成了一个波形发生器,使得我对系统的整个框架的设计有了一个很好的锻炼。
这不仅有助于大家找到自己感兴趣的题目,更可以锻炼大家单片机知识的应用。
第二章多功能波形发生器设计任务
2.1 设计内容及要求
题目:多功能波形发生器设计
本系统设计一个由微控制器为核心的多功能波形发生器。
具体要求如下。
①.该发生器能在操作人员控制下输出正弦波、方波、三角波或锯齿波波形。
②.这些波形的极性、周期和占空比(对矩形波而言)等可由操作人员设置和修改(信号频率可调节)。
通过示波器显示、检验产生的波形。
设计相应的D/A、键盘、显示接口电路,说明工作原理,编写程序及程序流程图。
可在线键盘参数设置,其中控制输出部分采用D/A0832模拟量输出。
2.2 方案的论证与比较
2.2.1 信号发生电路方案论证
方案一:通过单片机控制D/A,输出三种波形。
此方案输出的波形不够稳定,抗干扰能力弱,不易调节。
但此方案电路简单、成本低。
方案二:使用传统的锁相频率合成方法。
通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。
此方案,电路复杂,干扰因素多,不易实现。
方案三:利用MAX038芯片组成的电路输出波形。
MAX038是精密高频波形产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形。
但此方案成本高,程序复杂度高。
以上三种方案综合考虑,选择方案一。
2.2.2 单片机的选择论证
方案一:AT89S52单片机是一种高性能8位单片微型计算机。
它把构成计算机的中央处理器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而构成较为完整的计算机、而且其价格便宜。
方案二:C8051F005单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。
除了具有标准8052的数字外
设部件,片内还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,而且执行速度快。
但其价格较贵
以上两种方案综合考虑,选择方案一
2.2.3 显示方案论证
方案一:采用LED数码管。
LED数码管由8个发光二极管组成,每只数码管轮流显示各自的字符。
由于人眼具有视觉暂留特性,当每只数码管显示的时间间隔小于1/16s时人眼感觉不到闪动,看到的是每只数码管常亮。
使用数码管显示编程较易,但要显示内容多,而且数码管不能显示字母。
方案二:采用LCD液晶显示器1602。
其功率小,效果明显,显示编程容易控制,可以显示字母。
以上两种方案综合考虑,选择方案二。
2.2.4 键盘方案论证
方案一:矩阵式键盘。
矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处。
当键盘上没有键闭合时,所有的行和列线都断开,行线都呈高电平。
当某一个键闭合时,该键所对应的行线和列线被短路。
方案二:独立式键盘。
独立式键盘具有硬件与软件相对简单的特点,其缺点是按键数量较多时,要占用大量口线。
以上两种方案综合考虑,选择方案二。
第三章总体设计方案
3.1 设计思想
利用AT89C51单片机外接数模转换器和运算放大电路,由用户通过按键选择输出实验室中经常使用到的几种基本波形:方波、锯齿波、正弦波和三角波。
方波由AT89C51单片机将最大值和最小值输出给D/A进行转换,并由用户通过键盘选择波形周期。
与微处理器兼容的8位数模转换器DAC0832将数字量转换为模拟量电压信号,通过运放电路得到锯齿波、正弦波、三角波信号,波形保证了它的精度、平滑和稳定。
可采用单片机程序产生以上4种波形,并通过一片D/A转换器输出。
另外,采用一片D/A转换器来控制前一片D/A转换器的参考电压,从而可以改变输出波形幅值,见图1所示。
通过外接键盘来设定波形的类型、幅值和频率,并在扩展的七段LED显示器上显示响应的波形的类型、幅值和频率。
AT89C51单片机时钟电路采用内部方式,外接陶瓷谐振器(频率为12MHz),微调电容值为30pF。
系统复位采用按键式外部复位方式,复位信号至少保持8us 以上。
通过按键由用户选择要输出的波形,按键选择占用P3.4—P3.7口,采用独立式键盘结构,框图如图3.1所示。
图3.1 总体方案结构框图
3.2 总体设计流程图
图3.2 总体设计流程图
第四章硬件设计
4.1 硬件设计概要
通过P3.4-P3.7口和轻触开关S1-S4相连接,S1来控制波形输出(如按S1键按一次输出三角波,按两次输出方波,按三次输出锯齿波,按四次输出正弦波),S2键用来控制频率加,S3键用来控制频率减,S4键用来关闭波形输出。
初次运行程序时,液晶显示器上显示“Select Wave: " "press No.1 key! ",当相应的控制键按下时,液晶显示器显示相应的波形种类和频率值。
4.1.1单片机最小系统的设计
AT89C52是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。
用AT89C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图4.1 89C51单片机最小系统所示。
由于集成度的限制,最小应用系统只能用作一些小型的控制单元。
其应用特点:
(1)有可供用户使用的大量I/O口线。
(2)内部存储器容量有限。
(3)应用系统开发具有特殊性。
图4.1 89C51单片机最小系统
4.1.2 波形产生模块设计
由单片机采用编程方法产生四种波形、通过DA转换模块DAC0832在进过滤波放大之后输出。
其电路图如下:
图4.2 波形产生电路
如上图所示,单片机的P0口连接DAC0832的八位数据输入端,DAC0832的输出端接放大器,经过放大后输出所要的波形。
4.2.3 显示模块的设计
通过液晶LM016L显示输出的波形、频率,其电路图如下:
图4.3 液晶显示
如上图所示,1602的八位数据端接单片机的P1口,其三个使能端RS、RW、
E分别接单片机的P3.2—P3.4。
通过软件控制液晶屏可以显示波形的种类以及波形的频率。
4.2.4 键盘显示模块的设计
由于本系统所用按键少,所以采用独立键盘,其连接电路图如下:
图4.4 键盘
图中独立键盘引出的四根线分别接单片机的P3.4、P3.5、P3.6、P3.7,另一端接地。
4.2所用到的芯片及其各自功能说明
AT89C52和DAC0832各一片
4.2.1 AT89C52单片机的内部结构
基本组成部分:
1 一个8位的CPU
2 128B或256B单元内数据存储器(RAM)
3 4KB或8KB片内程序存储器(ROM或EPROM)
4 4个8位并行I/O接口P0~P3。
5 两个定时/计数器。
6 5个中断源的中断管理控制系统。
7 一个全双工串行I/O口UART(通用异步接收、发送器)
8 一个片内振荡器和时钟产生电路。
图4.5 AT89C51引脚
管脚说明:
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1
口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH
编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行
存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时, ALE 只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
4.2.2 DAC0832芯片
DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器。
DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。
DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路
的需要(如要求多路D/A异步输入、同步转换等)。
所以这个芯片的应用很广泛,关于DAC0832的引脚功能如下:
D0~D7:数字信号输入端。
ILE:输入寄存器允许,高电平有效。
CS:片选信号,低电平有效。
WR1:写信号1,低电平有效。
XFER:传送控制信号,低电平有效。
WR2:写信号2,低电平有效。
IOUT1、IOUT2:DAC电流输出端。
RfB:是集成在片内的外接运放的反馈电阻。
VREF:基准电压(-10~10V)。
VCC:是源电压(+5~+15V)。
GND:地。
图4.6 DAC0832引脚图
4.3 硬件电路设计系统原理图及其说明
图4.7 波形发生器硬件连线图
第五章软件设计
5.1正弦波的产生过程
通过手动的方法计算出输出各点的电压值,形成数组sintab[256],反复顺序输出这组数据到DAC0832,就在系统输出端得到正弦波。
5.2方波的产生过程
按照设定的周期值改变输出的电压(分别向DAC0832输0x00或0xff)。
5.3锯齿波的产生过程
将一个周期(360度)分为128个点,递增,生成数组jctab[128],反复顺序输出这组数据到DAC0832,就在系统输出端得到锯齿波。
5.4三角波的产生过程
将三角波的一个周期(360度)分为256个点,相邻点等差,前128个点递增,后128个点递减,生成数组sjtab[256],反复顺序输出这组数据到DAC0832,就在系统输出端得到三角波。
5.5通过开关实现波形切换和调频
通过P3.4-P3.7口和轻触开关S1-S4相连接,S1来控制波形输出(如按S1键按一次输出三角波,按两次输出方波,按三次输出锯齿波,按四次输出正弦波),S2键用来控制频率加,S3键用来控制频率减,S4键用来关闭波形输出。
初次运行程序时,液晶显示器上显示“Select Wave: " "press No.1 key! ",当相应的控制键按下时,液晶显示器显示相应的波形种类和频率值。
第六章系统测试及使用说明
6.1、测试仪器及测试说明
测试仪器:稳压电源、示波器、数字万用表。
测试说明:正弦波、矩形波、三角波、锯齿波信号的输出,通过对独立键盘来实现其的不同波形的输出以及其频率的改变。
6.2测试过程
当程序下进去时经过初始化,液晶屏的上只显示“"Select Wave " 和"press No.1 key! ",当开关1按一下是此时输出波形为三角波,按两下时输出为方波,按三下时输出为锯齿波,按四下时输出正弦波。
另外两个开关可以调节频率,四种波形的频率可调范围不同,分别如下:
三角波:50~500HZ(每次加50HZ)
方波:200~2000HZ(每次加200HZ)
锯齿波:50~500HZ(每次加50HZ)
正弦波:10~100HZ(每次加10HZ)
四种波形的仿真波形图如下:
图6.1三角波图形
图6.2 方波图形
图6.3 锯齿波图形
图6.4 正弦波图形
6.3、测试结果
各项指标均达到要求。
测试数据如下:
1)、产生锯齿波、正弦波、方波、三角波基本实现
2)、四种波形的频率都可调,但不能步进的调节,其中方波的可调范围最广为200~2000HZ
3)显示部分基本实现
4)按键功能实现
第七章收获、体会
本次的设计中利用AT89C51和DAC0832以及放大器完成电路的设计,用开关来控制各种波形的转换和波形频率、占空比的调节,用单片机输出后,经过数模转换器生成波形,最终可以通过示波器观察。
在这次的软件设计中,程序设计采用的是C语言。
C语言简洁高效,是最贴近硬件的高级编程语言,经过多年的发展,现在已成熟为专业水平的高级语言。
因此,在大型程序的设计中,多采用C语言进行程序编译。
而且,现在单片机产品推出时纷纷配套了C语言编译器,应用广泛。
由于真正意义上的程序设计还不多,因此还不是很得心应手,所以在设计中遇到一些问题和一些难点。
比如:在程序设计中如何实现程序结构的最优化,以达到较高的质量。
这是以后设计中要注意的问题。
通过这次课程设计,我进一步了解了波形发生器的原理,在实际动手操作过程中,使我接触了许多我以前没接触过的元件,而且重新温习了刚学不久的C 语言,使我学得了许多知识,使我获益匪浅。
这次课程设计,使我的动手能力得到了很大的提高,更使我们懂得理论知识的重要性,没有理论的指导一切实际行动都是盲目的,且实际操作是我们得到的理论知识得到验证,更能增加对理论知识的理解。
参考文献:
[1] 郭天翔.新概念51单片机C语言教程入门、提高、开发、拓展全.北京.电子工业出版社,2009.1
[2] 戴仙金主编.51单片机及其C语言汇编程序开发实例.清华大学出版社,2008
[3] 童诗白.模拟电路技术基础[M].北京:高等教育出版社,2000.171~202
[4] 李叶紫. MCS-51单片机应用教程[M].北京:清华大学出版社,2004.232~238
[5] 蒋辉平.单片机原理与应用设计.北京航空航天大学出版社,2007。