avr定时器做的正弦波

发布者:mu22最新更新时间:2016-08-04 来源: eefocus关键字:avr  定时器  正弦波 手机看文章 扫描二维码
随时随地手机看文章
实物照片如下

avr定时器做的正弦波 - cailing_07@126 - cailing_07@126的博客
RC电路的电阻为1K与10K时的波形分别如下

avr定时器做的正弦波 - cailing_07@126 - cailing_07@126的博客

avr定时器做的正弦波 - cailing_07@126 - cailing_07@126的博客  

仿真图片如下:

avr定时器做的正弦波 - cailing_07@126 - cailing_07@126的博客




 

程序如下:


#include
#include
#define uchar unsigned char
uchar auc_SinParam[128] = {
128,134,140,147,153,159,165,171,177,182,188,193,198,204,208,213,
218,222,226,230,233,237,240,242,245,247,249,251,252,253,254,254,
254,254,253,252,251,250,248,246,244,241,238,235,232,228,224,220,
215,211,206,201,196,191,185,179,174,168,162,156,150,144,137,131,
125,119,112,106,100,94,88,82,77,71,65,60,55,50,45,41,
36,32,28,24,21,18,15,12,10,8,6,5,4,3,2,2,
2,2,3,4,5,7,9,11,14,16,19,23,26,30,34,38,
43,48,52,57,63,68,74,79,85,91,97,103,109,116,122,128};  // 128点正弦波样本值

uchar x_SW = 8,X_LUT = 0;

#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
void timer0_ovf_isr(void)
{
    X_LUT += x_SW;      // 新样点指针
 if (X_LUT > 127) X_LUT -= 128; // 样点指针调整
 OCR0 = auc_SinParam[X_LUT];  // 取样点指针到比较匹配寄存器
}

void main(void)
{
    CLI();                    //关闭所有中断
 DDRB=0x08;     // PB3输出方式,作为OC0输出PWM波
 TCCR0=0x69;
 OCR0=128;
 TIMSK=0x01;    // 允许T/C0溢出中断
 SEI();     // 开放全局中断
 while(1)
    {};
}

关键字:avr  定时器  正弦波 引用地址:avr定时器做的正弦波

上一篇:avr内部EEPROM实验
下一篇:USRAT通信测试

推荐阅读最新更新时间:2024-03-16 15:03

