函数信号发生器的设计12864实现动态波形显示资料Word格式.docx

上传人:b****2 文档编号:4188409 上传时间:2023-05-02 格式:DOCX 页数:36 大小:1.32MB
下载 相关 举报
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第1页
第1页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第2页
第2页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第3页
第3页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第4页
第4页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第5页
第5页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第6页
第6页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第7页
第7页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第8页
第8页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第9页
第9页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第10页
第10页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第11页
第11页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第12页
第12页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第13页
第13页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第14页
第14页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第15页
第15页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第16页
第16页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第17页
第17页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第18页
第18页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第19页
第19页 / 共36页
函数信号发生器的设计12864实现动态波形显示资料Word格式.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

函数信号发生器的设计12864实现动态波形显示资料Word格式.docx

《函数信号发生器的设计12864实现动态波形显示资料Word格式.docx》由会员分享,可在线阅读,更多相关《函数信号发生器的设计12864实现动态波形显示资料Word格式.docx(36页珍藏版)》请在冰点文库上搜索。

函数信号发生器的设计12864实现动态波形显示资料Word格式.docx

(8)图表是否符合标准:

符合()、较符合()、基本符合()、大多不符合()

(9)撰写是否规范整洁:

规范整洁()、较规范()、欠规范()、不太规范()

总评成绩:

优()、良()、中()、及格()、不及格()

评阅人职称副教授

2016年1月日

一、课程设计及要求及目的

通过课程设计环节加深对单片机原理及应用技术的理解,提高理论结合实践的能力,提高单片机系统设计和开发的能力,初步学习一个完整的单片机系统的研发过程,并培养严谨细致的科研态度。

熟悉掌握常用的单片机设计软件以及一些网上个人研发的实用小软件。

例如51单片机最常用keil和protues软件以及个人研发的单片机小精灵、汉字取模软件、串口助手等。

要求设计一个单片机应用系统,利用keil和proteus软件完成系统软硬件的设计及模拟调试,在有条件的情况下完成对事物的操作。

本文设计了一种以STC89C51为核心的简易信号产生电路,该电路使用DAC0832数模转换器件对单片机输出的数字量进行转换,使用数组定义的方式完成不同波形的输出,并通过外部中断实现对输出波形形状和波形频率等的控制,该设计以LCD16824液晶显示屏对波形的类别、形状、频率等信息以中文或图形的方式输出显示。

实验结果表明,该系统设计具有体积小,性能稳定,反应速度快,可以迅速简便的实现多种波形输出的优点。

二、设计思想及设计说明

该设计主要由信号发生器的设计和LCD液晶显示两部分组成,其中,信号发生器的设计为本设计的重点内容,但设计过程较为简单。

LCD液晶显示为本设计的辅助模块,使的使用者对该信号发生器更容易操作,是本设计过程中耗时最多的阶段,可以说是本设计的难点。

1函数发生器模块

该模块使用DA转换芯片DAC0832对单片机输出的8位二进制的数字量进行数字到模拟信号的转化,由于DAC0832为电流型输出,所以在输出端口使用一级运放LM324实现将电流输出转为电压输出,之后使用二级运放实现对输出信号的放大,使输出波形的幅值可调,在设计的端口使用RC低通滤波器对输出波形进行滤波,使所得到的波形更加平滑。

在软件设计方面,为了与LCD显示屏联合使用,该设计没有使用正弦、方波、三角波、锯齿波的波形函数作为输出数字量,而是使用64个单元的数组定义每一个波形,由此,也可以更加方便的增加其他波形的输出。

2LCD液晶显示模块

该模块使用protues中提供的AMPIRE128X64液晶显示屏,该显示屏无中英文字库,所以设计过程中需要对自己需要的字符和汉字进行取模,本设计将该显示屏分为两部分,整屏幕的前四分之一用于显示“函数”“正弦”“方波”“三角”“锯齿”“频率”和峰峰值等信息。

后面的部分用于显示输出波形的形状。

