基于51系列单片机的多功能波形发生器及特定波形幅值调节 精品

合集下载

基于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单片机的示波器

基于51单片机的示波器

51单片机波形发生器(本程序适用)其中独立按键1、2、3、4按下时会产生四个不同波形(矩形、三角波、梯形波、正弦波)主函数:Main.c#include <reg52.h>#include "i2c.h"#define AddWr 0x90 //写数据地址#define AddRd 0x91 //读数据地址/*unsigned char code tab[]={0,25,50,75,100,125,150,175,200,225,250 //表格数值越多,波形越平滑};*/unsigned char code tab1[]={0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250};unsigned char code juchi[64]={0,4,8,12,16,20,24,28,32,36,40,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,12 1,125,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,215,219,223,227,231,23 5,239,243,247,251,255};unsigned char code sin[64]={135,145,158,167,176,188,199,209,218,226,234,240,245,249,252,254,254,253,251,247,2 43,237,230,222,213,204,193,182,170,158,146,133,121,108,96,84,72,61,50,41,32,24,17,11,7,3,1,0,0,2,5,9,14,20,28,36,45,55,66,78,90,1 02,114,128};unsigned char code sanjiao[64]={0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64, 56,48,40,32,24,16,8,0};unsigned char code tixing[64]={0,13,26,39,52,65,78,91,104,117,130,143,156,169,182,195,208,221,234,247,247,247,247,247,247, 247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,242,229,216,203,190,177,164,151,138,125,112,99,86,73,60,47,34,2 1,8};unsigned char code juxing[64]={255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,25 5,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};extern bit ack;bit WriteDAC(unsigned char dat,unsigned char num);/*------------------------------------------------主程序------------------------------------------------*/main(){unsigned char i;while (1) //主循环{// for(i=0;i<26;i++)// WriteDAC(tab1[i],1);while(P1==0xff){for(i=0;i<64;i++)WriteDAC(juxing[i]*6/10,1);if(P1!=0xff)break;}while(P1==0xfe){for(i=0;i<64;i++)WriteDAC(tixing[i]*6/10,1);if(P1!=0xfe)break;}while(P1==0xfd){for(i=0;i<64;i++)WriteDAC(sanjiao[i]*6/10,1);if(P1!=0xfd)break;}while(P1==0xfb){for(i=0;i<64;i++)WriteDAC(sin[i]*6/10,1);if(P1!=0xfb)break;}while(P1==0xf7){for(i=0;i<64;i++)WriteDAC(juchi[i]*6/10,1);if(P1!=0xf7)break;}}}/*------------------------------------------------写入DA转换数值输入参数:dat 表示需要转换的DA数值,范围是0-255 ------------------------------------------------*/bit WriteDAC(unsigned char dat,unsigned char num) { unsigned char i;Start_I2c(); //启动总线SendByte(AddWr); //发送器件地址if(ack==0)return(0);SendByte(0x40); //发送器件子地址if(ack==0)return(0);for(i=0;i<num;i++){SendByte(dat); //发送数据if(ack==0)return(0);}Stop_I2c();}IIC协议:IIC.C#include "i2c.h"#define _Nop() _nop_() //定义空指令bit ack; //应答标志位sbit SDA=P2^1;sbit SCL=P2^0;/*------------------------------------------------启动总线------------------------------------------------*/void Start_I2c(){SDA=1; //发送起始条件的数据信号_Nop();SCL=1;_Nop(); //起始条件建立时间大于4.7us,延时_Nop();_Nop();_Nop();_Nop();SDA=0; //发送起始信号_Nop(); //起始条件锁定时间大于4μ_Nop();_Nop();_Nop();_Nop();SCL=0; //钳住I2C总线,准备发送或接收数据_Nop();_Nop();}/*------------------------------------------------结束总线------------------------------------------------*/void Stop_I2c(){SDA=0; //发送结束条件的数据信号_Nop(); //发送结束条件的时钟信号SCL=1; //结束条件建立时间大于4μ_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1; //发送I2C总线结束信号_Nop();_Nop();_Nop();}/*----------------------------------------------------------------字节数据传送函数函数原型: void SendByte(unsigned char c);功能: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对此状态位进行操作.(不应答或非应答都使ack=0 假)发送数据正常,ack=1; ack=0表示被控器无应答或损坏。

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

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

基于51单片机的波形发生器的设计引言:波形发生器是一种可以生成特定频率、特定波形的电子设备。

它广泛应用于科研、教学和产业生产等领域,可以用于信号发生、信号测试、信号仿真等各种任务。

本文将介绍一个基于51单片机的波形发生器的设计方案。

一、系统硬件设计1.系统框架该波形发生器系统采用51单片机作为主控芯片,主要包括三个部分:信号生成模块、显示模块和控制模块。

其中,信号生成模块负责产生各种特定频率、特定波形的信号;显示模块用于展示信号参数等相关信息;控制模块负责接收用户输入并对波形发生器进行控制。

2.硬件连接信号生成模块与主控芯片之间通过I/O接口相连,用于传输数据和控制信号。

显示模块通过串口与主控芯片相连,用于显示相关信息。

控制模块通过按键、旋钮等输入设备与主控芯片相连,用于接收用户输入。

二、系统软件设计1.系统初始化在系统初始化阶段,主控芯片需要完成引脚、定时器、串口等相关资源的初始化工作。