用单片机(AVR)比较准确地读出PS2鼠标位移(X,Y轴位移)
之前为了用鼠标对小车的移动坐标进行测量,所以找了很多资料用做```但后来发现网上的资料或者程序基本上都是让鼠标工作在默认模式(Stream模式)而去读鼠标的X,Y轴的位移.后来我经过试验,发现这样很难实现,因为鼠标轻轻一动(状态有任何变化)就立即发送数据,所以,这样的话,单片机的速度是跟不上的,移动速度过快的话误差会非常的大.接着仔细看了关于PS2鼠标的资料就决定让鼠标工作在Remote模式,果然测量的误差大大的减少了(呵呵呵)!!!!!] 工作模式如下 鼠标的工作模式: 1、Reset模式:鼠标上电或受到复位命令(0xFF)时进入次模式。(一般电脑才用吧) 设置缺省的Sample rate:100samples/s;
[单片机]
采用WDM的精确定时器及其在冗余技术中的应用
0  引 言     高可靠性是现代军用电子设备和某些控制系统的首要需求。冗余技术是计算机系统可靠性设计中常采用的一种技术, 是提高计算机系统可靠性的最有效方法之一。合理的冗余设计将大大提高系统的可靠性, 但同时也增加了系统的复杂度和设计的难度, 应用冗余配置的系统还增加了用户投资。因此, 如何对冗余设计进行合理有效的设计, 是值得深入研究的课题。     1:1 热冗余也就是所谓的双重化, 是其中一种有效的冗余方式, 但它并不是两个部件简单的并联运行,而是需要硬件、软件、通信等协同工作来实现。将互为冗余的两个部件构成一个有机的整体, 通常包括以下多个技术要点: 信息同步技术、故障检测技术、故障仲裁技术和切换技术、热插拔技术和
[嵌入式]
linux 下 avr开发环境的搭建
环境:ubuntu12.04+atmega128A+JTAG ICE 网上已经有很多教程了,在前人走过的路上自然格外轻松,不过还是要稍微总结一下,毕竟还是有些不一样的。 (1)安装工具链 sudo apt-get install binutils-avr avr-libc gcc-avr (安装信息省略) 装完后用如下命令查看是否成功 zhy@hoply:~$ avr-gcc -v Using built-in specs. COLLECT_GCC=avr-gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/avr/4.5.3/lto-wrapper Target: avr Confi
[单片机]
avr的IO模拟SPI时序接收23位数据
/************************************************************************************** 接口说明:DAT-----PD4 CLK-----PD2(INT0) CS-------PD3(INT1) *****************************************************************************************/ #include iom16v.h #include macros.h #define dat (PIND&(1 PD4)) up_f
[单片机]
STM32学习日志——定时器中断实验
今天学习的是通用定时器及其中断,首先是内部时钟的选择,定时器的时钟Tclk是由APB1时钟乘以1或2决定的,至于是1还是2,要看APB1的分频系数(AHB/APB1),如果为1,则乘以1,否则乘以2。接着就可以根据我们想设定的时间Tout,去配置ARR跟PSC,这两个数是存在16位的寄存器,所以他们的范围为(0-65535),在这个范围内任意取值,满足公式即可。如果我么要配置500ms,可将ARR配置为2499,PSC配置为14399。也就是定时器计数的一个周期为500ms。(ARR为自动重装载值,PSC为Tclk的预分频系数) 根据步骤去写程序就很简单了。 实现功能:通过定时器的中断控制一个绿灯翻转,时间为500ms
[单片机]
STM32学习日志——<font color='red'>定时器</font>中断实验
STM8S的TIM1定时器====总览
STM8S单片机内部集成了6个定时器模块,分别是高级控制型(TIM1)、通用型(TIM2、TIM3)和基本型(TIM4)。 高级控制型和通用型都是16位结构定时器,而基本定时器是8位结构。本文重点讲解TIM1类型定时器。 高级控制型定时器TIM1是STM8S208R单片机内部最强大的定时器,它是一个16位的自动装载计数器,可以实现向上、向下计数。计数的时钟可以软件选择片内系统时钟或外部时钟信号计数,并同过可编程的预分频器驱动。 TIM1定时器具有4个独立的捕捉/比较通道,可以实现基本的定时功能,测量输入信号的脉冲宽度、产生输出PWM波形功能。 TIM1带有互补输出、死区控制和中心对齐的PWM功能,可以应用与马达控制
[单片机]
STM8S的TIM1<font color='red'>定时器</font>====总览
51单片机(二十一)—— 定时器计数功能
在本文,我们对51单片机定时器的计数功能进行测试,采用定时器0通过方式2产生10KHz的方波,并通过单片机的P1.0口输出。定时器1采用方式1的计数功能,即对外部输入的脉冲进行计数。T1与P3.5引脚复用。实验时,需要用杜邦线将单片机的P1.0引脚,与P3.5引脚连接在一起。T0输出的脉冲又通过P3.5引脚输入给定时器1的计数器。定时器1对脉冲进行计数,设置为5000个脉冲溢出一次。脉冲的周期为0.1ms,即定时器1的溢出周期为500ms,所以LED1以1秒一次的频率闪烁。 定时器0和定时器1的初始化代码如下所示 void init_T0_T1(void) { TMOD= 0x52; //定时器0使用方式2,8位自
[单片机]
一种结构新颖的数模结合三相正弦波发生器设计
引言 三相正弦波发生器是应用非常广泛的信号源之一,通常可以由模拟以及数字模拟两者相结合的方法产生。 本文设计的三相30阶梯正弦波信号发生器采用数模结合的方法,弥补了纯模拟方法在相位差精度、调频方面的缺点,便于单片集成。 电路结构和工作原理 要保证三相相位差恒为120°,对N有两点约束。一为对称性约束,N为偶数;二为恒定相位差120°约束,即N/3为整数,这里N=6×5=30,即可得到的阶梯正弦波阶数为30。用1/30的周期为步长对正弦波进行量化,各采集点的数值等于该点的正弦函数值。在一个周期内,正弦波被分成30个宽度相等的小矩形波。 下面对30阶梯波构成正弦波的波形失真度进行简要分析,对每个小矩形波通过傅立叶展开,频谱中
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved