STM32F030控制AD9851产生10Mhz正弦波(EWARM6.7开发环境)

STM32F030控制AD9851产生10Mhz正弦波(EWARM6.7开发环境)
STM32F030控制AD9851产生10Mhz正弦波(EWARM6.7开发环境)

AD9851是一个DDS芯片,主时钟周期达到180MHz,由外部时钟6倍频得到。

输出频率范围可以从1Hz到70MHz,频率控制精度很高。

参数如下:

输出频率的计算公式如下:

在这里采用datasheet里用的数据使输出频率为10MHz,更改频率控制字W1W2W3W4可以得到其他频率。复位时序:

频率控制字写入时序:

AD9851有两种电路连接方法,并行和串行。在这里采用串行的方式。

将如下main.c程序复制进去,并编译运行

//程序描述:利用STM32F030控制DDS芯片AD9851产生10MHz正弦波信号/**********************************************************

硬件电路端口连接

cpu ad9851

PC0----------WCLK

PC1----------FQUD

PC2----------REST

PA0~PA7--------D0~D7

VCC----------------5V

GND-----------GND----------------GND

************************************************************/

/* Includes ------------------------------------------------------------------*/

#include "stm32f0xx.h"

/* Private typedef -----------------------------------------------------------*/

/* Private define ------------------------------------------------------------*/

#define uchar unsigned char

#define uint unsigned int

typedef char int8; // -128~127

typedef unsigned char uint8; // 0~255

typedef int int16; // -32768~32767

typedef unsigned int uint16; // 0~65535

typedef long int32; // -2147483648~2147483647

typedef unsigned long uint32; // 0~4294967295

/* Private function prototypes -----------------------------------------------*/

/* Private functions ---------------------------------------------------------*/

static __IO uint32_t TimingDelay;

void RCC_Configuration(void);

void GPIO_Configuration(void);

void TimingDelay_Decrement(void);

void Delay(__IO uint32_t nTime);

void reset_ad9851(void);

void set_ad9851(uint32 ad9851_frq);

/* main program

*param:

*description:

*/

int main(void)

{

RCC_Configuration( );

GPIO_Configuration( );

reset_ad9851( );

set_ad9851(0x0e38e38e); //fout=10MHz

}

//Initial the system clock

void RCC_Configuration(void)

{

RCC_ClocksTypeDef RCC_Clocks;

RCC_GetClocksFreq(&RCC_Clocks);

SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000);

/* GPIOC Periph clock enable */

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

}

/* Configure PC8 and PC9 in output pushpull mode */

void GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 ;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_Init(GPIOC, &GPIO_InitStructure);

}

//sub fuction

void Delay(__IO uint32_t nTime)

{

TimingDelay = nTime;

while(TimingDelay != 0);

}

void TimingDelay_Decrement(void)

{

if (TimingDelay != 0x00)

{

TimingDelay--;

}

}

//step1:reset the ad9851

void reset_ad9851(void)

{

int reset_i;

GPIO_SetBits(GPIOC , GPIO_Pin_2);

for(reset_i=20; reset_i>0; reset_i--);

GPIO_ResetBits(GPIOC , GPIO_Pin_2);

for(reset_i=200; reset_i>0; reset_i--);

}

//step2:write the frequency and phase parameter to the ad9851

void set_ad9851(uint32 ad9851_freg)

{

uint8 w[5];

uint8 i=0;

int set_i;

w[0]=9;

w[1]=(ad9851_freg&0xff000000)>>24;

w[2]=(ad9851_freg&0x00ff0000)>>16;

w[3]=(ad9851_freg&0x0000ff00)>>8;

w[4]=(ad9851_freg&0x000000ff);

GPIO_ResetBits(GPIOC , GPIO_Pin_1);

for(i=0;i<5;i++)

{

GPIO_ResetBits(GPIOC , GPIO_Pin_0);

for(set_i=20; set_i>0; set_i--);

GPIO_Write(GPIOA,w[i]);

for(set_i=20; set_i>0; set_i--);

GPIO_SetBits(GPIOC , GPIO_Pin_0);

for(set_i=20; set_i>0; set_i--);

}

//don't forger to reset the fqud port after write fqud parameter

GPIO_ResetBits(GPIOC , GPIO_Pin_1);

for(set_i=20; set_i>0; set_i--);

GPIO_SetBits(GPIOC , GPIO_Pin_1);

for(set_i=20; set_i>0; set_i--);

GPIO_ResetBits(GPIOC , GPIO_Pin_1);

}

