基于单片机的函数信号发生器课程设计(毕业设计)完整版.doc

合集下载

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

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

基于单片机的函数信号发生器设计1引言函数信号发生器是一种用于生成常用函数信号的仪器仪表,主要用于电子测试、数据采集和计算机仿真系统中。

由于仪器价格昂贵、操作复杂、生成信号精度一般,因此基于单片机来设计函数信号发生器就显得尤为重要和实用。

本文介绍以单片机(MCU)作为控制核心设计函数信号发生器的原理及其实现过程。

2相关技术使用单片机作为函数信号发生器的核心控制,就需要按照以下步骤实现:(1)主控芯片的选择:单片机有着多种型号,用来实现函数信号发生器时,应选择具有较丰富的资源和功能特性的以太网芯片,以保证其对复杂信号系统的支持。

(2)信号频率的控制:信号频率的控制是函数信号发生器的重要功能,主要利用单片机的定时中断和PWM模块实现,单片机的定时中断功能可以实现对定义频率的准确控制;PWM模块可以进行频率的精确控制,并能实现调频的模拟信号输出。

(3)信号特征的定义:函数信号发生器可以制定正弦、方波、三角波或矩形波等信号,其信号形式定义很精确,且可以任意调节信号幅度、频率、波形等特性,这就要求用单片机控制信号特征,实现对波形信号的可调控,进而实现任意设置周期内任意特征信号。

(4)模数转换:单片机通过AD转换模块,实现对外部信号的采样和转换,并将转换后的数据存入内部影象存储器,然后根据采样参数的设置改变信号,实现信号发生。

3系统设计根据以上技术步骤,确定了基于单片机的函数信号发生器的设计模式,并根据主控芯片的性能参数和功能要求,确定了STM32系列芯片作为控制主模块,由它完成函数信号发生器的主控制功能,具体实现步骤如下:(1)MCU主模块的选择:STM32系列芯片主要以ARM Cortex-M内核为核心,内部集成了DMA、多种定时器、CAN、USB、IIC、ADC/DAC 等功能,因此选用该系列的芯片即可大大提高系统结构的灵活性和效率。

(2)信号函数参数的确定:正弦波、三角波、矩形波和方波等信号波形参数可以根据信号源参数进行确定,可以分析出正弦波、三角波、矩形波和方波的频率,幅值和偏移量等参数。

基于单片机的函数信号发生器

基于单片机的函数信号发生器

基于单片机的波形发生器叶光显----2005.8.5一设计目标设计一台基于单片机的函数信号发生器,能实现以下基本功能:1、波形:方波、正弦波、三角波、锯齿波2、幅值电压:0V到5V3、频率:0K到10K4、输出极性:双极型。

使用操作如下:1、上电,系统初始化,数码管显示6个0,等待输入设置命令。

2、按“F”、“V”、“W”键,分别进入频率、幅值、波形设置,数码管显示“-”。

输入相应的参数,显示参数值,按“CL”键,清除所有已设定参数,参数设定完毕按“EN”键,数码管显示波形的编号、频率、电压幅值等。

3、波形发生器输出信号时,按下任意键可停止信号输出,等待重新设置参数。

4、要停止使用波形发生器,可按复位按键,将系统复位,然后关闭电源。

二方案选择1、MCU方案目前市场上的单片机种类繁多,各有长短。

其中51系列单片机技术成熟,价格低廉,是应用最广泛的单片机系列。

AT89C51单片机是51系列当中的一种,它是美国A TMEL 公司的8位Flash单片机,以MCS-51为内核,其内部具有4K FEPROM,可以满足一般的小应用系统的程序存储要求。

为了缩小硬件电路空间,这里可以选择20dip封装的AT89C2051单片机,这个CPU除了没有P0口、P2口及其它4个控制管脚外其他功能与AT89C51完全一样。

2、人机交互电路方案人机交互主要分为用户输入和系统输出两个部分(这里只讨论对用户输入数据的回显总分,波形的输出总分在后面讨论)。

最常用的用户输入工具是键盘,键盘和显示往往是紧密地联系在一起,成对出现的,市场上因此也就有多种键盘显示控制器。

人们通常的键盘选择方案有以下几种:1)用通用可编程并行接口芯片8255构成一个键盘显示控制器,这是一种常用的方案,因为8255使用简单,货源充足,尤其适用于简单的系统中。

2)专用可编程键盘显示控制器8279也是一种常用的键盘显示选择方案,8279与MCU的接口是通过并行数据口相联的,可以同时控制8位数码管显示和8×8键盘矩阵,由于数据的输入输出口都是并行数据口,因此线路连接比较复杂。