同时,还需要设置一些全局变量和参数的初始值。

2.信号生成模块信号生成模块通过定时器产生特定频率的时钟信号,并根据用户输入的参数生成相应的信号波形。

主控芯片利用定时器中断函数进行波形生成,并将生成的信号数据存放在缓冲区中。

3.显示模块显示模块负责将信号波形显示在液晶屏上,并显示相关参数,如频率、幅度等。

主控芯片将信号数据从缓冲区中读取,并通过串口发送给显示模块进行显示。

4.控制模块控制模块负责接收用户输入的控制指令,并通过按键、旋钮等输入设备完成用户交互。

主控芯片通过中断函数实时读取用户输入并进行相应的控制操作。

三、系统功能设计1.频率设置功能用户可以通过控制模块设置波形发生器的频率,可以选择固定频率或者可调频率。

利用定时器时钟频率与定时器中断的时间间隔来控制波形的频率。

2.波形选择功能用户可以通过控制模块选择不同的波形类型,如正弦波、方波、三角波、脉冲波等。

主控芯片根据用户指令设置波形参数,并生成相应的波形信号。

基于51单片机的波形发生器设计报告

基于51单片机的波形发生器设计报告

基于51单片机的波形发生器设计报告波形发生器是一种电子设备,用于产生各种不同类型和频率的电信号波形。

基于51单片机的波形发生器设计是一种常用的工程设计。

下面是一个关于基于51单片机的波形发生器设计的报告,详细介绍了设计的原理、步骤、电路、程序和性能。

一、设计原理:二、设计步骤:1.确定波形发生器的输出频率范围和分辨率要求。

2.选择适当的定时器/计数器模块来实现频率的计时和控制。

3.设计电路,包括定时器/计数器模块、晶振、滤波电路和输出接口等。

4.编写程序,配置定时器/计数器模块的工作模式、计数值和中断服务程序。

5.调试和测试电路和程序,确保波形发生器正常工作并满足设计要求。

三、电路设计:1.定时器/计数器模块:选择一个合适的定时器/计数器模块,如51单片机的定时器/计数器T0或T1、根据设计要求,设置工作模式、计数器模式和计数值。

2.晶振:选择适当的晶振频率,一般为11.0592MHz,将晶振连接到单片机的晶振引脚。

3.滤波电路:根据需要,设计一个滤波电路来滤除不需要的高频噪声和杂散信号。

4.输出接口:设计一个输出接口电路来连接单片机和外部电路,使用电平转换电路将单片机的低电平(0V)输出转换为所需的电平电压。

四、程序设计:1.配置定时器/计数器模块的工作模式和计数值,设置中断服务程序。

2.在中断服务程序中,根据设计要求生成矩形波信号,并将信号输出到输出端口。

3.在主程序中,初始化单片机和定时器/计数器模块,使波形发生器开始工作。

4.在主循环中,可以设置按键输入来改变输出频率,通过调整计数值来实现不同的频率输出。

五、性能评估:1.输出频率范围:根据设计要求,测试波形发生器的最低和最高输出频率是否在设计范围内。

2.分辨率:对于指定频率范围,测试波形发生器的输出频率的分辨率,即最小可调节的频率。

3.稳定性:测试波形发生器的输出信号的稳定性和准确度,是否有漂移和偏差。

4.噪声:测试波形发生器的输出信号是否有杂散噪声和幅度波动。

基于51单片机的多功能波形发生器设计

基于51单片机的多功能波形发生器设计

基于51单片机的多功能波形发生器设计1.设计目的与任务《电子信息工程专业方向》课程设计是一项重要的实践性教育环节,是学生在完成本专业所有课程学习后必须接受的一项结合本专业方向的、系统的、综合的工程训练。

在教师指导下,运用工程的方法,通过一个较复杂课题的设计练习,可使学生通过综合的系统设计,熟悉设计过程、设计要求、完成的工作内容和具体的设计方法,掌握必须提交的各项工程文件。

其基本目的是:培养理论联系实际的设计思想,训练综合运用电路设计和有关先修课程的理论,结合生产实际分析和解决工程实际问题的能力,巩固,加深和扩展有关电子类方面的知识。

通过课程设计,应能加强学生如下能力的培养:(1)自身的独立工作能力和创造力;(2)综合运用专业及基础知识,解决实际工程技术问题的能力;(3)查阅图书数据、产品手册和各种工具书的能力;(4)工程绘图的能力;(5)编写技术报告和编制技术资料的能力;2.设计指标与技术要求(1)借助现有的单片机系统;(2)能产生正弦波、方波、三角波、锯齿波等波形;(3)各种波形频率可调,频率范围为100-3000Hz;(4)正弦波输出电压为5V峰峰值,方波、三角波、锯齿波输出电压为5V (5)采用8位D/A转换器;(6)进行硬件平滑滤波;(7)编写程序并调试;(8)提供程序清单;。

(9)能实物演示3.总体设计图1.1所示是基于单片机的多波形发生器的总体设计流程图。

图1.1 总体设计流程图3.1总体设计功能说明:根据设计要求,分析得本次设计需要硬件和软件两部分。

硬件上,如图。

键盘输入部分主要用于选择波形。

