利用单片机形成正弦波函数发生器

合集下载

基于51单片机下的正弦波发生器设计

基于51单片机下的正弦波发生器设计

中国科技期刊数据库 科研2015年18期 21基于51单片机下的正弦波发生器设计范柳生海南省洋浦公安消防支队,海南 儋州 578101摘要:本文以STC89C51单片机为核心设计了一个低频信号发生器。

信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出正弦波波形。

波形的频率和幅度在一定范围内可任意改变。

波形和频率的改变通过软件控制,幅度的改变通过硬件实现。

介绍了波形的生成原理、硬件电路和软件部分的设计原理。

该信号发生器具有体积小、价格低、性能稳定、功能齐全的优点。

关键词:STC89C51单片机;单片机;D/A 转换;DDS 中图分类号:TP368.12 文献标识码:A 文章编号:1671-5780(2015)18-0021-011 系统概述1.1 工作原理数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得正弦波形。

89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU 、随机存取存储器RAM 、只读存储器ROM 、I/O 接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及、数模转换及波形输出、放大电路等部分,即可构成所需的波形发生器。

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

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

波形ROM 表是将信号一个周期等间距地分离成64个点,储存在单片机得RON 内。

具体ROM 表是通过MATLAB 生成的2 单元电路设计与分析 2.1 主控电路设计中主要采用STC89C51型单片机,它具有如下优点:(1)拥有完善的外部扩展总线,通过这些总线可方便地扩展外围单元、外围接口等。

(2)该单片机内部拥有4K 字节的FLASH ROM 程序存储器空间和256字节的RAM 数据存储空间,完全可以满足程序的要求。

基于51单片机的波形发生器的设计讲解

基于51单片机的波形发生器的设计讲解

目录1 引言 (1)1.1 题目要求及分析 (1)1.1.1 示意图 (1)1.2 设计要求 (1)2 波形发生器系统设计方案 (2)2.1 方案的设计思路 (2)2.2 设计框图及系统介绍 (2)2.3 选择合适的设计方案 (2)3 主要硬件电路及器件介绍 (4)3.1 80C51单片机 (4)3.2 DAC0832 (5)3.3 数码显示管 (6)4 系统的硬件设计 (8)4.1 硬件原理框图 (8)4.2 89C51系统设计 (8)4.3 时钟电路 (9)4.4 复位电路 (9)4.5 键盘接口电路 (10)4.7 数模转换器 (11)5 系统软件设计 (12)5.1 流程图: (12)5.2 产生波形图 (12)5.2.1 正弦波 (12)5.2.2 三角波 (13)5.2.3 方波 (14)6 结论 (16)主要参考文献 (17)致谢....................................................... 错误!未定义书签。

1引言1.1题目要求及分析题目:基于51单片机的波形发生器设计,即由51单片机控制产生正弦波、方波、三角波等的多种波形。

1.1.1示意图图1:系统流程示意图1.2设计要求(1) 系统具有产生正弦波、三角波、方波三种周期性波形的功能。

(2) 用键盘控制上述三种波形(同周期)的生成,以及由基波和它的谐波(5次以下)线性组合的波形。

(3) 系统具有存储波形功能。

(4) 系统输出波形的频率范围为1Hz~1MHz,重复频率可调,频率步进间隔≤100Hz,非正弦波的频率按照10次谐波来计算。

(5) 系统输出波形幅度范围0~5V。

(6) 系统具有显示输出波形的类型、重复频率和幅度的功能。

2波形发生器系统设计方案设计并制作一个波形信号发生器,能够产生正弦波、方波、三角波的波形,其中不使用DDS和一些专用的波形产生芯片。

并让系统的频率范围在1Hz~1MHZ可调节,在频率范围在1HZ~10KHz时,步进小于或等于10Hz,在频率范围在10KHz~1MHz时,步进小于或等于100Hz,并且电压在0~5V范围,能够实时的显示波形的类型、频率和幅值。

信号发生器 (正弦波,方波,三角波)51单片机 C语言代码

信号发生器 (正弦波,方波,三角波)51单片机 C语言代码

