基于单片机的多功能信号发生器的系统设计与应用.docx

上传人:b****5 文档编号:14293382 上传时间:2023-06-22 格式:DOCX 页数:26 大小:900.09KB
下载 相关 举报
基于单片机的多功能信号发生器的系统设计与应用.docx_第1页
第1页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第2页
第2页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第3页
第3页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第4页
第4页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第5页
第5页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第6页
第6页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第7页
第7页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第8页
第8页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第9页
第9页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第10页
第10页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第11页
第11页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第12页
第12页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第13页
第13页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第14页
第14页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第15页
第15页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第16页
第16页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第17页
第17页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第18页
第18页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第19页
第19页 / 共26页
基于单片机的多功能信号发生器的系统设计与应用.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的多功能信号发生器的系统设计与应用.docx

《基于单片机的多功能信号发生器的系统设计与应用.docx》由会员分享,可在线阅读,更多相关《基于单片机的多功能信号发生器的系统设计与应用.docx(26页珍藏版)》请在冰点文库上搜索。

基于单片机的多功能信号发生器的系统设计与应用.docx

基于单片机的多功能信号发生器的系统设计与应用

 

基于单片机的多功能信号发生器的系统设计与应用

信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。

各种波形曲线均可以用三角函数方程式来表示。

例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。

在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的振荡器。

随着集成芯片制造工艺的进一步发展,一些高性能的波形产生专用芯片逐渐被应用到该领域并获得成功。

波形发生装置的电路设计得到进一步简化,而与此同时,所产生的波形的质量却得到了显著提高。

例如应用比较广泛的DDS芯片AD9833系列,能制作出各种频带宽,质量高的波形信号,例如应用高性能的AD9833芯片,可以做出频率1GHZ以上,频率分辨率0.1HZ以下的优质波形[2]。

科技不断发展,在各个领域对信号产生电路提出了越来越高的要求。

以往那些只具有单一优势的波形发生装置的应用越来越受到限制。

例如用模拟器件构成的波形发生器电路简单可靠、信号频率较高,但可调节性差;采用数字电路为核心的波形发生装置所产生的信号可调节性好,但电路复杂,而频率又不易做的很高。

较为理想的波形发生装置应该同时具备多方面的优良品质,信号的频带应该较宽,而且步进精确。

另外,微型化也是信号产生装置的发展趋势之一,这样,才能将信号发生装置方便的嵌入到各种仪器设备中。

随着芯片制造工艺的不断提高,性能更高、体积更小的专用信号处理芯片必将会越来越多地应用到信号产生电路中,使更高质量的信号的产生成为可能。

DDS技术的实现,一般有如下几种可选的方案。

首先是使用专用的DDS芯片,例如应用比较广泛的DDS芯片AD9833系列。

专用DDS芯片性能可靠,特别是在高频领域,有着无可替代的地位。

但在中低频领域,专用DDS芯片却不一定是唯一的选择。

其次是基于可编程逻辑器件FPGA的实现方法。

这也是一种较为成熟的实现方法,FPGA是把相应的逻辑“暂时”固化为硬件电路了,而且FPGA在编程使用时也十分灵活,因此,利用FPGA作为核心器件再辅以低通滤波等辅助电路就可以得到质量较高的波形信号[4]。

单片机以其体积小,功能齐全,价格低廉,可靠性高等方面所具有的独特优点,长期以来被广泛的应用在各个领域。

作为一种优秀的控制装置,当只要求波形发生装置工作在频率较低的频段时,用单片机取代专用DDS芯片和FPGA,通样可以得到频率精确可调的高质量的波形信号。

本系统将波形数据存放在单片机的存储器中,利用软件编程的方法模拟DDS原理,实现直接数字频率合成的功能[5]。

1系统设计与方案论证

1.1信号发生器实现的功能

本系统设计信号发生器欲实现的功能如下:

(1)本系统需要设计显示器,用以显示当前信号发生器的波形类型,以及信号发生器输出波形的幅度及频率;

(2)本系统需要设计键盘电路,用以调节信号发生器输出波形的幅度值和频率值;

(3)本系统需要设计的信号发生器可以输出三种不同的波形,波形类型分别为矩形波、正弦波和三角波;