键盘共设4个键,用于选择三角波、矩形波、锯齿波、正弦波4种不同的波形,。

89C51单片机用来执行某一波形发生程序,向D/A转换器的输入端发送数据,将其转化成模拟量,并通过运算放大器调节波形的幅值,经过滤波器的滤波,从而在输出端得到所需的波形。

软件上,如图。

可由硬件设计好后,再根据要求进行具体编写。

基于51单片机的多功能信号发生器

基于51单片机的多功能信号发生器

河南理工大学《微机原理与单片机接口技术》课程设计报告多功能信号发生器设计2013年1月10 日摘要本次设计是一个多功能信号发生器,可以产生、方波、锯齿波和三角波。

函数信号发生器的设计方法有多种,利用单片机设计的函数信号发生器具有编程灵活,功能更以扩充等实际的优点。

设计原理图如下图所示,其中单片机通过软件对键盘输入的频率数值进行处理,处理结果送与D/A转换部分实现数/模转换,输出的电流再经过电流/电压转换环节,进而形成模拟电压波形,最后经过过载保护电路输出。

同时在数码管内显示该频率数值。

波形的切换可以通过按键直接实现。

在编程语言上,我们选择自身比较熟悉的C语言,这样在后期波形的调试及与硬件衔接方面更容易发挥出自身优势。

根据设计的要求,对各种波形的频率和幅度进行程序的编写,并将所写程序装入单片机的程序存储器中。

在程序运行中,当接收到来自外界的命令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。

经过设计及后期长时间的调试,设计的所有功能均已实现:(1)具有产生方波、锯齿波、三角波三种周期性波形的功能。

(2)输出波形的频率范围为100Hz~1kHz;频率步进间隔≤100Hz。

(3)输出波形幅度范围0~5V,可按步进0.1V(峰-峰值)调整。

(4)具有显示输出波形的类型、周期和幅度的功能。

关键词:单片机,函数发生器,共阴极数码管目录第一章绪论 (5)1.1选题背景及其意义 (5)信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。

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

能够产生多种波形,如方波、锯齿波、三角波、正弦波的电路被称为函数信号发生器。

在通信、广播、电视系统,在工业、农业、生物医学领域内,函数信号发生器在实验室和设备检测中具有十分广泛的用途。

(5)1.2单片机概述 (5)1.3信号发生器的分类 (5)1.4 研究内容 (6)第二章方案的设计与选择 (6)2.1 方案的比较 (6)2.2 设计原理 (6)2.3 设计思想 (6)2.4 设计功能 (7)(1)具有产生方波、锯齿波、三角波三种周期性波形的功能。

基于51单片机的函数发生器和示波器

基于51单片机的函数发生器和示波器

《智能仪器仪表设计基础》课程设计报告单位:自动化学院学生姓名:汪连升专业:测控技术与仪器班级:0821001学号:2010212950指导老师:耿道渠成绩:设计时间:2013 年5月重庆邮电大学自动化学院制一、题目:基于单片机的多波形信号发生器设计二、指导教师:耿道渠三、设计要求:设计一个信号发生器,实现如下功能:(1)可产生正弦波、方波、三角波、脉冲等波形;(2)通过按钮或键盘选定输出波形;(3)波形频率可设定;(4)波形可通过液晶屏显示。

四、给定条件:1、8051单片机最小系统;2、ADC,DAC器件;五、设计:1、方案论证,并确定设计方案2、给出信号发生器的整体设计框图3、硬件电路设计4、软件设计(画出程序流程图,并给出相应模块程序代码)5、完成设计报告六、具体设计过程及实验结果:七、设计的心得体会:八、附件:(可选)完成心率波、指数上升和指数下降波形;九、参考书目:给出主要参考书目(如:《单片机原理与应用》、《电子测量技术》、《单片机C语言程序设计》等),包括作者,书目名称,出版社等。

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

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

本系统通过对51单片机的控制,用DA-AD等模块实现了正弦波、方波、三角波和锯齿波的产生,同时可以通过按键实现波形的选择和波形频率的改变。

在实现波形的发生的同时又实现了波形图线的显示,通过NoKia5110对AD实时采集数据的显示、波形类型和波形频率的显示。

摘要:本系统采用单片C8052为控制核心,通过其端口实现数字量的输出,然后由DAC0832把数字量转换成模拟量;但是DAC芯片输出的是电流信号,本系统用LM324运放把电流信号转换为电压信号。

基于51单片机汇编程序波形发生器实训报告

基于51单片机汇编程序波形发生器实训报告

单片机实训报告(波形发生器)一、设计方案(1)、硬件基本设计思路本设计方案采用8051单片机和DAC0832将数字信号转化成模拟信号,并通过LM324运算放大器将信号进行处理,最终得到各种波形。

其中,波形的切换采用矩阵键盘通过外部中断0来实现。

(2)、软件基本设计思路首先,将基本波形通过程序进行编写,并调试成功;其次,再编写按键扫描子程序;最后,将按键程序放入中断中,并进行整体调试,直到调通为止。