/**************************************//* 信号发生器(正弦波,方波,三角波)*//*************************************/#include<reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit cs=P2^0; //tlc5615片选端口sbit clk=P2^1; //tlc5615时钟线sbit din=P2^2; //tlc5615传输端口sbit key1=P1^0;sbit key2=P1^1; //按键的单片机接口uchar keydat;uchar flag; //波形发生终止信号的标志位一旦被置零立马停止发信号uchar flagsqu; //方波高低电平控制为(运用定时器1中断控制)uchar m,num;uchar dat=0xff;uchar code tosin[141]={ //正弦波的编码0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7e,0x7f,0x80,0x7f,0x7e,0x7e,0x7d,0x7c,0x7b,0x7a,0x79,0x78,0x77,0x76,0x75,0x74,0x73,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00};void delay(uchar z) //延时函数{uchar x,y;for(x=0;x<110;x++)for(y=z;y>0;y--);}void prepare() //tlc5615的初始化{cs=1;din=1;clk=0;cs=0; //cs的上升沿和下降沿必须在clk 为低时进?}/* 用中断来产生方波void Squtranslator(){TR1=1; //启动定时器1 控制高低电平的持续时间占空比do{do{_wave=0;}while((!flagsqu) && flag==1);//如果一旦终止信号的//产生可以立马退出循环flagsqu=0;do{_wave=1;}while((!flagsqu) && flag==1);flagsqu=0;}while(flag);flag=1;TR1=0;}*/void Squtranslator() //方波函数{uchar j;uchar dat1=0x7f;while(flag){do{prepare();dat=dat1;for(j=0;j<12;j++){din=(bit)(dat>>7); //将数据的最高位赋给dinclk=1;dat=dat<<1; //一位位的传输clk=0;}cs=1; //cs的上升沿和下降沿必须在clk 为低时进行delay(200); //使高低电平持续一段时间if(dat1==0)dat1=0x7f; //完成了0和0x7f之间的替换elsedat1=0;}while(flag);}}void Tratranslator() //锯齿波的发生函数{uchar j;uchar dat1=0x7f;while(flag){do{prepare();dat=dat1;for(j=0;j<12;j++){din=(bit)(dat>>7); //将数据的最高位赋给dinclk=1;dat=dat<<1; //一位位的传输clk=0;}cs=1; //cs的上升沿和下降沿必须在clk 为低时进行delay(2); //稍加延时dat1--;}while(flag && dat1); //一旦有终止信号就可以停止do{prepare();dat=dat1;for(j=0;j<12;j++){din=(bit)(dat>>7); //将数据的最高位赋给dinclk=1;dat=dat<<1; //一位位的传输clk=0;}cs=1; //cs的上升沿和下降沿必须在clk 为低时进行delay(2); //稍加延时dat1++;}while(flag && (!(dat1==0x7f)));}}void Sintranslator(uchar wave[],uchar num )//正弦波的转换函数{uchar i,j;uchar dat1;do{for(i=0;i<num;i++){prepare();dat1=wave[i]; //打开片选开始工作for(j=0;j<12;j++){din=(bit)(dat1>>7); //将数据的最高位赋给dinclk=1;dat1=dat1<<1; //一位位的传输clk=0;if(flag==0)break;}cs=1; //cs的上升沿和下降沿必须在clk为低时进行delay(1); //稍加延时if(flag==0)break;}}while(flag); //等待控制键的暂停}void keyscan() //切换功能按键返回键值函数{uchar i;for(i=0;i<4;i++){if(key1==0){delay(10);if(key1==0){keydat++;do{}while(!key1); //松手检测if(keydat==4)keydat=1;//加满回零处理}}}}void keycountrl() //切断输出控制函数{if(key2==0){delay(10);if(key2==0){flag=0;do{}while(!key2); //松手检测}}}void main (){uchar temp;TMOD=0x01; //确定定时器的工作方式TH0=(65536-50000)/256; //给定时器0赋予初值TL0=(65536-50000)%256;EA=1; //开总中断ET0=1; //开启定时器0中断TR0=1;while(1){do{switch(keydat){case 1:flag=1;do{Sintranslator(tosin,141);}while(flag);break;case 2: flag=1;do{Tratranslator();}while(flag);break;case 3: flag=1;do{Squtranslator();}while(flag);break;default:break;}}while(flag);temp=keydat; //装载键值while(keydat==temp); //在这里等待键值的改变}}void Time0() interrupt 1{TH0=(65536-50000)/256; //定时器0用来扫描按键不断地扫描dTL0=(65536-50000)%256;num++;if(num==4){keyscan();keycountrl();num=0;}}。

单片机波形发生器

单片机波形发生器

前言波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、高稳定性、可重复性和易操作性的电子仪器。

函数波形发生器具有连续的相位变换、和频率稳定性等优点,不仅可以模拟各种复杂信号,还可对频率、幅值、相移、波形进行动态、及时的控制,并能够与其它仪器进行通讯,组成自动测试系统,因此被广泛用于自动控制系统、震动激励、通讯和仪器仪表领域。

在 70 年代前,信号发生器主要有两类:正弦波和脉冲波,而函数发生器介于两类之间,能够提供正弦波、余弦波、方波、三角波、上弦波等几种常用标准波形,产生其它波形时,需要采用较复杂的电路和机电结合的方法。

这个时期的波形发生器多采用模拟电子技术,而且模拟器件构成的电路存在着尺寸大、价格贵、功耗大等缺点,并且要产生较为复杂的信号波形,则电路结构非常复杂。

同时,主要表现为两个突出问题,一是通过电位器的调节来实现输出频率的调节,因此很难将频率调到某一固定值;二是脉冲的占空比不可调节。

在 70 年代后,微处理器的出现,可以利用处理器、A/D/和 D/A,硬件和软件使波形发生器的功能扩大,产生更加复杂的波形。

这时期的波形发生器多以软件为主,实质是采用微处理器对 DAC的程序控制,就可以得到各种简单波形。

90 年代末,出现几种真正高性能、高价格的函数发生器、但是HP公司推出了型号为 HP770S的信号模拟装置系统,它由 HP8770A任意波形数字化和HP1776A波形发生软件组成。

HP8770A实际上也只能产生8 中波形,而且价格昂贵。

不久以后,Analogic公司推出了型号为 Data-2020的多波形合成器,Lecroy 公司生产的型号为9100 的任意波形发生器等。

到了二十一世纪,随着集成电路技术的高速发展,出现了多种工作频率可过GHz 的DDS 芯片,同时也推动了函数波形发生器的发展,2003 年,Agilent的产品 33220A能够产生17种波形,最高频率可达到 20M,2005 年的产品N6030A 能够产生高达 500MHz的频率,采样的频率可达 1.25GHz。

(完整word版)基于单片机的正弦波信号发生器的设计

(完整word版)基于单片机的正弦波信号发生器的设计

(完整word版)基于单片机的正弦波信号发生器的设计毕业设计论文题目:基于单片机的正弦波信号发生器的设计系部:电子信息工程系专业名称:电子信息工程技术班级: 08431 学号:33姓名:顾伟国指导教师:郑莹完成时间:2011 年 5 月12 日(完整word版)基于单片机的正弦波信号发生器的设计基于单片机的正弦波信号发生器的设计摘要:信号发生器的应用越来越广,对信号发生器的频率稳定度、频谱纯度、频率范围和输出信号的频率微调分辨率提出越来越高的要求,普通的频率源已经不能满足现代电子技术的高标准要求。

因而本设计采用了AT89C51单片机为控制核心,通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产生1HZ—180HZ的正弦波波形。

通过键盘来控制波形频率变化,并通过液晶屏1602显示其波形以及频率和幅度值的大小。

关键字:信号发生器;AT89C51;D/A转换器DAC0832Based on SCM sine wave signal generator designAbstract:Signal generator used more and more widely, to signal generator frequency stability, the spectrum purity,frequency range and output signal frequency fine-tune resolution higher and higher demands are proposed,the average frequency source cannot have satisfied the high standard requirement of modern electronic technology. So this design USES A AT89C51 as control core,through the D/A converter DAC0832 converts digital signals into analog signals, filter and amplification, finally shown by oscilloscope 1HZ — 180HZ, can produce the sine wave。

基于单片机的三相正弦波发生器设计

