基于51单片机的简易函数信号发生器
STC51单片机的函数信号发生器(c语言)

STC51单片机的函数信号发生器(c语言)————————————————————————————————作者:————————————————————————————————日期:基于51单片机的函数信号发生器设计报告摘要本系统利用单片机AT89C52采用程序设计方法产生锯齿波、三角波、正弦波、方波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产生10Hz—10kHz的波形。
通过键盘来控制四种波形的类型选择、拨码开关控制频率的变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。
关键词:单片机AT89S52、DAC0832、液晶1602目录1. 系统设计1.1 设计要求1.2方案设计与论证1.2.1 信号发生电路方案论证 1.2.2 单片机的选择论证1.2.3 显示方案论证1.2.4 键盘方案论证1.3 总体系统设计1.4 硬件实现及单元电路设计1.4.1 单片机最小系统的设计1.4.2 波形产生模块设计1.4.3 显示模块的设计1.4.4 键盘模块的设计1.5 软件设计流程1.6 源程序2. 输出波形的种类与频率的测试2.1 测试仪器及测试说明2.2 测试结果3、附录3.1 参考文献3.2 附图1、系统设计经过考虑,我们确定方案如下:利用AT89C52单片机采用程序设计方法产生锯齿波、三角波、正弦波、方波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制四种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。
1.1、设计要求1)、利用单片机采用软件设计方法产生四种波形2)、四种波形可通过键盘选择3)、波形频率可调4)、需显示波形的种类及其频率1.2方案设计与论证1.2.1 信号发生电路方案论证方案一:通过单片机控制D/A,输出四种波形。
基于51单片机的函数信号发生器陈伟11017P讲解

南京信息职业技术学院毕业设计论文作者陈伟学号 11017P20 系部中认新能源技术学院专业电子信息工程技术(检测技术及应用)题目基于51单片机的函数信号发生器的设计指导教师李江雪评阅教师完成时间: 2013 年 05 月10 日毕业设计(论文)中文摘要目录1引言 (5)2设计要求 (5)3 总体设计方案 (5)4 硬件电路的实现 (6)4.1 单片机最小系统的设计 (6)4.1.1 时钟电路 (7)4.1.2 复位电路 (7)4.2 D/A转换电路 (8)4.3 放大滤波电路 (10)4.4 键盘模块的设计.................................. 错误!未定义书签。
4.5 显示模块的设计.................................. 错误!未定义书签。
5 软件程序的的实现.................................. 错误!未定义书签。
6 测试仪器及测试说明 (14)结论 (14)致谢................................................ 错误!未定义书签。
参考文献.. (15)附录A (15)附录B (16)1 引言函数信号发生器是一种常用信号源。
通常能够产生正弦波、方波、三角波、锯齿波等多种波形,因其时间波形可用某种时间函数来描述而得名。
函数信号发生器在电路实验和设备检测中具有十分广泛的应用,密切地联系着工业、农业、生物医学等产业,并对它们的发展起到极大的促进作用。
伴随着单片机技术的快速发展与普遍应用,函数信号发生器的性能和性价比将会有更大的提升空间。
基于单片机的函数信号发生器将为智能化生活提供实质的帮助。
本设计旨在通过查找文献资料提高自己独立学习、思考能力。
提高把理论运用到实践当中的能力,提升认识水平。
2设计要求1、利用AT89C51单片机设计的函数信号发生器产生正弦波、方波、三角波、锯齿波四种波形。
基于51单片机的函数发生器设计

