波形发生器设计单片机课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

广东石油化工学院单片机原理及应用技术课程设计
题目:波形发生器的设计
班级:505团队
团队成员:
学号:
目录
一、设计任务及团队分工说明 (1)
二、总体设计及需求分析 (3)
三、硬件选型及电路设计 ................................. 错误!未定义书签。

四、软件设计 ..................................................... 错误!未定义书签。

五、结论.................................................................. 错误!未定义书签。

六、设计心得.......................................................... 错误!未定义书签。

七、致谢.................................................................. 错误!未定义书签。

参考文献.................................................................. 错误!未定义书签。

二、总体设计及需求分析
1.实验目的:
①掌握数/模转换的基本原理及编程方法;
②掌握D/A转换芯片DAC0832的结构特点、工作原理及使用方法;
③掌握利用串行口扩展I/O口的方法;
2.实验要求:实验目的
①. 设计一款能够产生3种以上波形的波形发生器;
②. 设计波形选择按钮;
③.LED或LCD显示波形代号(如 1为正弦波,2为方波……);
④.能够同时输出两种波形
⑤.能够记录一段时间的波形
3.程序流程图
程序的主流程图如下:
主流程图
三:硬件选型及电路设计
1.单片机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单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

外形及引脚排列如下图所示:
图3.4 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:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时, ALE
只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

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

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

2.DAC0832
DAC0832是8位分辨率D/A转换集成芯片,与处理器完全兼容,具有价格低廉,接口简单,转换控制容易等优点,在单片机应用系统中得到广泛的应用。

D/A转换器由八位输入锁存器、八位DAC寄存器、八位D/A转换电路以及转换电路构成。

DAC0832输出是电流型的,但实际应用中往往需要电压输出信号,所以还必须一个外接的运算放大器转换称电压。

其引脚如下图1所示:
图1:DAC0832引脚图
• D0~D7:八位数据输入线
• ILE:数据锁存允许控制信号输入线,高电平有效
• CS: 片选信号输入线,低电平有效
• WR1:输入寄存器的写选通信号,低电平有效
• XFER:数据传送控制信号输入线,低电平有效
• WR2:DAC寄存器写选通输入线,低电平有效
• IOUT1:电流输出线。

当输入全为1时IOUT1最大
• IOUT2:电流输出线。

其值与OUT1之和为一常数
• RFB:反馈信号输入线,芯片内部有反馈电阻
• Vcc:电源输入线(+5~+15V)
• Vref: 基准电压输入线(-10~+10V)
• AGND: 模拟地,模拟信号和基准电源的查考地
• DGND:数字地,两种地线在基准电源共处比较好
根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式,可用软件指令控制这5个控制端:ILE、CS、WR1、WR2、XFER。

•直通工作方式:5个控制端均有效,直接D/A转换
•单缓冲工作方式:5个控制端一次选通,即两个输入寄存器中任意一个处于直通方式,另一个工作于受控方式
•双缓冲工作方式:5个控制端分二次选通。

即两个锁存器都处于受控状态
本次设计我们让DAC0832工作于单缓冲器方式,它的ILE接+5V。

/CS和/XFER 相连后由8051的P2.7控制,/WR1和/WR2相连后由8051的/WR控制DAC0832的地址为7FFFH,工作于单缓冲器方式,执行一次对DAC0832的写入操作即可完成一次D/A 转换。

3.74LS47芯片
74LS47是BCD-7段数码管译码器/驱动器,74LS47的功能用于将BCD码转化成数码块中的数字,通过它的解码,可以直接把数字转换为数码管的显示数字,从而简化了程序,节约了单片机的I/O开销。

因而是一个很好的芯片。

引脚图2如下:
图2:74LS47引脚图
• D 、C 、B 、A :BCD 码输入引脚
• a 、b 、c 、d 、e 、f 、g :7段LED 数码管的输出引脚
• LT :测试引脚,当本引脚输入低电平时,所连接的7段数码管全亮。

正常情况下,应输入高电平
• RBI :涟波淹没输入引脚。