毕业设计基于单片机的函数信号发生器

毕业设计基于单片机的函数信号发生器

目录1 绪论 (5)1.1 选题背景及意义 (5)1.1.1 本课题的研究现状 (5)1.1.2 选题目的及意义 (6)1.2 设计任务及要求 (6)1.2.1 设计的基本要求 (7)1.2.2 本文结构安排 (7)2 函数发生器系统设计 (8)2.1 设计方案的比较 (8)2.2 系统模块设计 (9)2.2.1 控制模块: (9)2.2.2 按键及其显示模块: (9)2.2.3 波形产生模块 (9)2.2.4 D/A转换 (10)2.3 系统总体框图 (12)2.4 理论分析 (12)2.4.1 电路的理论计算 (12)2.4.2 波形产生相关理论 (15)2.5 单片机软件开发系统 (15)3 系统硬件电路的设计 (17)3.1 单片机最小系统 (17)3.2 单片机的接口电路 (18)3.3 幅度控制模块 (23)3.3.1 单片机与DAC0832的接口 (23)3.3. 2DAC0832与运放的连接 (23)4 系统软件设计 (26)4.1 系统软件设计方案 (26)4.2 系统软件流程图 (26)4.3 信号产生程序 (27)4.3.1 正弦波产生 (28)4.3.2 三角波产生 (28)4.3.2 方波产生 (29)4.3.4 锯齿波的产生 (30)5 系统调试与测试 (32)5.1 调试 (32)5.2 测试 (35)6 结论与展望 (38)6.1 结论 (38)6.2 展望 (38)致谢 (39)参考文献 (51)附录 (40)附录一系统软件部分源程序 (40)附录二系统原理图 (49)附录三系统PCB图 (50)基于单片机的波形发生器的设计学生:李利刚指导老师:李敏(黄冈职业技术学院)摘要:函数发生器是一种用于产生标准信号的电子仪器,它广泛用于工业生产、科研和国防等各个领域中,所以论文选题具有一定的实用意义。

本文介在绍了函数发生器的基本概念及原理的基础上,采用AT89C51单片机为核心,完成了简易的DDS函数发生器的硬件设计和软件编程,并通过调试实现了其功能和主要技术指标。

基于单片机函数信号发生器设计-文档资料

基于单片机函数信号发生器设计-文档资料

仿真结果与分析
• 根据我的设计的要求,在Protues仿真软件运行下,我要对以下性能 做出测试:(1)拨码开关是否正确对应四种不同的波形。(2)当拨 码开关打开后能否正确输出波形 • 经过多次修改程序最后调试出来理想的效果后,正弦波如图:
正弦波形
4/10/2019
• 调试后的三角波如图 :
4/10/2019
4/10/2019
系统结构框图
显示 电路 数/模转 换电路 放大 电路
单 片 机
键盘 电路
复位 电路
波形 输出
4/10/2019
DAC0832引脚结构图
4/10/2019
软件设计
• 总体设计
• 本文中子程序的调用是通过按键的选择来实现,在取得拨码按键 开关相应的键值后,再直接查询程序中预先设置的函数值,通主函数 采用查询方式,通过不断扫描P1口的状态来确定调用不同的函数,产 生不同的波形,程序共有4个子函数,分别用来产生不同的波形。
三角波形
• 调试后的锯齿波如图 :
4/10/2019
锯齿4/10/2019
方波波形
• 问题及结果
• 问题:(1)这次实物设计在完成的过程中出现了虚焊的现象。需用 万用表检查具体的情况。该产品能用于日常实验测试工作中,所以产 品的实际使用情况还需要实践检验。(2)制作中出现了仿真中能够 通过,但是制作实物单片机却没有反应,最终更换了电阻解决了问题。 • 最后的实物如图 :
4/10/2019
方案论证
方案一:主控模块采用AT89S52单片机作为系统的控制器, 又有以下两种情况。 第一种为:AT89S52芯片中每一路模拟输出与DAC0832芯 片相连,构成多个DAC0832同步输出电路。 第二种:AT89S52芯片中只有一路模拟输出或几路模拟信 号非同步输出,这种情况下CPU对DAC0832 执行一次写操作, 则把一个数据直接写入DAC寄存器,DAC0832的输出模拟信号 随之对应变化。 方案二:采用单片函数发生器(如8038),8038可同时产 生正弦波、方波等。 鉴于方案一中第一种方法的信号频率不够稳定和方案二的 电路复杂,频率覆盖系数难以达标等缺点,所以决定采用方案 一中第二种方法的设计方案。

基于单片机的多功能函数信号发生器设计(可编辑)

基于单片机的多功能函数信号发生器设计(可编辑)