(3)、程序说明略二、原理图波形发生器原理图三、程序JUCHI E QU 50HSANJI EQU 51HFANGB EQU 52HTIXIN EQU 53HKU EQU 55HORG 0000H ;程序入口AJMP MAIN ;指向主程序ORG 0003H ;主程序入口地址AJMP INTT0 ;指向按键中断程序ORG 0030H ;中断程序入口地址MAIN: ;主程序MOV P2,#00H ;将P2口初始化为0SETB EA ;开总中断SETB EX0 ;开启外部中断0SETB IT0 ;将外部中断0设置为下降沿有效MOV DPTR,#00FFH ;设置输入寄存器地址MOV JUCHI,#00H ;初始化MOV SANJI,#00HMOV FANGB,#00H;***************************************************START:MOV A,KU ;将键码送累加器ACJNE A,#00H,W1 ;将累加器A和00H比较,如果相等,则00键按下顺序执行,否则跳到W1再判断01键是否按下MOV SANJI,#00H ;屏蔽其他波形MOV FANGB,#00HMOV TIXIN,#00HAJMP JCB ;跳转到锯齿波形W1: CJNE A,#01H,W2 ;判断01键是否按下MOV JUCHI,#00H ;屏蔽其他波形MOV FANGB,#00HMOV TIXIN,#00HAJMP SJB ;跳转到三角波形W2: CJNE A,#02H,W3 ;判断02键是否按下MOV TIXIN,#00HMOV JUCHI,#00H ;屏蔽其他波形MOV SANJI,#00HAJMP FB ;跳转到方波W3: CJNE A,#03H,W4 ;判断03键是否按下,没有按下,跳转回去继续循环扫描MOV JUCHI,#00H ;屏蔽其他波形MOV FANGB,#00HAJMP TXB ;跳转到梯形波W4: AJMP START;**********************************************INTT0: ;中断程序;***********键盘扫描子程序KEY*****************KEY: ACALL KS ;调按键查询子程序,判断是否有键按下JNZ K1 ;有键按下,转移 WEI1跳转ACALL DELAY ;无键按下,调延时程序去抖AJMP K4 ;继续查询按键;***********键盘逐列扫描程序***********************************K1: ACALL DELAYACALL KS ;再次判别是否有键按下JNZ K2 ;有键按下,转移AJMP K4K2: MOV R3,#0FEH ;首列扫描字送R3MOV R4,#00H ;首列号送R4K3: MOV A,R3MOV P2,A ;列扫描字送P2口MOV P1,#0FFH ;初始化P1口MOV A,P1 ;读取行扫描值JB ACC.0,L1 ;第零行无键按下转查第一行为1跳转MOV A,#00H ;第零行有键按下,行首键号送AAJMP LK ;转求键号L1: JB ACC.1,NEXT ;第一行无键按下,转查下一列MOV A,#03HAJMP LK ;键扫描结束,返回;************************************************************NEXT:INC R4 ;修改列号MOV A,R3JNB ACC.2,KEY ;三列扫描完返回按键查询状态RL A ;未扫描完,改为下列扫描字MOV R3,A ;扫描字暂存R3AJMP K3 ;转列扫描程序LK: ADD A,R4 ;形成键码送AMOV KU,APUSH ACC ;键码入栈保护;**********************************************K4:ACALL KS ;等待键释放JNZ K4POP ACC ;键释放,弹栈送ARETI ;中断返回;**********按键查询子程序**************************************KS: ;MOV A,#00HMOV P2,#00H ;全扫描字送p2口MOV P1,#0FFHMOV A,P1 ;读入P1口状态CPL A ;变正逻辑,高电平表示有键按下ANL A,#0FH ;屏蔽高四位RET ;子程序返回;****************锯齿波***********************JCB:MOV A,JUCHI ;转换初值WW: MOVX @DPTR,A ;D/A转换INC A ;A自加1NOP ;延时CJNE A,#255,WW ;判断A是否加到255,若没有返回到WW继续加MOV JUCHI,AAJMP START;******************三角波********************SJB:MOV A,SANJI ;转换初值EE: MOVX @DPTR,A ;D/A转换INC ANOPCJNE A,#255,EEDEC AQQ: MOVX @DPTR,ADEC ANOPCJNE A,#00,QQMOV SANJI,AAJMP START;******************方波********************* FB:MOV A,FANGBMOVX @DPTR,AACALL DELAY3ACALL DELAY3CPL AMOVX @DPTR,AACALL DELAY3ACALL DELAY3MOV FANGB,APOP ACCAJMP START;***************梯形波**********************TXB:MOV A,TIXINSS: MOVX @DPTR,AINC AACALL DELAY3CJNE A,#255,SSACALL DELAY3ACALL DELAY3DEC AZZ: MOVX @DPTR,ADEC AACALL DELAY3CJNE A,#00,ZZACALL DELAY3ACALL DELAY3MOV TIXIN,AAJMP START;*******************************************************1ms DELAY3: MOV R0,#7DHDEL7: NOPNOPDJNZ R0,DEL7RET;*******************************************50毫秒延时子程序DELAY2: MOV R0,#05DEL5: MOV R1,#10DEL4: MOV R2,7DHDEL3: NOPNOPDJNZ R2,DEL3DJNZ R1,DEL4DJNZ R0,DEL5RET;******************************************END四、实训总结通过两周的实训,我们对单片机有了一个基本的认识和了解,我们学到了怎样从一个设计课题入手去编写相关程序,并通过硬件实现。

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

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

基于51单片机的波形发生器的设计讲解波形发生器是电子设备中常见的一种电子设备,它可以产生各种不同形状的波形信号。

