基于51单片机STC89C52RC的AD9850DDS信号源设计与实现毕业设计.docx
《基于51单片机STC89C52RC的AD9850DDS信号源设计与实现毕业设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机STC89C52RC的AD9850DDS信号源设计与实现毕业设计.docx(30页珍藏版)》请在冰豆网上搜索。
![基于51单片机STC89C52RC的AD9850DDS信号源设计与实现毕业设计.docx](https://file1.bdocx.com/fileroot1/2023-2/1/a0c5067f-08e9-4f9b-8ab0-2270ef9c337b/a0c5067f-08e9-4f9b-8ab0-2270ef9c337b1.gif)
基于51单片机STC89C52RC的AD9850DDS信号源设计与实现毕业设计
SHANGHAIUNIVERSITY
课程论文
COURSEPAPER
基于51单片机STC89C52RC的AD9850DDS信号源设计与实现
报告提纲
一、电路设计方案及工作原理
(根据所选题目要求,说明电路原理图,设计思想、设计指标及功能实现方式,物料清单,关键元器件选型理由等。
)
项目要求:
1、函数信号发生器输出频率为10HZ至1MHZ(用开关分档)
2、输出电压为0至8V
3、输出电阻小于100欧
4、可输出三种波形(正弦波、方波和三角波)
5、输出直流分量可调(-3V~+3V)
6、有输出短路保护功能
项目介绍:
评分依据:
1、 电路设计简单合理,设计分析计算过程清晰
2、 可输出三种波形、输出直流分量可调、有输出短路保护功能
3、 电路工作稳定可靠,输出波形失真小
4、 如合理设计方案有多个则可以加分
(一):
主要器件介绍
1.1AD9850芯片介绍
AD9850是AD公司生产的最高时钟为125MHz、采用先进的CMOS技术的直接频率合成器,主要由可编程DDS系统、高性能模数变换器(DAC)和高速比较器3部分构成,能实现全数字编程控制的频率合成。
AD9850内含可编程DDS系统和高速比较器,可实现全数字编程控制的频率合成。
可编程DDS系统的核心是相位累加器,由一个加法器和一个N位相位寄存器组成,N一般为24~32。
每来一个外部参考时钟,相位寄存器便以步长M递加。
相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上。
正弦查询表包含一个正弦波周期的数字幅度信息,每一个地址对应正弦波中0°~360°范围的一个相位点。
查询表把输入地址的相位信息映射成正弦波幅度信号,然后驱动DAC输出模拟量。
相位寄存器每过2N/M个外部参考时钟后返回到初始状态一次,相应地正弦查询表
每经过一个循环也回到初始位置,从而使整个DDS系统输出一个正弦波。
Ad9850工作原理如下图:
1.2稳压芯片7805790578127912芯片介绍
稳压芯片7805790578127912\
电子产品中,常见的三端稳压集成电路有负电压输出的79××系列和正电压输出的78××系列。
顾名思义,三端IC是指这种稳压用的集成电路芯片,只有三条引脚输出,分别是输入端、接地端和输出端。
它的样子象是普通的三极管,TO-220的标准封装,也有9013样子的TO-92封装。
用78/79系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。
该系列集成稳压IC型号中的78或79后面的数字代表该三端集成稳压电路的输出电压,如7806表示输出电压为正6V,7909表示输出电压为负9V。
因为三端固定集成稳压电路的使用方便,电子制作中经常采用。
这4个型号器件的失稳电压都是3V,输出电流是1A;
7805输出电压是+5V、7812是+12V、最高输入电压是35V;
7905输出电压是-5V、7912是-12V、最高输入电压是-35V;
是三端稳压管,79XX系列是负电压输出,即输出-5V、-12V,78XX系列是正电压输出。
7805管脚图
集成稳压器还可以用作恒流源。
79XX系列集成压器是常用的固定负输出电压的三端集成稳压器,除输入电压和输出电压均为负值外,其他参数和特点与78XX系列集成稳压器相同。
79XX系列集成稳压的三个引脚为:
1脚为接地端,2脚为输入端,3脚为输出端。
79XX系列集成稳压器的应用电路也很简单。
同时运用78XX和79XX稳压器,可以组成正、负对称输出的稳压电路。
下图所示为±5V稳压电源电路,IC1采用固定正输出集成稳压器7805,IC2采用固定负输出集成稳压器7905,VD1、VD2为保护二极管,用以防止正或负输入电压有一路未接入时损坏集成稳压器。
7905
在实际应用中,应在三端集成稳压电路芯片上安装足够大的散热器(当然小功率的条件下不用)。
当稳压管温度过高时,稳压性能将变差,甚至损坏。
7905最大输出电流为1.5A,当制作中需要一个能输出1.5A以上电流的稳压电源,通常采用几块三端稳压电路并联起来,使其最大输出电流为N个1.5A,但应用时需注意:
并联使用的集成稳压电路应采用同一厂家、同一批号的产品,以保证参数的一致。
另外在输出电流上留有一定的余量,以避免个别集成稳压电路失效时导致其他电路的连锁烧毁。
在79**、78**系列三端稳压器中最常应用的是TO-220和TO-202两种封装。
这两种封装的图形以及引脚序号、引脚功能如附图所示。
从正面看①②③引脚从左向右按顺序标注,接入电路时①脚电压高于②脚,③脚为输出位。
如对于79**负压系列,①脚接地,②脚接负电压;对与78**正压系列,①脚高电位,②脚接地,输出都是③脚。
如附图所示。
此外,还应注意,散热片总是和接地脚相连。
这样在78**系列中,散热片和②脚连接,而在79**系列中,散热片却和①脚连接。
7905典型应用电路图:
79XX系列集成稳压器的典型应用电路如下图所示,
这是一个输出负5V直流电压的稳压电源电路。
IC采用集成稳压器7905,C1、C2分别为输入端和输出端滤波电容,RL为负载电阻。
当输出电流较大时,7905应配上散热板。
1.351单片机
51单片机是对目前所有兼容Intel8031指令系统的单片机的统称。
该系列单片机的始祖是Intel的8031单片机,后来随着Flashrom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。
目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。
51单片机是基础入门的一个单片机,还是应用最广泛的一种。
需要注意的是52系列的单片机一般不具备自编程能力。
8位CPU·4kbytes 程序存储器(ROM)(52为8K)
·128bytes的数据存储器(RAM)(52有256bytes的RAM)
·32条I/O口线·111条指令,大部分为单字节指令
·21个专用寄存器
·2个可编程定时/计数器·5个中断源,2个优先级(52有6个)
·一个全双工串行通信口
·外部数据存储器寻址空间为64kB
·外部程序存储器寻址空间为64kB
·逻辑操作位寻址功能·双列直插40PinDIP封装
·单一+5V电源供电
CPU:
由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:
用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:
用以存放程序、一些原始数据和表格;
I/O口:
四个8位并行I/O口,既可用作输入,也可用作输出;
T/C:
两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。
最高振荡频率为12M。
1.4数码管驱动芯片max7219
MAX7219是由美国Maxim公司开发的一款新型多功能8位LED显示驱动IC。
接口采用三线SPI方式,用户只需简单修改内部相关的控制或数字RAM,便可很容易地实现多位LED显示。
MAX7219具有多个级联特性,为大屏幕LED显示提供了方便。
在理论上,只需三根用户I/O口控制线,便可以实现无穷多的LED级联显示。
在实际应用中,已实现了149片MAX7219级联,可以控制1192位LED显示。
MAX7219特点与引脚说明
PS7219的特点:
★串行接口(16位控制字);
★8位共阴级LED显示驱动;
★显示位数1~8,可数字调节;
★按位进行BCD译码/不译码数字制;
★16级亮度数字控制;
★上电LED全熄;
★提供位闪功能;
★多个PS7219级联可实现任意多的LED显示;
★宽24脚双列直插模块封装。
PS7219引脚图如图1所示。
引脚功能说明见表1。
MAX7219内部结构
如图2所示,MAX7219由六部分组成。
图2PS7219内部组成框图
串行输入缓冲部分
主要功能是与外部控制信号接口,将控制命令串行读入,并进行串并转换,供控制器读取。
图1MAX7219引脚排列
控制器
是整个IC的核心部分。
它先将输入缓冲部分的控制字读入处理,根据其地址值送到相应的控制RAM或数字RAM,同时将数据送入串行同步输出部分,以便在下一个控制字输入周期,将其串行输出。
控制RAM数据RAM
这两部分一起控制LED译码显示部分,实现不同功能及字符的显示。
控制RAM包括:
空操作寄存器,译码模式控制寄存器,亮度控制寄存器,掉电控制寄存器,闪烁控制寄存器,测试控制寄存器和扫描界线寄存器。
数据RAM包括:
数据1—8寄存器。
LED译码显示
根据控制RAM和数据RAM的不同值,来实现相应的显示功能。
内部时钟电路
为控制器提供频率为24MHz的基准时钟,为LED译码显示电路提供频率为1.5kHz的扫描时钟。
使用注意事项
(1)MAX7219上电后,内部RAM清零。
显示前应先将亮度寄存器、译码模式寄存器及数据寄存器赋值。
(2)MAX7219应连接共阴式LED显示器,没有用的LED显示器位选引脚可以悬空不接。
(3)其显示采用扫描方式,使用普通LED亮度可能不足,可选用高亮型号或超高亮型号。
对于尺寸大于0.8英寸的LED,应使用适当的驱动电路。
(4)MAX7219的RST复位端应可靠地接到复位电路上去。
上电复位信号宽度要求大于100ms,典型复位门限为4.65V。
(5)级联时,如果驱动的LED个数不足8的倍数,可把两片驱动器的扫描界线设置为相同的值。
例如,若需11个LED,则两片MAX7219分别联接6和5个,并把两片MAX7219的显示位数都设置为6。
这样,便不会造成两片MAX7219驱动的LED亮度有所差异。
(6)当MAX7219级联个数大于8个时,需要增加CLK、LOAD信号的驱动能力。
可选用如SN74HC245类似的驱动IC。
其具体做法见下面将要举的一实例。
应用举例
单片应用单片MAX7219驱动8位LED的原理图如图3所示。
图3MAX7219的单片应用
级联应用这里介绍一个149片MAX7219级联的应用实例,如图4所示。
图4级联应用时的电原理图
本例为金融系统的壁挂式利率表,其显示的信号主要有日期和时间、存款利率及外汇兑换比率等。
人机交换采用遥控方式。
这个系统在硬件方面考虑了如下几个问题。
(1)电源功率
每个MAX7219的平均功率为0.75W。
系统总功率P总=149×0.75≈112W。
考虑安全裕量问题,电源总设计功率为P=200W。
(2)由于149片MAX7219芯片不是配置在一块印制板,而是配置在多块板上,每块印制板上配置6~7片MAX7219,在相邻印制板的连接上,就应考虑CLK、LOAD、DIN的信号线不宜过长,否则通讯因受外界干扰过大而出现乱码现象。
(3)RST端复位信号可连接在一起,复位信号可用专用复位芯片如IMP810L、MAX810L等控制,这里选用IMP810L。
(4)LOAD、CLK信号的驱动,采用SN74AHC244,应保证244的每根输出引脚的连接少于8个CMOS输入端。
1.5.数码管
数码管是一种半导体发光器件,其基本单元是发光二极管。
数码管是一类显示屏通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数。
器材如下图:
1.6变压器
用来改变交流电压,这是它名称的由来;
变压器在改变电压的同时,不改变功率(不考虑损耗时),所以在电压改变时必然使电流改变,也即改变了阻抗。
所以在电子技术上,变压器用来作阻抗匹配用。
放大器的级间耦合,除了阻容耦合、直接耦合外,还有变压器耦合,既能改变阻抗,又能隔除直流。
只是变压器的体积大,频率特性差,现在用得很少。
在振荡电路中,除了阻容、阻容移相振荡器外,更多应用的是变压器耦合振荡电路。
这里变压器除了完成耦合以外,初级线圈的电感与外接电容器构成具有选频作用的谐振回路。
1.7波段开关
电路的一种接插元件。
用来转换波段或选接不同电路。
可按规格,以刀数、位数和绝缘片层数来分;按结构则分拨动式、旋转式、推键式、琴键式等。
2.2主要设计思想
接过课题时,我们小组经过讨论,有如下几个不同方案:
1.使用文氏电桥产生正弦波,经过过零比较器产生方波,最后再经过积分器产生三角波。
2.使用多谐振荡器产生方波,经过积分器产生三角波,再经过两次积分产生类似正弦波的波形。
3.使用DDS(直接数字合成),用数字方法合成需要的各种波形。
4.使用单片机(STC89C52RC)控制DDS芯片(AD9850),产生需要的波形。
经过反复斟酌,小组一致认为,由于方案一和方案二是由简单模拟电路构成,有频率不能太高,容易产生干扰,正弦波波形有较大失真等缺点,首先舍弃。
再者由于DDS直接数字合成过于繁琐,故最后选用方案四:
使用使用单片机(STC89C52RC)控制DDS芯片(AD9850)。
3.电路基本设计
3.18051单片机系列芯片STC89C52RC有4组8位共32个IO口,最高时钟频率为12MHz,本次设计中采用其中4个IO口与DDS芯片AD9850通信,4个接受独立按键的输入信号。
3个与数码管显示芯片MAX7219进行通信。
一组8位IO口控制位LED的点亮,一组8位IO口控制继电器。
调幅电路的选择:
我们选择增益可变的反相放大器进行调幅处理,由于课程要求比较高,所以我们选用美国Maxim公司的LM318单运放做此次设计中的放大器。
三角波产生电路的选择:
采用运算放大器做成积分器的形式对AD9850输出的方波信号进行处理产生三角波。
由于积分器输出的峰峰值与积分器选用的RC时间常数有关,经过反复实验,得出最佳时间常数RC=1/4T,T为方波周期。
由于频率跨度有几个数量级,故我们采用单片机控制继电器连接不同电容的形式进行频率的粗匹配,用一个可调电阻进行频率的细匹配。
电源选择:
由于我们设计的是一个完善的函数信号发生器系统,所以我们不打算采用实验室提供的直流电源。
而我们采用了变压器+稳压电路的设计,可以直接采取市电经过处理以后供电。
分工:
范俊杰:
组长,总设计,安排调度组员,单片机程序,后期调试。
熊康明:
原料采购,电路优化,后期调试。
周阳:
计算参数,电源部分焊接与调试。
王媛:
计算参数,数码管显示部分焊接与调试。
胡鹤:
计算参数,模拟电路部分焊接与调试。
总结与体会
本次课程设计的内容为利用51单片机STC89C52RC控制AD9850DDS芯片制作一个可输出正弦波、方波、三角波等等波形的信号发生器,用示波器输出波形,用了一个寒假的时间基本完成了本次实训。
在课程设计中,我们5人分工明确,每个人负责完成各自任务,然后共同研究硬件线路的连接。
每个人在设计过程中都遇到了不同程度的问题,然后通过讨论,查阅资料和请教老师,各个难点都基本得到了解决。
在调试过程中,我们采纳了老师的建议,将各个子程序分别调试,通过许多次的调试和修改,不断的修改和完善各个分支,最后将分支整合,组成一个完整的程序。
尽管失败是一次又一次,但是我们没有气馁,一步一个脚印的去发现问题,解决问题,在摸索中不断进步。
这次设计是一次团队合作的生动体现,每个人都充分发挥他们的擅长之处,有的程序的编写,有的擅长硬件的连接,有的擅长报告的归纳、总结,总的来说这次设计让我们团队中的每个成员都得到了充分的锻炼,每个人在这个过程中都复习了以前所学的知识并且学到了新的知识,能力都得到不同程度的提高,可以说这是一次检验我们在大学中学习和运用知识的很好机会。
为我们以后的学习和工作打下了一个良好的基础。
当然在编写程序的过程中,我们也清醒的认识到自己的编程能力都有待提高,许多基本指令都不能够熟练运用,整体编程思想不够清晰。
这些不足都需要我们在平时的学习过程中去弥补,通过对基本知识的学习和掌握,以及要勤于练习勤于编程,只有这样才能够去顺利完成一个程序的编写,所谓熟能生巧。
缺陷分析
在调试过程中,我们发现输出的波形有不稳定的情况,仔细分析研究后发现,是因为电源模块的电压不够稳定导致的此原因,更换进口的电源芯片或者利用开关电源供电可以解决这个问题。
三角波输出模块我们使用积分器,同时用一个可调电阻和7路继电器和电容控制积分器的RC时间常数,使三角波的失真降到最小。
可是由于继电器质量良莠不齐,以及电容的容量有误差,使三角波电路不是能够很好的正常工作,更换良好的继电器就可以解决这个问题。
电源模块的散热片比较烫,因为整个电路工作在比较大的功率状态,而散热片散热功率不够大,更换更大的散热片可以解决这个问题。
材料清单,电路图,源程序见附录。
附录一:
材料清单
项目
数量
单价
总价
AD9850模块
1个
30元
30元
芯片STC89C52RC
1个
10元
10元
芯片MAX7219
1个
5元
5元
耐高温导线
10米
0.1元/米
10元
按键
10个
0.1元
1元
晶振12MHz
1个
1元
1元
瓷片电容30PF
2个
0.1元
0.2元
瓷片电容10PF
1个
0.1元
0.1元
瓷片电容100PF
1个
0.1元
0.1元
瓷片电容1NF
1个
0.1元
0.1元
独式电容10NF
1个
0.2元
0.2元
CBB电容100NF
1个
0.2元
0.2元
CBB电容1UF
1个
02元
0.2元
电解电容10UF
1个
0.5元
0.5元
继电器
7个
2元
14元
波段开关
1个
10元
10元
排线
100根
0.2元
20元
排针40Pin
5组
2元
10元
弯排针40Pin
1组
2元
2元
排座40Pin
5组
2元
10元
杜邦接头
100个
0.05元
5元
航空插座
1套
5元
5元
电源变压器双15V30W
1个
30元
30元
7805
1个
2元
2元
7812
1个
2元
2元
7905
1个
2元
2元
7912
1个
2元
2元
整流桥
1个
3元
3元
大号TO-220散热片
1个
5元
5元
TO-220散热片
2个
1元
2元
自锁开关
5个
1元
5元
电解电容100UF
6个
0.5元
3元
电解电容470UF
5个
1元
5元
3mmLED
20个
0.3元
6元
三极管S8550
10个
0.5元
5元
数码管
8个
2元
16元
电位器10K
2个
2元
4元
电位器50K
1个
2元
2元
运放LM318
5个
5元
25元
IC座X8
5个
0.2元
1元
IC座X40
1个
2元
2元
IC座X24
1个
1元
1元
50x3mm铜柱
10根
1元
10元
20x2mm铜柱
10根
0.5元
5元
洞洞板13x25cm
1块
25元
25元
小号洞洞板
若干
10元
二极管
若干
1元
电阻
若干
1元
焊锡
1卷
30元
30元
共计:
339.4元。
附录二:
电路图
附录三:
源程序
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
//MAX7219部分***************************************************
sbitMax7219_pinCLK=P3^2;
sbitMax7219_pinCS=P3^1;
sbitMax7219_pinDIN=P3^0;
voiddelay(uintx){
uinti,j;
for(i=0;ifor(j=0;j<112;j++);
}
voidWrite_Max7219_byte(ucharDATA){
uchari;
Max7219_pinCS=0;
for(i=8;i>=1;i--)
{
Max7219_pinCLK=0;
Max7219_pinDIN=DATA&0x80;
DATA=DATA<<1;
Max7219_pinCLK=1;
}
}
voidWrite_Max7219(ucharaddress,uchardat){
Max7219_pinCS=0;
Write_Max7219_byte(address);//写入地址,即数码管编号
Write_Max7219_byte(dat);//写入数据,即数码管显示数字
Max7219_pinCS=1;
}
voidInit_MAX7219(void){
Write_Max7219(0x09,0xff);//译码方式:
BCD码
Write_Max7219(0x0a,0x03);//亮度
Write_Max7219(0x0b,0x07);//扫描界限;4个数码管显示
Write_Max7219(0x0c,0x01);//掉电模式:
0,普通模式:
1
Write_Max7219(0x0f,0x01);//显示测试:
1;测试结束,正常显示:
0
}
//max7219写数据
//Init_MAX7219();
//Delay_xms(500);
//Write_Max7219(0x0f,0x00);
//MAX7219部分结束**********************************************//
//AD9850部分***************************************************//
sbitad9850_w_clk=P1^4;
sbitad9850_fq_up=P1^5;
sbitad9850_rest=P1^7;
sbitad9850_bit_data=P1^6;
//ad9850复位(串口模式)
voidad9850_reset(){
ad9850_w_clk=0;
ad9850_fq_up=0;
//rest信号
ad9850_rest=0;
ad9850_rest=1;
ad