摘要函数发生器主要作为实验用信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。
本次设计的主要目的就是为了学习基于单片机的函数发生器的工作原理,设计出一个低频的函数发生器。
从事本次设计不仅可以让我对函数发生器的原理有更深的了解,而且也对单片机的知识有更深的掌握。
单片机有很多种类,而且制作函数发生器的方案繁多,本次设计是以AT89C51单片机为核心,选用DAC0832为数模转换芯片,并辅以必要的模拟电路,设计出了一个基于AT89C51单片机的函数信号发生器。
其设计内容主要包括单片机最小系统的设计、DA转换模块的设计、键盘控制模块的设计及LCD显示模块的设计。
其中DA转换模块包括2块DAC0832芯片和OP07运放电路,第一块DA芯片的输出作为第二块DA芯片的参考电压,而第一块DA芯片的2.5V参考电压由MC1403芯片的输出来提供;键盘控制模块采用3个按键来选择波形类型及调节频率、幅值;显示模块则采用LCD1602来显示波形类型、频率及幅值;最终将设计好的函数发生器的输出接上示波器,在示波器上显示实际输出的波形。
本设计最终能达到预期的效果,能实现电压步进0.1V,方波能够任意调节占空比以及在LCD1602上显示波形类型、电压和频率,并且可以通过示波器来观察其输出的波形。
【关键词】AT89C51单片机 DAC0832 LCD1602 按键ABSTRACTFunction as the main generators by signals. Electronic circuits is now the design in the application of the necessary equipment. The design of the main purpose is to learn revivification function of the generators works, a low frequency function of the generators. in this design could not only allow me to the principle functions of programme,there is more, but also for a more monolithic integrated circuits to learn.Monolithic integrated circuits there are many varieties, and the production function of the generators, the design is AT89c51 monolithic integrated circuits to the selection of a module dac0832 the chips, and supported by the simulation circuits, and devised a function of the signal based on at89c51 monolithic integrated circuits generators. The design includes monolithic integrated circuits to the system design, and D/A the module for the design, the keyboard control module of the design and LCD modules display design.One of D/A the modules including two dollars and op07 dac0832 the discharge of the D/A, the chip is the D/A chip of the voltage and the first piece of D/A chips 5v reference by 2. the voltage mc1403 chip of the output to provide; keyboard control in three key to select the type and frequency, wave of value displays module lcd1602;is used to indicate the type and frequency and wave be;Eventually will be designed to function of the generators output meet on oscilloscope, in the wave is varied in the practical output.The design of the will to achieve the desired results can be achieved step 3 1v voltage and waves to any regulation of free and lcd1602 than on the type of signal wave, voltage and frequency, and may, by the wave is varied to observe the output.【Key words】A T89C51MCU DAC0832 LCD1602 KEY目录前言 (1)第一章单片机概述 (2)第一节单片机的发展历史及趋势 (2)第二节 AT89C51单片机结构简介 (3)一、AT89C51的基本特性 (3)二、AT89C51单片机的外部引脚介绍 (4)第三节本章小结 (6)第二章方案选择 (7)第一节波形生成方案 (7)第二节频率改变方案 (8)第三节本章小结 (9)第三章系统硬件设计 (10)第一节各模块硬件设计 (10)一、系统总体设计 (10)二、单片机最小系统设计 (11)三、8位DA转换器DAC0832 (12)四、2.5V基准电压模块设计 (16)五、系统显示功能设计 (16)六、系统按键功能设计 (20)第二节本章小结 (21)第四章系统软件设计 (23)第一节 Keil C51开发环境简介 (23)一、Keil uVision3环境介绍 (23)二、利用Keil uVision3创建新项目 (24)第二节系统软件流程设计 (25)一、系统软件总体设计 (25)二、子系统软件设计 (26)三、系统详细流程 (28)第三节本章小结 (29)第五章设计成果 (30)第一节实物展示和性能说明 (30)一、系统设计的实物整体 (30)二、液晶显示模块 (31)三、示波器显示模块 (33)第二节本章小结 (35)结论 (36)致谢 (37)参考文献 (38)附录 (39)一、英文原文: (39)二、英文翻译: (42)三、工程设计图纸: (44)四、源程序: (45)前言本次设计的主要是学习基于单片机的函数发生器的工作原理,制作出一个低频的函数信号发生器。
基于STC89C51单片机的简单函数信号发生器设计