在这篇文章中,我们将会详细介绍基于51单片机的波形发生器的设计。

一、波形发生器的原理及分类波形发生器的原理是利用电子元件、电路以及控制信号源,将一定幅度的电压信号变化成为需要的各种形状的波形信号。

根据波形的形状分类,可以将波形发生器分为以下几种类型:1.正弦波发生器:产生正弦波信号的发生器,常用于音频设备中。

2.方波发生器:产生方波信号的发生器,常用于数字电路中,也可用于频率测量和脉冲调制等应用。

3.三角波发生器:产生三角波信号的发生器,常用于音频设备以及频率测试等领域。

4.锯齿波发生器:产生锯齿波信号的发生器,常用于音频设备、测试仪器以及数据采集和测量等领域。

二、基于51单片机的波形发生器设计下面我们将详细介绍基于51单片机的波形发生器的设计步骤。

1.硬件设计:在基于51单片机的波形发生器设计中,我们需要准备的硬件元件有:-51单片机控制芯片-芯片烧录器-液晶显示屏-按键开关-电源模块-杜邦线等电子连接线2.硬件连接:根据电路原理图进行将电子元件进行正确的电路连接。

其中,51单片机作为核心控制芯片,负责生成波形信号,液晶显示屏用于显示波形信号,按键开关用于控制波形发生器的启动、停止以及参数调整等操作。

3.软件设计:利用Keil C编译软件进行51单片机的软件设计,根据控制芯片的指令集编写相应的程序代码,实现以下几个功能:-波形信号的产生:根据选择的波形类型(正弦波、方波、三角波或锯齿波),利用特定的算法生成相应形状的波形信号。

-参数调节:通过按键开关控制波形的频率、幅度以及相位等参数的调节,使波形发生器能够产生不同特性的波形信号。

-波形信号显示:通过LCD显示屏将生成的波形信号进行实时显示,以方便观察和调试。

4.软硬件的调试与优化:三、波形发生器的应用1.音频设备:波形发生器可以生成不同频率的正弦波信号,用于音频信号的发生和测试等应用。

基于51单片机的波形发生器的设计汇总

基于51单片机的波形发生器的设计汇总

基于51单片机的波形发生器的设计汇总波形发生器是电子领域中常用的一种设备,用于产生各种不同形式的波形信号。

本文将基于51单片机的波形发生器的设计进行汇总。

设计思路如下:一、基本原理波形发生器的基本原理是通过控制数字信号的高低电平来产生不同的波形。

在这个设计中,我们将使用51单片机作为控制器来产生波形信号。

二、硬件部分1.时钟电路:使用一个晶体振荡器作为时钟源,提供稳定的时钟脉冲给51单片机。

2.电源电路:使用稳压电源提供稳定的电压给51单片机和其他电路。

3.单片机电路:将51单片机与其他电路进行连接,包括输入输出端口和相应的外部电路。

4.波形输出电路:根据需要产生不同的波形,设计相应的输出电路,包括滤波器、电阻、电容等元器件。

三、软件部分1.系统初始化:在系统上电后,进行相应的初始化工作,包括设置引脚功能、中断,设置计时器等。

2.波形生成算法:根据用户的选择,使用合适的算法生成相应的波形信号。

常见的波形有正弦波、方波、三角波等。

3.输出控制:根据生成的波形信号,通过设置相应的输出引脚,将波形信号输出到波形输出电路中。

4.用户界面:设计一个简单的用户界面,让用户可以选择不同的波形、调整频率、幅度等参数。

5.中断处理:使用中断功能来处理波形输出频率的控制,实现较高的输出稳定性。

四、设计考虑1.精度要求:根据具体应用场景,确定波形发生器的精度要求。

如果需要较高的精度,可能需要采用更复杂的算法和更精密的输出电路。

2.输出负载:考虑波形发生器的输出负载情况,选择合适的输出电路,以确保波形信号的准确性和稳定性。

3.电源稳定性:电源的稳定性对波形发生器的性能也有影响,需要注意电源供电的稳定性。

五、测试与优化完成波形发生器设计后,进行相应的测试与优化。

包括波形信号的频率、幅度等测试,以及对输出电路、算法等进行优化。

最后,通过以上的设计思路,我们可以完成基于51单片机的波形发生器的设计。

根据具体的应用需求,可能需要对硬件和软件进行相应的调整和优化。

基于51单片机波形发生器课程设计

基于51单片机波形发生器课程设计

任务名称:基于51单片机波形发生器课程设计项目背景和目标波形发生器是电子学中常用的实验设备之一,用于产生不同形状和频率的电信号。

在本课程设计中,我们将使用51单片机设计和实现一个基本的波形发生器。

该波形发生器将具备以下功能: 1. 发生正弦波、方波和三角波等不同形状的波形。

2. 支持用户输入频率和幅度参数。

3. 以可视化的方式显示波形输出。

硬件需求在实现波形发生器的过程中,我们需要以下硬件设备: 1. 51单片机开发板:用于运行波形发生器的程序,控制波形的生成和输出。

2. 信号发生器电路:用于将数字信号转换为模拟信号输出。

3. 示波器:用于验证波形输出的准确性和稳定性。

