低频多波形函数信号发生器.docx

上传人:b****3 文档编号:4682828 上传时间:2023-05-07 格式:DOCX 页数:34 大小:88.44KB
下载 相关 举报
低频多波形函数信号发生器.docx_第1页
第1页 / 共34页
低频多波形函数信号发生器.docx_第2页
第2页 / 共34页
低频多波形函数信号发生器.docx_第3页
第3页 / 共34页
低频多波形函数信号发生器.docx_第4页
第4页 / 共34页
低频多波形函数信号发生器.docx_第5页
第5页 / 共34页
低频多波形函数信号发生器.docx_第6页
第6页 / 共34页
低频多波形函数信号发生器.docx_第7页
第7页 / 共34页
低频多波形函数信号发生器.docx_第8页
第8页 / 共34页
低频多波形函数信号发生器.docx_第9页
第9页 / 共34页
低频多波形函数信号发生器.docx_第10页
第10页 / 共34页
低频多波形函数信号发生器.docx_第11页
第11页 / 共34页
低频多波形函数信号发生器.docx_第12页
第12页 / 共34页
低频多波形函数信号发生器.docx_第13页
第13页 / 共34页
低频多波形函数信号发生器.docx_第14页
第14页 / 共34页
低频多波形函数信号发生器.docx_第15页
第15页 / 共34页
低频多波形函数信号发生器.docx_第16页
第16页 / 共34页
低频多波形函数信号发生器.docx_第17页
第17页 / 共34页
低频多波形函数信号发生器.docx_第18页
第18页 / 共34页
低频多波形函数信号发生器.docx_第19页
第19页 / 共34页
低频多波形函数信号发生器.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

低频多波形函数信号发生器.docx

《低频多波形函数信号发生器.docx》由会员分享,可在线阅读,更多相关《低频多波形函数信号发生器.docx(34页珍藏版)》请在冰点文库上搜索。

低频多波形函数信号发生器.docx

低频多波形函数信号发生器

茂名学院

 

单片机课程设计

 

课程名称:

低频多波形函数信号发生器

班级:

姓名:

学号:

指导老师:

陈政石

 

低频多波形函数信号发生器

1设计任务和要求

1.1设计任务

能实现矩形波、锯齿波、正弦波、三角波、梯形波模拟量输出,幅值/频率连续可调;画出完整硬件电路图(包括键盘显示(功能键、数字键,显示数字、状态等)扩展电路);编写出完整的控制程序。

1.2要求说明

(1)单片机可采用8031、8051、AT89C51、AT89C52、fosc=6MHz。

扩展电路根据每个题目的任务功能具体需要选择相关IC电路芯片,完整系统电路还应包括时钟电路,复位电路,系统RAM、ROM,键盘显示等。

(2)编写程序要以模块化结构,如分初始化主程序、键扫子程序、显示子程序及其他功能子程序等。

2硬件系统原理

2.1波形发生器原理框图

DAC0832

 

图1原理框图

2.2单片机系统

该系统板上的单片机系统把全部的I/O端口资源提供出来,因此,在实际应用的时候,可以灵活地组合成不同的单片机应用系统,该单片机采用12MHZ晶振,232电平转换采用MAX232芯片把TTL电平转换成RS-232电平格式,可以用于单片机与微机通信,以及单片机与单片机之间的通信,在该系统板上提供了DB9的接口,用ISP下载器模块的程序下载接口完成源程序代码下载到AT89S51芯片中,它需要和微机上的ISP下载器软件配合使用来完成这样的功能。

具体的电路原理图如图2所示

图2单片机系统板

2.34×4行列式键盘模块

行列式键盘也即矩阵式键盘,它由行和列组成,在每个行列的交叉点上放置一个按键,这样4×4行列式键盘共需要16个键盘组成。

该模块实现人机对话输入,按不同键时可以实现不同的功能。

具体的电路原理图如图3所示:

图3.4键盘模块

 

图34×4行列式键盘模块

矩形式键盘的工作过程

1、单片机先使行线R4线为低,其余行线为“0”状态,其余行均为“1”状态。

2、单片机读入输入缓冲器的状态,以确定哪条列线为“0”状态。

如此时,若R1为“0”状态,则为“0”键压下;等等。

3、若输入缓冲器的状态全部为“1”状态,则单片机继续使行线R3为低,其余行线为高,再读入输入缓冲器的状态,以确定哪条列线为“0”状态,从而判断是哪个键压下。