基于STC89C51单片机的简单函数信号发生器设计任英杰;黄建清;郭凯;李亚军【摘要】研究设计了一款基于51单片机的函数信号发生器,包含发生器电路设计,软件设计以及联合仿真调试.通过键控的方法分别发生锯齿波、矩形波、正弦波、梯形波的波形以及调节发生波的周期和频率,相较于模拟函数信号发生器,能够直观方便且准确地调节波形和频率,是搭建数字信号发生器的基本模型.通过MDK keil 编译环境和Proteus单片机仿真环境联合仿真.通过Altium Designer设计PCB 印制电路图.得出输出信号的电压幅度能在一定范围内连续可调,频率稳定度高,频率可调在10 Hz~100 kHz范围的结果.【期刊名称】《电子设计工程》【年(卷),期】2018(026)014【总页数】5页(P91-94,106)【关键词】数字函数信号发生器;STC89C51;Proteus;MDKKeil【作者】任英杰;黄建清;郭凯;李亚军【作者单位】海南大学热带农林学院,海南儋州571737;海南大学热带农林学院,海南儋州571737;海南大学热带农林学院,海南儋州571737;海南大学热带农林学院,海南儋州571737【正文语种】中文【中图分类】TN606简单函数信号发生器的设计从一出现就在国内外引来了前所未有的热潮,因为它在航空航天、仪器检测等方面起到了不可或缺的作用,更是对国民经济的发展有极大的贡献。
其中不乏有一些复杂的方法去得到,用这些方法虽然可以得到常用的3种基本波形,但是出于对成本等方面的考虑,依旧没有得到大规模的使用。
本文采用的是STC89C51单片机联合DA转换、电压放大等一系列措施去实现简单函数信号发生器的设计。
在本次设计过程中要用到Proteus和AD10工具软件,它们均是集仿真、调试与设计合为一体的综合性软件。
也会用到keil 3编程软件,这是目前比较流行的一款软件。
1 硬件设计1.1 硬件的组成主要以STC89C51为核心,同时也附带有数模转换芯片DAC0832去进行D/A转换,LM324芯片的作用是电压比较和放大。
基于51单片机的函数信号发生器的设计