软件设计软件设计方案1.编写主程序:利用51单片机的C语言开发环境编写主程序,实现波形的生成和输出。

2.设计波形生成模块:根据用户输入的频率和幅度参数,生成对应形状的波形。

3.设置输出端口:将波形数据通过51单片机的输出端口发送给信号发生器电路。

4.配置信号发生器电路:将51单片机生成的数字信号转换为模拟信号输出。

5.连接示波器:将信号发生器的输出连接到示波器,验证波形输出的准确性和稳定性。

主程序设计以下是主程序的设计思路:#include <reg51.h>// 定义波形类型的枚举enum WaveType {Sine,Square,Triangle};// 定义全局变量enum WaveType waveType; // 波形类型int frequency; // 波形频率int amplitude; // 波形幅度// 定义函数原型void generateWave();void setOutputPort();void configureSignalGenerator();void connectOscilloscope();void main() {// 获取用户输入的波形参数// TODO: 实现获取用户输入的函数// 波形类型可以通过按键切换,频率和幅度可以通过调节旋钮获取// 生成波形generateWave();// 设置输出端口setOutputPort();// 配置信号发生器电路configureSignalGenerator();// 连接示波器connectOscilloscope();while (1) {// 循环执行波形生成和输出generateWave();setOutputPort();}}// 生成波形函数void generateWave() {switch (waveType) {case Sine:// 生成正弦波形的代码break;case Square:// 生成方波形的代码break;case Triangle:// 生成三角波形的代码break;}}// 设置输出端口函数void setOutputPort() {// 设置51单片机的输出端口的代码}// 配置信号发生器电路函数void configureSignalGenerator() {// 配置信号发生器电路的代码}// 连接示波器函数void connectOscilloscope() {// 连接示波器的代码}波形生成模块设计波形生成模块根据用户输入的频率和幅度参数生成对应形状的波形。

基于51的波形发生器设计报告

基于51的波形发生器设计报告

摘要:系统采用单片机stc90c51为控制核心,输出数字量,然后由pcf8591p进行数模转换,在示波器中显示波形。

显示利用的是动态LED共阴极数码管,显示其波形,频率。

按键采用的是独立按键,用来切换波形及调整频率。

波形通过对给定的点定义数组输出进行显示。

频率通过中断时间进行调节。

8路LED检测按键使用。

关键词:stc90c51,pcf8591p,独立按键一、题目要求题目:设计基于51的波形发生器。

设计要求:1、可产生正弦波及方波;2、频率可调节,并显示在数码管上。

3、LED 在运行过程中按要求亮。

二、设计方案2.1总体设计思路根据题目的要求,制定了整体方案:以STC90C51单片机为控制核心,P2^0、P2^1口接pcf8591p 信号输入并进行数模转换,P3口接8路独立按键,P1口接8路LED ,P0口接数码管显示,由程序控制P2口产生波形(分别是正弦波、方波),再由按键及按键次数控制产生波形的种类及频率在一定范围内可调。

在LED 上实时的显示波形的频率和种类,波形在示波器上产生。

正弦波波形的发生:在产生正弦波时,每周期只取80个点,在波形尽量不失贞的前提下,使其频率达到的值尽量大,以便示波器显示。

2.2总体框图2.3波形发生采用单片机和数模转换pcf8591p 实现波形的产生。

通过STC90C51执行方波正弦波程序,向D/A 转换器的输入端按I2C 总线方式发送数据,从而在D/A 转换电路输出端得到相应的电压波形。

在STC90C51的P3口接矩阵按键,通过软件编程来选择波形、频率,每种波形对应一个按键,频率增加、减少各对应一个按键。

2.3显示部分8段LED共阴极数码管,138译码器进行位选,P0口输出段选信号。

2.4按键部分采用独立按键,它相比较矩阵键盘,按键的数目比少,结构简单,方便操作,执行效率高。

三、硬件电路硬件电路原理图3.1显示及键盘接口电路功能:led显示,按键扫描。

由LED数码管显示器和独立按键组成。

基于51单片机的多功能信号发生器设计word格式

基于51单片机的多功能信号发生器设计word格式

基于51单片机的多功能信号发生器设计一、设计目的和意义随着电子技术的发展,信号发生器经常要用在各种科学技术领域和工程实践中。

选择适当的嵌入式处理器、DA转换芯片,放大器,设计出一种基于单片机的多功能信号发生器的设计,能够实现键盘控制下输出正弦波、方波、三角波等波形。

二、设计原理利用51单片机采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz—3kHz的波形。

通过键盘来控制三种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分。

三、详细设计步骤1.总体框架图1 系统总体框架2.单片机最小系统设计51单片机是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。

用80C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图2所示。

由于集成度的限制,最小应用系统只能用作一些小型的控制单元。

其应用特点:(1) 有可供用户使用的大量I/O口线。

(2) 内部存储器容量有限。

(3) 应用系统开发具有特殊性。

图2 51单片机最小系统3.波形产生模块由单片机采用编程方法产生三种波形、通过DA转换模块DAC0832在进过滤波放大之后输出。

开始置DAC0832口地址4000HA赋值为#00H(A)0823输出A=F0H A=A+1图3锯齿波产生流程图锯齿波产生首先将DAC0832口地址置为4000H,然后将00H送入寄存器A中,DAC0832输出A的内容,当A中的内容等于F0H返回开始,当A中的内容不为0FH时,A的内容累加,从而输出波形。

