ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:395.09KB ,
资源ID:7770399      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7770399.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(系统初始频率为50Hz.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

系统初始频率为50Hz.docx

1、系统初始频率为50Hz目 录摘 要 IAbstract II1、总体设计原理 12.硬件芯片 22.1 控制芯片AT89C51 22.2 数模转换芯片DAC0832 42.21 DAC0832简介 42.22 DAC0832的结构 42.23 DAC0832的三种工作方式 53系统电路设计与分析 73.1基本原理 73.2程序框图 74源程序 85电路图及仿真结果图 125.1电路图 125.2仿真结果图 136.心得体会 15参考文献 16摘 要本课程设计是为了实现频率可控的正弦波信号发生器。本课设采用AT89C51为控制核心,设计了一个低频函数信号发生器。信号发生器采用数字波形合成技术,通

2、过硬件电路和软件程序相结合,可输出正弦波,波形的频率和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。这里采取256个点,运用DAC0832实行数模转换加以末级采用高精度放大器实现完美的波形输出。本文介绍了波形的生成原理、硬件电路和软件部分的设计原理。本系统可以产生最高频率50HZ的波形。该信号发生器具有体积小、价格低、性能稳定、功能齐全的优点。这在平时自己研究中也可以自制,对于自己的能力提高有很大的帮助,理解一些频率变换实验更加直观。关键字:频率;正弦波;发生器 AbstractThis course is designed to achieve the s

3、ine wave frequency controllable signal generator. Let the lesson using AT89C51 to control the core, the design of a low-frequency signal generator function. Signal generator using digital waveform synthesis technology, through a combination of hardware and software programs, sine wave output, freque

4、ncy and amplitude of the waveform within a certain range can be arbitrarily changed. Change the waveform and frequency controlled by software, by changing the amplitude of the hardware implementation. Here take 256 points, using DAC0832 digital-analog converter to implement the final stage amplifier

5、 with high precision to achieve the perfect wave output. This paper introduces the principle of waveform generation, hardware and software design principles section. This system can produce the highest frequency 50HZ waveform. The signal generator has a small size, low price, stable performance, ful

6、ly functional advantages. This can also be made in the usual own research, for their ability to improve a great help to understand some of the more intuitive frequency conversion experiments.Keywords: frequency; sine wave; generator1、总体设计原理为实现频率可控的正弦波,而kile软件本身不具有SIN函数直接出现正弦波,为此将正弦波在理论上进行采样,当每个点的间隔很

7、小的时候可以近似为连续的函数,这就需要利用芯片DAC0832进行实现。DAC0832可以实现数模转换,在外面加上电流电压转换电路出现电压幅值。在此基础上采用AT89C51进行控制,它进行数据输出控制还有显示控制,并且接受频率加减控制。系统初始频率为50Hz,变频采用“”、“”键控制,当按下“+”键是正弦波的频率自动加1输出,当按下“”时,正弦波频率自动减一输出,用电压表进行波形测量,用液晶屏LCD1602进行显示具体的频率值 2.硬件芯片2.1 控制芯片AT89C51AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器(PE

8、ROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元。图1 AT89C51管脚图AT89C52结构介绍:P0口:P0口是一组8位漏极开路型双向IO口,也即地址数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在FIash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验

9、时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻的8位双向IO口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。FIash编程和程序校验期间,P1接收低8位地址。P2口:P2是一个带有内部上拉电阻的8位双向IO口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(

10、IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVXRI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。Flash编程或校验时,P2亦接收高位地址和其它控制信号。P3口:P3口是一组带有内部上拉电阻的8位双向IO口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的IO口线外

11、,更重要的用途是它的第二功能,如下表所示:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALEPROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振

12、荡频率的l6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的DO位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序储存允许输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现。EAVPP:外部访问允许。欲使CPU仅

13、访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。2.2 数模转换芯片DAC08322.21 DAC0832简介DAC转换器是一种将数字量转换成模拟量的器件,其特点是接收、保持和转换的是数字信息,不存在随温度和时间的漂移问题,因此电路

14、的抗干扰性能较好。DAC0832是8位分辨率的D/A转换集成芯片,它具有价格低廉、接口简单及转换控制容易等特点。它由8位输入锁存器、8位DAC寄存器、8位DIA转换电路及转换控制电路组成,能和CPU数据总线直接相连,属中速转换器,大约在1us内将一个数字量转换成模拟量输出。2.22 DAC0832的结构D0D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);ILE:数据锁存允许控制信号输入线,高电平有效;CS:片选信号输入线(选通数据锁存器),低电平有效;WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE

15、1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR1、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化;IOUT2:电流输出端2,其值与IOUT1值之和为一常数;Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;Vcc:

16、电源输入端,Vcc的范围为+5V+15V;VREF:基准电压输入线,VREF的范围为-10V+10V;AGND:模拟信号地DGND:数字信号地 图2 DAC0832管脚图和内部逻辑图2.23 DAC0832的三种工作方式1直通方式直通方式就是使DAC0832内部的两个寄存器(输入寄存器和DAC寄存器)处于不锁存状态,数据一旦到达输入端DI7DI0,就直接送入D/A转换器,被转换成模拟量。当ILE为高电平,CS和WR1WR2和XFER端都接数字地,这时锁存信号LE1LE2均为高电平,输入寄存器和DAC寄存器均处于不锁存状态,即直通方式。2单缓冲方式2. 单缓冲方式单缓冲方式就是使两个寄存器中的一

17、个处于缓冲方式,另一个处于锁存方式,数据只通过一级缓冲器送入D/A转换器。通常的做法是将和XFER均接地,使DAC寄存器处于直通方式,而把ILE接高电平,接端口地址译码信号,WR1接CPU系统总线的IOW信号,使输入寄存器处于锁存方式。单缓冲方式只需执行一次写操作即可完成D/A转换。一般不需要多个模拟量同时输出时,可采用单缓冲方式。3双缓冲方式双缓冲方式就是使两个寄存器均处于锁存方式,数据要经过两级锁存(即两级缓冲)后再送入D/A转换器,这就是说,要执行两次写操作才能完成一次D/A转换。只要将ILE接高电平,WR1和WR2接CPU的IOW,CS和XFER分别接两个不同的I/O地址译码信号即可。

18、图中的Rfb是内部电阻,是为外部运算放大器提供的反馈电阻,用以提供适当的输出电压,Vref端是由外电路为芯片提供的参考电源,电压范围在-10V+10V。另外,DAC0832为电流输出型DAC,使用时需外接运算放大器,芯片的电源电压最好工作在+15V。3系统电路设计与分析3.1基本原理本次实验采用DC0832芯片的但缓冲方式,正弦波信号的产生用循环语句进行连续产生,进而近似得到模拟型。对于正弦信号,为确定每一个点的幅值,因为DAC0832芯片输出为8位,总共可以取256个值,因此将一个周期的正弦信号分为256份,取256个值,这样可以保证一定的精确度。正弦波幅值的计算公式如下:A=B*sin(I

19、*/255)(I从0取到255)正弦波的幅度主要采用由主AT89C51控制D/A转换的参考电压来控制,正弦波频率的变化由改变输出点之间的延时来实现。判断是否有加减频率要求时,判断P1口的数据,当P1口低四位为“1111”时,表示没有中断请求,当低四位为“1011”时,表示加频率的请求,程序进入加频率的中断;当低四位为“1101”时,表示减频率的请求,程序进入减频率的中断。因为AT89C51中断是低电平触发,所以可以用与门电路实现控制,当按键按下时与门输出为低电平触动触发。减价频率均以1HZ为步进3.2程序框图4源程序#include#define uchar unsigned char#def

20、ine uint unsigned int/#define Fosc 24000000/12000000 /12分频后的频率sbit DA_S1= P20; / 控制DAC0832的8位输入寄存器,仅当都为0时,可以输出数据(处于直通状态),否则,输出将被锁存sbit DA_S2= P21; / 控制DAC0832的8位DAC寄存器,仅当都为0时,可以输出数据(处于直通状态),否则,输出将被锁存sbit key= P32;/uint T_temp;uchar code lcd_hang1=Sine Wave ;uchar idata lcd_hang216=f= Hz ;uint a=0;ui

21、nt total_freq=50;uchar code sine_tab256= /输出电压从0到最大值(正弦波1/4部分) 0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc, 0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec, 0xee,0xef,0xf1,0xf2,0xf4,

22、0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, /输出电压从最大值到0(正弦波1/4部分) 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef, 0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0

23、xca,0xc7,0xc5,0xc2, 0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80, /输出电压从0到最小值(正弦波1/4部分) 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43, 0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,

24、0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13, 0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, /输出电压从最小值到0(正弦波1/4部分) 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e

25、,0x10, 0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d, 0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80; void delay(uchar z) /延迟 uint x; for(x=z;x0;x-);/*1602液晶的相关函数*/#define lcd_

26、ports P1sbit rs=P22;sbit rw=P23;sbit lcden=P24;void write_com(uchar com) rs=0; /置零,表示写指令 lcden=0; lcd_ports=com; delay(5); lcden=1; delay(5); lcden=0; void write_date(uchar date) rs=1; /置1,表示写数据(在指令所指的地方写数据) lcden=0; lcd_ports=date; delay(5); lcden=1; delay(5); lcden=0; void disp_lcd(uchar addr,ucha

27、r *temp1) uchar num; write_com(addr); delay(1); /延时一会儿? for(num=0;num16;num+) write_date(temp1num);/或者这样写write_date(*(temp1+num); delay(1); void init_lcd() /uchar num; lcden=0; /可有可无? rw=0; /初始化一定要设置为零,表示写数据 write_com(0x38); /使液晶显示点阵,为下面做准备 write_com(0x0c); /初始设置 write_com(0x06); /初始设置 write_com(0x0

28、1); /清零 write_com(0x80); /使指针指向第一行第一格 disp_lcd(0x80,&lcd_hang13*16); /在第一行显示 disp_lcd(0xc0,&lcd_hang14*16); /在第二行显示 /*for(num=0;num16;num+) write_date(tablenum); delay(5); write_com(0x80+0x40); /给指针重新赋值,使之指向第二行第一格 for(num=0;num16;num+) write_date(table1num); delay(5); */ /*TMOD=0x01; /选用定时方式1 TH0=(6

29、5536-50000)/256; /赋初值 TL0=(65536-50000)%256; / EA=1; /开总中断 ET0=1; /开定时器中断 TR0=1; /启动定时器*/ /*1602液晶函数声明结束*/void key_int0() interrupt 0 /中断 uchar keytemp; uint total_freq; /总频率 EA=0; TR0=0; /关总中断与定时器 delay(5); /延时够吗? if(key=0) /确实有按键按下而引发中断 keytemp=P1&0x0f; /获取P1口低四位的值 switch(keytemp) case 0x0d: /加频率

30、a+; total_freq+; break; case 0x0b: /减频率 a-;total_freq-; break; while(!key); EA=1; TR0=1; /开启总中断与定时器void main() uchar i=0; DA_S2=0; /使DAC寄存器处于直通状态 DAdata=0; DA_S1=1; /关闭8位输入寄存器 init_lcd(); IT0=1; /设置外部中断0为下降沿触发 ET0=1; /开定时器中断 EX0=1; EA=1; while(1) DA_S1=0; /打开8位输入寄存器 DA_S1=1; /关闭8位输入寄存器 for(i=0;i256;i+)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1