毕业论文设计题目名称: 基于单片机的多功能函数信号发生器设计题目类型: 毕业设计院 (系): 电子信息学院专业班级:学生姓名:指导教师:辅导教师:时间:2013年3月至2013年6月目录长江大学毕业设计论文任务书I毕业设计(论文)开题报告III长江大学毕业论文设计指导教师评审意见X长江大学毕业论文设计评阅教师评语XI长江大学毕业论文设计答辩记录及成绩评定XII中文摘要XIII英文摘要XIV1 绪论11.1单片机概述 11.2函数发生器的分类 11.3 研究内容 22 方案的设计与选择3 2.1 方案的比较 32.2 设计原理 32.3 设计思想 42.4 设计功能 43 主要器件介绍 63.1 AT89C51简介 63.2 8255简介 83.3 DAC0832简介83.4 数码管显示原理9 4硬件设计114.1 硬件原理框图 114.2 主控电路114.3 数/模转换电路12 4.4 按键接口电路 134.5 时钟电路144.6 显示电路155 软件设计165.1 设计构思165.2 程序流程图165.3 波形图226 结论25参考文献27附录1 电路原理图28附录2 源程序 29附录3 器件清单40长江大学毕业设计论文任务书学院(系)电子信息学院专业电气工程及其自动化班级学生姓名指导教师/职称1.毕业设计论文题目:基于单片机的多功能函数信号发生器设计2.毕业设计论文起止时间:2013年3月11日~2013年6月10日3.毕业设计论文所需资料及原始数据(指导教师选定部分)1 王世虎,刘明杰,李晓峰.基于C8051F单片机信号发生器设计与应用[J].中国科技信息,20092 徐爱钧.智能化测量控制仪表原理与设计[M].电子工业出版社,20053 张洪涛,万红,杨述斌,数字信号处理[M].华中科技大学出版社,20064 徐爱钧.8051单片机实践教程[M].电子工业出版社,20055 CNKI中国知网上关于利用单片机设计信号发生器的期刊论文,硕士论文等4.毕业设计论文应完成的主要内容 (1)熟悉单片机开发方法,熟练掌握汇编语言; (3)探讨单片机产生方波,正弦波,三角波的方法;(3)研究产生任意波形的方法;(4)设计单片机和DA转换器的连接方法;(5)设计单片机驱动DA转换器的汇编语言程序,并调试5.毕业设计论文的目标及具体要求要求熟练掌握单片机的开发流程。

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

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

基于单片机的函数信号发生器设计所用元器件:基于单片机的函数信号发生器1.设计目的1.学习使用keil编程,使用Altium Designer绘制原理图;2.使用单片机产生正弦波、方波、三角波、锯齿波并可通过按键对波形切换、幅值和频率的调整;3.学习使用示波器显示波形;2.设计原理基于单片机的函数发生器原理以STC89C51为整个函数发生器的核心部分,通过编写程序和执行程序,运用示波器显示出四种波形,分别是正弦波、三角波、方波和锯齿波。

本设计拥有五个按键,分别实现波形的切换,改变波形的频率和幅值的大小。

芯片DAC0832将数字信号转换成模拟信号输出并通过外接运算放大器OP07实现电流向电压的转换,最后通过示波器显示出波形。

3.设计内容基本设计内容本次设计的主要内容是设计一个基于单片的函数信号发生器实现正弦波、三角波、方波和锯齿波。

利用单片机设计程序,使其能够通过按键有效切换四种波形,并且实现波形幅值和频率的调整满足本设计的要求,进行硬件系统和软件系统的设计,最后调试完成本次设计。

LCD1602液晶显示波形种类、幅值以及频率。

频率的可调范围在1—10HZ,幅值可调范围在1—5V。

显示屏上显示参数,第一行显示波形。

第二行左边显示波形频率,右边显示波形幅值。

本设计由五个功能按键,分别进行波形切换,加减幅值和加减频率。

电压在示波器上显示,硬件原理示意图,如图1.1所示。

图1.1 硬件原理设计图模块设计单片机最小系统模块本设计STC89C51为整个函数发生器的核心部分,单片机、时钟电路和复位电路构成单片机的最小系统,如图2.1所示。

图单片机最小系统模块原理图晶体谐振器是时钟电路的重要组成部分,将晶体谐振器放入电路,上电后它会产生机械振荡,单片机凭借晶体谐振器的频率运行所设计出来的频率,所以说晶体谐振器的频率是单片机操作时间规律,保证单片机平稳的工作。

晶体谐振器是控制CPU的时钟频率的。

频率控制运行速度。

晶体谐振器虽然是振荡电路的一部分,但是它自身不会产生震荡,它会有一个固定的频率,然后与外围电路发生谐振。