基于单片机的三相正弦波发生器设计
电源
“ P A+高级 D A转换 ” 种 , 者 用于 低频 , FG / 两 前 价 位低 , 后者 主要 用于高频或 高精度 场所 , 价位 高. 采 用现代 电子技术通过编 程实现 的信号 源 , 从技 术上 克服 了元 器件分散 I造 成波形失真 的问题 , 设计 生 本
以 M P 3F6 S 40 19为 控 制 核 心 , 过 硬 件 和 软 件 设 通 计 , 现 了输 出相位 差互 为 10 的三相 正 弦波 , 实 2。 输 出波形频 率和幅值可实 时调节. 本设计 三相正 弦波
P12 .

警× ,
( 3 )
其中 : 为输入 的基准 电压 , R为 内部 电阻 , 为输入数字量 的加权和 ( 十进制数 ) 由公式 ( ) . 3 可见 , 输出的模拟量与输入的数字量成正比, 从而 实现 了从数 字量 到模 拟 量 的转 换 . 个 8位 D A 一 / 转换 器 有 8个输 入 端 . 入 可 有 2 6个 不 同 的二 输 5 进制组态 , 对应有 26 5 个输出值. 将待放大的输入 信号 接 到 D C 8 2的参 考 电压 端 ( R F , I由 A 03 V E )D
常工作 .
( +/ ) 。 Z . 6
() 1
反 相 加法器 的电路如 图 4所示 .
A 相
弦 波
图 4 反 相 加 法 器 电路 图 2 单 片 机 最 小 系 统
2 2 按 键接 口电路设 计 .
反相 加法 器 电 路 的合 成公 式 如公 式 ( )所 2
示.
输 出波形 的 频率 由单 片 机 程 序 来 决 定 的 , 为 了方 便控 制 , 用按 键来 改 变程 序 中的设 定值 , 使 从 而改 变输 出波 形 的频率 . 由独立 按键 来完 成 . 按键

单片机产生正弦波

单片机产生正弦波

单片机产生正弦波一要求采用单片机map430g2553和运算放大器lmv358产生正弦波,周期1秒。

二思路可通过单片机产生PWM,调节参数寄存器的值,产生不同占空比的PWM信号。

若占空比的变化规律是正弦的,则滤波后可得到所需正弦波形。

其中,PWM(PulseWidthModulation)控制——脉冲宽度调制技术是通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。

图1为用PWM波代替正弦半波的例子。

(单片机输出图1b,滤波后得到图1a)三实践1PWM况只有1N=200个。

则2PWMPWM●SMCLK),12K;第二行中,设置为SMCLK=DCO(默认时钟源)。

TASSEL1将定时器时钟设置为SMCLK(若为TASSEL0则选择ACLK),且未分频。

模式选择MC_1为上升模式。

采用上述方法设置定时器时钟=SMCLK=DCO=1M赫兹。

●周期计数:上升模式表明定时器由0递增到一个上限值CCR0。

CCR0需设置。

因为周期T=1/200秒,而定时器时钟=SMCLK=DCO=1M赫兹,定时器周期t=1微秒,所以CCR0=T/t=5000,即5毫秒。

●高电平计数:定时器由0递增到一个上限值CCR0过程中,需设置脉宽CCR1。

并且K=CCR1/CCR0的数值每个周期(5毫秒)都变化一次,变化趋势满足正弦变化,200个5毫秒构成一个正弦变化周期。

为获得CCR1值,在matlab中输入:t=0:pi/100:2*pi;k=(sin(t)+1)/2;CCR1=round(4999*k);可获得201个CCR1值。

上式中,第一行设置了201个数,均匀分布在0-2pi之间,第一个和最后一个分别对应0弧度和2pi弧度;第二行计算201个正弦值,偏置为0.5,全幅度为1的正弦波幅度,如图2所示:图2偏置为0.5,全幅度为1的正弦波幅度第三行计算CCR1值,为k与CCR0(这里是5000)的乘积,并取了四舍五入(round函数)。

单片机制作简易正弦波信号发生器(DAC0832)

单片机制作简易正弦波信号发生器(DAC0832)

调试时,电源的质量需要较高,不然的话,波形不易观察看清楚。

//河北工程大学信电学院自动化系//设计调试成功***************将DA输出的 0V ~ -5V范围扩展成 -5V ~ +5V范围,电路如下图:***************如若VO2输出更平滑一些,可以在VO2处接一个小电容,滤掉高频。

(一)过程分析计算如下:✧第一级运放出来的V o1=-N*V ref/256。

当V ref为+5V时,V o1=0~ -5V。

其中,V ref为参考电压,N为8位数字量输出到DAC0832✧并结合第二级运放,是否可以推出来如下式子:V o2=-(2*V o1+V ref)=-(2*-N*V ref/256+V ref)=-(-2N*V ref/256+V ref)=2N*V ref/256-V ref当参考电压V ref=5V时,V o2=10N/256-5。

由于要求输出的是正弦波xsinθ,幅值x不定,下面考虑幅值x分别取5和1的情况:●当输出波形为5 sinθ时:5 sinθ=V o2=2N*V ref/256-V ref=10N/256-5 //此时V ref=+5V得sinθ=2N/256-1●当输出波形为sinθ时:sinθ=V o2=2N*V ref/256-V ref=10N/256-5 //此时V ref=+5V得sinθ=10N/256-5最后可以考虑输出波形的频率问题。

例如要求输出特定频率的正弦波。

(二)针对输出的不同幅值波形✓当输出波形为5 sinθ时:得sinθ=2N/256-1这里我们要求进步为一度。

具体到进步大小,和内存RAM或者ROM有关,即和你存放数据表的空间有关。

放到哪个空间都可以。

(这里周期采样最多256个点,步数可以为1、2、5等,自己视情况而定,这里由于是360度,256个采样点,故步的大小360/256=1.4=△θ,由此算的前三个θ=0,1.4,2.8……,对应N为0x80,0x83,0x86……)通过sinθ的特征和计算部分数据发现规律:0~90度与90~180度大小是对称的;181~270度与270~359度是对称的。

基于单片机的正弦波发生器的设计

基于单片机的正弦波发生器的设计

基于单片机的正弦波发生器的设计【摘要】本文旨在介绍基于单片机的正弦波发生器的设计,在单片机的正弦波发生器的实现原理基础上,详细阐述了正弦波发生器的系统框架结构图,并以具体的幅值和频率值为例来设计了单片机控制程序的流程,从而实现幅值和频率可调的正弦波发生器。

