波形发生器课程设计报告

单片机及DSP课程设计报告

专    业:     电子信息工程         

班    级:     信息101            

姓    名:      史延凯             

学    号:     201027022           

指导教师:       何香铃            

时    间:20##-06-17~28

通信与电子工程学院


目录

一、设计目的及意义................................................................................................. - 3 -

1.1设计目的............................................................................................................ - 3 -

1.2设计意义............................................................................................................ - 3 -

二、方案论证............................................................................................................. - 4 -

2.1设计要求............................................................................................................ - 4 -

2.2方案论证............................................................................................................ - 3 -

三、硬件电路设计..................................................................................................... - 4 -

3.1设计思路、元件选型........................................................................................... - 4 -

3.2原理图................................................................................................................. -5 -

3.3主要芯片介绍..................................................................................................... - 5 -

3.4硬件连线图......................................................................................................... - 8 -

四、软件设计............................................................................................................. - 8 -

4.1锯齿波的产生过程.............................................................................................. - 9 -

4.2 三角波的产生过程............................................................................................ - 10 -

4.3方波的产生过程................................................................................................ - 11 -

五  源程序代码.........................................................................................................................-11-

六、调试与仿真....................................................................................................... - 13 -

七、总结.................................................................................................................. - 15 -

八、参考文献:....................................................................................................... - 15 -

一、设计目的及意义

1.1设计目的

为了进一步巩固学习的理论知识,增强我们对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的课程设计。通过设计使我们在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。

1、通过本设计,使我们综合运用《单片机技术原理与应用》、《DSP原理与应用》《C语言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。

2、学会使用KEIL C和PROTEUS等软件,用C语言或汇编语言编写一个较完整的实用程序,并仿真运行,保证设计的正确性。

3、了解单片机接口应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等。

1.2设计意义

波形发生器作为一种常用的信号源,是现代测试领域内应用最为广泛的通用仪器之一。

在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都学要有信号源,由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。信号发生器是电子测量领域中最基本、应用最广泛的一类电子仪器。它可以产生多种波形信号,如正弦波,三角波,方波等,因而广泛用于通信、雷达、导航、宇航等领域。

二、方案论证

2.1、设计要求

1、掌握原理图的画法,在PROTEUS平台上用单片机完成所选题目的原理图设计

2、在KEIL C平台上使用C语言编程实现编程,并调试通过

3、在PROTEUS平台上利用设计好的原理图和调试好的程序完成整个仿真。

4、按设计报告要求完成课程设计报告

 

2.2方案论证

信号发生器的实现方法通常有以下几种:

方案一:用分立元件组成的函数发生器:通常是单函数发生器且频率不高,其工作不很稳定,不易调试。

方案二:可以由晶体管、运放IC等通用器件制作,更多的则是用专门的函数信号发生器IC产生。早期的函数信号发生器IC,如L8038、BA205、XR2207/2209等,它们的功能较少,精度不高,频率上限只有300kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响。

方案三:利用专用直接数字合成DDS芯片的函数发生器:能产生任意波形并达到很高的频率。但成本较高。

方案四:采用AT89C51单片机和DAC0832芯片,直接连接键盘和显示。该种方案主要对AT89C51单片机的各个I/O口充分利用. P1口是连接键盘以及接显示电路,P2口连接DAC0832输出波形.这样总体来说,能对单片机各个接口都利用上,而不在多用其它芯片,从而减小了系统的成本.也对按照系统便携式低频信号发生器的要求所完成.占用空间小,使用芯片少,低功耗。

综合考虑,方案四各项性能和指标都优于其他几种方案,能使输出频率有较好的稳定性,充分体现了模块化设计的要求,而且这些芯片及器件均为通用器件,在市场上较常见,价格也低廉,样品制作成功的可能性比较大,所以本设计采用方案四。

三、硬件电路设计

3.1设计思路、元件选型

设计思路:

(一)、课设需要各个波形的基本输出。如输出锯齿波、三角波、方波、这些波形的实现的具体步骤:锯齿波实现很简单,只需要一开始定义一个初值,然后不断的加1,当溢出后又重初值开始加起,就这样循环下去。三角波的实验过程是先加后减,实现方法是先是从00H开始加1直到溢出后就执行减1操作,就这样不断调用这个循环。方波的实现方法是连续输出一个数,到某个时候就改变一下值,可以把值定义为正极性的,也可以是负极性。正弦波的实现是非常麻烦的。它的实现过程是通过定义一些数据,然后执行时直接输出定义的数据就可以了。

