proteus仿真的波形发生器Word格式文档下载.docx
- 文档编号:20196933
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:18
- 大小:730.83KB
proteus仿真的波形发生器Word格式文档下载.docx
《proteus仿真的波形发生器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《proteus仿真的波形发生器Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
但总的来说,我国任意波形发生器还没有形成真正的产业。
就目前国的成熟产品来看,多为一些PC仪器插口,独立的仪器和VX工系统的模块很少,并且我国目前在任意波形发生器的种类和性能都与国外同类产品存在较大的差距,因此加紧对这类产品的研制显得迫在眉睫。
见于这种情况下,本文实现了多功能波形发生器的设计。
系统采用AT89C51单片机,DAC0832完成模数转换,键盘控制波形的频率、幅度。
系统产生三角波、方波、正弦波等波形,波形的频率可通过键盘控制,波形清晰、频率调整十分方便、稳定性好,产生较复杂的波形只需修改源程序,不需改装电路。
将单片机的输出数字信号通过DAC0832转换成模拟信号,接入示波器就可以清晰的显示出系统产生的波形。
本系统具有线路简单、结构紧凑、价格低廉、性能优越等特点。
2Proteus的简介的简介2.1Proteus界面界面进入ProteusISIS双击桌面上的ISIS6Professional图标或者单击屏幕左下方的“开始”“程序”“Proteus6Professional”“ISIS6Professional”。
ProteusISIS的工作界面是一种标准的Windows界面,如图2.1所示。
包括:
标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
图2.1Proteus工作界面2.2基本操作基本操作图形编辑的基本操作包括:
1对象放置2.选中对象3.删除对象4.拖动对象5.拖动对象标签6.调整对象大小7.调整对象的朝向8.拷贝所有选中的对象9.移动所有选中的对象10.删除所有选中的对象2.3原理图的绘制原理图的绘制原理图绘制可按照如下步骤进行1.画导线2.画总线3.画总线分支线4.放置总线将各总线分支连接起来5.跳线6.放置线路节点3单片机单片机AT89C51概述概述开发环境连接了AT89C51。
本文讨论了这种测试环境的设计和原理,它的和各种硬件、软件环境部件的交互性,以及如何使用AT89C51。
AT89C51单片机的功能参数8031CPU与MCS-51兼容4K字节可编程FLASH存储器全静态工作:
0Hz-24KHz三级程序存储器锁定128*8位部RAM32条可编程I/O线两个16位定时器/计数器6个中断源可编程串行通道低功耗的闲置和掉电模式片振荡器和时钟电路单片机引脚图说明如图3.1。
图3.1AT89C51引脚图Vcc:
电源电压;
GND:
地;
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活部上拉电阻;
P1口:
P1是一个带部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过部的上拉电阻把端口拉到高电平,此时可作输入口。
作为输入口使用时,因为部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
Flash编程和程序校验期间,P1接受低8位地址;
P2口:
P2是一个带有部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
在访问外部程序存储器或16位四肢的外部数据存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据;
P3口:
P3是一个带有部上拉电阻的8位双向I/O口,P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
作为输入口使用时,因为部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL);
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位;
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是,每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG);
PSEN:
程序存储允许输出是外部程序存储器的读选通型号,当89C51由外部存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现;
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12v的编程允许电源Vpp,当然这必须是该器件使用12v编程电压VppXTAL1:
振荡器反相放大器及部时钟发生器的输入端;
XTAL2:
振荡器反相放大器的输出端。
89C51中有一个用于构成部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或瓷谐振器一起构成自激振荡器,振荡电路参见图5。
外接石英晶体或瓷谐振器及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对电容C1、C2虽没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性,如果使用石英晶体,我们推荐电容使用30Pf10Pf,而如使用瓷谐振器建议选择40Pf10Pf。
用户也可以采用外部时钟。
这种情况下,外部时钟脉冲接到XTAL1端,即部时钟发生器的输入端XTAL2则悬空。
4总体设计总体设计波形的产生是通过AT89C51执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。
在AT89C51的P1口接3个按扭,通过软件编程来选择各种波形和频率。
此方案的有点是电路原理比较简单,实现起来比较容易。
缺点是,采样频率由单片机部产生故使整个系统的频率降低。
4.1单片机电路单片机电路AT89C51外接12M晶振作为时钟频率。
并采用电源复位设计。
复位电路采用上电复位,它的工作原理是,通电时,电容两端相当于短路,于是RST引脚上为高电平,然后电源通过对电容充电。
RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始工作。
AT89C51的P0口做为D/A转换芯片0832的接口。
用定时/计数器作为中断源。
不同的频率值对应不同的定时初值,允许定时器溢出中断。
定时器中断的特殊功能寄存器设置如下:
定时控制寄存器TCON20H;
工作方式选择寄存器TMOD=01H;
中断允许控制寄存器IE=82H。
AT89C51单片机原理接口如图3.2。
图3.2单片机电路图4.2D/A电路及接口电路及接口功能:
将波形样值的编码转换成模拟值,完成双极性的波形输出。
DAC0832是一个具有两个输入数据寄存器的8位DAC。
目前生产的DAC芯片分为两类,一类芯片部设置有数据寄存器,不需要外加电路就可以直接与微型计算机接口。
另一类芯片部没有数据寄存器,输出信号随数据输入线的状态变化而变化,因此不能直接与微型计算机接口,必须通过并行接口与微型计算机接口。
DAC0832是具有20条引线的双列直插式CMOS器件,它部具有两级数据寄存器,完成8位电流D/A转换,故不需要外加电路。
单片机向0832发送数字编码,产生不同的输出。
先利用采样定理对各波形进行抽样,然后把各采样值进行编码,的到的数字量存入各个波形表,执行程序时通过查表方法依次取出,经过D/A转换后输出就可以得到波形。
假如N个点构成波形的一个周期,则0832输出N个样值点后,样值点形成运动轨迹,即一个周期。
重复输出N个点,成为第二个周期。
利用单片机的晶振控制输出周期的速度,也就是控制了输出的波形的频率。
这样就控制了输出的波形及其幅值和频率。
D/A转换电路原理如图3.3。
图3.3D/A电路图4.3系统软件设计系统软件设计软件系统由按键、单片机、D/A转换、放大电路等模块组成。
波形的产生是通过AT89C51执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形,再通过放大器放大即可得到相应的波形。
程序流程框图如图3.4和图3.5。
图3.4主程序流程图图3.5定时器中断服务程序系统主程序#include/unsignedcharTIME0_H=0xec,TIME0_L=0x78;
/定时器0的初值设置;
全局变量#include#includevoidmain()TMOD=0X01;
TH0=0xff;
TL0=0xd9;
IT0=1;
/设置中断触发方式,下降沿EA=1;
EX0=1;
ET0=1;
IP=0X01;
/键盘中断级别高TR0=1;
while
(1)/square();
#ifndef_0832_h_#define_0832_h_unsignedchari,sqar_num=128;
/最大值100,默认值50unsignedcharcho=0;
/0:
正弦波。
1:
方波。
2:
三角波unsignedcharnum=0;
unsignedcharTIME0_H=0xff,TIME0_L=0xd9;
全局变量.对应正弦波(50HZ)sbitchg=P10;
/三角波100Hz.sbitfreq_u=P11;
sbitfreq_d=P12;
sbitcs=P37;
bitflag=0;
unsignedintFREQ=50;
/初始化频率,50HZ/调节部分频率voidfreq_ud(void)unsignedinttemp;
if(freq_d=0)FREQ=FREQ-5;
if(FREQ=0)FREQ=100;
elseif(freq_u=0)FREQ=FREQ+5;
if(FREQ=100)FREQ=5;
if(cho=1)temp=0xffff-3906/FREQ;
/方波默认为100hz,切换后频率也为50HZ65336-106/(256*FREQ)TIME0_H=temp/256;
TIME0_L=temp%256;
elseif(cho=0|cho=2)/正弦波三角波默认周期50hz65536-106/(512*FREQ)temp=0xffff-1953/FREQ;
TIME0_H=temp/256;
/波形发生函数voidsint(void)if(!
flag)cs=0;
P2=sin_numnum+;
cs=1;
if(num=0)num=255;
flag=1;
elseif(flag)cs=0;
P2=sin_numnum-;
if(num=255)num=0;
flag=0;
voidsquare(void)if(i+sqar_num)cs=0;
P2=0XFF;
elsecs=0;
P2=0X00;
voidstw(void)if(flag)cs=0;
P2=num+;
P2=num-;
if(num=255)num=1;
/按键中断处理程序。
voidit0()interrupt0if(chg=0)if(+cho=3)cho=0;
num=0;
/num=0;
所有数据从新开始,保证波形的完整性elseif(freq_u=0|freq_d=0)freq_ud();
else;
/定时器中断处理程序。
voidintt0()interrupt1switch(cho)case0:
TH0=TIME0_H;
TL0=TIME0_L;
sint();
break;
/正弦波case1:
square();
/方波case2:
stw();
/三角波default:
;
#endif/正弦表;
每半个周期256个取值,最大限度保证波形不失真。
/各个值通过MATLAB算出,并四设五如取整。
具体程序如下#ifndef_sinx_h_#define_sinx_h_unsignedcharcodesin_num=0,0,0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,4,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,22,23,24,25,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,44,45,46,47,49,50,51,52,54,55,56,57,59,60,61,63,64,66,67,68,70,71,73,74,75,77,78,80,81,83,84,86,87,89,90,92,93,95,96,98,99,101,102,104,106,107,109,110,112,113,115,116,118,120,121,123,124,126,128,129,131,132,134,135,137,139,140,142,143,145,146,148,149,151,153,154,156,157,159,160,162,163,165,166,168,169,171,172,174,175,177,178,180,181,182,184,185,187,188,189,191,192,194,195,196,198,199,200,201,203,204,205,206,208,209,210,211,213,214,215,216,217,218,219,220,221,223,224,225,226,227,228,229,230,230,231,232,233,234,235,236,237,237,238,239,240,240,241,242,243,243,244,245,245,246,246247,247,248,248,249,249,250,250,251,251,251,252,252,253,253,253,253,254,254,254,254,254,255,255,255255,255,255,255,255,255;
#endif5系统模拟调试系统模拟调试选中单片机AT89C51,左键点击AT89C51,在出现的对话框里点击ProgramFile按钮,找到刚才编译得到的HEX文件,然后点击“OK”按钮就可以模拟了。
点击模拟调试按钮的运行按钮,进人调试状态。
点击按键“切换波形”,在示波器上可以显示正弦波、方波和三角波;
点击按键“频率升高”会看到波形的频率变大;
点击按键“频率降低”波形的频率也相应减小。
在观察波形过程之中可能会发现波形失真,这时可以调节示波器的幅度、频率、通道等功能,使波形清晰效果最好。
5.1仿真结果仿真结果正弦波图5.1正弦波方波图5.2方波三角波图5.3三角波周期变换后的波形图5.4周期变换后的正弦波图5.5周期变换后的方波图5.6周期变换后的方波5.2结果分析结果分析经过长时间的研究,终于完成了预定的设计任务。
完成了仿真的测试,输出波形稳定。
可输出步进为10Hz,频率围1KHz10MHz的正弦波、三角波、方波。
本设计成果及收获如下:
具有产生正弦波、方波、三角波三种周期性波形的功能。
输出波形的频率围为100HZ1KHZ,频率可调,频率步进间隔为100HZ。
完成了波形发生器单片机控制系统的软件设计。
掌握了电子系统设计的流程,熟悉了各种硬件电路以及软件编程方法。
掌握了仿真软件由于本设计还涉及到功放以及软件编程等众多知识领域及本人在相关领域知识的缺乏,所以,出现幅值不稳定,输出波形失真。
使用运算放大器将频率放大到需要的幅值并稳定,后续工作就是进一步采取稳幅措施,使波形稳定可靠,失真小。
调节示波器就可以改变信号频率,调节电位器可改变信号幅值。
心得体会心得体会通过这次设计,自己在很多方面都有很大的收获,使我学会了怎么把各科知识综合应用,养成了对问题细致思考的习惯,同时对所学的知识也有了更深一步的巩固和升华。
在系统的设计过程中体会到知识要学以致用的深刻道理,也加深了对单片机和一些基本电路知识的了解。
在这次设计过程中,由于先前对知识的掌握程度不够全面,遇到了诸多的问题和疑点,不过在导师和同学的帮助下,通过自己的努力成功解决了问题。
在此特别感导师的细心指导和帮助,在设计过程中为我提供了有力的指导和帮助。
他对本设计的思路和许多地方给予了我深入的指导,使得设计和论文得以顺利完成。
同时也感我的同学在这次设计中给予我的建议和帮助,在论文撰写过程中,提供了许多宝贵的思路和建议及相关文献资料。
真诚向各位老师致敬,非常感各位老师四年以来对我的精心培养和帮助,让我在学校不仅学到文化知识也让我深刻理解学习的重要性。
再次对所有支持和帮助过我的老师和同学们表示诚挚的意!
参考文献参考文献1华中科技大学电子技术课程组编,康华光主编,大钦,林副主编.电子技术基础模拟部分.第5版.:
高等教育.,20062清华大学电子学教研组编,阎石主编.数字电子技术基础.第4版.:
高等教育,19983王松武,旦峰,于蕾,王扬编,刁鸣主审.常用电路模块分析与设计指导.:
清华大学,20074傅恩锡主编,四秧副编.电路分析简明教程.:
高等教育,20045王宝祥主编.信号与系统.工业大学,20006林志琦,惠萍编著.信号发生电路原理与实用设计.:
人民邮电,20107周润景,郝晓霞编著.Multisim&
LabVIEW虚拟仪器设计技术.:
航空航天大学,2008
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- proteus 仿真 波形 发生器