- 浏览: 300055 次
- 性别:
- 来自: 广州
文章分类
MCU: C8051F330, Fmax: 23KHz
#include <stdio.h> #include <stdlib.h> unsigned char sine_table[8] = { 0x80, 0xDA, 0xFF, 0xDA, 0x80, 0x25, 0x00, 0x25 }; /* 8KSPS, 0dB */ // unsigned char sine_table[8] = { 0x80, 0xAD, 0xC0, 0xAD, 0x80, 0x52, 0x3F, 0x52 }; /* 8KSPS, -6dB */ unsigned char *waveform_data = &sine_table[0]; /* for generate 1KHz sine wave, call it per 125us */ unsigned char waveform_output(void) { unsigned char dac_value; dac_value = *waveform_data++; if (waveform_data >= &sine_table[8]) { waveform_data = &sine_table[0]; } return dac_value; } int main() { int i; for (i = 0; i < 16; i++) { printf("%02X\n", waveform_output()); } return 0; }
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> unsigned char *sine_table = NULL; float db2liner(float dB) { return pow(10, dB / 20); } float liner2db(float liner) { return (20 * log10(liner)); } int waveform_generate(int freq, int sps, float dB) { int i; int table_length; float A; float value; table_length = sps / freq; sine_table = (unsigned char *)malloc(table_length); memset(sine_table, 0, table_length); A = db2liner(dB); for( i = 0; i < table_length; i++) { value = A * sin(2 * M_PI * i * freq / sps); if (value < 1.0) { sine_table[i] = (256 / 2) + value * (256 / 2); /* add DC offset */ } else { sine_table[i] = 256 - 1; } } return table_length; } int main() { int i, table_length; /* generate 1000Hz sine wave, sample rate: 8000Hz, gain: -6dB */ table_length = waveform_generate(1000, 8000, -6); printf("unsigned char sine_table[%d] = { ", table_length); for (i = 0; i < table_length; i++) { printf((i != table_length - 1) ? "0x%02X, " : "0x%02X ", sine_table[i]); } printf("};\n"); free(sine_table); return 0; }
发表评论
-
stm8 stm32 nop
2012-09-21 09:15 1448stm8s103f3 0x8000-0x9FFF: 0x9D ... -
CoreSight Debug and Trace Connectors
2012-09-17 09:18 927CoreSight Debug and Trace Conne ... -
DM9006 linux driver
2012-08-15 13:02 1607DM9006 linux driver http://www ... -
hsb_to_rgb
2012-06-20 16:33 0static void hsb_to_rgb(uint1 ... -
stm32 jpeg
2012-05-08 10:06 0jpeg -
STM32和STM8各系列选型表
2012-04-24 13:40 1239STM32和STM8各系列选型表 -
研华推出基于Freescale i.MX53的ARM核心板
2012-02-10 13:36 1101http://www.eepw.com.cn/article/ ... -
helix
2011-11-25 16:34 0helix -
audio dsp
2011-11-07 16:39 0http://alldsp.com/index.html ... -
stm32 softreset
2011-11-07 10:07 1080SCB->AIRCR = 0x05FA0004; -
MDK FS driver for STM32
2011-11-01 20:46 1162/*-------------------------- ... -
VS1003B Debug
2011-10-06 08:50 0VS1003B 在SM_SDISHARE模式下不能连续soft ... -
stm32 中断号 for IAR PowerPac
2011-09-20 16:53 208800 DCD __intial_s ... -
hashtable for DM9000A
2011-09-09 10:23 1036unsigned long const Crc32Tab ... -
DM9000A for KEIL RL-NET driver
2011-08-22 09:05 1959DM9000AEP 在KEIL RL-NET下的驱动程序,从u ... -
DM9000
2011-08-02 11:42 0/*========================== ... -
STM32 MP3
2011-06-28 09:15 1049http://bbs.21ic.com/viewthread. ... -
stm32 lib
2011-04-16 22:00 1206stm32
相关推荐
这个资源中的"DMA-DAC产生1KHz正弦波"文件很可能包含了具体的代码示例和配置细节,可以作为实现这一功能的参考模板。对于初学者或者需要在项目中使用此功能的开发者来说,这是一个非常有价值的实践案例。
4. **启动DMA传输**:一旦配置好DMA和DAC,我们启动DMA传输,让其周期性地将正弦波样本送到DAC,从而产生模拟信号。 5. **频率调整**:为了改变输出正弦波的频率,我们可以调整DMA传输的速率,即改变每毫秒发送到...
STM32是一款广泛应用于嵌入式系统的32位微控制器,其内置的DAC模块能够将数字信号转换为模拟信号,进而产生各种波形,包括正弦波。 首先,我们要理解正弦波的生成原理。一个理想的正弦波可以由频率、幅度和相位三个...
在生成正弦波时,我们可以通过计算得到一系列代表正弦函数数值的数字,然后把这些数字输入到DAC,由DAC转换成连续变化的模拟电压。 本项目中,提供了800Hz和1600Hz两种频率的正弦波。频率的设置与DAC的采样率有关,...
### 使用DAC0832产生正弦波的关键知识点 #### 1. DAC0832简介及其特性 DAC0832是一种8位分辨率的数模转换器(Digital-to-Analog Converter, DAC),广泛应用于各种电子设备中进行信号处理。其主要特点包括: - **高性...
在这个项目中,我们重点讨论如何利用STM32F4的数字模拟转换器(DAC)通过DMA(直接内存访问)高速输出正弦波,并结合ADC(模拟数字转换器)同样通过DMA进行多通道高速信号采集。这些功能对于实现高性能的实时信号...
STM32 DAC 波形发生器是嵌入式系统中常用的一种功能,它允许通过数字控制来生成模拟信号,如正弦波、三角波和方波。本项目着重讲解如何利用STM32微控制器的DAC模块来实现这些基本波形的发生。 首先,STM32中的DAC...
在提供的文件"10 DAC_产生正弦波"中,应该包含了实现上述步骤的代码示例,包括必要的头文件、宏定义、函数声明和实现。通过分析和理解这些代码,你可以进一步了解如何在实际项目中使用STM32 DAC生成正弦波。
用单片机去产生正弦波的程序是用查表的方法。
综上所述,单片机产生正弦波程序的实现涉及对正弦波表的存储、读取、输出控制以及DAC转换等多个步骤。这种技术已成为电子工程师实现音频、信号处理和测量等任务的有力工具,其应用前景广阔。随着电子技术的不断发展...
stm32f1的程序
本篇文章将深入探讨如何利用51单片机和DAC0832芯片来产生正弦波。DAC0832是一款8位数字模拟转换器,它能够将数字信号转换为模拟电压,这在信号处理、音频设备和各种控制系统中非常常见。 首先,我们需要了解51...
在这个项目中,它被用于通过TIM(定时器)模块和DAC(数模转换器)来生成可调频率的正弦波。 STM32F407的TIM模块是一个强大的定时器,可以执行多种功能,包括计数、比较、捕获和PWM输出。在生成正弦波的应用中,TIM...
包括硬件电路设计,使用DAC产生正弦波,方波,三角波,锯齿波,通过按键设置波形和频率,通过12864显示波形图 Protues仿真软件是一款单片机仿真程序,用户可以通过它来实现单片机以及相关工具的模拟功能,并且能够...
标题中的“002_DAC0832输出50HZ正弦波,三角波,矩形波,锯齿波”表明这是一个关于使用DAC0832集成电路产生不同类型的模拟信号的教程,主要涉及50Hz频率的正弦波、三角波、矩形波和锯齿波。DAC0832是一款8位数字模拟...
用函数产生正弦波;unsigned char xdata DAC0832_PORT _at_ 0x7fff; typedef unsigned int uint16; unsigned char i; float x; unsigned char k;
在本项目中,ATmega16将作为数字信号处理器,负责生成控制信号来驱动DAC(数模转换器)产生正弦波。 DAC0832是一款8位的单片线性DAC,能够将数字信号转换为模拟电压输出。它包含四个独立的D/A转换通道,但在这个...
在本文中,我们将深入探讨如何使用STM32F103微控制器通过DMA(直接存储器访问)方式驱动DAC(数模转换器)来生成正弦波。STM32F103是一款基于ARM Cortex-M3内核的高性能微控制器,广泛应用于嵌入式系统设计。DMA是...
在这个电路设计中, dac0832被用来生成正弦波和方波,这两种基本的波形在电子工程、通信、音频处理等多个领域都有广泛应用。 正弦波是一种连续的周期性波形,它在自然界中很常见,如声波、电磁波等。在电子系统中,...