(二)、通过P1口和开关K0-K2相连接来控制各个波形的输出。能根据k0-k2键状态进行波形切换,当某一按键按下时,输出相对应的波形。

元件选型:单片机AT89C51系统,DAC0832一片,PC机一台,运算放大器

3.2原理图

 


3.3主要芯片介绍

(1)、DAC0832芯片介绍:

0832采用双缓冲接口方式,其传送控制端接地,输入所存允许断ILE与+5V电源相连,利用一个地址码进行二次输出操作,完成数据的传送和激动转换,第一次操作室P2.6为高电平,将P0口数据线上的数据锁存于DAC0832的输入寄存器中。第二次操作是写控制信号由效,传送控制端为低电平,将输入寄存器中的内容锁存入0832的DAC寄存器中,D/A转换器便开始对锁存于DAC寄存器的8位数据进行转换,约经过1/2时钟周期后,在输出端(IOUT2、IOUT1)建立稳定的电流输出。运放的作用是将0832输出的模拟电流信号转换为电压波形。DAC0832为一个8位D/A转换器,单电源供电,在+5~+15V范围内均可正常工作。基准电压的范围为±10V,电流建立时间为1μs,CMOS工艺,低功耗20mW。DAC0832的内部结构框图如下图所示。

DAC0832的外部引脚及功能介绍图如下:

图1 DAC0832引脚图

DAC0832内部结构资料:芯片内有两级输入寄存器,使DAC0832具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。D/A转换结果采用电流形式输出。要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。运放的反馈电阻可通过RFB端引用片内固有电阻,还可以外接

DI0~DI7:数据输入线,TLL电平。

ILE:数据锁存允许控制信号输入线,高电平有效。

CS:片选信号输入线,低电平有效。

WR1:为输入寄存器的写选通信号。

XFER:数据传送控制信号输入线,低电平有效。

WR2:为DAC寄存器写选通输入线。

Iout1:电流输出线。当输入全为1时Iout1最大。

Iout2: 电流输出线。其值与Iout1之和为一常数。

Rfb:反馈信号输入线,芯片内部有反馈电阻.

Vcc:电源输入线  (+5v~+15v)

Vref:基准电压输入线  (-10v~+10v)

AGND:模拟地,摸拟信号和基准电源的参考地.

DGND:数字地,两种地线在基准电源处共地比较好

(2)单片机AT89C51介绍:

AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如下图所示:

图2 AT89C51引脚图

AT89C51管脚说明:

VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

   /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

   /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

3.4硬件连线图

图3 硬件连线图

四、软件设计

 总体方框图

流程图: 过程:         波形发生器设计      

 

            图4总体设计功能图

设计思路:

利用中断,当3个开关中有任意一个闭合时,跳转至中断程序,在中断程序中判断是哪一个按键闭合,跳转至相应的程序,执行输出波形的操作,每输出一个点之后,判断按键是否断开,如果依旧闭合,则继续输出,如果已经断开,则结束中断程序。

4.1锯齿波的产生过程

锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。

锯齿波发生流程图如下图所示:


 

4.2 三角波的产生过程

三角波的实现是设置一个初值,当加到某个值的时候,执行减一操作,减到初值时,再加一。

三角波发生流程图如下图所示:

 

 4.4 方波的产生过程

方波的实现只需开始的时候设置一个初值然后直接输出这个值就行了,输出一段时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是此时的时间一定要等于前面那段时间。这样才是一个方波,如果两个时间不相同,那就相当于一个脉冲波了。

方波发生流程图如下图所示:

五:源程序清单

            ORG 0000H

              LJMP MAIN

              ORG 0003H                 ;外部中断0

              LJMP INT00

              ORG 0040H

MAIN:   MOV SP,60H         ;更改堆栈指针,避免堆栈与工作寄存器区发生冲突

        SETB IT0                     ;外部中断请求0为下降沿触发方式

        SETB EA                     ;中断允许总开关打开

        SETB EX0                   ;允许外部中断0中断