【关键词】单片机;正弦波发生器;数模转换;定时器1 概述随着社会的不断向前发展,我国的电子制造行业也得到长足发展。

信号发生器发出的标准信号是一种电子制造行业进行电子实验经常使用的电子信号,对电子的各种元器件的参数以及工作性能进行测量,以及电工和电子产品的指数验证和工作系能鉴定、工作参数的调整都起着至关重要的作用。

尤其是正弦波信号,在电子制造实验以及工程技术的应用非常广泛。

基于单片机来设计的正弦波发生器的输出信号频率具有非常高的稳定度,加上单片机自身的控制灵活等特点,使得正弦波发生器的频率和幅度控制方面更加灵活。

所以深入学习和研究基于单片机的正弦波发生器的工作原理和系统结构,对于电子制造实验中正弦波信号的产生和应用具有非常重要的实用价值。

2 单片机的正弦波发生器的实现原理我们知道,单片机输出或者产生的信号都是数字信号,而正弦波发生器产生的正弦信号是模拟信号,所以单片机产生数字信号后,需要经过数模转换电路将其编程模拟信号。

基于单片机的正弦波发生器的主要设计原理就是通过单片机向固定端口发送预先设计的数据,然后通过单片机外围的数模转换电路或者芯片将数据转换成模拟量,通过所有预设数据的产生的模拟量的组合构成一个周期内的正弦波信号,最后通过循环有序地发送预设数据值固定端口即可实现正弦波信号的连续产生。

所以,在设计预设数据时,改变预设数据的最大值,从而使得进行数模转换的数据发生变化,生成的模拟信号量也会发生变化,从而实现正弦波信号幅值的变化。

对于产生正弦波动的频率调整原理,是通过改变向端口发送数据的时间间隔,来改变正弦波信号的频率。

对于预设数据来说,所有的预设数据经过数模转换会产生一个周期的正弦波,如果改变发送数据之间的时间间隔,就会使所有预设数据发送完的时间发生变化,使得产生的正弦波信号周期发生变化,从而实现正弦波发生器输出信号频率的变化。

单片机产生正弦波

单片机产生正弦波

单片机产生正弦波
单片机产生正弦波可以通过使用数字信号合成技术来实现。

以下是一种常见的实现方法:
1. 首先,准备一个包含一周期正弦波的查表数组,数组长度为一个周期内所需的采样点数。

可以使用固定的采样频率(如
8kHz)和固定的振幅。

数组的内容为一个周期内的正弦波的
采样值,可以使用查表或者数学计算来生成。

2. 使用定时器产生固定的中断频率,生成一个固定的时间间隔,由于波形是连续的,通常采用中断的方式来生成波形。

3. 在每个定时器中断中,读取查表数组的对应位置的值,并通过DAC(数字到模拟转换器)输出到外部接口(如扬声器)。

4. 根据查表数组长度和定时器中断频率的选择,可以调整正弦波的频率(调整定时器中断频率)和振幅(调整查表数组中的采样值)。

需要注意的是,单片机的处理能力和外设的性能限制了可生成的最高频率,同时,由于数字信号合成存在理论上的误差,生成的波形可能并不完美。

因此,具体的实现方式还需要根据单片机型号和额外硬件资源来调整。

单片机产生正弦波

单片机产生正弦波

单片机产生正弦波1. 简介单片机是一种集成电路,具有处理和控制功能。

它可以通过编程实现各种功能,如产生正弦波。

正弦波是一种周期性的波形,广泛应用于电子设备和通信系统中。

在本文中,将介绍如何使用单片机来产生正弦波,并详细解释实现的原理和步骤。

2. 实现原理产生正弦波的原理是利用单片机的数字输出引脚和定时器功能。

单片机的数字输出引脚可以输出高电平和低电平,通过不断变换输出引脚的状态,可以模拟出正弦波的波形。

具体步骤如下: 1. 设置单片机的定时器,使其按照一定的频率产生中断信号。

2. 在中断服务函数中,根据正弦波的波形特点,设置数字输出引脚的状态,使其输出对应的高电平或低电平。

3. 循环执行中断服务函数,不断更新数字输出引脚的状态,从而产生连续的正弦波。

3. 编程实现以下是使用C语言编写的单片机产生正弦波的示例代码:#include <reg52.h>// 定义正弦波的周期和振幅#define PERIOD 100#define AMPLITUDE 127// 正弦波数据表unsigned char sineTable[] = {128, 140, 151, 162, 173, 183, 192, 200, 207, 213, 218, 222, 225, 227, 228,229,229, 229, 227, 225, 222, 218, 213, 207, 200, 192, 183, 173, 162, 151, 140,128,115, 104, 93, 82, 71, 61, 52, 44, 37, 31, 26, 22, 19, 17, 16, 15,15, 15, 17, 19, 22, 26, 31, 37, 44, 52, 61, 71, 82, 93, 104, 115};// 定时器中断服务函数void timerInterrupt() interrupt 1 {static unsigned char index = 0;TH0 = (65536 - PERIOD) / 256; // 设置定时器初值TL0 = (65536 - PERIOD) % 256;P1 = AMPLITUDE + sineTable[index]; // 设置输出引脚的状态index = (index + 1) % sizeof(sineTable); // 更新正弦波数据表的索引}void main() {TMOD = 0x01; // 设置定时器0为工作模式1TH0 = (65536 - PERIOD) / 256; // 设置定时器初值TL0 = (65536 - PERIOD) % 256;ET0 = 1; // 允许定时器0中断EA = 1; // 允许总中断TR0 = 1; // 启动定时器0while (1);}在上述代码中,使用了8051系列的单片机,使用了定时器0来产生中断信号,并在中断服务函数中根据正弦波数据表的值设置输出引脚的状态。

89C51单片机设计多功能低频函数信号发生器,能产生方波、正弦波、三角波等信号波形

89C51单片机设计多功能低频函数信号发生器,能产生方波、正弦波、三角波等信号波形

波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。

本次课程设计使用的AT89S51 单片机构成的发生器可产生锯齿波、三角波、正弦波等多种波形,波形的周期可以用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑等优点。