(4)本系统需设计的信号发生器可以实现输出频率在1Hz和100MHz之间。

1.2系统方案设计

目前,波形发生器设计方案主要有以下几种:

1.方案一

用分立元件组成的函数发生器。

分立器件是相对于集成芯片而言的。

随着科学技术的不断发展,人们渐渐步入电子时代,分立器件也被也被广泛应用到消费电子、计算机及外设、网络通信,汽车电子、LED显示平等领域。

它包括:

半导体二极管、半导体三极管、电容、电阻、逻辑器件、传感器、敏感器件以及装好的压电晶体类似半导体器件等。

用分立器件组成的函数信号发生器通常机构简单、成本较低。

但是由于元器件的分散性及环境条件的改变等因素,致使波形频率产生偏差,它通常是单函数发生器且平率不高,其工作不很稳定,不易调试[6]。

2.方案二

制作函数信号发生器可用运放IC、晶体管等通用元器件。

晶体管、运放IC等通用器件均可以制作函数信号发生器,用专业的发生器产生信号则是普遍选择。

函数信号发生器IC在早些时候,如M8045、CA102、XR5547等,不仅精度不够高,功能也比较少,频率上限只有200kHz,若想产生更高的频率信号是难以实现的,再加上不够灵活的调节方式,频率,占空比无法单独调节。

由于用通用器件制作的信号发生器同样具有频率不高的缺点,因此,在本论文设计中,此种方案也不宜采用。

3.方案三

利用专用直接数字合成DDS芯片制作的函数信号发生器。

DDS有如下优点:

(1)速度快,可达到μs数量级;

(2)频率分辨率较高,输出频点多,可达多个频点切换;

(3)能够输出正交信号;

(4)频率切换时能实现相位连续;

(5)可以产生任意的波形;

(6)输出噪声低,对参数频率源的噪声有改善作用;

(7)全数字化实现便于集成,体积小,重量轻。

DDS芯片的时钟频率从几十兆赫兹到几百赫兹不等,芯片从一般功能到集成有D/A转换器和正交调制器[7]。

DDS有上述诸多优点,而且利用直接数字合成DDS芯片实现的函数信号发生器能够产生任意波形并达到很高的频率,克服了方案一、方案二的多数缺点,故本设计采用方案三。

1.3系统模块设计思路

根据毕业设计要求,以及方案的比较结果,拟采用DDS芯片实现设计内容。

本设计采用模块化思想,即将不同功能器件分别做成不同模块。

根据功能要求,共分为五大模块:

输入模块、显示模块、造波模块、调幅模块和控制模块。

其中输入模块为键盘,输出模块为LCD1602液晶显示器。

1.3.1主控模块的选择

方案一:

用单片STC89C52作为系统的主控核心。

单片机具有体积小,使用灵活的,易于人机对话和良好的数据处理,有较强的指令寻址和运算功能等优点。

且单片机功耗低,价格低廉的优点。

方案二:

C8051F005单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。

片内集成了控制系统和数据采集中常用的模拟部件和其他数字外设及功能部件,还具有标准8052的数字外设部件,而且执行速度快,但其价格较贵。

在此系统中,采用STC89C52单片机作为控制比采用C8051F005单片机、FPGA实现更简便。

基于综合性价比,确定选择方案一。

1.3.2显示模块的选择

方案一:

采用LED数码管。

LED数码管由8个发光二极管组成,每只数码管轮流显示各自的字符。

由于人眼具有视觉暂留特性,当每只数码管显示的时间间隔小于1/16s时人眼感觉不到闪动,看到的是每只数码管常亮。

使用数码管显示编程较易,但要显示内容多,而且数码管不能显示字母。

方案二:

采用LCD液晶显示器1602。

其功率小,效果明显,显示编程容易控制,可以显示字母。

优点是显示信息非常丰富,可以很形象的显示信号发生器的各个参数。

占用的I/O资源比较少,不需要循环扫描,节省了大量的程序开销。

以上两种方案综合考虑,本设计选择方案二。

1.3.3功率放大模块的选择

方案一:

采用多级放大电路。

