基于51单片机函数信号发生器设计_第1页
基于51单片机函数信号发生器设计_第2页
基于51单片机函数信号发生器设计_第3页
基于51单片机函数信号发生器设计_第4页
基于51单片机函数信号发生器设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要 : 本系统 利用单片机 AT89S52 采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过 D/A 转换器 DAC0832 将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来 , 能产 1Hz 3kHz 的波形。 通过键盘来控制三种波形的类型选择、频率变化,并通过 液晶屏 1602 显示其各自的类型以及数值,系统大致包括信号发生部分、数 /模转换部分以及 液晶 显示部分三部分,其中尤其对数 /模转换部分和波形产生和变化部分进行详细论述。 关键词 : 单片机 AT89S52、 DAC0832、 液晶 1602 Abstract: this system capitalize on AT89s52, it makes use of central processor to generate three kinds of waves, they are triangle wave, and use D/A conversion module, wave generate module and liquid crystal display of 1602, it can have the 1Hz-3KHz profile. In this system it can control wave form choosing, frequency, range,can have the sine wave, the square-wave, the triangular wave. Simultaneously may also take the frequency measurement frequency,and displays them through liquid crystal display of 1602. this design includes three modules. They are D/A conversion module, wave generate module and liquid crystal display of LED module. In this design, the wave generator into wave form module and D/A conversion module are discussed in detail. key word: AT89S52, DAC0832, liquid crystal 1602. 目录 1. 系统设计 1.1 设计要求 1.2 方案设计与论证 1.2.1 信号发生电路方案论证 1.2.2 单片机的 选择论证 1.2.3 显示方案论证 1.2.4 键盘方案论证 1.3 总体 系统设计 1.4 硬件实现及单元电路设计 1.4.1 单片机最小系统的设计 1.4.2 波形产生模块设计 1.4.3 显示模块的设计 1.4.4 键盘模块的设计 1.5 软件设计流程 1.6 源程序 2. 输出波形的种类与频率的测试 2.1 测试 仪器 及测试说明 2.2 测试 结果 3. 设计心的及体会 4. 附录 4.1 参考文献 4.2 附图 1、 系统设计 经过考虑,我们确定方案如下: 利用 AT89S52 单片机采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过 D/A 转换器 DAC0832 将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来 , 通过键盘来控制三种波形的类型选择、频率变化, 最终输出显示其各自的类型以及数值。 1.1、 设计要求 1)、利用单片机采用软件设计方法产生三种波形 2)、三种波形可 通过键盘 选择 3)、波形频率可调 4)、需显示 波形 的种类 及其平率 1.2 方案设计与论证 1.2.1 信号发生电路方案论证 方案一:通过单片机控制 D/A,输出三种波形。此方案输出的波形不够稳定,抗干扰能力弱,不易调节。 但此方案电路简单、成本低。 方案二:使用传统的锁相频率合成方法。通过芯片 IC145152,压控振 荡器 搭接的锁相环电路输出稳定性极好的正弦波,再利用过零 比较器 转换成方波,积分电路转换成三角波。此方案,电路复杂,干扰因素多,不易实现。 方案三:利用 MAX038 芯片组成的电路输 出波形。 MAX038 是精密高频波形产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形。 但此方案成本高,程序复杂度高。 以上三种方案综合考虑,选择方案 一 。 1.2.2 单片机的选择论证 方案一: AT89S52 单片机是一种高性能 8 位单片微型计算机。它把构成计算机的中央 处理器 CPU、存储器、寄存器、 I/O 接口制作在一块集成电路芯片中,从而构成较为完整的计算机 、而且其价格便宜。 方案二: C8051F005 单片机是完全集成的 混合信号 系统级芯片,具有与8051 兼容的微 控制器 内核,与 MCS-51 指令 集完全兼容。除了具有标准 8052 的数字外设部件,片内还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,而且执行速度快。 但其价格较贵 以上两种方案综合考虑,选择方案 一 1.2.3 显示方案论证 方案一:采用 LED 数码管。 LED 数码管由 8 个发光二极管组成,每只数码管轮流显示各自的字符。由于人眼具有视觉暂留特性,当每只数码管显示的时间间隔小于 1/16s 时人眼感觉不到闪动,看到的是每只数码管常亮。使用数码管显示编程较易, 但要显示内容多,而且数码管不能显示字母 。 方案二:采用 LCD 液晶显示器 1602。 其 功率小,效果明显, 显示编程容易控制,可以显示字母 。 以上两种方案综合考虑,选择方案 二 。 1.2.4 键盘方案论证 方案一:矩阵式键盘。矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处。当键盘上没有键闭合时,所有的行和列线都断开,行线都呈高电平。当某一个键闭合时,该键所对应的行线和列线被短路。 方案二:编码式键盘。编码式键盘的按键触点接于 74LS148 芯片。当键盘上没有闭合时,所有键都断开,当某一键闭合时,该键对应的编码由 74LS148输出 。 以上两种方案综合考虑, 选择方案 一 。 1.3 总体系统设计 该系统采用单片机作为数据处理及控制核心,由单片机完成人机界面、系统控制 、信号 的采集分析 以及信号 的处理和变换,采用按键输入,利用 液晶 显示电路输出数字显示的方案。将设计任务分解为按键电路、 液晶 显示电路等模块。图( 1) 为系统的总体框图 图( 1) 总体方框图 1.4 硬件实现及单元电路设计 1.4.1单片机 最小系统的 设计 89C51 是片内有 ROM/EPROM 的单片机,因此,这种芯片构成的最小系统简单可靠。用 80C51 单片机构成最小应用 系统时,只要将单片机接上时钟电路和复位电路即可,如图 ( 2) 89C51 单片机最小系统所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。其应用特点: (1) 有可供用户使用的大量 I/O 口线。 (2) 内部存储器容量有限。 (3) 应用系统开发具有特殊性。 图 ( 2) 89C51 单片机最小系统 1.4.2 波形产生模块设计 由单片机采用编程方法产生三种波形、通过 DA转换模块 DAC0832 在进过滤波放大之后输出。其电路图如下: 图( 3)波形产生电路 如上图所示,单片机 的 P0 口连接 DAC0832 的八位数据输入端, DAC0832 的输出端接放大器,经过放大后输出所要的波形。 DAC0832 的为八位数据并行输入的, 其结构图如下: 图( 4) DAC0832 的内部结构 1.4.3 显示模块的设计 通过液晶 1602 显示输出的波形、频率,其电路图如下: 图( 5)液晶显示 如上图所示, 1602 的八位数据端接单片机的 P1口,其三个使能端 RS、 RW、 E分别接单片机的 P3.2 P3.4。 通过软件控制液晶屏可以显示 波 形 的种类 以及波形的频率。 1.4.4 键盘显示模块的设计 本系统采用独立键盘,其连接电路图如下: 图( 6)键盘 图中键盘独立键盘引出的八跟线分别接单片机的 P2 口,只用其第四列,因此在程序初始化时 P2.7 脚给低电平 。如图开关 3 用来切换输出波形、开关 7和8用来调节频率的加减。当按开关 7时输出波形的频率增加,按开关 8时输出波形的频率减小 。 1.5 软件设计流程 本系统采用 AT89S52 单片机,用编程的方法来产生三种波形,并通过编程 来切换三种波形以及波形频率的改变。 具体功能 有:( 1)各个 波形 的切换;( 2)各种参数的设定;( 3)频率 增减 等。 软件调通后,通过 编程器 下载到 AT89S52 芯片中,然后插到系统中即可独立完成所有的控制。 软件的流程图如下: 图( 7)程序流程图 1.6 源程序 #include #define uchar unsigned char #define uint unsigned int sbit lcdrw=P33; sbit lcdrs=P32; sbit lcde=P34; sbit d=P27; sbit s1=P20; sbit s2=P21; sbit s3=P22; sbit cs=P35; sbit wr=P36; uchar s1num,a,ys,j; uint fre; uchar code tosin256= 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,0xf5, 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,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,0xca,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,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,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, 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05, 0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,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(uint z) /延时子程序 uchar i,j; for(i=z;i0;i-) for(j=110;j0;j-); void delay1(uint y) uint i; for(i=y;i0;i-); void write_com(uchar com) /1602 写指令 lcdrs=0; P1=com; delay(5); lcde=1; delay(5); lcde=0; void write_data(uchar date) /1602 数据 lcdrs=1; P1=date; delay(5); lcde=1; delay(5); lcde=0; void init() /初始化 lcdrw=0; lcde=0; wr=0; cs=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80+0x00); write_data(0x77); /写 wave: write_data(0x61); write_data(0x76); write_data(0x65); write_data(0x3a); write_com(0x80+0x40); /写 f: write_data(0x66); write_data(0x3a); void write_f(uint date) /写频率 uchar qian,bai,shi,ge; qian=date/1000; bai=date/100%10; shi=date/10%10; ge=date%10; write_com(0x80+0x42); write_data(0x30+qian); write_data(0x30+bai); write_data(0x30+shi); write_data(0x30+ge); write_data(0x48); write_data(0x5a); void xsf() /显示频率 if(s1num=1) fre=(1000/(9+3*ys); write_f(fre); if(s1num=2) fre=(100000/(3*ys); write_f(fre); if(s1num=3) fre=(1000/(15+3*ys); write_f(fre); void keyscanf() d=0; if(s1=0) delay(5); if(s1=0) while(!s1); s1num+; if(s1num=1) ys=0; write_com(0x80+0x05); write_data(0x73); /写 sine: write_data(0x69); write_data(0x6e); write_data(0x65); write_data(0x20); write_data(0x20); if(s1num=2) ys=10; write_com(0x80+0x05); write_data(0x73); /写 squrae write_data(0x71); write_data(0x75); write_data(0x61); write_data(0x72); write_data(0x65); if(s1num=3) ys=0; write_com(0x80+0x05); /train write_data(0x74); write_data(0x72); write_data(0x61); write_data(0x69); write_data(0x6e); write_data(0x20); if(s1num=4) s1num=0; P1=0; write_com(0x80+0x05); write_data(0x20); write_data(0x20); write_data(0x20); write_data(0x20); write_data(0x20); write_data(0x20); write_com(0x80+0x42); write_data(0x20); write_data(0x20); write_data(0x20); write_data(0x20); write_data(0x20); write_data(0x20); if(s2=0) delay(5); if(s2=0) while(!s2); ys+; if(s3=0) delay(5); if(s3=0) while(!s3); ys-; void main() init(); while(1) keyscanf(); if(s1num=1) /正弦波 / for(j=0;j255;j+) P0=tosinj; delay1(ys); if(s1num=2) /方波 / P0=0xff; delay1(ys); P0=0; delay1(ys); if(s1num=3) /三角波 / if(a128) P0=a; delay1(ys); else P0=255-a; delay1(ys); a+; if(!(s1&s2&s3) xsf(); 2、 输出波形的种类与频率的测试 2.1、测量仪器 及 测试说明 测量仪器: 稳压电源、示波器、数字万用表。 测量说明: 正弦波、矩形波、三角 波信号 的输出,通过 对独立键盘来实现其的不同波形的输出 以及其频率的改变 。 2.2 测试过程 当程序下进去时经过初始

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论