在本设计的基础上,加上按钮控制和LED显示器,则可通过按钮设定所需要的波形频率,并在LED上显示频率、幅值电压,波形可用示波器显示。

二、系统设计波形发生器原理方框图如下所示。

波形的产生是通过AT89S51 执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。

在AT89S51的P2口接5个按扭,通过软件编程来选择各种波形、幅值电压和频率,另有3个P2口管脚接TEC6122芯片,以驱动数码管显示电压幅值和频率,每种波形对应一个按钮。

此方案的有点是电路原理比较简单,实现起来比较容易。

缺点是,采样频率由单片机内部产生故使整个系统的频率降低。

1、波形发生器技术指标1)波形:方波、正弦波、锯齿波;2)幅值电压:1V、2V、3V、4V、5V;3)频率:10HZ、20HZ、50HZ、100HZ、200HZ、500HZ、1KHZ;2、操作设计1)上电后,系统初始化,数码显示6个…-‟,等待输入设置命令。

2)按钮分别控制“幅值”、“频率”、“方波”、“正弦波”、“锯齿波”。

3)“幅值“键初始值是1V,随后再次按下依次增长1V,到达5V后在按就回到1V。

4)“频率“键初始值是10HZ,随后在按下依次为20HZ、50HZ、100HZ、200HZ、500HZ、1000HZ循环。

三、硬件设计本系统由单片机、显示接口电路,波形转换(D/A)电路和电源等四部分构成。

电路图2附在后1、单片机电路功能:形成扫描码,键值识别、键处理、参数设置;形成显示段码;产生定时中断;形成波形的数字编码,并输出到D/A接口电路和显示驱动电路。

单片机产生正弦波然后放大_概述说明以及解释

单片机产生正弦波然后放大_概述说明以及解释

单片机产生正弦波然后放大概述说明以及解释1. 引言1.1 概述本文旨在探讨单片机产生正弦波并进行放大的方法与实现,以及相关的原理、设计方案和实验结果。

正弦波是一种重要的信号形式,在各种电子设备和通信系统中广泛应用。

利用单片机生成正弦波,并经过放大器放大后,可以得到更稳定、可控的正弦波信号,有助于满足不同场景下的需求。

1.2 文章结构本文主要分为五个部分:引言、单片机产生正弦波、正弦波放大器设计、实验结果与分析以及结论与展望。

引言部分将对文章进行概述说明,并介绍文章的结构安排;随后,将在接下来三个部分依次详细介绍单片机产生正弦波的原理与实现方法,正弦波放大器的设计与构建以及性能优化与测试方法;接着,在第四部分中将提供实验结果,并对产生效果和输出性能进行评估和分析;最后,在结论与展望部分总结整篇文章,并提出未来发展方向建议。

1.3 目的本文的目标是通过对单片机产生正弦波并进行放大的研究,探索一种有效可行的方法和设计方案。

通过实验结果和分析,对该方法进行评估,并提出可能存在的问题以及未来改进的方向,以期为相关领域的研究与开发提供参考和借鉴。

同时,也希望通过本文的介绍和说明,增进读者对单片机产生正弦波并进行放大的技术理解和应用意义。

2. 单片机产生正弦波2.1 原理介绍单片机是一种微型计算机系统,具有集成度高、功耗低、体积小等特点。

它能够通过内部的时钟电路和计数器来生成不同频率的方波信号,并通过数字滤波器将方波信号转换为近似连续的正弦波信号。

这种方法称为数字合成技术,可用于实现正弦波发生器。

2.2 实现方法在单片机中,可以使用PWM(脉冲宽度调制)技术来产生正弦波。

PWM技术是通过控制脉冲信号的占空比来调节输出电压的高低电平,从而实现对正弦波频率和幅值的控制。

具体而言,可以选择一个定时器作为基准时钟源,并设置相关寄存器来控制定时器工作模式和产生脉冲信号的频率、占空比等参数。

然后,在定时器溢出中断函数中更新输出引脚状态,使其按照预设的占空比在高、低电平之间切换。

基于单片机正弦波信号发生器

基于单片机正弦波信号发生器