由两个晶体管构成共射——共集放大电路如图1.3所示,第一级起到电压放大作用,达到正弦信号峰-峰值输出,第二级为跟随器,主要为了能够带50欧的负载,使其负载上的正弦信号的输出电压的峰-峰值达到题目的要求。

此电路只是在调试选定具体参数中比较麻烦,但工作比较稳定,比较易于实现。

图1.3共射-共基放大电路的交流通路

方案二:

采用可变增益放大器。

增益放大器直接与AD9833相接,用来实现电压的放大并且控制波形的失真,精确度高,且较稳定,实现简单。

系统可以采用AD603,这种芯片具有程控增益调整功能。

是一个90MHz带宽增益可调、低噪的集成运放,如用分贝表示增益,则控制电压与增益成线性关系,压摆率为275V/μs。

可编程的增益范围由管脚间的连接方式决定,增益在-11~+30dB时的带宽为90Mhz,增益在+9~+41dB时具有9MHz带宽,改变管脚间的连接电阻,可使增益处在所需范围内[10]。

综上所述,本设计采用方案二。

1.4开发工具和开发环境

本文件系统采用单片机C语言实现,编译器为KeiluVision2。

C语言具有可读性好的优势,更容易使大家相互借鉴,提高自己的程序设计水平。

C语言具有模块化程序结构的特点,使程序模块化,不断丰富。

采用C语言,可针对常用的功能模块、算法等编制相应的函数可针对单片机,常用的接口芯片编制通用的驱动函数。

这些函数经过整理可形成库函数,供广大的单片机爱好者使用和完善。

目前,8051系列单片机上的C语言的代码长度,在未加入优化的条件下做到了最优汇编程序水平的1.2—1.5倍,达到了中等程序员的水平。

在仿真器水平提高的前提下,优化水平还会继续提高。

在软件质量和开发速度及结构严谨性等方面,C语言的优势绝非汇编语言所能比拟[11]。

KEIL公司的C51编译器DOS版本曾通过美国Franklin公司在市场上畅销多年,最早传入我国并得到广泛使用的是FranklinC51V3.2版本。

随着时间的推移,KEIL公司的产品不断升级,V5.0以上版本C51编译器就配有基于Windows的uVision集成开发环境和dScope软件模拟调试程序。

现KEIL公司的编译器有支持经典8051和8051派生产品的版本,统称为Cx51。

新版本uVision2把uVision1用的模拟调试器dScope与集成开发环境无缝结合起来,界面更友好,使用更方便,支持的单片机品种更多。

因此,KeiluVision2是单片机程序开发的理想环境[12]。

1.5系统设计总框图

本系统的设计总框图如图1.4所示。

图1.4系统总体框图

本系统主要包括以下几个模块:

主控制器及其接口电路模块,键盘及液晶显示模块,波形产生模块,幅值调节模块。

其中,主控制器负责接收并处理来自键盘的命令输入,驱动液晶显示当前波形的频率值或幅值,向波形产生模块发送当前波形的频率值数据,向幅值调节模块发送当前波形的幅值数据,以此实现对整个系统的统一协调管理。

2系统硬件电路设计

根据系统框图可知,本系统的硬件电路设计应包括单片机最小系统设计、信号发生模块设计、显示电路设计、D/A转换电路与功率放大模块设计和按键提示电路设计等。

2.1单片机最小系统设计

单片机最小系统是指在保证控制器正常工作的前提下,所需的最小计硬件电路,它主要包括:

晶振电路、复位电路、供电电路。

晶振电路在单片机系统中的作用非常大,它为单片机电路内部工作提供时钟频率。

时钟频率越高,系统工作越快,它是单片机内部一切指令的时钟基础。

在正常条件下,普通的晶振频率绝对精度可达百万分之五十,可靠性很高,通常外部晶振电路与系统内部锁相环电路配合使用,用来提供系统所需的时钟频率。

对于级联系统,如果不同子系统需要不同频率的时钟基准信号,可以用与同一个晶振相连的不同锁相环来提供。

复位电路主要功能是让系统恢复到初始状态,如果程序跑飞,系统无法运行,可以使用复位电路让其再次启动,恢复系统功能。