基于单片机的函数信号发生器—毕业设计

基于单片机的函数信号发生器—毕业设计

本科毕业设计题目基于单片机的函数信号发生器学院工学院专业农业电气化及自动化毕业届别二〇一一届姓名指导老师杨职称讲师北京农业大学教务处制二〇一一年六月目录第一章绪论 (4)1.1设计背景及意义 (4)第二章整体设计 (6)2.1设计思路 (6)2.2系统硬件设计 (7)第三章单片机AT89S51介绍 (8)3.1 单片机的选择 (8)3.2 AT89S51主要性能 (8)3.3 AT89S51主要特点 (9)第四章硬件设计 (10)4.1信号发生部分 (10)4.2频率计数器部分 (12)4.2.1利用AT89S51计数 (12)4.3放大电路 (13)4.4 LED显示器 (14)4.4.1 数码管的选择 (14)4.4.2数码管段驱动芯片74LS573 (14)4.4.3 键盘电路设计 (15)第五章程序设计 (17)5.1信号频率数据采集程序 (17)5.1.1程序设计的语言 (17)5.2 程序设计 (18)5.3 正弦波的产生 (18)5.4 方波的产生 (19)5.4.1 方波流程图 (19)5.4.2 程序设计 (19)5.5 锯齿波的产生 (20)5.5.1 锯齿波产生的流程图 (21)5.5.2 锯齿波程序设计 (21)5.6 键盘程序设计 (22)5.6.1 键盘扫描程序 (22)5.6.2 键盘处理程序设计 (23)5.7 数码管程序设计 (25)设计总结 (25)参考文献 (26)致谢........................................................ 错误!未定义书签。

基于单片机的函数信号发生器谁谁谁(北京农业大学工学院 2007级农业电气化与自动化)摘要:函数(波形)信号发生器能产生某些特定的周期性时间函数波形(正弦波、方波、三角波、锯齿波和脉冲波等)信号。

它在军事方面,如航天飞机的飞行控制、卫星陀螺仪的控制以及导弹发射架的起降控制等。

基于单片机的函数信号发生器毕业设计完整版

基于单片机的函数信号发生器毕业设计完整版