目录目录 (1)一、设计要求 (2)二、设计方案与论证 (2)三、设计原理及电路图(设计原理及流程图) (3)四、元器件清单 (6)五、元器件识别与检测 (6)六、硬件制作与调试(软件编程与调试 (10)七、设计心得 (14)八、参考文献 (15)一、设计要求本文介绍一种由直接数字频率合成芯片AD9835设计的正弦信号发生器,该芯片支持高达50MHZ的时钟频率,可以产生最高达25MHZ 的正弦波形。

通过单片机控制完全可以满足设计所要求的正弦波信号的生成。

本次设计的基于单片机的信号发生器设计就是一个单片机控制系统,对信号发生芯片进行的控制。

通过单片机对信号发生芯片经行精密控制,实现对波形的频率和幅度的控制。

这些控制可以通过键盘设定,这就要求对选择的信号发生芯片,选用的单片机有初步的了解,并对整个系统的结构有个合理的分配。

二、设计方案与论证方案一:直接利用单单片机编程产生正弦波优点:简化了产生正弦波的硬件和软件,电路结构简单。

缺点:编程复杂,波形失真较大,不能达到要求输出的高频信号。

方案二:利用单片机控制直接数字频率合成芯片DDS产生的正弦波,通过单片机,键盘LED数码显示管显示实现波形的数字控制。

优点:控制简单,波形效果好,频率带宽。

缺点:硬件电路复杂。

为了满足设计要求,取得较好的效果,显然方案二更为合理。

三、设计原理及电路图3.1 DDS的基本原理DDS的基本原理是:在高速存储器中放入正弦函数——相位数据表格,经过查表操作将读出的数据送到高速DAC产生正弦波。

可编程DDS系统原理如图所示:图1 DDS的基本原理图图2 总体设计原理图3.2 AD9835芯片主要技术指标如下:频率范围: 0.1HZ-10MHZ频率分辨率:0.1HZ频率稳定度:1*10ˉ7输出幅度:0-±10v可调AD9835的相位累加器为32位,取其高十二位为读取余弦波形存储器的地址。

每一次,时钟使相位累加器的输出也即余弦ROM寻址地址递增频率设定数据K,对应的波形相位变化为△P=2^n *K/232因此,改变相位累加器设定值K,就可以改变相位值△P,从而改变合成信号频率f。

单片机产生正弦波

单片机产生正弦波

单片机产生正弦波一要求采用单片机map430g2553和运算放大器lmv358产生正弦波,周期1秒。

二思路可通过单片机产生PWM,调节参数寄存器的值,产生不同占空比的PWM信号。

若占空比的变化规律是正弦的,则滤波后可得到所需正弦波形。

其中,PWM(PulseWidthModulation)控制——脉冲宽度调制技术是通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。

图1为用PWM波代替正弦半波的例子。

(单片机输出图1b,滤波后得到图1a)图1用PWM三实践1PWM周期计算正弦波周期1秒,需要采用多少个周期的PWM况只有1个周期的PWM N=200个。

则PWM信号的周期为T=1/200秒=5毫秒。

2PWMPWM●ACLK、子系统主时钟SMCLK),ACLK由内部时钟源VLOCLK(低频时钟源,12K(默认1M赫兹)产生。

这里建议采用较高频率分频,这里设置为1分频,即ACLK=VLO;第二行中,SELM_0的作用是选择MCLK的时钟源为DCOCLK,DIVM_0设置为MCLK=DCO,DIVS_0设置为SMCLK=DCO(默认时钟源)。

TASSEL1将定时器时钟设置为SMCLK(若为TASSEL0则选择ACLK),且未分频。

模式选择MC_1为上升模式。

采用上述方法设置定时器时钟=SMCLK=DCO=1M赫兹。

●周期计数:上升模式表明定时器由0递增到一个上限值CCR0。

CCR0需设置。

因为周期T=1/200秒,而定时器时钟=SMCLK=DCO=1M赫兹,定时器周期t=1微秒,所以CCR0=T/t=5000,即5毫秒。

●高电平计数:定时器由0递增到一个上限值CCR0过程中,需设置脉宽CCR1。

并且K=CCR1/CCR0的数值每个周期(5毫秒)都变化一次,变化趋势满足正弦变化,200个5毫秒构成一个正弦变化周期。

为获得CCR1值,在matlab中输入:t=0:pi/100:2*pi;k=(sin(t)+1)/2;CCR1=round(4999*k);可获得201个CCR1值。

用单片机产生正弦波程序

用单片机产生正弦波程序

用单片机产生正弦波程序(总2页)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March用单片机产生正弦波程序要用到数模转换DAC0832MOV DPTR,#SINTAB ;正弦表写入内部RAM6DH-7FH MOV R0,#6DHLOOP: CLR AMOVC A,@A+DPTRMOV @R0,AINC DPTRINC R0CJNE R0,#80H,LOOPMOV DPTR,#7FFFH ;设置D/A转换器的端口地址 MOV R0,#6DH ;设置正弦表指针LOOP1: MOV A,@R0 ;查表MOVX @DPTR,A ;D/A转换ACALL DELAY ;延时,等待转换结束DEC R0 ;正弦表位移量增量CJNE R0, #6DH,LOOP1 ;第一象限输出完?LOOP2: MOV A,@R0 ;查表MOVX @DPTR,A ;D/A转换acall DELAY ;延时,等待转换结束DEC R0 ;正弦表位移量减量CJNE R0, #6DH,LOOP2 ;第二象限输出完?LOOP3: MOV A,@R0 ;查表CPL A ;表值取反MOVX @DPTR,A ;D/A转换ACALL DELAY ;延时,等待转换结束INC R0 ;正弦表位移量增量CJNE R0,#7FH,LOOP3 ;第三象限输出完?LOOP4:MOV A,@R0 ;查表CPL A ;表值取反MOVX @DPTR,A ;D/A转换ACALL DELAY ;延时,等待转换结束DEC R0 ;正弦表位移量减量CJNE R0,#6DH,LOOP4 ;第四象限输出完?SJMP LOOP1DELAY:MOV R7,#200 ; 延时50msDEL1:MOV R6,#123NOPDEL2:JNZ R6,DEL2DJNZ R7,DEL1RETSINTAB:DB80H,83H,86H,89H,8DH,90H,93H,96HDB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEHDB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8H DB 0DAH,0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5H DB 0F6H,0F7H,0F8H,0F9H,0FAH, 0FBH,0FCH,0FDH DB 0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FEH,0FDH DB 0FDH,0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6H DB 0F5H,0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAH DB 0E9H,0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAH DB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7H DB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1H DB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99H DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80HDB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69HDB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51HDB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AHDB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27HDB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16HDB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AHDB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02HDB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02HDB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09HDB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15HDB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25HDB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38HDB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EHDB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66HDB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80HEND。

单片机课程设计正弦波发生器论文之欧阳引擎创编

单片机课程设计正弦波发生器论文之欧阳引擎创编

北华航天工业学院欧阳引擎(2021.01.01)课程设计报告(论文)设计名称:单片机技术课程设计设计地点:单片机实验室(教7209)班级: B09221姓名:学号:指导教师:完成时间: 2012 年 4 月 18 日北华航天工业学院电子工程系课程设计任务书指导教师:教研室主任:年月日一、概述1、设计目的①了解单片机系统中实现D/A(数字、模拟)转换的原理及方法②详细了解D/A转换芯片0832的性能及编程方法③了解单片机系统中扩展D/A转换的基本原理,了解单片机如何尽行数据采集④掌握DAC0832,AT89C51输入/输出接口电路设计方法⑤掌握DAC0832转换实现的程序设计方法⑥掌握WA VE 软件的操作,掌握单片机程序设计的流程2、设计要求①正弦波频率范围:1HZ~100HZ,100HZ~1000HZ②频率步进值:1HZ~100HZ档步进是10HZ,100HZ~1000HZ档步进是100HZ③输出电压:1~5V幅值可调(1V步进)④具有显示输出波形频率和幅度的功能⑤显示位数:6位⑥键盘设置频率值二、方案设计与论证(设计思路、题目分析、解决方法)1.编程语言的选择进行单片机开发,既可以用C语言,也可以用汇编语言。

在本设计中选择合适的语言进行设计很重要。

汇编语言是一种用文字助记符来表示机器指令的符号语言。

其主要优点是占用资源少,执行效率高。

但是不同的CPU,其汇编语言可能有所差异,所以不易移植。

C语言是一种结构化的高级语言。

其优点是可读性好,移植容易,是一种普遍使用的计算机语言,缺点是占用资源较多,没有汇编语言执行效率高。

对于目前普遍使用RISC架构的8位单片机来说,其内部ROM、 RAM、STACK等资源有限,如果使用C语言编写,一条C语言编译后就会变成很多机器码,很容易出现ROM空间不够、堆栈溢出等问题。

而汇编语言,一条指令就对应一条机器码,每一步的执行动作都很清楚,并且程序大小和堆栈条用情况都容易控制,调试起来也比较方便。

基于单片机正弦信发生器

基于单片机正弦信发生器

课程设计(论文)任务书专业班级:学生姓名:指导教师(签名):一、课程设计(论文)题目正弦波信号发生器设计二、本次课程设计(论文)应达到的目的本次课程设计是自动化专业学生在学习了《单片机原理及应用》课程 及《模拟电子线路》、《数字电子线路》等专业基础课程之后进行的一次综 合训练,其主要目的是加深学生对单片机软硬件技术和相关理论知识的理 解,进一步熟悉 51 单片机系统设计的基本理论、方法和技能;掌握工程 应用的基本内容和要求,力争做到理论与实际的统一;同时培养学生分析 问题、解决问题的能力和独立完成系统设计的能力,并按要求编写相关的 技术文档和设计报告等。

三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技 术参数、设计要求等)1.设计内容(1)选择 51 单片机,晶振采用 12MHz。