图4 三角波产生流程图三角波产生首先将DAC0832口地址置为4000H,通过A中数值的加1递增,当A中的内容为0FFH时,A中的内容减1递减,从而循环产生三角波。

基于51单片机的波形发生器设计报告

基于51单片机的波形发生器设计报告

目录摘要 (2)一、题目要求及分析 (3)二、总体系统方案设计 (4)2.1总体设计思路 (4)2.2总体框图 (5)2.3信号发生部分 (5)2.4显示部分 (6)2.5按键部分 (6)三、硬件电路 (6)3.1功能与基本原理 (7)3.2资源分配 (8)3.2显示接口电路 (8)3.3波形转换(D/A)电路 (9)3.4红外电路 (10)3.5复位电路 (11)3.6外部时钟电路 (11)3.7 LCD显示部分电路 (12)3.8电源部分 (12)3.9独立按键部分 (13)3.10串口通信模块 (13)四、软件设计 (14)4.1程序流程图 (15)4.2 LCD显示流程图 (15)五、系统仿真 (16)5.1仿真电路图 (16)5.2输出波形图 (16)六、硬件和软件测试 (17)6.1硬件调试 (17)6.2软件调试 (18)七、设计心得 (18)八、参考文献 (20)九、附件 (21)摘要:本系统采用单片机C8051为控制核心,输出数字量,然后由DAC0832把数字量转换成模拟量;但是输出的是电流,需要用运放(OP07),把电流转换成电压量。

显示利用的是LCD1602的液晶,显示其波形,幅值。

按键应用的是独立按键,用来波形的切换,幅值,频率的调解。

其运算核心,我们通过MATLAB对正弦波,三角板,正弦波进行采样,得到一组组数据,然后同过数组存储;利用中断对数组进行扫描。

其频率的调解就是调节其中断间隔的时间,幅值就是调节其数字的大小(同时乘以某个小于1的数)。

为了波形的合成,我们采用的点的个数都是20个。

AT-89C51 DAC0832 独立按键OP07一、题目要求及分析设计任务:设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波和由用户编辑的特定形状波形。

示意图如下:图1 设计要求图设计要求:1.具有产生正弦波、方波、三角波三种周期性波形的功能;2.用键盘输入编辑生成上述三种波形(同周期)的线性组合波形,以及由基波及其谐波(5次以下)线性组合的波形。

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

创新性实验研究报告课程名称:基于51系列单片机的波形发生器研究实验项目名称多功能波形发生器及特定波形幅值调节姓名XXX_学号_XXXXXX手机XXXXXXXXX Email XXXXXXXXXXXX专业自动化_班级_XXXXXXX _指导教师及职称___XXX__开课学期2011 至2012 学年第一学期提交时间2011 年12 月29 日一、实验摘要波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。

例如在通信、广播、电视系统中都需要射频发射,这就需要信号发生器,在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振图像等,都需要功率或大或小、频率或高过低的信号。

在现代社会中,自动化技术早已渗透到社会生产的各个领域中,高精度、宽频率、高稳定性的信号发生器对于所属整体系统的性能改善和提高起着至关重要的作用。

多波形的函数信号发生器是电子实验室的基础设备之一,目前各类学校广泛使用的是标准产品,虽然功能齐全,性能指标高,但是价格昂贵,本文所研究的信号发生器采用单片机和DAC0832结合起来,通过数字电子电路向模拟电路转化,该系统虽然性能指标不如标准产品,但是它体积小,成本低,便于携带等特点,亦可作为电子随身设备之一。

本次创新性实验将由AT89C51单片机和DAC0832数模转换器构成波形发生器,此波形发生器可产生方波、三角波、锯齿波、梯形波、阶梯波等多种波形,波形的幅值可以用程序进行改变,并可根据需要选择单极性输出,具有线路简单、结构紧凑、价格低廉、性能优越等优点。

在本设计的基础上,加上按键用来更改不同波形之间的切换,实现不同波形的输出。

二、实验目的在电子设备中,经常需要产生各种波形,本设计要求利用单片机和模数转换芯片组成波形发生器硬件系统,需要完成下列任务:(1)能够通过按键控制,产生方波、三角波、锯齿波、梯形波、阶梯波五种波形。

(2)能够通过原理图调试进行改变各个波形的幅度。

三、实验场地及仪器、设备和材料:(1)AT89C51芯片1个(2)DAC0832芯片1个(3)OPAMP放大器芯片1个(4)电阻2个电容3个可调电阻1个排阻1个(5)开关6个(6)Protues软件(7)晶振1个(8)示波器1台四、实验内容1、实验原理波形的产生是通过AT89C51单片机执行某一波形发生程序,向DAC0832转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。

AT89C51单片机的最小系统有三种联接方式。

一种是两级缓冲器型,即输入数据经过两级缓冲器型,即输入数据经过两级缓冲器后,送D/A转换电路。

第二种是单级缓冲器型,输入数据经输入寄存器直接送入DAC寄存器,然后送D/A转换电路。

第三种是两个缓冲器直通,输入数据直接送D/A转换电路进行转换,本设计采用单缓冲方式。