该模块的关键点在于AMPIRE128X64这款液晶显示屏的控制方法、矩阵排列方式以及与市场上常见的LCD16824的区别于共性和区别。

共性点在于控制、读写等指令的相同,以及该端口的强大的锁存功能。

区别主要在于该12864将整个屏幕分为两块,分别使用外部控制信号CS1与CS2选择开通。

三、硬件设计

该设计的硬件连接图如图一所示,箭头线上为管脚的连接方式。

具体的连接方式见附录1:

简易信号发生器的设计图纸。

图一系统硬件连接简图

四、程序设计流程

该程序的设计流程图如图二所示,系统首先将输出波形定义为正弦波输出,且频率定义为400HZ,并将该信息在LCD液晶显示频上显示出来,之后进入主函数,并不断调用正弦波的数组使之按照正弦波规律变化,经过外部DA转化实现正弦波输出。

与此同时,外部中断随时可以打破主循环,通过外部中断0将其他波形定义为当前输出波形,每按一次,波形变化一次,循环往复,并在该中断服务程序中改变LCD显示波形、频率等信息。

而在外部中断1中,只改变波形频率,只需要刷新频率显示部分即可。

整个程序设计代码在附录2中:

程序代码

图二程序流程图

五、系统模块化设计

1、函数信号发生器的设计

1.1、DAC0832的介绍

DAC0832是8分辨率的D/A转换集成芯片。

与微处理器完全兼容。

这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。

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

其内部结构如图三所示

图三DAC0832的结构图

该芯片有三种工作方式,分别为但缓冲、双缓冲和直通方式。

在该控制系统中使用其直通方式。

接线方式为将数据口与单片机P1口相连、XREF、WR2、WR1、CS控制端口全部接地,ILE接高电平。

在这种接线方式下,只要数据端口接收到数据立刻就能转化为模拟信号输出,使得系统的实时性好,响应速度快。

1.2、发生器的功能设计

89C51是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从按键接收改变数据,进行各种功能波形的转换。

当数字信号电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。

波形的输出通过波形数据表完成,该波形数据表是将信号一个周期等间距地分离成64个点,储存在单片机得ROM内。

这些数据可以通过MATLAB软件生成,例如正弦表,MATLAB生成的程序如下:

x=0:

2*pi/64:

2*pi;

y=round(sin(x)*127)+128

(1)

该函数信号发生部分的主要程序段如下所示,

P2=*(which_bx+kk);

//which_bx选择哪一种波形显示,为这种波形数据的首地址

kk++;

if(kk==64)

kk=0;

while(delay_time)

delay_time--;

通过调节delay_time的大小可以调节输出频率的大小,经过实际运行测得当delay_time为0时,运行一次的时间为,则频率为400hz,这是该函数信号发生器的最大输出频率。

1.3、函数发生器的外围电路组成

该部分使用一级运放实现对输出电流转为输出电压,并使用二级运放经过滑动变阻器放大输出电压,使得电压可调,最后通过低通滤波器RC网络进行滤波,实现波形的输出。

选择二级运放的前置电阻为5K,滑动变阻器的最大阻值为10K,则最大可以将输出的峰值电压5V变为10V。

电压的调节范围是(0~10V)。

该模块的电路图如图所示。

图四函数发生器的外围电路组成

2、液晶显示模块

2.1AMPIRE128X64液晶显示屏的原理介绍

该AMPIRE128*64液晶显示频不自带中英文字库,是一种图形点阵液晶显示器,它主要由行主要由行驱动器/列驱动器及128×

64全点阵液晶显示器组成。

可完成图形显示,也可以显示8×

4个(16×

16点阵)汉字。

其管脚定义表一所示

表一AMPIRE128X64的管脚定义

管脚名称

LEVER

管脚功能描述

VSS

电源地

VDD

+5.0V

电源电压

V0

——

液晶显示器驱动电压

D/I(RS)

H/L

D/I=“H”,表示DB7∽DB0为显示数据