INT00:   CLR EA                     ;关中断

        PUSH PSW                  ;现场保护

        PUSH Acc

        SETB EA                     ;开中断

        JNB P1.0,IR0          ;如果K0键闭合,则跳转至IR0输出锯齿波

        JNB P1.1,IR1        ;如果K1键闭合,则跳转至IR1输出三角波

        JNB P1.2,IR2        ;如果K2键闭合,则跳转至IR2输出矩形波

INTIR:   CLR EA                ;关中断

        POP Acc                ;现场恢复

        POP PSW

        SETB EA                     ;开中断

        RETI

  =====锯齿波发生子程序======

IR0:      MOV R0,#0FEH ;设置端口地址

              MOV A,#00H

LOOP:    MOVX @R0,A  ;写入

              JB P1.0,INTIR  ;如果k0键已经断开,则返回

              INC A         ;A加一

              SJMP LOOP    ;循环

              LJMP INTIR    ;返回

======三角波发生子程序======

IR1: MOV R0,#0FEH           ;设置端口地址

              MOV A,#00H

UP2:       MOVX @R0,A             ;写入

              JB P1.1,INTIR              ;如果k2键已经断开,则返回

              INC A                          ;A加一

              JNZ UP2               ;循环

DOWN2: DEC A                  ;A减一

              MOVX @R0,A             ;写入

              JB P1.1,INTIR              ;如果k2键已经断开,则返回

              JNZ DOWN2         ;循环

              SJMP UP2                    ;如果减到0,则跳转至UP2,继续加一操作

              LJMP INTIR          ;返回

======方波发生流程图=======

IR2: MOV R0,#0FEH           ;设置端口地址

POSI:     MOV A,#00H        ;给A赋值0x00

              MOVX @R0,A             ;写入

              LCALL DELAY            ;延时

              JB P1.2,INTIR              ;如果k3键已经断开,则返回

NEGA:   MOV A,#0FFH             ;给A赋值0xFF

              MOVX @R0,A             ;写入

              LCALL DELAY            ;延时

              JB P1.2,INTIR              ;如果k3键已经断开,则返回

              SJMP POSI                  ;跳转至POSI,继续下一个波形的输出

              LJMP INTIR          ;返回

DELAY:  MOV R7,#100              ;延时子程序     

DELAY1: MOV R6,#10

              NOP

DELAY2: DJNZ R6,DELAY2

              DJNZ R7,DELAY1

              RET

 

六、调试与仿真

本次的设计主要应用了protues和keil c软件进行系统设计和仿真,经过仿真后,结果较好,示波器可以正确的输出方波、三角波、锯齿波。

函数图像如下图所示:

锯齿波:

 


    三角波:

 

    方波:

 

七:总结

    结果分析:在整个过程中利用中断,当3个开关中有任意一个闭合时,跳转至中断程序,在中断程序中判断是哪一个按键闭合,跳转至相应的程序,执行输出波形的操作,每输出一个点之后,判断按键是否断开,如果依旧闭合,则继续输出,如果已经断开,则结束中断程序,单片机通过P0口传输EPROM编程机器码.再经过地址锁存器74LS373选通DA转化器,DA转化器将单片机P0口输出的机器码转化成模拟波形,并在示波器上显示出来。

本次的设计中利用AT89C51和DAC0832以及放大器完成电路的设计,用开关来控制各种波形的发生及转换,用单片机输出后,经过模数转换器生成波形,最终可以通过示波器观察。

在设计中遇到一些问题和一些难点。1,如何使用编程软件和画图软件2,在程序设计中如何实现程序结构的最优化,以达到较高的质量3如何在程序出错时检查改正。

 在这次课程设计中,我了解了波形发生器的原理,在实际动手操作过程中,使我接触了许多我以前没接触过的元件,重新温习汇编语言,使我学得了许多知识,使我获益匪浅。增强我们对所学知识的实际应用能力和运用所学的, 通过设计使我们在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力, 使我的动手能力得到了很大的提高,更使我们懂得理论知识的重要性,没有理论的指导一切实际行动都是盲目的,且实际操作是我们得到的理论知识得到验证,更能增加对理论知识的理解。

八、参考文献:

[1] 张靖武. 周灵斌.单片机原理与应用与PROTEUS仿真. 电子工业出版社.

[2] 阎石.数字电子技术基础(第五版).高等教育出版社

[3] 胡汉才.单片机原理及其接口技术(第三版).清华大学出版社

相关推荐