#ifdef USE_FULL_ASSERT

/**

* @brief Reports the name of the source file and the source line number

* where the assert_param error has occurred.

* @param file: pointer to the source file name

* @param line: assert_param error line source number

* @retval None

*/

void assert_failed(uint8_t* file, uint32_t line)

{

/* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

/* Infinite loop */

while (1)

{

}

}

#endif

附上实物拍照及正弦波波形图:

怎么样,是不是很漂亮。^_^

单片机课程设计产生三角波、正弦波、方波

STC89C51单片机产生正弦波、方波、三角波LED显示频率源程序 #include #include #define uchar unsigned char #define uint unsignedint sbit LATCH1=P2^6;//定义锁存使能端口段锁存 sbit LATCH2=P2^7;// 位锁存 unsigned char TempData[8]; //存储显示值的全局变量 unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9 unsigned char code DuanMa2[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};// 显示段码值0~9 unsigned char code DuanMa1[3]={0x77,0x7c,0x39}; unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码 #define DataPort P0 sbitkeyA=P3^3; sbitkeyB=P3^4; sbitkeyC=P3^5; sbitwc=P1^0; sbitscl=P1^1; sbitsda=P1^2; sbit scl1=P1^3; sbit sda1=P1^4; sbit p5=P1^5; sbit p6=P1^6; sbit p7=P1^7; uintsign,ad; uchar temp[10], temp1[3];//定义显示区域临时存储数组

基于单片机正弦信发生器












专业班级:
学生姓名:
指导教师(签名):
一、课程设计(论文)题目
正弦波信号发生器设计
二、本次课程设计(论文)应达到的目的
本次课程设计是自动化专业学生在学习了《单片机原理及应用》课程 及《模拟电子线路》、《数字电子线路》等专业基础课程之后进行的一次综 合训练,其主要目的是加深学生对单片机软硬件技术和相关理论知识的理 解,进一步熟悉 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 系列单片机相关的文献及教材。 五、审核批准意见
教研室主任(签字) 正弦信号发生器设计方案框图

基于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) 系统具有显示输出波形的类型、重复频率和幅度的功能。

正弦波产生电路的设计

电子系统综合设计实验报告

正弦波产生电路设计报告 一、实验设计目的和作用 1. 进行基本技能训练,如基本仪器仪表的使用,常用元器件的 识别、测量、熟练运用的能力,掌握设计资料、手册、标准 和规范以及使用仿真软件、实验设备进行调试和数据处理 等。 2. 学习较复杂的电子系统设计的一般方法,提高基于模拟、数 字电路等知识解决电子信息方面常见实际问题的能力,由学 生自行设计、自行制作和自行调试。 3. 培养理论联系实际的正确设计思想,训练综合运用已学过的 理论和生产实际知识去分析和解决工程实际问题的能力。 4.通过学员的独立思考和解决实际问题的过程,培养学员的创 新能力 二、设计的具体实现 实验要求用TL084设计正弦波产生电路。正弦波产生方式有多种,本次试验采用较为简单的文氏桥振荡电路。通过图书馆和上网查阅有关资料,确定如下电路。 Multisim原理图:

sch图 调节w1使电路起振,w2调节幅度 仿真结果:频率162Hz,幅度范围0.8—10V

三、实际制作调试和结果分析