供电电路主要是为系统提供能量,保证系统能正常工作。

2.1.1STC89C52RC单片机

本文选择的单片机型号为STC89C52系列,MCS-51单片机由美国INTEL公司推出,它比之前推出的MCS-48单片机功能更强,结构更先进,指令和电路单元都在原有的基础上增加了。

MCS-51系列单片机主要包括8031、8051和8751等通用产品[13]。

STC89C52单片机与经典的MCS-51单片机具有相同的内核结构,在应用上可以当作传统的MCS-51单片机使用。

该系列单片机主要特性:

(1)与C51单片机指令系统相兼容

(2)8k的FLASH可反复擦写使用;

(3)256x8bit内部Ram;

(4)三十二个双向输入输出接口;

(5)3个16位可编程定时计数器;

(6)系统时钟范围0-24MHz;

(7)2个UART串行通道;

(8)8个中断源含两个外部中断;

(9)2个读写线;

(10)具有低功耗空闲模式和掉电模式,通过软件设置睡眠和唤醒功能;

(11)有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。

2.1.2单片机最小系统

单片机最小系统如图2.1所示。

(1)单片机晶振电路:

单片机外围的晶振电路是通过单片机的第18(X2)、19(X1)引脚接入。

X1脚为振荡器反相放大器和内部时钟发生电路的输入端,X2脚为振荡器反相放大器的输出端。

对于MSC-51一般的晶振频率可以在1.2MHz—12MHz之间选择,这时电容C可以对应的选择10pF—30pF。

当使用89C52时晶振频率可以提高到24MHZ。

对于本设计的电容C用30pF,晶振选用12MHz。

晶振电路原理图如图2.1所示,一条引脚接在X1,另一条接在X2。

(2)KG:

复位信号。

当无源晶振工作时,RST脚将持续2个机器周期高电平将使单片机复位。

看门狗计时完成后,RST脚输出96个晶振周期的高电平。

特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。

DISRTO默认状态下,复位高电平有效。

为了防止程序执行过程中失步或运行紊乱,本系统采用了上电复位及手动复位电路。

图2.1单片机最小系统

(3)

/VPP:

访问外部程序存储器控制信号。

为使能从0000H到FFFFH的外部程序存储器读取指令,

必须接GND。

若只是用内部程序存储空间,该引脚悬空即可。

2.2信号发生模块电路设计

AD9833是一款低功耗器件,采用MSOP封装,非常小巧,外围电路简单,仅需要1个外部参考时钟、一个低精度电阻器和一个解耦电容器,通过SPI接口和单片机相连,可编程波形发生器;能够产生正弦波、三角波、方波输出。

AD9833的引脚图如图2.2所示。

图2.2AD9833的引脚图

各引脚功能如表2.1所示。

表2.1AD9833的引脚功能

引脚号

符号

功能说明

1

COMP

为DAC偏移解耦的DAC偏移引脚

2

VDD

电源电压

3

CAP/2.5V

数字电路的电源端

4

DGND

数字地

5

MCLK

主频数字时钟的输入端

6

SDATA

串行数字输入

7

SCLK

串行时钟输入

8

FSYNC

控制输入,低电平有效

9

AGND

模拟地

10

VOUT