4、当判断出哪个键压下之后,程序转入相应的键处理程序。

我们将这样的工作过程,称为键扫描,键扫描的方式有:

程序扫描方式:

单片机的控制一旦进入监控程序,将反复不断地扫描键盘,等待输入命令或数据。

定时扫描方式:

在初始化程序中对定时器/计数器进行编程,使之产生10ms的定时中断,单片机响应定时中断,执行中断服务程序,对键盘扫描一遍,检查键盘的状态,实现对键盘的定时扫描。

当两遍扫描到键位上都有键压下(延迟正好为8ms)时,单片机才作键处理

2.4DAC0832引脚及其功能

图4DAC0832引脚

DAC0832是双列直插式8位D/A转换器。

能完成数字量输入到模拟量(电流)输出的转换。

图1-1为DAC0832的引脚图。

其主要参数如下:

分辨率为8位,转换时间为1μs,满量程误差为±1LSB,参考电压为(+10~-10)V,供电电源为(+5~+15)V,逻辑电平输入与TTL兼容。

从图4中可见,在DAC0832中有两级锁存器,第一级锁存器称为输入寄存器,它的允许锁存信号为ILE,第二级锁存器称为DAC寄存器,它的锁存信号也称为通道控制信号/XFER。

图4中,当ILE为高电平,片选信号/CS和写信号/WR1为低电平时,输入寄存器控制信号为1,这种情况下,输入寄存器的输出随输入而变化。

此后,当/WR1由低电平变高时,控制信号成为低电平,此时,数据被锁存到输入寄存器中,这样输入寄存器的输出端不再随外部数据DB的变化而变化。

对第二级锁存来说,传送控制信号/XFER和写信号/WR2同时为低电平时,二级锁存控制信号为高电平,8位的DAC寄存器的输出随输入而变化,此后,当/WR2由低电平变高时,控制信号变为低电平,于是将输入寄存器的信息锁存到DAC寄存器中。

图4中其余各引脚的功能定义如下:

(1)、DI7~DI0:

8位的数据输入端,DI7为最高位。

(2)、IOUT1:

模拟电流输出端1,当DAC寄存器中数据全为1时,输出电流最大,当DAC寄存器中数据全为0时,输出电流为0。

(3)、IOUT2:

模拟电流输出端2,IOUT2与IOUT1的和为一个常数,即IOUT1+IOUT2=常数。

(4)、RFB:

反馈电阻引出端,DAC0832内部已经有反馈电阻,所以RFB端可以直接接到外部运算放大器的输出端,这样相当于将一个反馈电阻接在运算放大器的输出端和输入端之间。

(5)、VREF:

参考电压输入端,此端可接一个正电压,也可接一个负电压,它决定0至255的数字量转化出来的模拟量电压值的幅度,VREF范围为(+10~-10)V。

VREF端与D/A内部T形电阻网络相连。

(6)、Vcc:

芯片供电电压,范围为(+5~15)V。

(7)、AGND:

模拟量地,即模拟电路接地端。

(8)、DGND:

数字量地。

2.5液晶显示模块和AT89S51连接

LCD1602的数据端与AT89S51单片机的P0口连接,EN、R/W和RS分别与P2.0、P2.1、P2.2连接。

 

图5液晶显示模块

1602液晶模块内部的控制器共有11条控制指令,如表1所示,

指令说明

RS

R/W

D7

D6

D5

D4

D3

D2

D1

D0

清除显示幕

0

0

0

0

0

0

0

0

0

*

光标回到原点

0

0

0

0

0

0

0

0

1

*

进入模式设定

0

0

0

0

0

0

0

1

I/D

S

显示幕ON/OFF

0

0

0

0

0

0

1

D

C

B

移位

0

0

0

0

0

1

S/C

R/L

*

*

功能设定

0

0

0

0

1

DL

N

F

*

*

字发生器地址设定

0

0

0

1

ACG

设置显示地址

0

0

1

ADD

忙碌标志位BF

0

1

BF

显示数据

1

0

写入数据

读取数据

1

1

读出数据

 它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明:

1为高电平、0为低电平)

指令1:

清显示,指令码01H,光标复位到地址00H位置

指令2:

光标复位,光标返回到地址00H

指令3:

光标和显示模式设置I/D:

光标移动方向,高电平右移,低电平左移S:

屏幕上所有文字是否左移或者右移。

高电平表示有效,低电平则无效

指令4:

显示开关控制。

D:

控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:

控制光标的开与关,高电平表示有光标,低电平表示无光标B:

控制光标是否闪烁,高电平闪烁,低电平不闪烁

指令5:

光标或显示移位S/C:

高电平时移动显示的文字,低电平时移动光标

指令6:

功能设置命令DL:

高电平时为4位总线,低电平时为8位总线N:

低电平时为单行显示,高电平时双行显示F:

低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符

指令7:

字符发生器RAM地址设置

指令8:

DDRAM地址设置

指令9:

读忙信号和光标地址BF:

为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:

写数据

指令11:

读数据

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。

要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表1602的内部显示地址。

16×216字2行

80

81

82

83

84

85

86

87

88

89

8A

8B

8C

8D

8E

8F

C0

C1

C2

C3

C4

C5

C6

C7

C8

C9

CA

CB

CC

CD

CE

CF

2.6整体设计电路

图6整体设计电路

用AT89S51作主控制器,有16×16的键盘输入,用以设计频率、幅值和波形输入选择,液晶显示输出波形的类型、频率和幅值,DA0832输出模拟量。

3软件系统原理

3.1设计思想

1、将一个周期T的信号分离成32个点(按X轴等分),每两点之间间隔为△T,用单片机的定时器产生,如下式所示:

△T=T/32

如果单片机的晶振为12MHz,采用定时器方式0,则定时器的初值为:

A

X=213-△T/Tm(其中Tm为机器周期)

Y

定时时间常数为:

Y

TL=(8192-△T)MOD32(其中△T的单位为US)

TH=(8192-△T)/32

△T

MOD32表示除32取余数

例如:

一个100HZ的信号,其定时时间常数为:

图7正弦波的模拟信号分离

△T

O

TL=(8192-T/32)MOD32=08H

TH=(8192-T/32)/32=0F6H

2、正弦波的模拟信号分离如图7所示(其他波形的信号分离图略),图中Y是D/A转换器的模拟量输出,其计算公式为:

Y=(A/2sin△t)+A/2(其中A=VREF)

△t=N△T(N=1~32)

那么对应着存放在单片机的这一点的数据为:

幅值的设置:

从各个波形表中查出每点对应的数值,查出点的最大值是5V。

根据幅值要求算出真实输出是值。

设该点是X,真实输出是值X/(6-5),其指今是MOVB,VARM

DIVABMOVP3,A

3、一个周期被分离成32个点,对应的波形的32个数据如下正弦波的设计(其他波形分离原理与正弦波相似)

SIN1:

MOVDPTR,#SIN_TAB

MOVA,R6

MOVCA,@A+DPTR

MOVB,VARM

DIVAB

MOVP3,A;DA转换

MOVA,R6

INCA

MOVR6,A

CJNEA,#32H,SIN

MOVR6,#00H

SIN:

RETI

SIN_TAB:

DB98H,0B0H,0C6H,0D9H,0E9H,0F5H,0FCH,0FFH

DB0FCH,0F5H,0E9H,0D9H,0C6H,0B0H,98H,7FH

DB66H,4EH,38H,25H,15H,0AH,02H,00H

DB02H,0AH,15H,25H,38H,4EH,66H,7FH

3.2DAC0832原理

图8为单片机和DAC0832直通方式输出连接图,运放输出电路输出电压为UOUT=-(D/256)*VREF,例如上图中向DAC0832传送的8位数据量40H(01000000B),则输出电压UOUT=-(64/256)*5V=-1.25V,其输出过程可用MOVP3,#40H一条指令完成。

图8单片机和DAC0832直通方式输出连接图

3.3键盘扫描

P1.7P1.6P1.5P1.44个步骤:

P1.31.P1.3=0行扫描初值

P1.22.P1左移检测列

P1.13.P1右移扫描行

P1.04.计数指针至TABLE取码

L1:

MOVR3,#0F7H

MOVR1,#00H

L2:

MOVA,R3

MOVP1,A

MOVA,P1

MOVR4,A

SETBC

MOVR5,#04H

L3:

RLCA

JNCKEYIN

INCR1

DJNZR5,L3

MOVA,R3

SETBC

RRCA

MOVR3,A

JCL2

AJMPL1

3.4程序流程图

程序主流程图如图9所示。

主程序主要完成系统初始化,开中断,循环等待;T0中断服务子程序主要完成键盘操作、显示、输出控制等功能。

限于篇幅,本程序其他波形段省略。

开始

初始化

键盘扫描

按键码值

按功能键

Y

Y

按数字键

按数字键