频率:133.33Hz 幅度范围:1~9V 四、总结 第一次进行电路设计,遇到了很多麻烦。Multisim、Protel等软件不熟悉,第一次焊电路焊工也不行。通过实验,基本学会了这些软件的操作,制作过程中,自己的焊工有了很大进步。虽然做了好几次才把电路调出来,但还是很满意。 五、参考文献 1.于红珍.通信电子电路【M】.北京:清华大学出版社,2005 2.康华光,陈大钦.电子技术基础模拟部分(第四版). 北京:高等教育出版社,1999.6 3.黄智伟.全国大学生电子设计竞赛【M】.北京:北京航空航天大学出版社,2006

基于单片机的信号发生器(完整电路_程序)资料

电子与信息工程学院综合实验课程报告 实验名称:基于单片机的信号发生器的设计与实现班级:10电工2班 学号:20101851046 姓名:李俊 指导教师: 时间:

摘要 本文以STC89C51单片机为核心设计了一个低频函数信号发生器。信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如 正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。介绍了波形的生成原理、硬件电路和软件部分的设计原理。本系统可以产生最高频率798.6HZ的波形。该信号发生器具有体积小、价格低、性能稳定、功能齐全的优点。 关键词:低频信号发生器;单片机;D /A转换; 1设计选题及任务 设计题目:基于单片机的信号发生器的设计与实现 任务与要求: 设计一个由单片机控制的信号发生器。运用单片机系统控制产生多种波形,这些波形包括方波、三角波、锯齿波、正弦波等。信号发生器所产生的波形的频率、幅度均可调节。并可通过软件任意改变信号的波形。 基本要求: 1. 产生三种以上波形。如正弦波、三角波、矩形波等。 2.最大频率不低于500Hz。并且频率可按一定规律调节,如周期按1T,2T,3T,4T 或1T,2T,4T,8T变化。 3.幅度可调,峰峰值在0——5V之间变化。 扩展要求:产生更多的频率和波形。 2系统概述 2.1方案论证和比较 2.1.1总体方案: 方案一:采用模拟电路搭建函数信号发生器,它可以同时产生方波、三角波、正弦波。但是这种模块产生的不能产生任意的波形(例如梯形波),并且频率调节很不方便。 方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。

单片机产生正弦波

单片机产生正弦波 一要求 采用单片机map430g2553和运算放大器lmv358产生正弦波,周期1秒。 二思路 可通过单片机产生PWM,调节参数寄存器的值,产生不同占空比的PWM信号。若占空比的变化规律是正弦的,则滤波后可得到所需正弦波形。 其中,PWM(Pulse Width Modulation)控制——脉冲宽度调制技术是通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。图1为用PWM波代替正弦半波的例子。(单片机输出图1b,滤波后得到图1a) 图1 用PWM波代替正弦半波

三实践 1 PWM周期计算 正弦波周期1秒,需要采用多少个周期的PWM信号去表示?数目过少,则波形不完整(极端状况只有1个周期的PWM);数目过多,则增加了单片机的计算量,并对速度有要求。这里取N=200个。 则PWM信号的周期为T=1/200秒=5毫秒。 2 PWM参数计算 PWM由定时器TimerA产生,参数主要包括:定时器时钟,周期计数,高电平计数三个。 ●定时器时钟:定时器时钟来源有4个,两个内部的(辅助时钟ACLK、子系统主时钟 SMCLK),两个外部的。这里采用内部时钟。没有外部晶体时,ACLK由内部时钟源VLOCLK(低频时钟源,12K赫兹)产生,SMCLK由内部数字时钟DCOCLK(默认1M赫兹)产生。这里建议采用较高频率的。部分代码如下: BCSCTL1 |= DIVA_0; // ACLK = VLO BCSCTL2 |= SELM_0 + DIVM_0 + DIVS_0; // MCLK = DCO, SMCLK = DCO // Configure TimerA TACTL = TASSEL1 +MC_1; // Source: SMCLK, UP mode 其中,ACLK可配置成VLOCLK的1,2,4,8分频,这里设置为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值。上式中,第一行设置了201个数,均匀分布在0-2pi 之间,第一个和最后一个分别对应0弧度和2pi弧度;第二行计算201个正弦值,偏置为0.5,全幅度为1的正弦波幅度,如图2所示:

单片机制作简易正弦波信号发生器(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度是对称的。 故,不是所有数据都是计算的。

9.5非正弦波发生电路

9.信号发生电路 9.5 非正弦波发生电路 ——基本概念

基本概念 (1)非正弦波发生电路的组成 ①具有开关特性的器件 滞回比较器滞回比较器。。 ②反馈网络将输出电压恰当地反馈到具有开关特性器件的输入端 将输出电压恰当地反馈到具有开关特性器件的输入端。。③延迟环节延迟环节((积分环节积分环节))利用RC 电路的充电路的充、、放电特性来实现延迟放电特性来实现延迟。。 (2)非正弦波发生电路的振荡条件 只要经过一定延迟时间后的反馈信号能使电压比较器的输出状态发生改变改变,,就能产生周期性的振荡就能产生周期性的振荡。。合二为一 “反馈延迟反馈延迟,,比较跳变”

基本概念 (3)非正弦波发生电路的分析方法 ①检查电路组成 检查电路是否具有电压比较器检查电路是否具有电压比较器,,反馈网络反馈网络、、延迟或积分环节延迟或积分环节。。 ②分析振荡条件 首先计算阈值电压首先计算阈值电压。它是判断电压比较器输出状态发生跳变的依据它是判断电压比较器输出状态发生跳变的依据它是判断电压比较器输出状态发生跳变的依据。。其次分析电路的工作原理其次分析电路的工作原理。。通过具有延迟作用的反馈网络,输出电压是否可以在高低电平之间跳变是否可以在高低电平之间跳变。。 ③估算波形参数 包括信号的峰峰值和振荡周期包括信号的峰峰值和振荡周期。。

9.信号发生电路 9.5 非正弦波发生电路 ——方波和矩形波发生电路

方波发生电路 (1) 电路组成 (2) 振荡条件当时,当 时,①阈值电压 的估算由反相输入的滞回比较器和 电路组成电路组成,,回路既作为反馈网络回路既作为反馈网络,,又作为延迟环节又作为延迟环节。。

文氏桥电路产生正弦波,方波要点

电子线路课程设计 院部: 专业: 姓名: 学号: 指导教师: 完成时间:

电子线路课程设计任务书姓名班级指导老师

目录 目录 (1) 第1章引言 (1) 第2章基本原理 (2) 2.1基本文氏振荡器 (2) 2.2振荡条件 (2) 第3章参数设计及运算 (4) 3.1结构设计 (4) 3.2参数计算 (5) 第4章仿真效果与实物 (8) 心得体会 (9) 参考文献 (9)

第1章引言 无论是从数学意义上还是从实际的意义上,正弦波都是最基本的波形之一——在数学上,任何其他波形都可以表示为基本正弦波的傅里叶组合;从实际意义上来讲,它作为测试信号、参考信号以及载波信号而被广泛的应用。在运算放大电路中,最适于发生正弦波的是文氏电桥振荡器和正交振荡器。

第2章 基本原理 2.1 基本文氏振荡器 基本文氏电桥反馈型振荡电路如图1所示,它由放大器即运算放大器与具有频率选择性的反馈网络构成,施加正反馈就产生振荡。运算放大器施加负反馈就为放大电路的工作方式,施加正反馈就为振荡电路的工作方式。图中电路既应用了经由R 3和R 4的负反馈,也应用了经由串并联RC 网络的正反馈。电路的特性行为取决于是正反馈还是负反馈占优势。 图2-1 将这个电路看作一个同相放大器,它对V p 进行放大,其放大倍数为 o 3p 4 V R A 1V R = =+ 在这里为了简化我们假设运算放大器是理想的。令,R 1=R 2=R,C 1=C 2=C 。反过来,V p 是由运算放大器本身通过两个RC 网络产生的,其值为V P =[Z P /(Z P +Z 1)]V o 。式中Z p =R ∥﹙1/j2πfC ﹚, Z 1/2s R j fC π=+。展开后可以得到 ()()o p 00V 1V 3//B jf j f f f f = = +- 上式中 01/2f fC π=。信号经过整个环路的总增益是()T jf AB =或者表示为

单片机定时1器控制产生10Hz正弦波信号

#include #define uchar unsigned char #define uint unsigned int sbit cs=P3^5; sbit wr=P3^6; uchar j; uchar code tosin[256]={ 0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2, 0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5, 0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1, 0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5, 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd, 0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1, 0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda, 0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc, 0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99, 0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76, 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,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,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,0x72, 0x76,0x79,0x7c,0x80 };/*正弦波码 */

基于51单片机函数信号发生器设计

摘要:本系统利用单片机AT89S52采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz—3kHz的波形。通过键盘来控制三种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。 关键词:单片机AT89S52、DAC0832、液晶1602 Abstract: this system capitalize on AT89s52,it makes use of central processor to generate three kinds of waves, they are triangle wave, and use D/A conversion module, wave generate module and liquid crystal display of 1602, it can have the 1Hz-3KHz profile. In this system it can control wave form choosing, frequency, range,can have the sine wave, the square-wave, the triangular wave. Simultaneously may also take the frequency measurement frequency,and displays them through liquid crystal display of 1602.this design includes three modules. They are D/A conversion module, wave generate module and liquid crystal display of LED module. In this design, the wave generator into wave form module and D/A conversion module are discussed in detail. key word: AT89S52, DAC0832, liquid crystal 1602.

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

/**************************************/ /* 信号发生器(正弦波,方波,三角波) */ /*************************************/ #include #include #define uchar unsigned char #define uint unsigned int sbit 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};

基于单片机正弦波有效值的测量

基于单片机正弦波有效值的测量 一.简介 本作品以单片机STC12C5A60S2为主控芯片并以此为基础,通过二极管1N5819实现半波整流,使用单片机内部自带10位AD对整流后的输入信号进行采样,从而实现对峰值的检测;同时通过运放LM837对输入信号进行放大,之后通过施密特触发器,将原始信号整形成可被单片机识别的标准脉冲波形,之后配合内部计数器(定时器)达到测量其频率的目的;这样,整流和AD采样实现对输入信号峰值的检测;通过放大、整形实现对输入信号频率的检测。 二.基本功能与技术指标要求 (1)输入交流电压:1mV~50V,分五档: ①1mV~20mV,②20mV~200mV,③200mV~2V,④2V~20V,⑤20v~50V。 (2)正弦频率;1Hz~100kHz; (3)检测误差:≤2%; (4)具有检测启动按钮和停止按钮,按下启动按钮开始检测,按下停止按钮停止检测; (5)显示方式:数字显示当前检测的有效是,在停止检测状态下,显示最后一次检测到的有效值; (6)显示:LCD,显示分辨率:每档满量程的0.1%; 三.理论分析 本文要求输入交流信号,通过电路测量其峰值,频率,有效值以

及平均值,因为输入的交流信号为模拟信号,而一般处理数据使用的主控芯片单片机处理的是数字信号,所以我们选择使用数模转换器AD(Analog to Digital Converter)将输入的模拟信号转换为数字信号,并进行采样;由于要求输入交流信号电压峰峰值Vpp为 50mV~10V,所以如果我们采用AD为8位,则最小采样精度为 ,因此会产生78.4%的误差,并且题目要求输入交流信号的频率范围为40Hz~50kHz,所以为了保证对高频率信号的单周期内采样个数,我们需要选择尽量高速度的AD; 因此我们选用使用单片机STC12C5A60S2,其内部自带AD为8路10位最高速度可达到250KHz,所以我们可以将最小采样精度缩小到 ,并且在输入交流信号频率最大时(50KHz)在单个周期内可采集5个点,因此可保证测量精度。 由于该AD只能接受0~5V的模拟信号输入,所以当我们直接输入一个双极性信号时可能损坏AD,因此当信号进入AD之前我们要进行半波整流,为此我们设计了整流电路,在交流信号通过整流电路输入AD 后,由AD实时输出对应模拟信号大小的二进制数,并存入变量MAX 中,随着信号的不断输入MAX中只保存AD输出过的最大值,这样既 可测出输入信号的峰值;由交流信号有效值表达式 可知检波器应当首先把输入的瞬时电压平方, 然后在一定平均时间内取平均值再开方。即可得到交流信号的有效值,然后通过比较峰值

设计并实现频率可控的正弦波信号发生器 单片机课设

1Proteus软件简介 Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、A VR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。 特点:支持ARM7,PIC ,A VR,HC11以及8051系列的微处理器CPU模型,更多模型正在开发中; 交互外设模型有LCD显示、RS232终端、通用键盘、开关、按钮、LED等; 强大的调试功能,如访问寄存器与内存,设置断点和单步运行模式; 支持如IAR、Keil和Hitech等开发工具的源码C和汇编的调试; 一键“make”特性:一个键完成编译与仿真操作; 内置超过6000标准SPICE模型,完全兼容制造商提供的SPICE模型; DLL界面为应用提供特定的模式; 14种虚拟仪器:示波器、逻辑分析仪、信号发生器、规程分析仪等; 高级仿真包含强大的基于图形的分析功能:模拟、数字和混合瞬时图形;频率;转换;噪声;失真;付立叶;交流、直流和音频曲线; 模拟信号发生器包括直流、正旋、脉冲、分段线性、音频、指数、单频FM;数字信号发生器包括尖脉冲、脉冲、时钟和码流; 集成PROTEUS PCB设计形成完整的电子设计系统。 Protues软件与Keil uVision的结合 对于初次使用Protues软件的人可能还不知道如何设置,现在把设置步骤简介如下,仅供参考(本文章只讨论在单机上结合,在两个联网机器使用由于篇幅限制不在此讨论):设置

方波、三角波、正弦波信号产生

课程设计报告 题 目 方波、三角波、正弦波信号 发生器设计 课 程 名 称 模拟电子技术课程设计 院 部 名 称 机电工程学院 专 业 电气工程及其自动化 班 级 电气及其自动化(2)班 学 生 姓 名 李丽 学 号 1104102067 课程设计地点 C206 课程设计学时 1周 指 导 教 师 赵国树 金陵科技学院教务处制

目录 1、绪论 (4) 1.1相关背景知识 (4) 1.2课程设计条件................................................... . (4) 1.3课程设计目的.......... (4) 1.4课程设计的任务 (4) 1.5课程设计的技术指标 (5) 2、信号发生器的基本原理 (5) 2.1原理框图 (4) 2.2总体设计思路 (5) 3、各组成部分的工作原理 (5) 3.1 正弦波产生电路 (5) 3.1.1正弦波产生电路 (5) 3.1.2正弦波产生电路的工作原理 (6) 3.2 正弦波到方波转换电路 (8) 3.2.1正弦波到方波转换电路图 (6) 3.2.2正弦波到方波转换电路的工作原理 (8) 3.3 方波到三角波转换电路 (11) 3.3.1方波到三角波转换电路图 (11) 3.3.2方波到三角波转换电路的工作原理 (13) 4、电路仿真结果 (13) 4.1正弦波产生电路的仿真结果 (14) 4.2 正弦波到方波转换电路的仿真结果 (14) 4.3方波到三角波转换电路的仿真结果 (15) 5、设计结果分析与总结 (16)

1、绪论 1.1相关背景知识 信号发生器是一种能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。函数信号发生器在电路实验和设备检测中具有十分广泛的用途,可以用于生产测试、仪器维修和实验室,还广泛使用在其它科技领域,如医学、教育、化学、通讯、地球物理学、工业控制、军事和宇航等。它是一种不可缺少的通用信号源。 1.2课程设计条件 以本学期学习的电子技术基础(模拟部分)为知识背景,我们知道通过放大器、比较器等元器件可构成集成电路、反馈放大电路、运算放大电路等一系列组合放大电路。信号在我们的生活中是无处不在的,模拟信号是时间和幅度连续变化的信号。通过传感器我们可以将各种物理信号转换为电信号,再进过一系列信号的处理。如滤波、幅度放大等,我们可以获得自己需要的信号。 正弦波振荡电路。在通信、广播、医疗、电视系统中,都有广泛的应用。非正弦波产生电路。在一些电子系统中,如数学领域,方波、三角波的应用都是极其广泛的。 1.3课程设计目的 通过本次课程设计所要达到的目的是:提高学生在模拟集成电路应用方面的技能,树立严谨的科学作风,培养学生综合运用理论知识解决实际问题的能力。学生通过电路设计初步掌握工程设计方法,逐步熟悉开展科学实践的程序和方法,为后续课程的学习和今后从事的实际工作打下必要的基础。 1.4课程设计的任务 ①设计一个方波、三角波、正弦波函数发生器; ②能同时输出一定频率一定幅度的三种波形:正弦波、方波、三角波; ③用±5V电源供电。 产生正弦波、方波、三角波的方案有多种,如: ①首先产生正弦波,然后通过整形电路将正弦波变换成方波,再由积分电路将方波变成三角波;②也可以首先产生三角波—方波,再将三角波变成正弦波或将方波变成正弦波;③也可以通过单片集成函数发生器8038来实现… 先是对电路的分析,参数的确定选择出一种最适合本课题的方案。在达到课题要求的前提下保证最经济。最方便。最优化的死亡合剂策略。然后运用仿真软件Multisim对电路进行仿真。观察效果并与要求的性能指标作对比。

单片机控制12864产生正弦波的程序(原创)

电子科技大学吴鉴鹰 #include // SFR declarations #include #include #include #define uchar unsigned char #define uint unsigned int uchar i,j,colour=1,T=0; #define Lcd_Bus P5 /*char code seg[360] = { 0x80,0x82,0x84,0x86,0x88,0x8b,0x8d,0x8f,0x91,0x94, 0x96,0x98,0x9a,0x9c,0x9e,0xa1,0xa3,0xa5,0xa7,0xa9, 0xab,0xad,0xaf,0xb1,0xb4,0xb6,0xb8,0xba,0xbc,0xbe, 0xbf,0xc1,0xc3,0xc5,0xc7,0xc9,0xcb,0xcc,0xce,0xd0, 0xd2,0xd3,0xd5,0xd7,0xd8,0xda,0xdc,0xdd,0xdf,0xe0, 0xe2,0xe3,0xe4,0xe6,0xe7,0xe8,0xea,0xeb,0xec,0xed, 0xee,0xef,0xf0,0xf2,0xf3,0xf3,0xf4,0xf5,0xf6,0xf7, 0xf8,0xf9,0xf9,0xfa,0xfb,0xfb,0xfc,0xfc,0xfd,0xfd, 0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe, 0xfe,0xfd,0xfd,0xfc,0xfc,0xfb,0xfb,0xfa,0xf9,0xf9, /*0xf8,0xf7,0xf6,0xf5,0xf4,0xf4,0xf3,0xf2,0xf1,0xf0, 0xee,0xed,0xec,0xeb,0xea,0xe8,0xe7,0xe6,0xe4,0xe3, 0xe2,0xe0,0xdf,0xdd,0xdc,0xda,0xd9,0xd7,0xd5,0xd4, 0xd2,0xd0,0xce,0xcd,0xcb,0xc9,0xc7,0xc5,0xc3,0xc2, 0xc0,0xbe,0xbc,0xba,0xb8,0xb6,0xb4,0xb2,0xb0,0xae, 0xab,0xa9,0xa7,0xa5,0xa3,0xa1,0x9f,0x9c,0x9a,0x98, 0x96,0x94,0x92,0x8f,0x8d,0x8b,0x89,0x86,0x84,0x82, 0x80,0x7d,0x7b,0x79,0x77,0x75,0x72,0x70,0x6e,0x6c, 0x69,0x67,0x65,0x63,0x61,0x5f,0x5c,0x5a,0x58,0x56, 0x54,0x52,0x50,0x4e,0x4c,0x4a,0x48,0x46,0x44,0x42, 0x40,0x3e,0x3c,0x3a,0x38,0x36,0x34,0x33,0x31,0x2f, 0x2d,0x2c,0x2a,0x28,0x27,0x25,0x24,0x22,0x21,0x1f, 0x1e,0x1c,0x1b,0x19,0x18,0x17,0x16,0x14,0x13,0x12, 0x11,0x10,0xf, 0xe, 0xd, 0xc, 0xb, 0xa, 0x9, 0x8, 0x7, 0x7, 0x6, 0x5, 0x5, 0x4, 0x3, 0x3, 0x2, 0x2, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x2, 0x2, 0x3, 0x3, 0x4, 0x4, 0x5, 0x6, 0x6, 0x7, 0x8, 0x9, 0xa, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10,0x12,0x13,0x14,0x15,0x16,0x18,0x19,0x1a,0x1c, 0x1d,0x1f,0x20,0x22,0x23,0x25,0x26,0x28,0x2a,0x2b, 0x2d,0x2f,0x30,0x32,0x34,0x36,0x38,0x39,0x3b,0x3d, 0x3f,0x41,0x43,0x45,0x47,0x49,0x4b,0x4d,0x4f,0x51,

基于单片机的信号发生器的设计

唐山师范学院 题目基于单片机的信号发生器的设计 院系名称:电子信息科学与技术 学号: 摘要 波形发生器即简易函数信号发生器,是一个能够产生多种波形,如三角波、锯

齿波、方波、正弦波等波形电路。函数信号发生器在电路实验和设备仪器中具有十分广泛的用途。通过对函数发生器的原理以及构成分析,可设计一个能变换出三角波、锯齿波、方波、正弦波的函数波形发生器。在工业生产和科研中利用函数信号发生器发出的信号,可以对元器件的性能及参数进行测量,还可以对电工和电子产品进行指数验证、参数调整及性能鉴定。常用的信号发生器绝大部分是由模拟电路构成的,当这种模拟信号发生器用于低频信号输出往往需要的RC值很大,这样不仅参数准确度难以保证,而且体积和功耗都很大,而由数字电路构成的低频信号发生器,虽然其性能好但体积较大,价格较贵,因此,高精度,宽调幅将成为数字量信号发生器的趋势。 本文介绍的是利用89C52单片机和数模转换器件DAC0832产生所需不同信号的低频信号源,其信号幅度和频率都是可以按要求控制的。文中简要介绍了 DAC0832数模转换器的结构原理和使用方法,89C52的基础理论,以及与设计电路有关的各种芯片。文中着重介绍了如何利用单片机控制D/A转换器产生上述信号的硬件电路和软件编程。信号频率幅度也按要求可调。 本设计核心任务是:以AT89C52为核心,结合D/A转换器和DAC0832等器件,用仿真软件设计硬件电路,用C语言编写驱动程序,以实现程序控制产生正弦波、三角波、方波、三种常用低频信号。可以通过键盘选择波形和输入任意频率值。

关键词: AT89C52单片机函数波形发生器 DAC0832 方波三角波正弦波 目次 1 引言 (4) 2 系统设计 (6) 方案 (6) 器件选择 (6) 总体系统设计 (6) 硬件实现及单元电路设计 (7) 单片机最小系统设计 (7) D/A转换器 (8) 运算放大器电路 (10) LED显示器接口电路 (11) 波形产生原理及模块设计 (11) 显示模块设计 (13) 键盘显示模块设计 (14) 软件设计流程 (14) 软件中的重点模块设计 (14) 3 输出波形种类与频率的测试 (18) 测量仪器及调试说明 (18) 调试过程 (18) 调试结果 (22) 结论 (23) 致谢 (25) 参考文献 (26) 附录A 源程序 (27)

相关文档
最新文档