1前言
I L 这种方法 无需改变硬件电路。 这种方法 可以使信号的精度很高( 编
, 许可使 电路得到一定程度上的简化。 波 彤 发 中器 , 是 ‘ 种 怍 为 测试 } { j 的f 吉号源 . 是 当 下 很 多 电子 设 程产生的足数字信号) { 三 程序 和生成波彤的子程序 共同组成了系统软件设计 , 生成 波 计 要 啪 到 的 仪器 。 现 如今是 科 学 技 术千 n 设 备高 速 智 能 化 发展 的 科 技 形的f程序 的编程是软件设计的主要内容 , 各种波形通过编程来 得 信息社会 , 集成 电路发展迅猛 , 集成电路 能简单 ̄ t PI : - 成锌式各样 的
选择 角波 , 绿 色I …) f ( 』 亮起 。 l 雨数 信 ’ 发 生 器 频 率 最 高 叮达 到
系统容易设 计、 性能好 、 性价 比相对其他来说更高, 能用在很多要用
到 低 频信 号 源 的 地 方 。 参 考 文 献
.
整 个系统根据功能分成 以下模块编程 : ( 1 ) 主程序模块 ; ( 2 ) 三角波 波形发! £ 器, 将 其他 信 号波 形 发生 器 _ r 用集 战 电路 实 现 的信 号 波 形 到。 幔块 ; ( 3 ) 正弦波模块 ; ( 4 ) 方波模块 ; ( 5 ) 延时子程序模块等 。 通过利用 发乍器进 行对 比, 波形质量 、 幅度和频率稳定性等忡能指标 , 集成电
示 波 L 。 按 照 对 作 品 的 设 一 研 圳 换三种 不同波形。 1 0 3 为可调 电阻, 用于 幅值 的调节。 自锁开 关 究, 编 程 序 , 来 观 符种 波 形 的频 率 干 ¨ 幅 值数 值 j 甍 求制 配 , 然 起剁 电源歼关的作用。 置个发光 _ . 极管分别对应三种波形用于识别
基于51单片机函数信号发生器设计

课程设计任务书指导教师:2012 年12 月17 日3目录目录 (2)1.系统设计 (5)1.1设计要求 (5)1.2方案设计与论证 (5)1.2.1 信号发生电路方案论证 (5)1.2.3 显示方案论证 (6)1.2.4键盘方案论证 (6)1.3总体系统设计 (6)1.4硬件实现及单元电路设计 (6)1.4.1单片机最小系统的设计 (7)1.4.2 波形产生模块设计 (7)1.4.3 显示模块的设计 (8)1.4.4 键盘显示模块的设计 (8)1.5 软件设计流程 (9)2.输出波形的种类与频率的测试 (10)2.1、测量仪器及测试说明 (10)2.2测试过程 (10)2.3、测试结果 (11)3.设计心得及体会 (11)参考文献 (11)41.系统设计经过考虑,我们确定方案如下:利用AT89S52单片机采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制三种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。
1.1、设计要求1)、利用单片机采用软件设计方法产生三种波形2)、三种波形可通过键盘选择3)、波形频率可调4)、需显示波形的种类及其平率1.2方案设计与论证1.2.1 信号发生电路方案论证方案一:通过单片机控制D/A,输出三种波形。
此方案输出的波形不够稳定,抗干扰能力弱,不易调节。
但此方案电路简单、成本低。
方案二:使用传统的锁相频率合成方法。
通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。
此方案,电路复杂,干扰因素多,不易实现。
方案三:利用MAX038芯片组成的电路输出波形。
MAX038是精密高频波形产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形。
但此方案成本高,程序复杂度高。
以上三种方案综合考虑,选择方案一。
基于51单片机的信号发生器设计报告

基于51单片机的信号发生器设计报告二零一四年十二月十一日摘要根据题目要求以及结合实际情况,本文采用一种以AT89C51单片机为核心所构成的波形发生器,可产生方波、三角波、正弦波、锯齿波等多种波形,波形的频率可用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、性能优越等特点。
本设计经过测试,性能和各项指标基本满足题目要求。
关键词:信号发生器 DAC0832芯片 LM358运放 89C51芯片目录摘要...................................................................... 目录...................................................................... 第一章绪论.................................................................1.1单片机概述...........................................................1.2信号发生器的概述和分类..............................................1.3问题重述及要求....................................................... 第二章方案的设计与选择...................................................2.1方案的比较...........................................................2.2设计原理 .............................................................2.3设计思想 .............................................................2.4实际功能 ............................................................. 第三章硬件设计............................................................3.1硬件原理框图.........................................................3.2主控电路 .............................................................3.3数、模转换电路.......................................................3.4按键接口电路.........................................................3.5时钟电路 .............................................................3.6显示电路 ............................................................. 第四章软件设计............................................................4.1程序流程图........................................................... 参考文献.................................................................... 附录1 电路原理图 .......................................................... 附录2 源程序............................................................... 附录3 器件清单......................................................第一章 绪论1.1 单片机概述单片机(Single chip microcomputer )是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU 、随机存储器RAM 、只读存储器ROM 、多种I/O 口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
基于51单片机的简易信号发生器