(2)设计一个能产生 0 至 50HZ 正弦波信号。

通过 0832D/A 芯片完成 数模转换。

(3)频率值由键盘输入。

(4)将频率值由 LED 数码管上显示(两位)。

2.设计要求 (1)按照任务书的要求完成系统分析及方案设计。

(2)完成硬件原理图的设计,并选择相关元器件。

(3)完成控制软件流程图的设计,编写相应的单片机控制程序。

(4)撰写设计报告。

四、应收集的资料及主要参考文献: 1.李建忠.单片机原理及应用.西安电子科技大学出版社,2008 2.杨居义.单片机课程设计指导.清华大学出版社,2009 3.李海滨等.单片机技术课程设计与项目实例.中国电力出版社,2009 以及与 51 系列单片机相关的文献及教材。

五、审核批准意见教研室主任(签字) 正弦信号发生器设计方案框图按键电 路单数/模转放大电片换电路路机波形输显示电出路图 1-1 硬件设计方框图 DAC0832 硬件简介根据对 DAC0832 的数据锁存器和 DAC 寄存器的不同的控制方式,DAC0832 有三种连接 方式:直通方式、单缓冲方式和双缓冲方式。

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

[ 3 ]郑南宁等 行驶车辆牌照自动识别系统 西安交通大学
学报 199111。
[ 4 ]J ukka H eikkonen et a l A com p u ter vision app roach to
digit recogn ition on p u lp ba les, Pa ttern recogn ition letter
出有一时间间隔, 在确定的细分度 (N ) 下, 这一时间间隔由正 弦波的频率决定。设这一时间为 t, 相应频率为 f, 则两者有如 下关系:
t=
1 n
1 f
(4)
(N 为细分度)。这一时间可由计算机延时或定时来确定。若用
定时器来处理这一问题, 则可用定时器中断服务子程序来完
成正弦波信号输出功能, 且又可避免延时浪费 CPU 机时, 提
这三方面的问题进行处理。
1) 正弦波幅值调节处理 对于 n 位单片机而言, 其一个内存单元存放的最大数值 为 n 位二进制数, 即 (2n - 1) , 把正弦信号可调的最大幅值 (V max) 对应的数字量作为 (2n- 1) (其中 n 为单片机的位数) 来 处理。若设定幅值下 (V set) 对应的数字量为 X , 则 X 为:
该报表管理系统在某集团公司投入运行, 运行稳定, 为公 司的管理和决策提供了方便快捷的信息获取手段。
参考文献
[ 1 ] Pow erB u ilder4 应 用 程 序 开 发 指 南, Ken t M a rsh, B ruce B raun stein, 清华大学出版社;
[ 2 ]SYBA SE 开发者指南, D an ielj. W o rden, 清华大学出版社。
[ 3 ] 徐惠民等 《单 片 微 型 计 算 机 M CS—51 原 理, 接 口, 应 用》, 北京邮电学院出版社 1990 年 6 月
(收稿日期: 99 年 1 月 6 日)
(上接第 35 页) 所需报表信息。 ·安全性
只有具有一定权限的有用户才可根据自己的权限在报表 系统中进行查询, 添加, 删除的操作。
主题词 正弦波 函数发生器 单片机
一、前言
正弦波作为一种信号在许多场合均需要用到, 例如: 供电 时为负载线圈提供正弦波电压信号、交一交变频技术中利用 正弦波作为变频器移相触发的调制信号等等。因此正弦波发 生器应用较广。为节省硬件资源常结合应用场合的其它功能 一起, 利用单片机系统应用软件来完成这一功能而无需另外 配置专门的函数发生器硬件。利用单片机形成正弦函数发生 器最简便的方法是使用 D A 转换器, 采用数值逼近方案。如 希望获得正弦信号的频率、幅值均可调节, 则还存在频率、幅 值调节处理问题。下面就如何实现这种正弦信号进行讨论。
利用该法可适用于其它波形信号的输出, 如方波、锯齿形 波等。实现方法简便, 且利用定时器中断服务子程序来实现, 即便于调节频率、幅值、初始相位, 又可避免采用延时法耗费 CPU 机时, 可提高 CPU 处理效率。正弦信号发生器功能结合 应用场合的其它功能一起实现, 从而提高单片机系统的利用 价值。例如在实现正弦波无环流交一交变频率器控制功能时, 就可综合利用单片机系统来实现正弦信号发生器与无环流切
x0 =
Η 360
×
256
1
∴ TM = M -
t T
=M -
Nf T
= M 2N
1 fT
(6)
六、结论
因此对于不同的频率值 f, 计数值 TM 不同。故对应不同 的设定频率下, 定时器的计数值 TM 不同。为实现对频率的调 节, 则可利用一子程序来实现根据设定的频率值 f 据 (5) 式计 算相应的定时器的计数值 TM 。因此, 每次设定频率后则调用 该子程序计算定时器计数值, 并赋给相应的定时器, 然后定时 器根据该计数值产生定时器溢出中断, 转而执行该定时器中 断服务子程序, 由此可实现频率的调节。
系统有完整可靠的安全保障措施: 系统通过用户注册管 理、用户权限设置和用户密码三个层次的把关, 较完善的解决 了非法用户进入系统和防止用户越权操作。 ·通用性
报表管理系统的通用性良好, 适合多种类型的数据库和 文件系统, 同时可根据需要随时添加对各种类型报表的支持。 ·采用 GU I 开发工具、界面友好、直观、操作方便
波分量尽可能小”的原则, 分析结果认为方案4优于其它方案。
因此选用方案4作为较好的逼近方案。其思想是; 各细分点的
正弦逼近值为该细分点的正弦值加上该细点后一点的正弦值
与该细分点正弦值之差的一半的和。其数学表达式为:
A
(I) =
sin
(
2ΠI N
)
+
1 2
sin
2Π(I + N
1) J -
sin
(
2ΠI N
M icrocom puter Appl ica tion s No. 6, 1999 技术交流 微型电脑应用 1999 年 6 期
利用单片机形成正弦波函数发生器
朱志华 α
摘 要 为输出频率、幅值可调且精度也较理想的正弦波形, 可利用单片机采用数值逼近方案来实现, 因而可节省硬件资 源。本文就利用8031单片机系统如何来实现这一功能进行讨论。单片机系统还可结合正弦波应用的不同场合来实现其它功能要 求, 因而适用性广。
不同, 从而可实现对输出的正弦波初始相位的调节。
五、形成幅值、频率、初始相位均可调节的正弦信号 的软件流程图
正弦信号利用定时器中断服务子程序来实现, 具体流程 图如下:
图2 (注: S IN 表指由各细分点处正弦信号逼近数字量 A ( I) 形
成的表格: S IN 表首址 x0由正弦信号的初始相位角 Η决定, 即
高 CPU 处理效率。利用定时器定时则要根据定时时间 ( t) 来
计算定时器计数值 (TM )。两者关系如下:
(M - TM ). T = t
(5)
其中M 为定时器可计数的最大值, 与计数器的位数有关, 若
为16位计数器, 则M = 216. T 为计数周期, 与单片机晶振有关。
若晶振为12M H z 时, 则:
(收稿日期: 98 年 7 月 28 日)
(上接第 29 页) 直方图方法。 若对纹理基元的选择附加一些条件则有可能提 供更好的二值化结果。 该方法也可适用于票据或文本图象的 二值化。
参考文献
[ 1 ]荆仁杰等 计算机图象处理 浙江大学出版社
[ 2 ]李介谷等 计算机模式识别技术 上海交通大学出版社
为了使单片机 CPU 能完成相应的应用软件, 应为单片机 配置相应的硬件资源。首先要配置键盘、显示系统, 以利于频 率、幅值等参数的设定, 同时还应配置 EPROM 存放用户的应 用软件。其次还应配置必备的 DA C, 单片机输出的正弦信号数 字量经 DA C 转换为模似量输出, 形成正弦信号。具体硬件配 置示意图如图1所示。其中显示、键盘接口是利用单片机 I O 口 及 配 备 的 8255 8155 或 8279 等 芯 片 的 I O 口 来 驱 动。 EPROM 内存视应用场合应用软件来确定, 而 DA C 视所需输 出波形的精确程序来选取。若输出的信号不止一路则应配置 相应的多路 DA C。
3) 正弦波初始相位的调节处理 设形成的正弦波的初始相位为 Η, 为满足这一要求应进行
换功能。
(下转第19页)
·58·
M icrocom puter Appl ica tion s No. 6, 1999 综 述 微型电脑应用 1999 年 6 期
参考文献
[ 1 ]计算机 2000 年问题指南 [ 2 ]信息产业部 计算机 2000 年问题工作小组 199817
X=
(V set) (V m ax )
×
(2n
-
ቤተ መጻሕፍቲ ባይዱ
1)
(2)
故对应于设定幅值下各细分点处的数字量 X ( I) 则为:
X (I) = X. A (I)
(3)
其中 A ( I) 值由表达式 (1) 确定, 对应于最大幅值下各相应细分
点处的数字量 A ( I) 由查表得。
2) 正弦波频率调节处理
从输出某一细分点处模似量到其下一细分点模似量的输
(1996. 4)
(收稿日期: 98111118)
·19·
二、正弦函数逼近方案
三、硬件配置
一般而言, 计算机形成函数信号的最简便的办法是使用 D A 转换器, 因计算机可隔一定时间向 D A 转换器输出 (带 锁存) 一个数字量, 而该数字量为相应时刻的函数值, 则在 D A 转换器输出端就可以得到一个函数信号。D A 转换器形成 的函数信号实际上是一个阶梯形波。因而用 DA C 形成的“正 弦”信号除了正弦基频分量 (所需的信号) 外, 还包含各种高次 谐波和余弦基频分量。故形成的正弦信号只能是一逼近正弦 信号。对正弦信号的数字量逼近, 可以有很多种方案, 主要四 种方案, 详见参考文献 [ 1 ]。而逼近一个正弦函数的精确程度 是与正弦信号的细分度 (N ) 和 D A 转换器的分辨率直接有 关。细分度越大越精确, 但要求计算机速度越高; D A 分辨率 越高越精确, 但 DA C 分辨率受价格与计算机速度及字长的制 约, 不宜过高, 应取一个合理的分辨率。故对正弦信号逼近方 案的讨论, 是在确定的细分度和分辨率基础上比较的。据参考 文献[ 1 ]计算分析结果, 根据“高次谐波的均方根值及余弦基
α 朱志华 中南工业大学机电学院, 湖南长沙 410083
·57·
图1 单片机配置示意图
M icrocom puter Appl ica tion s No. 6, 1999 技术交流 微型电脑应用 1999 年 6 期
四、幅值、频率、初始相位调节处理
要实现输出正弦信号幅值、频率、初始相位的调节、需对
(收稿日期: 1998112114)
相关文档
最新文档