源程序:ORG 0000HAJM MAINORG 000BHLJMP TC0ORG 0030HMAIN:MOV DPTR,#9FFFH 指向DAC0832(1)MOV A,70HMOVX @DPTR,A DAC0832(1)输出MOV DPTR,#7F00H 指向8155命令字端口地址MOV A,#06H 设置A口为输入,B口、C口为输出MOVX @DPTR,A 送命令字MOV DPTR,#7F01H 指向A口地址MOVX A,@DPTR 读入A口的开关数据JNB ACC.4,K10H 判断是否“4”号键,若是则转输出10Hz信号JNB ACC.5,K100H 判断是否“5”号键,若是则转输出100Hz信号JNB ACC.6,K500H 判断是否“6”号键,若是则转输出500Hz信号JNB ACC.7,K1K 判断是否“7”号键,若是则转输出1KHz信号AJMP MAINLED1:MOV R3,#06H 设置6个LED显示MOV R2,#01H 选通第一位LED数据MOV R1,#30H 送显示缓冲区首址GN1:MOV DPTR,#7F03H 指向C口地址MOV A,R2 位选通数据送AMOVX @DPTR,A 位选通数据送C口RL A 选通下一位MOV R2,A 位选通数据送R2中保存MOV A,@R1 取键值MOV DPTR,#TAB 送LED显示软件译码表首址MOVC A,@A+DPTR 查表求出键值显示的段码MOV DPTR,#7F02H 指向B口地址MOV @DPTR,A 段码送显示LCALL LOOP1 调延时子程序INC R1 指向下一位显示缓冲区地址DJNZ R3,GN1 循环显示6个LEDRETLOOP1:MOV R4,#08H 延时子程序LOOP:MOV R5,#0A0HDJNZ R5,$DJNZ R4,LOOPRETK10H:MOV 30H,#00H 显示10HzMOV 31H,#00HMOV 32H,#00HMOV 33H,#00HMOV 34H,#01HMOV 35H,#00HLCALL LED1 调显示子程序MOV TMOD,#00HMOV TL0,#15HMOV TH0,#9EHAJMP PDK100H:MOV 30H,#00H 显示100HzMOV 31H,#00HMOV 32H,#00HMOV 33H,#01HMOV 34H,#00HMOV 35H,#00HLCALL LED1 调显示子程序MOV TMOD,#00HMOV TL0,#08HMOV TH0,#0F6HAJMP PDK500H:MOV 30H,#00H 显示500HzMOV 31H,#00HMOV 32H,#00HMOV 33H,#05HMOV 34H,#00HMOV 35H,#00HLCALL LED1 调显示子程序MOV TMOD,#00HMOV TL0,#01HMOV TH0,#0FEHAJMP PDK1K:MOV 30H,#00H 显示1KHzMOV 31H,#00HMOV 32H,#01HMOV 33H,#00HMOV 34H,#00HMOV 35H,#00HLCALL LED1 调显示子程序MOV TMOD,#00HMOV TL0,#01HMOV TH0,#0FFHPD:JNB ACC.0,KE0 判断是否“0”号键按下,若是则转方波输出JNB ACC.1,KE1 判断是否“1”号键按下,若是则转正弦方波输出JNB ACC.2,KE2 判断是否“2”号键按下,若是则转三角波输出JNB ACC.3,KE3 判断是否“3”号键按下,若是则转锯齿波输出LJMP PDKE0:MOV R7,#00HLCALL LED1 调显示子程序MOV R6,#00HAJMP GNKE1:MOV R7,#02HLCALL LED1 调显示子程序MOV R6,#00HAJMP GNKE2:MOV R7,#02HLCALL LED1 调显示子程序MOV R6,#00HAJMP GNKE3:MOV R7,#02HLCALL LED1 调显示子程序MOV R6,#00HGN:SETB TR0SETB ET0SETB EALOP1:JNB ACC.4,K10H 判断是否“4”号键,若是则转输出10Hz信号JNB ACC.5,K100H 判断是否“5”号键,若是则转输出100Hz信号JNB ACC.6,K500H 判断是否“6”号键,若是则转输出500Hz信号JNB ACC.7,K1K 判断是否“7”号键,若是则转输出1KHz信号AJMP LOP1TC0:CJNE R7,#00H,TC1 发送方波程序MOV DPTR,#TAB1 送方波数据表首址MOV A,R6 发送数据寄存器MOVC A,@A+DPTRMOV DPTR,#0AFFFH 指向DAC0832(2)MOVX @DPTR,A DAC0832(2)输出MOV A,R6INC ACJNE A,#32,QL1MOV R6,#00HAJMP QL1TC1:CJNE R7,#01H,TC2 发送正弦波程序MOV DPTR,#TAB2 送正弦波数据表首址MOV A,R6MOVC A,@A+DPTRMOV DPTR,#0AFFFH 指向DAC0832(2)MOVX @DPTR,A DAC0832(2)输出MOV A,R6INC AMOV R6,ACJNE A,#32,QL1MOV R6,#00HAJMP QL1TC2:CJNE R7,#02H,QL1 发送三角波程序MOV DPTR,#TAB3 送三角波数据表首址MOV A,R6MOVC A,@A+DPTRMOV DPTR,#0AFFFH 指向DAC0832(2)MOVX @DPTR,A DAC0832(2)输出MOV A,R6INC AMOV R6,ACJNE A,#32,QL1MOV R6,#00HAJMP QL1TC3::CJNE R7,#03H,QL1 发送锯齿波程序MOV DPTR,#TAB4 送锯齿波数据表首址MOVC A,@A+DPTRMOV DPTR,#0AFFFH 指向DAC0832(2)MOVX @DPTR,A DAC0832(2)输出MOV A,R6INC AMOV R6,ACJNE A,#32,QL1MOV R6,#00HQL1:RETITAB:DB 0C0H,0F9H,0A4H,0B0H,99H,82H,0F8H,80HTAB1:DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00HTAB2:DB 80H,83H,86H,89H,8DH,90H,93H,96HDB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEHDB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5HDB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8HDB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9HDB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5HDB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDHDB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDHDB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6HDB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAHDB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAHDB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7HDB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1HDB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99HDB 96H,93H,90H,8DH,89H,86H,83H,80HDB 80H,7CH,79H,78H,72H,6FH,6CH,69HDB 66H,63H,60H,5DH,5AH,57H,55H,51HDB 4EH,4CH,48H,45H,43H,40H,3DH,3AHDB 38H,35H,33H,30H,2EH,2BH,29H,27HDB 25H,22H,20H,1EH,1CH,1AH,18H,16HDB 15H,13H,11H,10H,0EH,0DH,0BH,0AHDB 09H,08H,07H,06H,05H,04H,03H,02HDB 02H,01H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,01H,02HDB 02H,03H,04H,05H,06H,07H,08H,09HDB 0AH,0BH,0DH,0EH,10H,11H,13H,15HDB 16H,18H,1AH,1CH,1EH,20H,22H,25HDB 27H,29H,2BH,2EH,30H,33H,35H,38HDB 3AH,3DH,40H,43H,45H,48H,4CH,4EHDB 51H,55H,57H,5AH,5DH,60H,63H,66HDB 69H,6CH,6FH,72H,76H,79H,7CH,80H TAB3:DB 00H,02H,04H,06H,08H,0AH,0CH,0EHDB 10H,12H,14H,16H,18H,1AH,1CH,1EHDB 20H,22H,24H,26H,28H,2AH,2CH,2EHDB 30H,32H,34H,36H,38H,3AH,3CH,3EHDB 40H,42H,44H,46H,48H,4AH,4CH,4EHDB 50H,52H,54H,56H,58H,5AH,5CH,5EHDB 60H,62H,64H,66H,68H,6AH,6CH,6EHDB 70H,72H,74H,76H,78H,7AH,7CH,7EHDB 80H,82H,84H,86H,88H,8AH,8CH,8EHDB 0A0H,0A2H,0A4H,0A6H,0A8H,0AAH,0ACH,0AEHDB 0B0H,0B2H,0B4H,0B6H,0B8H,0BAH,0BCH,0BEHDB 0C0H,0C2H,0C4H,0C6H,0C8H,0CAH,0CCH,0CEHDB 0D0H,0D2H,0D4H,0D6H,0D8H,0DAH,0DCH,0DEHDB 0E0H,0E2H,0E4H,0E6H,0E8H,0EAH,0ECH,0EEHDB 0F0H,0F2H,0F4H,0F6H,0F8H,0FAH,0FCH,0FEHDB 0FFH,0FEH,0FCH,0FAH,0F8H,0F6H,0F4H,0F2HDB 0F0H,0EEH,0ECH,0EAH,0E8H,0E6H,0E4H,0E2HDB 0E0H,0DEH,0DCH,0DAH,0D8H,0D6H,0D4H,0D2HDB 0D0H,0CEH,0CCH,0CAH,0C8H,0C6H,0C4H,0C2HDB 0C0H,0BEH,0BCH,0BAH,0B8H,0B6H,0B4H,0B2HDB 0B0H,0AEH,0ACH,0AAH,0A8H,0A6H,0A4H,0A2HDB 0A0H,09EH,9CH,9AH,98H,96H,94H,92HDB 90H,8EH,8CH,8AH,88H,86H,84H,82HDB 80H,7EH,7CH,7AH,78H,76H,74H,72HDB 70H,6EH,6CH,6AH,68H,66H,64H,62HDB 60H,5EH,5CH,5AH,58H,56H,54H,52HDB 50H,4EH,4CH,4AH,48H,46H,44H,42HDB 40H,3EH,3CH,3AH,38H,36H,34H,32HDB 30H,2EH,2CH,2AH,28H,26H,24H,22HDB 20H,1EH,1CH,1AH,18H,16H,14H,12HDB 10H,0EH,0CH,0AH,08H,06H,04H,02HTAB4:DB 00H,01H,02H,03H,04H,05H,06H,07HDB 08H,09H,0AH,0BH,0CH,0DH,0EH,0FHDB 10H,11H,12H,13H,14H,15H,16H,17HDB 18H,19H,1AH,1BH,1CH,1DH,1EH,1FHDB 20H,21H,22H,23H,24H,25H,26H,27HDB 28H,29H,2AH,2BH,2CH,2DH,2EH,2FHDB 30H,31H,32H,33H,34H,35H,36H,37HDB 38H,39H,3AH,3BH,3CH,3DH,3EH,3FHDB 40H,41H,42H,43H,44H,45H,46H,47HDB 48H,49H,4AH,4BH,4CH,4DH,4EH,4FHDB 50H,51H,52H,53H,54H,55H,56H,57HDB 58H,59H,5AH,5BH,5CH,5DH,5EH,5FHDB 60H,61H,62H,63H,64H,65H,66H,67HDB 68H,69H,6AH,6BH,6CH,6DH,6EH,6FHDB 70H,71H,72H,73H,74H,75H,76H,77HDB 78H,79H,7AH,7BH,7CH,7DH,7EH,7FHDB 80H,81H,82H,83H,84H,85H,86H,87HDB 88H,89H,8AH,8BH,8CH,8DH,8EH,8FHDB 90H,91H,92H,93H,94H,95H,96H,97HDB 98H,99H,9AH,9BH,9CH,9DH,9EH,9FHDB 0A0H,0A1H,0A2H,0A3H,0A4H,0A5H,0A6H,0A7HDB 0A8H,0A9H,0AAH,0ABH,0ACH,0ADH,0AEH,0AFHDB 0B0H,0B1H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7HDB 0B8H,0B9H,0BAH,0BBH,0BCH,0BDH,0BEH,0BFHDB 0C0H,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C7HDB 0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEH,0CFHDB 0D0H,0D1H,0D2H,0D3H,0D4H,0D5H,0D6H,0D7HDB 0D8H,0D9H,0DAH,0DBH,0DCH,0DDH,0DEH,0DFHDB 0E0H,0E1H,0E2H,0E3H,0E4H,0E5H,0E6H,0E7HDB 0E8H,0E9H,0EAH,0EBH,0ECH,0EDH,0EEH,0EFHDB 0F0H,0F1H,0F2H,0F3H,0F4H,0F5H,0F6H,0F7HDB 0F8H,0F9H,0FAH,0FBH,0FCH,0FDH,0FEH,0FFH END。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.2 设计原理
数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及其接口、显示器及其接口、数模转换及波形输出、指示灯及其接口等四部分,即可构成所需的波形发生器,其信号发生器构成原理框图如图2.1所示。
2.4 设计功能
(1)本方案利用8155扩展8个独立式按键,6个LED显示器。其中“S0”号键代表方波输出,“S1”号键代表正弦波输出,“S2”号键代表三角波输出,“S3” 号键代表锯齿波输出。
(2)“S4”号键为10Hz的频率信号,“S5”号键为100Hz的频率信号,“S6”号键为500Hz的频率信号,“S7”号键为1KHz的频率信号,6个LED显示器输出信号的频率值,选用共阳极LED。
(2)将一个周期的信号分离成256个点(按X轴等分),每两点之间的时间间隔为 T,用单片机的定时器产生,其表示式为: T=T/256。
如果单片机的晶振为12MHz,采用定时器方式0,则定时器的初值为:
X=213— T/Tmec(2.1)
定时时间常数为:
TL=(8192— T)/MOD256(2.2)
图3.5时钟电路
3.6 显示电路
显示电路是用来显示波形信号的频率,使得整个系统更加合理,从经济的角度出发,所以显示器件采用LED数码管显示器。而且LED数码管是采用共阳极接法,当主控端口输出一个低电平后,与其相对应的数码管即变亮,显示所需数据。其器件模型如图3.6所示。
图3.6LED显示电路
第四章软件设计
中断系统是使处理器具有对外界异步事件的处理能力而设置的。当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这个紧急事件。在波形发生器中,只用到片内定时器/计数器溢出时产生的中断请求,即是在AT89C51输出一个波形采样点信号后,接着启动定时器,在定时器未产生中断之前,AT89C51等待,直到定时器计时结束,产生中断请求,AT89C51响应中断,接着输出下一个采样点信号,如此循环产生所需要的信号波形[6]。
4.1 程序流程图
本文中子程序的调用是通过按键的选择来实现,在取得按键相应的键值后,启动计时器和相应的中断服务程序,再直接查询程序中预先设置的数据值,通过转换输出相应的电压,从而形成所需的各种波形。
主程序的流程图如图4.1所示,在程序开始运行之后,首先是对8155进行初始化,之后判断信号频率值,如符合所需的频率,则重置时间常数,并通过显示器显示出来,不符则返回。在中断结束后,还要来判断波形是否符合,如符合,则显示其频率,不符则返回,重新判断。
(3)利用两片DAC0832实现幅度可调的信号源,(其中一片用来调节幅度,另外一片用来实现信号源的输出)。
(4)频率范围:10~1000Hz。
(5)输出波形幅度为0~5V。
第三章硬件设计
3.1 硬件原理框图
硬件原理方框图如图3.1所示。
图3.1硬件原理框图
3.2 主控电路
AT89C51单处机内部设置两个16位可编程的定时器/计数器T0和T1,它们具有计数器方式和定时器方式两种工作方式及4种工作模式。在波形发生器中,将其作定时器使用,用它来精确地确定波形的两个采样点输出之间的延迟时间。模式1采用的是16位计数器,当T0或T1被允许计数后,从初值开始加计数,最高位产生溢出时向CPU请求中断。
电子与信息工程学院
综合实验课程报告
课题名称基于单片机的函数信号发生器
专 业电子信息工程
班 级07电子1班
学生姓名
学 号
指导教师宋杨老师
2010年 7月 5 日