设频率参数

设电压参数

判断波形

中断设置

显示幅值

显示频率值

设波形值

 

图9主流程图

程序中断服务流程图如图10所示。

中断时间对应频率的设置。

限于篇幅。

Y

Y

Y

Y

Y

N

N

N

返回

N

D/A转换

D/A转换

D/A转换

D/A转换

D/A转换

幅值计算

图10中断服务流程图

使用说明书

1、键盘

A

0

B

C

7

8

9

D

4

5

6

E

1

2

3

F

2、键盘功能说明

0——9:

为数字键频率和电压值的设定;

A键:

功能键切换频率与电压值设定;

B键:

正弦波输出;

C键:

三角波输出;

D键:

方波输出;

E键:

齿锯波输出;

F键:

梯形波输出;

收获和体会

首先,衷心感谢我的指导教师陈政石老师。

扎实的专业知识、活跃的学术思想、严谨的治学态度、求实的工作作风、清晰的指导思路,通过面授和通信等多种方式,给予我多次耐心的指导。

设计的难点:

频率和幅值的设置是设计的难点,开始的时候没有想通定时器定时的原理,不知道应该怎么着手,教材和网上也没有找到相关的资料,所以想了很久。

后来跟同学共同研究才找到了方法。

体会:

在设计整个低频多波形函数信号发生器的设计过程中,我从中学到了不少东西,更深一步掌握了AT89S51单片机、DAC0832、键盘和液晶显示的应用。

电路虽然简单,但焊接起来还是有一定的难度经常有管脚接错的地方,说明对芯片使用不够熟练,在今后我能多加练习。

通过使用51学习板对自己所设计的程序进行调试,在调试过程中能够分析出现的出错原因并及时对其进行修改,总结出最佳的方案。

自己从中也学到了不少知识,特别是跟据液晶显示的功能表来编程序,这在课本中根本没有提及,进一步了解单片机定时器的应用。

该程序比较难实现的是频率输出的切换,经过多次的思考结合的方案,调节方便。

幅值调节是容易实现,只是把最大值除以对应值。

掌握低频多波形函数信号发生器的设计方法,加强了理论知识与实践统一的能力,加强了自己的动手操作能力,为以后的电路设计打好基础。

实验源程序

;多功能波形发生器程序:

可调幅度,可调频率,液晶显示

;日期:

2006.12.25

RSBITP2.0

RWBITP2.1

EBITP2.2

VARMEQU40H;幅值变量

VARFEQU41H;频率变量

VART1EQU42H

VART2EQU43H

ORG00H

AJMPMAIN

ORG0BH

AJMPTIM0

ORG100H

MAIN:

MOVSP,#70H

MOVP0,#01H

LCALLENABLE

MOVP0,#38H

LCALLENABLE

MOVP0,#0FH

LCALLENABLE

MOVP0,#06H

LCALLENABLE

MOVP0,#80H

LCALLENABLE

MOVDPTR,#TABLE0

LCALLWRITE1

MOVP0,#0C0H

LCALLENABLE

MOVDPTR,#TABLE1

LCALLWRITE1

MOVR5,#50;显示xwellchen

DELAYD:

LCALLDELAY1;延时5s

DJNZR5,DELAYD

MOVP0,#80H

LCALLENABLE

MOVDPTR,#DISP1

LCALLWRITE1

MOVP0,#0C0H

LCALLENABLE

MOVDPTR,#TABLE2

LCALLWRITE1

MOV33H,#35H

MOVVARM,#01H;设置5V

MOV39H,#20H;显示10Hz

MOV3AH,#20H

MOV3BH,#31H

MOV3CH,#30H

MOVTMOD,#00H;定时器初始化

MOVVART1,#15H;设置10HZ定时时间

MOVVART2,#9EH

SETBET0

SETBEA

;================================

;功能键扫描

;================================

KEY:

MOVP0,#01H;显示初值

LCALLENABLE

MOVP0,#80H

LCALLENABLE

MOVDPTR,#DISP1

LCALLWRITE1

LCALLDISPLAY

KEY1:

LCALLL1;调用键盘

MOVR0,A

MOVA,R0

CJNEA,#41H,K1

LJMPSETVAR;设置幅度

K1:

MOVA,R0

CJNEA,#42H,K2

LJMPSINE;正弦波

K2:

MOVA,R0

CJNEA,#43H,K3

LJMPSQUARE;方波

K3:

MOVA,R0

CJNEA,#44H,K4