输入频率(

AD9833可运作的主时钟频率高达25MHz。

一般25Hz的振荡器包含在外部电路中,但是这振荡器也可以删除,如有需要可以连接到外部CMOS时钟上。

图2.5为AD9833的外围电路。

图2.5AD9833的外围电路

2.3系统显示电路设计

本系统设计的显示电路用以显示信号发生器输出的波形类型,以及输出波形的频率和幅值。

2.3.1LCD1602液晶显示屏

液晶显示器(LCD)的主要原理是以电流刺激液晶分子产生点、线、面并配合背部灯管构成画面,各种液晶显示器简称液晶。

不能显示汉字的液晶命名规则是以点阵的列数和行数来命名的。

如本设计使用的LCD1602的意思是每行显示16个字符,共有2行。

可以显示汉字的液晶称为图形液晶,图形液晶是以点阵的数目命名的,每个点都可以单独控制。

例如12232代表该液晶有122行,32列的点阵。

LCD1602内置含128个字符的ASCII字符集字库,显示控制用ASCII码即可[17]。

2.3.2接口信号说明

1602液晶接口的信号说明如表2.2所示。

表2.21602液晶接口的信号说明

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

数据口

2

VDD

电源正极

10

D3

数据口

3

VO

液晶显示的对比度调节

11

D4

数据口

4

RS

数据/命令选择(H/L)

12

D5

数据口

5

R/W

读/写选择(H/L)

13

D6

数据口

6

E

使能信号

14

D7

数据口

7

D0

数据口

15

BLA

背光电源的正极

8

D1

数据口

16

BLK

背光电源的负极

2.3.3系统显示电路

本系统设计的显示电路如图2.7所示,1602液晶显示器的三个控制端口分别通过P2.5、P2.6、P2.7三个I/O口控制,8位数据端口与单片机的P0口相连。

1602液晶显示器背光亮度通过如图所示的滑动变阻器RP1调节控制。

图2.7系统显示电路原理图

2.4D/A转换电路与功率放大模块设计

本设计采用串行10位数/模转换器TLC5615采集信号电压,为下一级的功率放大器AD603提供控制电压。

2.4.1TLC5615芯片

TLC5615为美国德州仪器公司1999年推出的产品,是具有串行接口的数模转换器,其输出为电压型,最大输出电压是基准电压值的两倍。

其带有上电复位功能,即把DAC寄存器复位至全零。

TLC5615性能价格比高,目前在国内市场很方便购买。

TLC5615的时序如图2.8所示。

图2.8TLC5615的时序图

由TLC5615的时序图,当片选CS为低电平时,输入数据DIN由时钟SCLK同步输入或输出,而且在前为最高有效位,在后为低有效位。

输入时串行输入数据DIN被SCLK的上升沿移入内部的16位移位寄存器,串行数据DOUT由SCLK的下降沿输出,数据被片选CS的上升沿传送至DAC寄存器。

当片选CS为高电平时,时钟同步不能把串行输入数据DIN送入移位寄存器;输出数据DOUT不进入高阻状态通过保持最近的数值不变。

因此必须满足两个条件方可串行输出数据和输入数据:

第一时钟SCLK的有效跳变;第二片选CS为低电平。

当片选CS为高电平时,输入时钟SCLK应当为低电平。

系统的D/A转换电路原理图如图2.9所示。

图2.9TLC5615硬件连接图

单片机通过P36口控制串行数模转换器TLC5615的3脚片选端,1脚串行数据输入端与2脚串行时钟输入端分别通过单片机的P34和P35端口控制。

串行数模转芯片7脚输出端接下一级的功率放大的控制端。

2.4.2AD603芯片

AD603这种芯片正具有程控增益调整功能。

由美国ADI公司生产,是一个90MHz带宽增益可调、低噪的集成运放。

AD603内部结构图如图2.10所示。

由图可知芯片内部包括增益控制部分,精密无源输入衰减器,固定增益放大器,梯形电阻网络几大部分组成。

AD603由一个可通过外部反馈电路设置固定增益GF(31.07~51.07)的放大器、40dB/V的线性增益控制电路和0~-42.14dB的宽带压控精密无源衰减器构成。

图2.10AD603内部结构图

本系统利用AD603设计的功放电路硬件原理图如图2.10所示。

AD603芯片的一脚GPOS电压控制信号来自串行数模转换器TLC5616的输出端,2脚GNEG控制电压信号通过一个分压电路使其为固定值+2V,3脚VINP信号输入端与AD9833芯片的输出端相接。

图2.10增益调节模块

2.5声光提示电路设计

当有调频、调幅、复位或者光标移动按键按下时,为了达到提示使用者的目的,在电路硬件设计时,加入了按键声光提示电路。

按键声光提示硬件连接图如图2.12所示。

图2.12按键声光提示硬件连接图

在此硬件电路设计中,选用PNP三极管8550作为开关,单片机通过P37端口控制三极管基极,当有调频、调幅、复位或者光标移动按键其中的一个按下时,P37口置为低电平,使得蜂鸣器和LED灯电路出去导通状态。

2.6按键电路设计

按键电路如图2.13所示。

图2.13按键电路图

由图可知,按键S1与单片机的P10口相连,按键S2与单片机的P11口相连,按键S3与单片机的P12口相连,按键S4与单片机的P13口相连,按键S5与单片机的P14口相连,按键S6与单片机的P15口相连。

具体功能如表2.5所示。

表2.5按键功能表

按键

功能

S1

控制光标左移

S2

控制光标右移

S3

频率加

S4

频率减

S5

幅值加

S6

幅值减

 

3系统软件设计

3.1系统软件流程图

3.1.1主控制器软件设计

主控制器负责接收并处理来自键盘的命令输入,驱动LCD液晶显示当前波形的频率值或幅值,向波形产生模块发送当前波形的频率值数据,向幅值调节模块发送当前波形的幅值数据。

主控制器对键盘的操作是通过不断地扫描来完成的,当有按键按下,并根据键值调用相应的功能函数。

主控制器其他功能的实现,也是分别调用相应的功能函数。

具体细节在后面每个模块的软件设计分析中详细介绍。

3.1.2主程序设计

主控制器的主程序设计完成以下功能:

监视键盘,驱动LCD液晶的显示,发送频率值数据到波形发生模块,发送幅值数据到幅值修改模块。

本系统的主流程图如图3.1所示。

在图3.1中,初始化模块完成对中断控制寄存器的设置,LCD1602液晶显器的初始化设置和AD9833模块初始化设置。

系统使用了主控制器的定时器T0中断来控制光标的隐藏与显示。

图3.1主控制器主程序流程图

3.1.3LCD液晶显示驱动程序设计

显示模块采用1602液晶显示器,1602液晶显示器控制器内部带有80个字节的缓冲区,控制器设有数据地址指针,为实现显示的内容,我们可以通过数据地址指针来访问全部80个字节的RAM,我们把缓冲分成三个部分,分别用于显示波形类型,显示幅值和当前正在被显示波形的频率。

其程序流程图如图3.2所示。

 

 

N

Y

 

图3.2液晶显示模块主程序流程图

3.2波形产生模块的软件设计

本模块设计实现的功能为:

接收来自主控制器的频率值数据,模拟DDS原理输出波形。

按照系统整体设计要求,本模块软件部分设计实现如下功能:

(1)接收来自主控制器的频率值数据;

(2)响应来自辅助键盘的波形选择输入;

(3)查表输出波形。

3.2.1波形产生模块主程序设计

波形产生模块的主程序完成的操作包括对本模块的单片机进行初始化,接收来自主控制器的频率值数据,并利用接收到的频率值数据完成对波形频率的修改。

该主程序的流程图如图3.3所示。

在图3.3中,初始化模块完成对中断控制寄存器的设置。

系统使用了主控制器的INT0中断来响应操作者的按键输入;使用了定时器T0控制相邻两次查表操作之间的时间间隔。

 

图3.3波形产生模块主程序流程图

因此在初始化模块中,需要完成如下功能:

(1)开CPU中断;

(2)开INT0中断;

(3)设置触发方式为负边沿触发;

(4)开定时器T0中断;

本系统使用定时器T0控制相邻两次查表操作之间的时间间隔,因此,定时器的定时初值与输出波形的频率是一一对应的。

能否精确地调节输出波形的频率,关键就在于能否精确地设定定时器的定时初值。

本系统设置定时器工作于方式1下。

在本方式下,该计数器由高8位TH0和低8位TL0组成。

定时器是按16位加1计数器工作的,计满为0时自动向CPU发出溢出中断请求,若要求它再次计数,则CPU必须在其中断服务程序中为它重装初值。

假设定时时间为tms,本系统设计输出波形的采样点数为32个,那么,输出波形的频率就可以表示为:

f=1000/(32*t)。

因此,要通过频率值得到定时器的定时初值,需要经过若干乘、除运算。

对于单片机来说,它内部的资源有限,在其内部做乘、除和取余运算会占用大量资源且不精确。

因而程序换用另一种方法取得定时初值。

考虑到每个频率点对应一个定时初值,本系统共设计有160个频率点,故可以在程序中定义一个大小为160的字符型数组fre

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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