本文介绍一种用AT89C51单片机构成的波形发生器,可产生方波、三角波、正弦波、锯齿波等多种波形,波形的周期可用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、性能优越等特点。文章给出了源代码,通过仿真测试,其性能指标达到了设计要求。
图3.4按键接口
3.5 时钟电路
8051单片机有两个引脚(XTAL1,XTAL2)用于外接石英晶体和微调电容,从而构成时钟电路,其电路图如图3.5所示。
电容C1、C2对振荡频率有稳定作用,其容量的选择为30pf,振荡器选择频率为12MHz的石英晶体。由于频率较大时,三角波、正弦波、锯齿波中每一点的延时时间为几微秒,故延时时间还要加上指令时间才能获得较大的频率波形[9]。
图3.2主控电路图
3.3 数/模转换电路
由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以该文选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。但实际上,DAC0832输出的电量也不是真正能连续可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。DAC0832是电流型输出,在应用时外接运放使之成为电压型输出。
1.2信号发生器的分类
信号发生器应用广泛,种类繁多,性能各异,分类也不尽一致。按照频率范围分类可以分为:超低频信号发生器、低频信号发生器、视频信号发生器、高频波形发生器、甚高频波形发生器和超高频信号发生器。按照输出波形分类可以分为:正弦信号发生器和非正弦信号发生器,非正弦信号发生器又包括:脉冲信号发生器,函数信号发生器、扫频信号发生器、数字序列波形发生器、图形信号发生器、噪声信号发生器等。按照信号发生器性能指标可以分为一般信号发生器和标准信号发生器。前者指对输出信号的频率、幅度的准确度和稳定度以及波形失真等要求不高的一类信号发生器。后者是指其输出信号的频率、幅度、调制系数等在一定范围内连续可调,并且读数准确、稳定、屏蔽良好的中、高档信号发生器。
图2.1信号发生器原理框图
89C51是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号幅度的调节。当数字信号经过接口电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。
2.3 设计思想
(1)利用单片机产生方波、正弦波、三角波和锯齿波等信号波形,信号的频率和幅度可变。
由图3.3可知,DAC0832的片选地址为7FFFH,当P25有效时,若P0口向其送的数据为00H, 则U1的输出电压为0V;若P0口向其送的数据为0FFH时, 则U1的输出电压为-5V. 故当U1输出电压为0V时,由公式得:Vout= - 5V.当输出电压为- 5V时,可得:Vout= +5V,所以输出波形的电压变化范围为- 5V~+ 5V. 故可推得,当P0所送数据为80H时,Vout为0V[4]。
回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在好几个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,பைடு நூலகம்且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。
方案三:采用单片机编程的方法来实现。该方法可以通过编程的方法来控制信号波形的频率和幅度,而且在硬件电路不变的情况下,通过改变程序来实现频率的变换。此外,由于通过编程方法产生的是数字信号,所以信号的精度可以做的很高。
鉴于方案一的信号频率不够稳定和方案二的电路复杂,频率覆盖系数难以达标等缺点,所以决定采用方案三的设计方法。它不仅采用软硬件结合,软件控制硬件的方法来实现,使得信号频率的稳定性和精度的准确性得以保证,而且它使用的几种元器件都是常用的元器件,容易得到,且价格便宜,使得硬件的开销达到最省。
第二章
2.1 方案的比较
方案一:采用单片函数发生器(如8038),8038可同时产生正弦波、方波等,而且方法简单易行,用D/A转换器的输出来改变调制电压,也可以实现数控调整频率,但产生信号的频率稳定度不高。
方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。
TH=(8192 T)/256 (2.3)
MOD32表示除32取余数
(3)正弦波的模拟信号是D/A转换器的模拟量输出,其计算公式为:
Y=(A/2sin t)+A/2(其中A=VREF)(2.4)
t=N T (N=1~256) (2.5)
那么对应着存放在计算机里的这一点的数据为:
(2.6)(4)一个周期被分离成256个点,对应的四种波形的256个数据存放在以TAB1--TAB4为起始地址的存储器中。
图4.1主程序流程图
图4.2为各波形子程序的流程图。如图所示,在中断服务子程序开始后,通过判断来确定各种波形的输出,当判断选择的不是方波后,则转向对正弦波的判断,如此反复。如果选择的是方波,则用查表的方法求出相应的数据,并通过D/A转换
器将数据转换成模拟信号,形成所需波形信号。
图4.2子程序流程图
图3.3数模转换电路
3.4 按键接口电路
图3.4为键盘接口电路的原理图,图中键盘和8155的PA口相连,AT89C51的P0口和8155的D0口相连,AT89C51不断的扫描键盘,看是否有键按下,如有,则根据相应按键作出反应。其中“S0”号键代表方波输出,“S1”号键代表正弦波输出,“S2”号键代表三角波输出。 “S3”号键代表锯齿波输出,“S4”号键为10Hz的频率信号,“S5”号键为100Hz的频率信号,“S6”号键为500Hz的频率信号,“S7”号键为1KHz的频率信号[3]。
相关文档
最新文档