LJMPTRIANGLE;三角波

K4:

MOVA,R0

CJNEA,#45H,K5

LJMPECHELON;梯形波

K5:

MOVA,R0

CJNEA,#46H,K6

LJMPSAWTOOTH;锯齿

K6:

JMPKEY

;---------------------

;设置幅值

;---------------------

SETVAR:

MOVP0,#01H;显示幅值设置

LCALLENABLE

MOVP0,#80H

LCALLENABLE

MOVDPTR,#TABLE4

LCALLWRITE1

LCALLDISPLAY

KEY2:

LCALLL1;调用键盘扫描

MOVR0,A

MOVA,R0

CJNEA,#41H,KR1

LJMPSETVARF;设置频率

KR1:

MOVA,R0

CJNEA,#42H,KR2

LJMPSINE;正弦波

KR2:

MOVA,R0

CJNEA,#43H,KR3

LJMPSQUARE;方波

KR3:

MOVA,R0

CJNEA,#44H,KR4

LJMPTRIANGLE;三角波

KR4:

MOVA,R0

CJNEA,#45H,KR5

LJMPECHELON;梯形波

KR5:

MOVA,R0

CJNEA,#46H,KR6

LJMPSAWTOOTH;锯齿

KR6:

MOVA,R0

MOV33H,A;幅值设置

LCALLDISPLAY

MOVA,#36H

CLRC

SUBBA,33H

MOVVARM,A

AJMPSETVAR

;----------------------

;设置频率

;---------------------

SETVARF:

MOVP0,#01H;显示频率设置

LCALLENABLE

MOVP0,#80H

LCALLENABLE

MOVDPTR,#TABLE5

LCALLWRITE1

LCALLDISPLAY

KEY3:

LCALLL1

MOVR0,A

MOVA,R0

CJNEA,#41H,KF1

LJMPKEY;返回

KF1:

MOVA,R0

CJNEA,#42H,KF2

LJMPSINE;正弦波

KF2:

MOVA,R0

CJNEA,#43H,KF3

LJMPSQUARE;方波

KF3:

MOVA,R0

CJNEA,#44H,KF4

LJMPTRIANGLE;三角波

KF4:

MOVA,R0

CJNEA,#45H,KF5

LJMPECHELON;梯形波

KF5:

MOVA,R0

CJNEA,#46H,KF6

LJMPSAWTOOTH;锯齿

KF6:

MOVA,R0

CJNEA,#31H,KF7

LJMPK10H;输出10Hz

KF7:

MOVA,R0

CJNEA,#32H,KF8

LJMPK100H;输出100Hz

KF8:

MOVA,R0

CJNEA,#33H,KF9

LJMPK200H;输出200Hz

KF9:

MOVA,R0

CJNEA,#34H,KFA

LJMPK500H;输出500Hz

KFA:

MOVA,R0

CJNEA,#35H,KFB

LJMPK1K;输出1KHz

KFB:

AJMPSETVARF;键盘扫描子程序

L1:

MOVR3,#0F7H

MOVR1,#00H

L2:

MOVA,R3

MOVP1,A

MOVA,P1

MOVR4,A

SETBC

MOVR5,#04H

L3:

RLCA

JNCKEYIN

INCR1

DJNZR5,L3

MOVA,R3

SETBC

RRCA

MOVR3,A

JCL2

AJMPL1

KEYIN:

MOVR7,#60

D2:

MOVR6,#248

DJNZR6,$

DJNZR7,D2

D3:

MOVA,P1

XRLA,R4

JZD3

MOVA,R1

MOVDPTR,#TABLE3

MOVCA,@A+DPTR

RET

K10H:

MOV39H,#20H;显示10HZ

MOV3AH,#20H

MOV3BH,#31H

MOV3CH,#30H

LCALLDISPLAY

MOVVART1,#15H;设10HZ定时

MOVVART2,#9EH

AJMPSETVARF

K100H:

MOV39H,#20H;显示100HZ

MOV3AH,#31H

MOV3BH,#30H

MOV3CH,#30H

LCALLDISPLAY

MOVVART1,#08H;设100HZ定时

MOVVART2,#0F6H

AJMPSETVARF

K200H:

MOV39H,#20H

MOV3AH,#32H

MOV3BH,#30H

MOV3CH,#30H

LCALLDISPLAY

MOVVART1,#03H;设200HZ定时

MOVVART2,#0FBH

AJMPSETVARF

K500H:

MOV39H,#20H

MOV3AH,#35H

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2