此次实验设计由硬件设计和软件设计两部分组成,硬件部分利用proteus软件进行模拟仿真验证设计的正确性并产生不同波形,软件设计将利用汇编语言进行编程,通过Protues软件进行编译调试仿真,通过模拟示波器观察输出波形。

实验原理框图如下所示:图1.1 实验原理框图2、实验内容2.1 系统硬件设计本系统提供了五种不同的波形输出,通过五个按键控制相应的方波,锯齿波,三角波、梯形波和阶梯波。

每次只能有一个键按下,没有按键按下时没有波形产生,按键输入信号给单片机,单片机对按键的情况进行处理,例如第一个按键按下时,系统需要产生一个方波,那么单片机循环输出0和1,那么通过DAC0832就通过运放循环输出高低电平,这样系统就能够输出方波,同样的道理,锯齿波、三角波、梯形波和阶梯波的产生也可以采用相似的道理。

本设计的硬件系统分为三个模块:单片机系统模块,DA转换模块,软件设计模块。

2.2 系统各个模块的设计2.2.1单片机系统模块(1)配置●一个8位CPU,片内振荡器●并行I/O口,32根I/O口线●一个串行口●两个定时/计数器●4K Byte 的 ROM●128 Byte 的 RAM●5个中断源,两个中断优先级●可寻址64KB外部数据存储器空间单片机内部结构图如下所示:图2.2-1 单片机内部结构图(2)单片机管脚图及管脚功能介绍 单片机管脚图如下:图2.2-2 AT89C51单片机管脚图及并行口分布VCC :供电电压。

GND :接地。

P0口驱动器P2口驱动器P1口驱动器P3口驱动器RAM 地址 寄存器RAMP0口 锁存器 P2口锁存器ROM堆栈指针地址锁存器缓冲器PC 增量器程序计数器数据指针寄存器BTMP2TMP1ACC PSWALU定时和控制指令寄存器OSCP1口寄存器P3口寄存器P1.0-P1.7P3.0-P3.7P0.0-P0.7P2.0-P2.7Vcc GNDPSEN ALE/PROG EA/VppRSTSCON TMOD TMOD PCON TH0TL0TH1TL1SBUF (TX)SBUF(RX)IP IE 中断、串行口和定时器模块P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。

P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL 门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:管脚备选功能P3.0 RXD (串行输入口)P3.1 TXD (串行输出口)P3.2 /INT0 (外部中断0)P3.3 /INT1(外部中断1)P3.4 T0 (定时器0外部输入)P3.5 T1 (定时器1外部输入)P3.6 /WR (外部数据存储器写选通)P3.7 /RD (外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

89C51振荡器1819XTAL2XTAL2CYS C1C289C51XTAL21918悬空1XTAL1外部时钟信号(a)内部时钟方式(b)内部时钟方式/PSEN :外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。

但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。

/EA/VPP :当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH ),不管是否有内部程序存储器。

注意加密方式1时,/EA 将内部锁定为RESET ;当/EA 端保持高电平时,此间内部程序存储器。

在FLASH 编程期间,此引脚也用于施加12V 编程电源(VPP )。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

2.2.2 晶振时钟模块单片机的工作过程是:取一条指令、译码、进行微操作,再取一条指令、译码、进行微操作,这样自动的、一步一步的由微操作依序完成相应的指令规定的功能。

各指令的微操作在时间上有严格的次序,这种微操作的时间次序称作时序。

AT89C51单片机的时钟信号通常由两种方式产生。

一是内部时钟方式,二是外部时钟方式。

内部时钟方式如图2.2-3(a)所示。

只要在单片机的XTAL1和XTAL2引脚外接晶振即可。

图中,电容C1和C2的作用是稳定频率和快速起振,电容值在5-30pF,典型值为30pF 。

晶振CYS 的震荡频率要小于12MHz,典型值6MHz 、12MHz 或11.0592MHz 。

外部时钟方式是把外部已有的时钟信号引入到单片机内,如图2.2-3(b)所示。

此方式用于多片AT89C51单片机同时工作,并要求各单片机同步运行的场合。

图2.2-3 89C51单片机时钟方式实际应用中通常采用外接晶振的内部时钟方式,晶振的频率高一些时可以提高指令的执行速度,但相应的功耗和噪声也会增加,在满足系统功能的前提下,应选择低一些的晶振频率。

当系统要与PC 机通信时,应选择11.0592MHz 的晶振,这样便于将波特率设定为标称值。

2.2.3 复位电路模块复位是使单片机或系统中的其他部件处于某种确定的厨师状态。

单片机的工作就是从复位开始的。

当AT89C51的RST 引脚加高电平复位信号(保持2个以上机器周期)时,单片机内部就执行复位操作。

复位信号变低时,单片机开始执行程序。

实际操作中,复位操作有两种基本形式:一种是上电复位,另一种是上电与按键均有效的复位,如图2.2-4(a)所示8位输入锁存器8位DAC寄存器8位D/A转换器& &&DI7~DI0 ILECSWR1WR2XFERVCC AGND Rfb IOUT1 IOUT2VrefILE1ILE2图2.2-4 单片机复位电路上电复位要求接通电源后,单片机自动实现复位操作。

常用的上电复位电路如图2.2-4(a)所示,上电瞬间RST引脚获得高电平,随着电容C1的充电,RST引脚的高电平将逐渐下降。

相关文档
最新文档