正常情况下,应输入高电平
• BI/RBO :淹没输入或涟波淹没输出引脚。

正常显示下,应输入高电平或空接。

若本引脚输入低电平,且D 、C 、B 、A 引脚输入为0,则该位数不显示,这项功能用于消除前置0或者消除尾端0.
• D 、C 、B 、A :BCD 码输入引脚
• a 、b 、c 、d 、e 、f 、g :7段LED 数码管的输出引脚
• LT :测试引脚,当本引脚输入低电平时,所连接的7段数码管全亮。

正常情况下,应输入高电平
• RBI :涟波淹没输入引脚。

正常情况下,应输入高电平
• BI/RBO :淹没输入或涟波淹没输出引脚。

正常显示下,应输入高电平或空接。

若本引脚输入低电平,且D 、C 、B 、A 引脚输入为0,则该位数不显示,这项功能用于消除前置0或者消除尾端0.
3. 7段数码管
7段数码管一般有8个发光二极管组成,其中有7
个细长的发光二极管组成
数字显示,另外一个圆形的发光二极管显示小数点。

当发光二极管导通时,相应的一个点或一个笔画发光。

控制相应的二极管导通,就能显示各种字符。

发光二极管的阳极连在一起称为共阳极数码管,阴极连在一起称为共阴极数码管。

图3:七段数码管引脚图
4.硬件接线图
显示部分:
波形发生部分:
按钮部分:
整体电路图:
四、软件设计:
1.锯齿波模块
8051单片机的累加器A从0开始循环增量,每增量一次向DAC0832写入一个数据,得到一个输出电压,这样可以获得一个正向的阶梯波。

程序如下:
LOOP1: ;正向锯齿波
MOV R1,#02H;
LCALL DISP;
L11: MOV R3,#00H;
L12: MOV A,R3;
MOVX @DPTR,A;
INC R3;
CJNE R3,#0FFH,L12;
JB P2.1,STR;
AJMP L11;
延时子程序:
程序若如下:
DELAY: MOV R6,#0AH ;延时1ms子程序
DEL2: MOV R7,#32H
DEL1: DJNZ R7,DEL1
DJNZ R6,DEL2
RET
在延时子程序中改变延时时间的长短,即可改变输出波形的周期
2.三角波模块
在以上这个反向的锯齿波的前提下,若要获得正向的锯齿波只需将以上程序中的指令INCA换成指令DECA即可,如果想获得任意起始电压和终止电压的波形,则需先确定起始电压和终止电压所对应的数字。

程序中首先从起始电压对应的数字量开始输出,当达到终止电压对应的数字量时返回,如此反复。

将正向锯齿波与负向锯齿波组合起来就可以获得三角波,
程序如下:
LOOP2: ;三角波
MOV R1,#03H
LCALL DISP
L21: MOV R3,#00H
L22: MOV A,R3
MOVX @DPTR,A
INC R3
CJNE R3,#0FFH,L22
L23: DEC R3
MOV A,R3
MOVX @DPTR,A
CJNE R3,#00H,L23
JB P2.2,STR
AJMP L21
3.方波模块:
方波信号也是波形发生器中常用的一种信号,下面的程序可以从DAC的输出端得到矩形波,当延时子程序延时时间大体相同时即为方波,改变延时时间可得到不同占空比的矩形波,上限电平及上限电平对应的数字量可用前面讲过的方法获得。

程序如下:
L0:
MOV A,#0FFH ;方波
MOVX @DPTR,A
LCALL DELAY
MOV A,#00H
MOVX @DPTR,A
LCALL DELAY
JB P2.0,STR
LJMP L0
4. 梯形模块
梯形程序:
LOOP3: ;梯形波
MOV R1,#05H
LCALL DISP
L41: MOV R3,#00H
L42: MOV A,R3
MOVX @DPTR,A
INC R3
CJNE R3,#0FFH,L42
LCALL DELAY
L43: DEC R3
MOV A,R3
MOVX @DPTR,A
CJNE R3,#00H,L43
LCALL DELAY
JB P2.3,STR
AJMP L41。

相关文档
最新文档