




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南科技大学本科毕业设计(论文)信号发生器电路设计毕业论文V河南科技大学本科毕业设计(论文)目录前言1第1章 概 述31.1 单片机概述31.2 AT89C51概述3第2章 系统设计方案42.1 任务要求及分析42.1.1 设计任务及要求42.1.2 任务分析42.2 设计思路42.2.1 系统结构框图42.2.2 各功能模块设想52.3 系统总体方案设计52.3.1 硬件方案62.3.2 软件方案6第3章 系统硬件模块设计73.1 单片机最小系统73.1.1 复位电路73.1.2 时钟电路73.2 显示模块设计83.2.1 LCD1602介绍83.2.2 LCD1602电路连接83.2.3 LCD1602编码方式93.3 键盘模块设计103.3.1 键盘电路连接103.3.2 键盘检测原理113.4 D/A转换电路113.4.1 DAC0832结构113.4.2 DAC0832工作原理123.4.3 DAC0832硬件连接133.5 运放电路133.5.1 电流/电压转换电路133.5.2 调幅电路14第4章 软件设计154.1 系统主流程154.2 各程序模块设计154.2.1 初始化程序154.2.2 键盘扫描及处理程序164.2.3 波形产生程序184.2.4 显示部分程序20第5章 仿真结果及分析235.1 功能实现235.1.1 初始化235.1.2 正弦波仿真235.1.3 方波仿真245.1.4 三角波仿真255.1.5 锯齿波仿真265.1.6 键盘功能275.2 结果及误差分析27结论29参考文献30致谢32附录3313前言一、课题的意义及目的信号发生器是基础的通用仪器之一,在许多领域都有广泛的应用。传统的信号发生器可以由硬件电路搭接而成,但是这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积较大等缺点。随着便携式和智能化越来越成为仪器的基本要求,对传统仪器的数字化、智能化、集成化也就显得尤为重要。【1】作为电子技术最根本的硬件基础,信号发生器也需要不断进行改进,以满足现今人们对它日益增长的需要。在现代电子领域中,单片机的应用正在不断地走向深入,单片机构成的仪器不仅可靠性高、性价比较高、集成度高,而且处理功能强、可靠性较好,而目前广泛使用的是一些标准产品,虽然也有一些优点,但价格较贵,因此,用单片机来实现信号发生器以满足需要的方法是一个不可多得的方法。二、国内外研究概况国内外的信号发生器设计方法主要有以下几种:(1) 利用锁相环电路产生振荡来实现。这类设计电路调试困难,且对阻容元件的参数要求严格;另外,由于阻容元件的稳定性差,其可靠性不高,难于保证精确度,该方案技术相对落后,对信号发生器要求不高时可采用该方案,因此,这种设计方法的应用范围也受到了限制。(2) 利用大规模集成电路来实现。这种设计性能可靠,能够产生多种波形信号,达到较高频率,但是频率输出信号的波形和频率值的精确度和准确度不高,工作不很稳定,电路较为复杂,不易调试。(3) 利用单片集成芯片实现函数信号发生器。这种设计能产生多种波形信号,可以达到较高频率,并且能保证输出信号的稳定和较高的精确度,所需的电阻、电容较少,电路也较为简单,易于调试,成本也较低。(4) 利用专用直接数字合成DDS芯片来实现。该方法能产生任意波形的信号,并能达到很高的频率,产生信号波形的电路可以保证输出信号的频率稳定性,可以方便地调节、预置频率,波形变换方便,频率和波形的切换响应快,无过渡过程,电路结构简单,工作稳定可靠,但成本太高。三、设计的实现本课题利用单片机采用程序设计的方法来产生低频信号,不但成本较低而且精度也较高。只需要通过按键就可以控制和操作仪器、例如:波形选择、频率调节,波形类型和频率值可以通过液晶显示屏LCD1602显示,操作起来简单、方便、灵活。通过程序控制单片机来实现相关功能,避免了传统电路搭接中出现的工作不稳定、不易调试等各种问题,使得信号发生器易于控制,提高了信号精度,抗干扰能力强,并且能够对波形进行细微的调整,使其能够满足应用时的要求。第1章 概 述1.1 单片机概述随着微电子技术的不断发展,计算机技术也得到迅速发展,并且由于芯片的集成度的提高而使计算机微型化,出现了单片机,也可称为微控制器MCU。单片机,即集成在一块芯片上的计算机,继承了中央处理器CPU、只读存储器ROM、定时器/计数器以及I/O接口电路等主要计算机部件。从1976年9月Intel公司推出MCS-48系列单片机以来,世界上的一些著名的器件公司都纷纷推出各自系列的单片机产品。各种系列的单片机由于其内部功能、单元组成及指令系统的不尽相同,形成了各具特色的系列产品。其中Intel公司生产的MCS系列单片机目前仍占主导地位。以8051为基核推出的各型号的兼容性单片机统称为51系列单片机。单片机具有功能强、体积小、成本低、功耗小、配置灵活等特点,因此单片机在工业控制、智能仪表、通信系统、信号处理等领域均得到了广泛应用。1.2 AT89C51概述AT89C51是美国ATMEL公司生产的低电压,高性能COMS8位单片机,片内含4KB的可反复擦写的只读程序存储器(PEROM)和128B的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储器制造技术生产,兼容标准MCS-51指令系统。由于将8位中央处理器(CPU)和Flash存储器组合在单个芯片中,使得AT89C51是一种高效微控制器。功能强大的AT89C51单片机可以提供许多高性价比的应用场合,可灵活应用于各种控制领域,为很多嵌入式系统提供了一种灵活性高且价格低廉的方案。本设计所选用的单片机就是AT89C51。河南科技大学本科毕业设计(论文)第2章 系统设计方案2.1 任务要求及分析2.1.1 设计任务及要求本设计的任务及要求如下:(1)具有产生正弦波、三角波、方波和矩形波四种波形的功能;(2)输出波形的频率范围为11000Hz;(3)输出波形幅度范围05V(峰峰值),可按步进0.1V(峰峰值)调整;(4)通过键盘输入任意频率数值和选择任意波形;(5)具有显示输出波形的类型、频率(周期)的功能;(6)精度误差要求达到5%。2.1.2 任务分析通过对设计任务及要求进行分析,我们可以对整个系统有一个初步的了解。本设计主要任务是设计一个基于单片机的信号发生器电路,将各功能模块化,实现四种波形的产生、幅度调节、频率调节、波形类型及频率的显示等功能,另外为了将单片机产生的信号转换成模拟信号,还需要D/A转换电路,并将转换所产生的信号进行整形放大,满足所要求的幅度范围。2.2 设计思路2.2.1 系统结构框图在任务分析中,我们把系统模块化,分为单片机模块、显示模块、数模转换模块和键盘模块四个模块。将各个模块加以整合,我们得出系统大致的结构框图,如图2-1所示:图2-1 系统结构框图2.2.2 各功能模块设想1、单片机模块负责的功能是正弦波、三角波、方波和矩形波四种波形的产生以及通过对键盘信号进行检测分析完成调频功能,并能发送信号控制显示模块显示波形类型以及频率值。这一模块功能的实现主要是通过所编写的程序进行控制,是整个设计的核心。2、显示模块负责的功能是波形类型以及频率大小的显示,接收来自单片机的控制信号及数据信号,将单片机根据波形类型与频率所产生的信号进行处理后显示出来,实现显示功能。3、数模转换模块负责将波形信号从数字信号转换成模拟信号,进而能在示波器上显示出来,以便于通过示波器显示的波形信号来对系统功能进行验证,选择合适的芯片,将单片机的I/O口接入即可实现功能。4、键盘模块负责分配用于波形选择、调频的按键,是整个系统的主要输入设备,为了实现调节功能,需要分配多个按键,为了不占用过多的I/O口,可以采用矩阵键盘阵列,合理分配按键,使操作更简洁易懂,增加系统的人机交互功能。2.3 系统总体方案设计2.3.1 硬件方案硬件电路是系统实现的基础,综合设计思路,为了实现所要求的各功能,本设计选择以AT89C51单片机为核心,结合以DAC0832组成的数模转换电路、以LCD1602组成的显示模块、以4I/O口的44矩阵键盘组成的键盘模块和以LM324组成的滤波整形放大电路构成系统的硬件电路。2.3.2 软件方案软件设计是本设计的核心,需要通过程序设计实现算法,进而实现系统功能。软件部分主要包括一下几个方面:1波形产生:由于设计要求的误差,因此采用256个采样点,正弦波需要通过读入波码表的方式产生,方波、三角波、锯齿波比较有规律,在程序中通过递加、递减等方式可以实现。2键盘部分:编写程序检测I/O口状态变化,根据某一状态变化确定所按下的按键,将信息返回到单片机内进行处理,设置波形切换、调频所对应的按键,当功能按键按下时执行相应操作。3显示部分:确定要显示信息的位置所对应的地址,在程序中可以改变地址将信息显示在不同的位置,不同的字母对应不同的编码,显示字母时将对应编码发送到显示模块即可。需要注意的是使用时需要对液晶显示进行初始化处理。第3章 系统硬件模块设计3.1 单片机最小系统3.1.1 复位电路无论是在单片机刚开始接上电源时,还是运行过程中发生故障都需要复位。复位电路用于将单片机内部各电路的状态恢复到一个确定的初始值,并从这个状态开始工作,按下复位按钮后,内部的程序自动从头开始执行。单片机的复位条件为,必须使其RST引脚上持续出现两个及以上机器周期的高电平。本设计所采用的复位方式为按键复位,复位电路如图3-1所示:图3-1 单片机复位电路3.1.2 时钟电路单片机工作时,从取指令到译码再进行微操作,必须在时钟信号控制下才能有序地进行,时钟电路就是为单片机工作提供基本时钟的。单片机的时钟信号通常有两种产生方式:内部振荡方式和外部振荡方式。本设计所采用的时钟电路为内部振荡方式。内部振荡方式的电路连接如图3-2所示:将晶振结合相应大小的电容连接到引脚XTAL1和XTAL2之间,图中C1和C2起稳定振荡频率、快速起振的作用,其电容值一般在530pF之间,晶振频率的典型值为12MHz。内部振荡方式所得的时钟信号比较稳定,实际电路中使用较多。图3-2 内部振荡方式电路图3.2 显示模块设计3.2.1 LCD1602介绍LCD1602是一种专门用来显示字母、数字、符号等的点阵型液晶模块。LCD1602显示的内容为162,即可以显示两行,每行显示16个字符,其内部有160个57点阵的字符发生存储器CGROM和8个可由用户自定义的字符发生存储器CGRAM。3.2.2 LCD1602电路连接系统的液晶连接如图3-3所示,图中液晶主要管脚介绍如下:VSS接地;VDD接+5V电源;RS为寄存器选择,置高选择数据寄存器、反之则选择指令寄存器;RW为读写信号线,为高电平时进行读操作,低电平时进行写操作,当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读盲信号,当RS为高电平RW为低电平时可以写入数据;E为使能端,当E端由高电平条变成低电平时,液晶模块执行命令;D0D7为8位双向数据线,连接单片机的I/O口。图3-3 LCD1602硬件连接图3.2.3 LCD1602编码方式1602液晶内部的字符发生存储器(CGROM)已经存储的160个不同的点阵字符图形包括阿拉伯数字、英文字母大小写、常用符号以及日文片假名等,每个字符都有一个固定的代码,比如字母“A”的代码是41H。1602字符库见附录:DDRAM就是显示数据RAM,用来寄存待显示的字符代码,共80字节,其地址和屏幕的对应关系如表所示:表3-1 DDRAM地址与屏幕对应关系显示位置123456740DDRAM地址第一行00H01H02H03H04H05H06H27H第二行40H41H42H43H44H45H46H67H一行有40个地址,在LCD1602中,我们只用前16个就行了,第二行也同样用16个地址。【11】表3-2 1602对应的DDRAM地址000102030405060708090A0B0C0D0E0F404142434445464748494A4B4C4D4E4F注:表3-1与表3-2中数字均为十六进制当想要在LCD1602屏幕的某一行某一列显示一个字母时,就需要向这一行这一列所对应的DDRAM地址写入字母相应代码即可。程序的编写需要按LCD模块快的指令格式来进行。例如:要在第二行开头显示“s”这个字母,则程序应写为:write_com(0x80+0x40);write_data(0x73);其中0x40为第二行开头的地址,只是在程序中需要加上0x80才能正确显示,0x73对应字母“s”的代码,当所要显示的内容与位置不同时,程序做出相应改变即可。3.3 键盘模块设计3.3.1 键盘电路连接本次设计所采用的4个I/O口的键盘电路,连接如图3-4所示:图3-4 键盘电路连接图3.3.2 键盘检测原理当检查按键模块时,若有按键按下,则与之相连的两条线将会导通,从而将电平拉高或拉低使其一致。具体的按键扫描方式如下:第一步: 先将四位数据线均置1,然后检查各端口电平有无变化,若K13按下,则相应的会将KEY1口的电平拉低而其余端口的电平仍为1,同理当K14、K15、K16按下后也会相应的将KEY2、KEY3、KEY4这三个端口的电平拉低,从而能够检测出K13,K14,K15,K16这四个按键的状态。第二步: 当以上四个按键的状态均未发生变化,即没有独立按键按下时,再来检查K1K12是否有按键按下;首先将KEY1端口的电平设为0,其余三个端口的电平设为1,当按键K1按下时,KEY2端口的电平将会被拉低,而其它端口的值则不变,相应的K2,K3按下时,KEY3、KEY4的值将分别被拉低,若无变化时,则说明没有按键按下。再分别将KEY2、KEY3、KEY4置低,可依次检查出所有按键的状态。采用这种键盘设计思想,与常用的8端口控制的键盘阵列相比,在实现相同功能的前提下,能够更有效地减少对单片机I/O口的占用。3.4 D/A转换电路3.4.1 DAC0832结构DAC0832是使用非常普遍的8位D/A转换器,它主要由两个8位寄存器和一个8位D/A转换器组成,使用两个寄存器的好处是可以进行两级缓冲操作,使该操作有更大的灵活性。DAC0832以电流形式输出,当输出需要转换为电压时,可外接运算放大器实现。DAC0832内部结构如图3-5所示:各主要引脚定义如下:片选信号输入端,低电平有效;输入寄存器的写选通输入端,负脉冲有效。当CS为0,ILE 为1,WR1有效时DI0DI7状态被所存到输入寄存器;DI0DI7数据输入端;V基准电压输入端,电压范围为-10V+10V;I电流输出端,当输入全为1时,其电流最大;I电流输出端,其值与I端电流之和为一常数;ILE数据锁存允许信号输入端,高电平有效;数据传输控制信号输入端,低电平有效;DAC寄存器的写选通输入端,负脉冲有效;当为0且有效时,输入寄存器的状态被传到DAC寄存器中。【2】图3-5 DAC0832内部结构图3.4.2 DAC0832工作原理DAC0832的工作过程如下:(1)CPU执行输出指令,输出8位DAC0832;(2)在CPU执行输出指令的同时,使ILE、三个控制信号端都有效,8位数据锁存在8位输入寄存器中;(3)当、两个控制信号端都有效时,8位数据再次被锁存到8位DAC寄存器,这时D/A转换器开始工作,8位数据转换成相对应的模拟电流,从I和I输出。DAC0832的工作方式有双缓冲、单缓冲和直通三种,本设计所采用的是直通的方式(当=0、=0时),数字量一旦输入,就直接进入DAC寄存器,进行D/A转换。3.4.3 DAC0832硬件连接设计中DAC0832的硬件连接方法如图3-6所示:图中,DAC0832的8位数据输入端连接单片机I/O口发送的数据,、均接地,使两个控制信号端都有效,芯片进入直通的工作方式,将I接地,由I输出,通过运放进行滤波、整形、放大等处理。图3-6 D/A转换硬件连接图 3.5 运放电路3.5.1 电流/电压转换电路电路连接如图3-6所示,DAC0832后,通过连接一个运放LM324对信号进行处理,使经过D/A转换后所产生的电流信号能够转换为电压信号,从而达到能够对所得信号进行检测的目的,将LM324的2、3端分别连接DAC0832的IOUT1和IOUT2端,并将IOUT2端接地,电源分别接+12V和-12V即可实现。3.5.2 调幅电路如图3-7所示,有VO= - R2VI/R1,即只需设置R1和R2的值就可以实现振幅的调控,本系统就是基于此原理来实现调幅。图3-7 调幅电路14第4章 软件设计4.1 系统主流程本系统包括以下几个程序模块:(1) 初始化程序;(2) 显示程序;(3) 键盘扫描与处理程序;(4) 波形产生程序;系统程序主流程如图4-1所示:图4-1 系统程序主流程图4.2 各程序模块设计4.2.1 初始化程序该部分对所要产生的波形类型、频率以及显示部分进行初始化,目的是在系统刚工作时,所产生的是200Hz的正弦波,并且在液晶上所显示的是“sin”和“200Hz”。液晶部分初始化程序如下【2】:void init() lcdrw=0; lcde=0; cs=0; write_com(0x38);/设置162显示,57点阵,8位数据接口 write_com(0x0c);/设置开显示,不显示光标 write_com(0x06);/写一个字符后地址指针加1 write_com(0x01);/显示清0,数据指针清04.2.2 键盘扫描及处理程序44键盘有16个按键,对应编号为116,按键的分配如下:1先对I/O口进行置1,通过前后I/O口状态的变化完成对键盘进行检测(需要进行松手检测),确定哪个按键,键盘检测程序如下:uchar Key_Pro(void)uint tmp = 0;uchar key=0xff;if(!(P2&0x10) tmp |= (112);key=13;while(!(P2&0x10);if(!(P2&0x20) tmp |= (113);key=14;while(!(P2&0x20);if(!(P2&0x40) tmp |= (114);key=15;while(!(P2&0x40);if(!(P2&0x80) tmp |= (115);key=16;while(!(P2&0x80);if(!(tmp&0xF000) P2 |= 0xF0; P2 &= 0xEF;if(!(P2&0x20) tmp |= (11);key=2;while(!(P2&0x20); if(!(P2&0x40) tmp |= (12);key=3;while(!(P2&0x40);if(!(P2&0x80)tmp |= (13);key=4;while(!(P2&0x80);P2 |= 0xF0; P1 &= 0xDF;if(!(P2&0x10) tmp |= (10);key=1;while(!(P2&0x10);if(!(P2&0x40) tmp |= (16);key=7;while(!(P2&0x40);if(!(P2&0x80) tmp |= (17);key=8;while(!(P2&0x80);P2 |= 0xF0; P2 &= 0xBF;if(!(P2&0x10) tmp |= (14);key=5;while(!(P2&0x10);if(!(P2&0x20) tmp |= (15);key=6;while(!(P2&0x20);if(!(P2&0x80) tmp |= (111);key=12;while(!(P2&0x80);P2 |= 0xF0; P2 &= 0x7F;if(!(P2&0x10) tmp |= (18);key=9;while(!(P2&0x10);if(!(P2&0x20) tmp |= (19);key=10;while(!(P2&0x20);if(!(P2&0x40) tmp |= (110);key=11;while(!(P2&0x40);P2 |= 0xF0;return key;213号按键为波形切换,切换流程如图4-2所示:图4-2 波形切换流程314、15、16号三个按键负责调频功能。波形频率设置了三位数进行表示,分别为bai、shi、ge,14号按键为增大数值,15号为减小数值,16号为选择bai、shi、ge的按键。通过对频率值的百位、十位、个位分别进行设置,从而达到设置频率、调节频率的功能。调频流程如图4-3所示:图4-3 调频流程4.2.3 波形产生程序1正弦波由于正弦波并没有一个可以通过程序轻易归纳的规律,因此对于正弦波的产生我们采用查表的方式,将一个周期内采集了256个点的正弦波波码表,按顺序由单片机I/O口输出,产生数字正弦信号,正弦波调用程序如下: if(s1num=1) /正弦波 for (j=0;j255;j+) P0=tosinj; delay1 (ys); 其中tosinj为波码表数组,将表中数据依次读出即可产生正弦波信号,波码表数组如下所示: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;【5】2方波方波比较有规律性,高低电平各持续半个周期即可。实现方波的程序如下: if(s1num=2) /方波 P0=0xff; delay1 (128*ys); P0=0x00; delay1 (128*ys) ;3三角波三角波即是数值从最小值递增到一个数值后再递减到最小值的过程。实现程序如下: if(s1num=3) /三角波 if (a128) P0 = a; delay1 (ys); a+; else P0=255-a; delay1 (ys); a+; 4锯齿波锯齿波特点是从最小值递增到最大值,然后直降到最小值。由于I/O口为8位数据,当数据超过11111111时发生溢出,回归到0,因此不用另外归零,实现程序如下: if(s1num=4) /锯齿波P0=255-b; delay1(ys);b+; if(b=255)b=0; 4.2.4 显示部分程序1.显示波形类型四种波形产生时需要显示相对应的字母表示,对应情况为:正弦波sin、方波squ、三角波thr、锯齿波saw,为了显示相应字符串,则应把字母所对应的代码输入到液晶,波形对应代码如下:正弦波: write_com(0x80+0x00); /写sin write_data(0x73); /s write_data(0x69); /i write_data(0x6e); /n 方波:write_com(0x80+0x00); /写squ write_data(0x73); /s write_data(0x71); /q write_data(0x75); /u三角波:write_com(0x80+0x00); /写thr write_data(0x74); /t write_data(0x68); /h write_data(0x72); /r锯齿波:write_com(0x80+0x00); /写sawwrite_data(0x73); /swrite_data(0x61); /awrite_data(0x77); /w0x80+0x00为第一行开头所对应的地址,write_data()括号内是字母所对应的代码,当显示完一个字母后地址自动加1。2.显示波形频率由于通过bai、shi、ge表示频率的百位、十位和个位,因此,只需将bai、shi、ge按顺序发送到液晶即可,三个数字显示地址递增,在液晶第二行开头显示频率值和频率单位Hz。程序如下:void xsf() /显示频率 write_com(0x80+0x40); /第二行开头 write_data(0x30+bai); /写百位 write_com(0x80+0x41); write_data(0x30+shi); /写十位 write_com(0x80+0x42); write_data(0x30+ge); /写个位 write_data(0x48); /H write_data(0x5a); /z第5章 仿真结果及分析5.1 功能实现 利用Proteus仿真软件进行仿真分析,连接好系统硬件仿真电路图,然后进行下载仿真。5.1.1 初始化经仿真开始后,液晶能实现在第一行开头显示波形类型,在第二行显示波形频率的功能,显示比较稳定,满足设计要求。结果如图5-1所示:图5-1 显示模块结果图图中内容如下:显示类型:sin正弦波显示频率:200Hz显示幅值:4.9V(文中幅值均表示峰-峰值)5.1.2 正弦波仿真通过键盘,对正弦波信号的频率、幅度进行调节,通过液晶显示屏和示波器观察调节后的信号,得到不同频率、不同幅度的正弦波信号,如图5-2、5-3所示:图5-2 正弦波仿真一图5-2中,正弦波频率为5Hz,幅度为5V。图5-3 正弦波仿真二图5-3中,正弦波频率为75Hz,幅度为2.5V。由图可以看出,产生的正弦波并没有太大失真,只是在两个周期相连接的地方会有一段延时存在。5.1.3 方波仿真同正弦波一样,利用矩阵键盘对产生的方波进行设定频率,如图5-4、5-5所示:图5-4所示的方波频率为100Hz,幅度为3.3V;图5-5所示的方波频率为15Hz,幅度为2.7V;图5-4 方波仿真一图5-5 方波仿真二在仿真时,方波在垂直方向上会出现轻微抖动,由图可以看出,所产生的方波比较规整,高低电平所占比例几乎相等。这是在频率较低的时候,当频率较高时,方波会失真,高电平持续时间较长,低电平持续时间较短,造成高低电平比例不等,不符合方波的特点。5.1.4 三角波仿真所产生的三角波波形如图5-6、5-7所示:图5-6所示的三角波频率为75Hz,幅度为2.5V;图5-7所示的三角波频率为15Hz,幅度为3.2V图5-6 三角波仿真一图5-7 三角波仿真二当频率较高时,三角波会失真,造成本应该是线段的波形成为了弧线状,不与三角波相符。5.1.5 锯齿波仿真由于DAC0832的特点,使得所产生的波形并不是递增的,而是与之想对应的递减的波形,如图5-8、5-9所示:图5-8 锯齿波仿真一图中5-8所示锯齿波频率为20Hz,幅度为1.3V;图5-9 锯齿波仿真二图5-9所示锯齿波频率为170Hz,幅度为2.8V;当频率较高时,锯齿波也发生失真,波形形状为抛物线状。5.1.6 键盘功能在系统刚运行时,按调频键(14、15号按键),所显示的频率值并没有变化,按一下16号键后才可以调频,可以循环设置百位、十位、个位。不过调频后需要经过一段时间才能看到信号的变化;按下13号按键,就可以切换波形。5.2 结果及误差分析通过Proteus软件进行仿真,仿真中,我们可以通过示波器对信号频率进行大致计算,采集的数据均为波形未明显失真时的数据,设置频率与计算频率对比如表5-1所示:表5-1 正弦波数据显示频率/Hz54075200320实际频率/Hz5.242.277.3221.5403.7误差/%45.53.110.7526.2表5-2 方波数据显示频率/Hz515100200300实际频率/Hz5.115.4104.8232.3397.7误差/%22.674.816.1532.6表5-3 三角波数据显示频率/Hz152075200300实际频率/Hz15.72179.7234.4437.5误差/%4.6756.2717.245.8表5-4 锯齿波数据显示频率/Hz2075150240300实际频率/Hz20.879168281.2452.3误差/Hz45.31217.250.1通过仿真所得数据可以发现,当频率较低时,产生信号的频率误差较小,波形也比较规整,当频率较大时,频率误差较大,波形也有较大的失真,可能由程序中延时所造成;在波形产生部分,正弦波信号之间连接有一小段没连接紧密,可能是由于正弦波波码表内是由256个采样点构成,一周期内两端值为0时只取样一次即可,造成了重复采样,导致不同周期信号连接处波形重复;也可能是系统程序执行的过程中,波形产生后需要一段时间用来显示所造成。在仿真时还发现,当LCD1602显示的字母较多时,切换波形容易造成某几个字母不会变化,可能是由于LCD1602所存的数据变化较慢导致,因此,在设计中将表示波形类型的字母均以三个字母表示,解决了上述情况。29 结论本设计实现了正弦波、方波、三角波、锯齿波四种波形的产生、调频、调幅、显示波形类型与频率值的功能,基本实现了设计所要求的功能,但是由于水平有限,部分指标并未达到要求,比如误差范围的要求,另外,所产生的波形信号在一些频率段失真较明显,比如三角波出现不是直线而是有比较明显的弧线的情况,可能是由于系统程序设计的缺陷导致。当加上显示功能模块时,波形失真比较严重,很可能的原因是波形产生部分与液晶显示指令所需时间有较大差别,造成二者不同步,从而导致上述情况,因此,建议采用数码管进行显示信号频率这一功能的设计,另一方面,也可以通过不同的发光二极管来表示不同的波形类型,进而来实现设计所要求的显示信号类型的功能。我们还需要不断优化设计方案,相信随着方案的不断优化,系统的功能也将会越来越完美。参考文献1杨晶晶,刘岩.基于AT89C52单片机的超低频信号发生器设计. 现代电子技术,2011, 34(4),29-312郭天祥.新概念51单片机C语言教程:入门、提高、开发、拓展全攻略. 北京: 电子工业出版社,20093陆原,刘国英,崔帅等.一种基于DDS的幅值可调信号发生器的设计.国外电子元器件,2008,(6):23-254田蛟,展文豪,张宏伟等.基于单片机的信号发生器设计.信息技术,2011,(5):87-905唐丽丽,何刚,文小森等.基于89C51的信号发生器设计与实现.仪表技术与传感器,2007,(2):76-786逯久鑫,彭旋,樊军庆等.基于51单片机的低频信号发生器的设计与仿真.电子设计工程,2011,19(16):153-1557江淑齐.浅析LCD1602的编程技巧.内江科技,2009,30(11):119-1298陈铭.单片机矩阵式键盘的设计.工业控制计算机,2012,25(1):99-1009李萍编著.51单片机C语言及汇编语言实用程序设计.北京:中国电力出版社,2010.310于志赣,刘国平,张旭斌等.液显LCD1602模块的应用.机电技术,2009,32(3):21-2311李建波.LCD1602汉字显示技术在万年历中的应用及Proteus仿真.清远职业技术学院学报,2010,03(3):36-3812段九州编著.放大电路实用设计手册.沈阳:辽宁科学技术出版社,200213陈钧,陈坚,曾德芬等.单片机低频信号发生器.华东地质学院学报,1999,22(4):314-31714张建民.基于单片机的低频任意信号发生器.信息化研究,2009,35(7):12-1515王春会,吴迪.基于DAC0832的波形发生器.辽宁师专学报:自然科学版,2011,13(3):83-8516王硕.任意波形信号发生器的研究.哈尔滨工程大学,200817杨美荣.浅析AT89S51单片机最小系统的设计与制作J.职业,2011,(11):179-18018梁璐.浅谈单片机最小系统的抗干扰.甘肃科技纵横,2008,37(4):40-4119Wan Yonglun, Lu Youxin, Si Qiang. Study of ultra-wideband radar signals-generated technology using two-channel signal generatorJ.系统工程与电子技术(英文版),2007,18(4):710-71520黄闽海.LM324四运放实用电路的设计.福建轻纺,2002,(8):26-2921全国大学生电子设计竞赛组委会编.第五届全国大学生电子设计竞赛获奖作品选编.北京:北京理工大学出版社,200352致谢在本次的设计过程和论文写作过程中,我遇到了很多困难和障碍,但都在老师和同学的帮助下度过。尤其要真挚地感谢我的指导老师曲晓丽老师,她为我指明了思路、点明了设计的重点和难点,使我在设计过程中更有目的性,让我少走不少弯路。还要感谢所有帮助我,耐心指导我的同学们,是他们的帮助使我的设计得以逐步完成。然后还要感谢所有在大学期间传授我知识的老师,每一位老师的细心教导都是我完成这篇论文的基础。在这次的毕业论文中,发挥了我在学校学到的知识和技能,使我所掌握的知识技能更熟练,这将在今后的学习和工作中使我受益匪浅。附录一、硬件连接图二、系统原理图三、PCB版图四、LCD1602字符库五、正弦波算法DAC0832是8位的D/A转换器件,若其工作在单级缓冲方式下,则其中为输入的数字量设则当输入00H,输出为0V电压;当输入80H,输出为2.5V电压;当输入FF数字量的时候,输出为5V电压。 因此产生的正弦波为:=2.51+sint 将一个周期内的正弦波形等分为256份,那么第1点的角度为0,对应的正弦值为2.5sin0;第2点的角度为360/256,对应的正弦值为2.5sin (360/256 ) ,如此计算下去,将这些模拟量正弦值都转换为单极性方式下的数字量,得到一张按照点号顺序排列的正弦波波形数据表格。而每次送到DAC0832的八位数字量是根据查正弦波形数据表格而得到。其实在计算正弦波形数据的时候,并不需要算出整个02区间的每一个值,而只需计算出0中的值就行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国防教育心得体会(甄选10篇)
- 职教对口高考题目及答案
- 某公司风险分级管控管理制度
- 秋季学期配班教师个人工作计划(5篇)
- 智能交通行业的前景分析
- 文旅融合发展路径探索
- 河北省保定市部分高中2025-2026学年高二上学期开学考试物理试卷
- 2025年成人心肺复苏考试试题及答案
- 2025年塔吊司机考试试题技巧及答案
- 考试水彩试题及答案
- 通信原理第7版樊昌信版新版
- 一汽商用车企业级BOM技术方案V1.7
- GB/T 19812.5-2019塑料节水灌溉器材第5部分:地埋式滴灌管
- GB/T 13808-1992铜及铜合金挤制棒
- 中国马克思主义与当代(社会问题)
- 光伏并网逆变器调试报告
- EMR术的配合要点
- 1844年经济学哲学手稿课件
- 痰培养的采集及药敏结果判读课件
- 家庭医生签约服务业务培训课件
- 1-商务沟通基本原理
评论
0/150
提交评论