D/I=“L”,表示DB7∽DB0为显示指令数据

R/W

R/W=“H”,E=“H”数据被读到DB7∽DB0

R/W=“L”,E=“H→L”数据被写到IR或DR

E

R/W=“L”,E信号下降沿锁存DB7∽DB0

R/W=“H”,E=“H”DDRAM数据读到DB7∽DB0

DB0~DB7

数据线

CS1

H:

选择芯片(右半屏)信号

CS2

选择芯片(左半屏)信号

RET

复位信号,低电平复位

VOUT

-10V

LCD驱动负电压

LED+

-

LED背光板电源

LED-

在使用12864LCD前先必须了解以下功能器件才能进行编程。

12864内部功能器件及相关功能如下:

1.指令寄存器(IR)

IR是用于寄存指令码,与数据寄存器数据相对应。

当D/I=0时,在E信号下降沿的作用下,指令码写入IR。

2.数据寄存器(DR)

DR是用于寄存数据的,与指令寄存器寄存指令相对应。

当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0数据总线。

DR和DDRAM之间的数据传输是模块内部自动执行的。

3.忙标志:

BF

BF标志提供内部工作情况。

BF=1表示模块在内部操作,此时模块不接受外部指令和数据。

BF=0时,模块为准备状态,随时可接受外部指令和数据。

利用STATUSREAD指令,可以将BF读到DB7总线,从检验模块之工作状态。

4.XY地址计数器

XY地址计数器是一个9位计数器。

高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。

X地址计数器是没有记数功能的,只能用指令设置。

Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。

5.显示数据RAM(DDRAM)

DDRAM是存储图形显示数据的。

数据为1表示显示选择,数据为0表示显示非选择。

6.Z地址计数器

Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。

当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。

Z地址计数器可以用指令DISPLAYSTARTLINE预置。

因此,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。

此模块的DDRAM共64行,屏幕可以循环滚动显示64行。

12864LCD的指令系统有以下两种,第一类是基本指令包括10组、第二类为扩充指令。

指令系统如下表所示:

表二:

(RE=0)基本指令

指令

 

指令码

功能

RS

D7D6D5D4D3D2D1D0

清除显示

00000001

将DDRAM填满"

20H"

并且设定DDRAM的地址计数器(AC)到"

00H"

地址归位

0000001X

设定DDRAM的地址计数器(AC)到"

并且将游标移到开头原点位置;

这个指令不改变DDRAM的内容

显示状态开/关

00001DCB

D=1:

整体显示ONC=1:

游标ONB=1:

游标位置反白允许

进入点设定

000001I/DS

指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位

游标或显示移位控制

0001S/CR/LXX

设定游标的移动与显示的移位控制位;

功能设定

001DLXREXX

DL=0/1:

4/8位数据RE=1:

扩充指令操作RE=0:

基本指令操作

设定CGRAM

地址

01AC5AC4AC3AC2AC1AC0

设定CGRAM地址

设定DDRAM

10AC5AC4AC3AC2AC1AC0

设定DDRAM地址(显示位址)

第一行:

80H-87H,第二行:

90H-97H

读取忙标志和地址

1

BFAC6AC5AC4AC3AC2AC1AC0

读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值

写数据到RAM

数据

将数据D7——D0写入到内部的RAM(DDRAM/CGRAM/IRAM/GRAM)

读出RAM的值

从内部RAM读取数据D7——D0

(DDRAM/CGRAM/IRAM/GRAM)

2.2波形汉字显示程序设计

该模块的电路原理图如图五所示,其中控制端口为P3口相连。

图五显示模块电路图

显示程序部分的组成包括基础部分、辅助部分和显示部分组成。

用该部程序模块组成如图六所示

图六显示模块的程序组成

查看忙不忙,是当lcd处于内部运行状态的时候,此时忙不忙标志位为0的时候,不接受外界写入的数据和命令,因此在读命令和数据之前必须先检测lcd忙不忙,然后进行命令控制与数据输入。