/****************简易信号发生器****************************程序功能:输出正弦波、锯齿波、方波、三角波涉及芯片:TLC5615**********************************************************/#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit din=P3^0;sbit scl=P3^1;sbit cs1=P3^2;sbit key1=P1^0;sbit key2=P1^1;sbit key3=P1^2;sbit key4=P1^3;//sbit w2= P1^0;uchar code sine_tab[256]={//输出电压从0到最大值(正弦波1/4部分)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,//输出电压从最大值到0(正弦波1/4部分)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,//输出电压从0到最小值(正弦波1/4部分)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,//输出电压从最小值到0(正弦波1/4部分)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};uchar bdata date; //位寻址sbit date7=date^7;sbit date6=date^6;sbit date5=date^5;sbit date4=date^4;sbit date3=date^3;sbit date2=date^2;sbit date1=date^1;sbit date0=date^0;void delay(uint t){while(t--);}void write_sip5615(uchar k) {date=k;din=date7;scl=0;scl=1;din=date6;scl=0;scl=1;din=date5;scl=0;scl=1;din=date4;scl=0;scl=1;din=date3;scl=0;scl=1;din=date2;scl=0;scl=1;din=date1;scl=0;scl=1;din=date0;scl=0;}void write_5615(uint k){k<<=2;cs1=0;write_sip5615(k>>8);//送高八位write_sip5615(k);//送低八位cs1=1;}void main(){uint k1=0,k2=0,k3=0,k4=0,i=0,j=0,x=0,z,p;while(1){/* w2=0;delay(500);w2=1;delay(500); */if(key1==0)//按键1检测{k1=1;k2=0,k3=0,k4=0;while(!key1);}if(key2==0) //按键2检测{k2=1;k3=0,k1=0,k4=0;while(!key2);}if(key3==0)//按键3检测{k3=1;k1=0,k2=0,k4=0;while(!key1);}if(key4==0)//按键4检测{k4=1;k1=0,k2=0,k3=0;while(!key2);}if(k1==1)//正弦波write_5615(sine_tab[i]);i++;delay(100);if(i==256)i=0;}if(k2==1)//锯齿波{write_5615(j);j++;delay(100);if(j==250)j=0;}if(k3==1)//方波(次处用单片机的I/O效果更好){write_5615(10);delay(10000);write_5615(200);delay(10000);}if(k4==1)//三角波{for(z=0;z<301;z++){delay(50);write_5615(z);if(z==300){for(p=300;p>0;p--){if(p==0)break;write_5615(p);delay(50);}}}}}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创新性实验研究报告实验项目名称_简易函数信号发生器四、实验内容2、实验内容1、运用keil软件对程序进行编写,运行程序,并进行程序修改。
2、运用protues软件进行硬件电路仿真设计。
3、将程序下载到仿真单片机中,并观测输出波形。
4、对程序进行修改,再次运行仿真软件,直到输出理想的波形。
5、仿照仿真软件进行硬件电路的焊接。
6、将程序下载到单片机,并用示波器测试输出波形。
7、对程序进行修改,直到输出满意的波形为止。
3、实验步骤1、首先打开keil软件.2、运用keil软件对程序进行编写,程序见附件。
3、打开protues软件.4、运用protues软件对硬件电路进行设计。
9C51单片机是该信号发生器的核心,具有2个定时器,32个并行I/O口,1个串行I/O口,5个中断源。
由于本设计功能简单,数据处理容易,数据存储空间也足够,因为我们采用了片选法选择芯片,进行芯片的选择和地址的译码。
在单片机最小最小系统中,单片机从P1口接收来自键盘的信号,并通过P0口输出控制信号,通过DA转换芯片最终由示波器显示输出波形。
单片机引脚分配如下:�XTAL1,XTAL2:外接晶振,产生时钟信号。
�RST:复位电路;�P2口:8位数字信号输出输出,外接DAC0832;�P3.6口和P3.7口:DAC0832的时钟信号;单片机模块单片机输出的是数字信号,因为要得到模拟信号的波形就必须对其进行数模转换。
我们采用了DAC0832数模转换器,该芯片具由8位输入锁存器、8位DAC寄存器、8位D/A转换器及转换控制电路四部分构成。
由于其输出为电流输出,因为外加运算放大器LM324使之转换为电压输出。
最后通过示波器显示输出的波形。
数模转换模块运放模块整体硬件电路图山东科技大学电工电子实验教学中心创新性实验研究报告五、实验结果与分析1、实验现象、数据记录仿真波形2、对实验现象、数据及观察结果的分析与讨论:经过观察调试,再观察,再调试,最终输出的波形较为理想。
此次试验经过一系列的调试,最终输出的波形为正弦波、方波、三角波。
刚开始在给运放接电源时,接的电源不是稳恒直流电源(用示波器测试了一下电源的输出波形,虽然电源上写的是直流稳恒电源,但是发现他的波形掺杂有杂波),所以测出来的波形不是正弦波、方波和三角波。
分析原因可能与运放的电源有关,所以在实验室找到了数控稳恒直流电源,经过给运放供电,发现输出了正弦波、方波、三角波。
所以给运放供电的电源必须是经滤波后的平稳电源,否则对运放有很大影响。
3、关键点:此次试验关键点是程序的编写,在程序编写的过程中请教了众多的编程高手,最终在大家的帮助下编写出了能输出正弦波、方波、三角波的程序。
此次试验另一个关键点是硬件电路的焊接。
在硬件电路焊接中首先应根据仿真软件进行焊接,当焊完以后还要对电路进行测试,以防止电路不通。
第三个关键点是在给运放供电时的电源一定要是稳恒直流电源,不能掺杂有杂波。
六、实验结论基于单片机的信号发生器设计,这个信号发生器的设计中涉及到一个典型的控制过程。
通过单片机控制一个模数转换器DAC0832产生所需要的电流,然后使用运算放大器LM324可以将其电流输出线性地转换成电压输出,再将电压经过运算放大器的放大,可以得到足够幅度的信号。
通过程序的控制,可以产生一系列有规律的波形。
这样一个信号发生装置在控制领域有相当广泛的应用范围。
最终做出来的信号发生器满足了题目中的所有要求:产生三种波形。
正弦波、三角波、矩形波。
当然还是存在不足的地方,比如不能实现频率的按一个小的步进调整。
并且当频率太小时矩形波会有些失真。
信号发生器可以生成更多的波形,只需要再加些波形表即可。
七、指导老师评语及得分:签名:年月日附件:源程序等。
正弦波程序:#include <reg51.h>#define uchar unsigned char#define uint unsigned intsbit cs=P3^7;sbit wr=P3^6;uchar j;uint ys,a=0;山东科技大学电工电子实验教学中心创新性实验研究报告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 };/*正弦波码*/void delay(uint z) //延时子程序{uchar i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}void delay1(uint y){uint i;for(i=y;i>0;i--);}void main(){cs=1;wr=1;cs=0;山东科技大学电工电子实验教学中心创新性实验研究报告wr=0;while(1) //正弦波{P2=tosin[j];j++;delay(1);}wr=1;cs=1;}方波程序:#include <reg51.h>#define uchar unsigned char#define uint unsigned intsbit cs=P3^7;sbit wr=P3^6;uchar j;uint ys,a=0;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 };/*正弦波码*/void delay(uint z) //延时子程序{uchar i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}void delay1(uint y){uint i;for(i=y;i>0;i--);}void main(){cs=1;wr=1;cs=0;wr=0;while(1) //方波{P2=0xff;delay(1);P2=0;delay(1);}wr=1;cs=1;}三角波程序:#include <reg51.h>#define uchar unsigned char#define uint unsigned intsbit cs=P3^7;sbit wr=P3^6;uchar j;uint ys,a=0;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 };/*正弦波码*/void delay(uint z) //延时子程序{uchar i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}void delay1(uint y){uint i;for(i=y;i>0;i--);}void main(){cs=1;wr=1;cs=0;wr=0;while(1) //三角波{山东科技大学电工电子实验教学中心创新性实验研究报告if(a<128){P2=a;delay(10);}else{P2=255-a;delay(10);}a++;if(a==255){a=0;}}wr=1;cs=1;}。