辅助部分的程序是对整个屏幕的显示进行选择,清除等操作,为显示程序提供输入入口。

AMPIRE128*64共计有8页,可以理解为8大行,每大行有8小行,有2个半屏,每个半屏有0到第63列,总计有128列。

即整个显示屏为64*128个LED组成,在该设计中屏幕的占用情况如图七所示。

图七12864的屏幕占用情况

汉字的显示包括显示“函数”、“正弦”、“三角”、“方波”、“锯齿”,“频率”。

英文的显示有“HZ”、“Vp”以及数字的显示(显示频率以及峰峰值)。

由于该LCD自带无字库,因此,需要对要显示的部分进行取模。

按照12864的数据读取是每一页的第一行为低端口,第八行为高输出口,且每次数据读取之后自动对列数加一,因此取模方式为从左到右、从上到下。

设计中使用晓奇工作室制作的液晶汉字模提取软件。

波形的显示程序显示的波形为3/2个周期的波形。

由于定义的波形数组共计64个数,正好占据整个屏幕的3/4,共计96列,每一个数对应列,即每一列都有一个数据。

由于该屏幕有64行,而模拟量最大为255,因此,每行代表4个大小,通过这种方式就可以使整个屏幕显示出连续正常的波形。

坐标轴包括X、Y轴的绘制,该部分只要在理解12864显示原理的基础上就可以很轻松的画出来。

3、中断系统的使用

该设计使用外部中断0来切换当前显示波形,使用外部中断1来切换输出频率。

巧妙的使用指针工具使得最初方案的代码消减了一大半。

中断服务程序在切换完成波形和频率的转换之后分别对屏幕清屏处理再次显示(波形切换)、刷新处理(频率改变)。

六、程序字节分配

51单片机中片内数据存储器共计有128个字节,该设计中使用62.7个字节的数据存储器空间。

共有程序存储器4KB=4096个字节,该设计使用的程序存储器空间为4000b,故满足。

无片外数据存储器的使用。

七、功能描述与设计调试总结

1、功能描述

该系统使用AT89C52为主控单元,通过其控制DAC0832进行数模转换,完成方波,正弦波,锯齿波和三角波的输出。

其中锯齿波是扩展功能。

通过液晶显示屏12864对波形和频率和峰峰值进行显示,以便于使用者的友好使用。

并通过中断进行波形输出与频率的转化。

波形的峰峰值是通过外部电路设计的,波形汉字显示是扩展功能。

技术参数。

电压调节范围是0~10V,当滑动变阻器滑动50%时,理论值输出电压的峰峰值为5V,虚拟示波器显示为5.005V;

当滑动变阻器滑动100%时,理论值输出电压的峰峰值为10V,虚拟示波器显示为9.975V。

故技术参数符合设计要求。

该信号发生器的输出波形频率最大为400hz,频率可调,其设定频率变化参数为表三所示。

表三调频取值

单位(Hz)

400

372

325

289

260

236

217

200

186

173

162

153

144

137

132

124

118

113

108

104

100

96

93

89

86

84

81

78

76

74

70

68

66

65

63

62

60

59

57

54

单位(HZ)

52

50

48

46

44

43

42

40

------

--------

2、设计调试总结

该设计过程中存在第一个障碍是波形的输出在峰值的地方出现急速下降,波形显示不合理,在protues中的虚拟示波器显示波形如八所示。

八调试过程中的系统波形

经过检查发现错误的根源在于一级运放输出口没有经过电阻直接接在了二级运放的输出端。

经过调整之后的数码管显示波形如图九所示。

可见此时的波形已经达到了理想的输出效果。

九调整后的输出波形

设计过程中的第二个问题是液晶显示问题,发现市场上普遍使用的12684与protues中所用的12684的显示原理不太相同,尤其在分屏显示与显示寄存器的地址分布上。

而读写控制时序大致相同。

后来参考网上的protues中lcd12684的图形显示程序,并对照说明书对该部分有了认识,尤其是在页地址与行地址,列地址的问题上,理解了lcd12684原理之后对写起来后面的显示程序部分就如鱼得水的,原来以为还要两三天才能解决,结果熬了会夜就写完了。

LCD显示情况如图十所示

图十12864波形显示

由后两张图可以看出,波形在变化时有不连续的地方,这也符合发生器本身的特点,因此,未进行连线处理。

由此可知,该设计满足设计要求性能可靠。

八设计总结

九、参考文献

[1]徐春辉.单片微机原理及应用[M].北京:

电子工业出版社,2013.

[2]周润景,张丽娜.基于protues的电路及单片机系列设计与仿真[M].北京:

北京航空航天大学出版社,2006.

[3]张毅刚,彭元喜,姜守达等.MCS-51单片机应用设计[M].哈尔滨:

哈尔滨工业大学出版社.2003.

[4]

附录1:

#include<

reg51.h>

math.h>

intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

#definelcdcol_add0x40

#definepage_add0xb8

sbitbx_adjust=P3^2;

//函数发生器定义

sbitpl_adjust=P3^3;

//中断输入接口

ucharbxxz=0,pl=0,delay_time=0,kk,pp;

//为函数发生模块提供中间变量

uchar*which_bx,*which_bx2;

//选择哪一种波形

uintpl_num;

/*************12864LCD引脚定义*************/

sbitLCD_RS=P3^7;

//寄存器选择输入

sbitLCD_RW=P3^6;

//液晶读/写控制

sbitLCD_EN=P3^5;

//液晶使能控制

sbitLCD_RST=P3^4;

//液晶复位端口

sbitLCD_CS1=P3^0;

//右半屏控制

sbitLCD_CS2=P3^1;

//左半屏控制

ucharcodepinglv[64]={

0x40,0x7C,0x40,0xFF,0x48,0x6C,0x4A,0xF2,

0x12,0x1A,0xD6,0x12,0x12,0xFB,0x12,0x00,

0x00,0x14,0xA4,0x44,0x04,0x24,0xB5,0x6E,

0x24,0x94,0x04,0x44,0xA6,0x14,0x00,0x00,

0x08,0x87,0x40,0x2F,0x10,0x0F,0x80,0x8F,

0x40,0x20,0x1F,0x20,0x40,0xCF,0x00,0x00,

0x08,0x09,0x08,0x08,0x09,0x09,0x09,0xFF,

0x09,0x09,0x0B,0x08,0x08,0x0D,0x08,0x00

};

ucharcodehanshu[64]={

0x00,0xF0,0x00,0x22,0x42,0x82,0x02,0xF2,

0x12,0x8A,0x46,0x62,0x00,0xF0,0x00,0x00,

0x10,0x92,0x54,0x30,0xFF,0x50,0x94,0x32,

0xD8,0x17,0x10,0x10,0xF0,0x18,0x10,0x00,

0x00,0xFF,0x40,0x48,0x44,0x52,0x60,0x5F,

0x40,0x42,0x44,0x4C,0x40,0xFF,0x00,0x00,

0x02,0x82,0x4E,0x33,0x22,0x52,0x8E,0x40,

0x23,0x14,0x08,0x16,0x61,0xC0,0x40,0x00

ucharcodezx[64]={

0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0xFE,

0x82,0x82,0x82,0xC2,0x83,0x02,0x00,0x00,

0x02,0xE2,0x22,0x22,0x3E,0x08,0x08,0x88,

0x49,0x3A,0x08,0x08,0x88,0x0C,0x08,0x00,

0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x7F,

0x40,0x40,0x40,0x40,0x40,0x60,0x40,0x00,

0x00,0x43,0x82,0x42,0x3E,0x00,0x20,0x31,

0x29,0x25,0x23,0x21,0x30,0x60,0x00,0x00

ucharcodejc[64]={

0x10,0x28,0xE7,0x24,0x24,0x24,0x00,0xFE,

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

当前位置:首页 > 工程科技 > 纺织轻工业

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

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