C51单片机的波形发生器

上传人:仙*** 文档编号:107816212 上传时间:2022-06-15 格式:DOC 页数:27 大小:2.22MB
返回 下载 相关 举报
C51单片机的波形发生器_第1页
第1页 / 共27页
C51单片机的波形发生器_第2页
第2页 / 共27页
C51单片机的波形发生器_第3页
第3页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC51单片机的波形发生器C51单片机的波形发生器通信专业技能实训报告题 目 基于Proteus的波形发生器设计学 院 信息科学与工程学院 专 业 通信工程 班 级 学 生 学 号 指导教师 魏长智 二一 九 年 一 月 五 日-目 录1 前言- 1 -2 硬件设计- 2 -2.1 启动方式选择- 2 -2.2 框图设计- 2 -2.3 电路图设计- 3 -3 DAC0832性能与特征- 4 -3.1 D/A转换器与单片机接口探究- 4 -3.1.1 数据线连接- 4 -3.1.2 地址线连接- 4 -3.1.3 控制线连接- 4 -3.2 DAC0832的认识- 5 -3.2.1 DAC0832的结构- 5 -3.2.2 DAC0832的引脚- 6 -3.2.3 DAC0832的启动控制方式- 7 -4 程序设计- 8 -4.1 程序流程图- 8 -4.1.1 程序设计思路- 8 -4.1.2流程图- 8 -4.2 用C语言实现- 10 -5 Proteus仿真及结果- 13 -5.1方波:- 13 -5.2正弦波:- 14 -5.3三角波:- 15 -5.4梯形波:- 16 -5.5锯齿波:- 17 -实训结语:- 18 -参考文献- 19 -1 前言波形发生器也称函数发生器,作为实验信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。目前,市场上常见的波形发生器多为纯硬件的搭接而成,且波形种类有限,多为锯齿波,正弦波,方波,三角波等波形。作为一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。函数信号发生器是一种能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路。通过对函数波形发生器的原理以及构成分析,可设计一个能变换出三角波、正弦波、方波的函数波形发生器。本设计主要运用AT89C51单片机为核心硬件,对直流电动机进行速度控制。并且辅助以硬件部分的驱动、复位、LED显示等电路,软件部分对AT89C51进行模块化程序的输入,通过按钮控制,实现对直流电动机的正转、反转、加速、减速和停止等控制功能。同时利用DAC0823转换成模拟信号输出,由LED与电动机转速显示控制效果。利用AT89C51芯片进行低成本直流电动机控制系统设计,简化系统构成、提高系统性能,满足了生产要求。2 硬件设计2.1 启动方式选择因为本设计要求设计一个波形发生器,要求能产生正弦波、方波、三角波、梯形波、锯齿波,而且由按键控制输出的波形。故各个波形输出并非同步输出,而是由按键控制,单个输出,并且本例只需要一个DAC,如果选择双缓冲方式就会加大不必要的难度;直通方式不能有效的控制DAC转换,转换时可能会出现数据流失。故选择单缓冲启动控制方式来驱动DAC0832。2.2 框图设计根据2.1节的判断,选择AT89c51单片机作控制,实现电路框如下:图2.1 硬件设计框图2.3 电路图设计根据以上框图,选择+12V的基准电压,选择一级集成运放作放大电路,连接A/D转换电路图如下:图2.2 单片机与DAC的连接方式3 DAC0832性能与特征 3.1 D/A转换器与单片机接口探究D/A转换器与单片机接口具有软硬相依性。在连接过程中要考虑到数据线、地址线、控制线的连接。3.1.1 数据线连接D/A转换器与单片机接口要考虑到两个问题:一个是位数,当高于8位的D/A转换器与8位数据总线的51单片机接口时,51单片机的数据必须分时输出,这时就必须考虑数据分时传送的格式和输出电压“毛刺”问题;二是D/A转化器的内部结构,当D/A转换器的内部结构没有输入锁存器时,必须在单片机与D/A转换器之间增设锁存器或者I/O口。最常用的是8位带锁存端的D/A转换器与8位单片机的接口,这时只需要将单片机的数据总线和D/A转换器的8位数据输入端一一对应即可。3.1.2 地址线连接一般的D/A转换器只有片选信号,而没有地址线。这时单片机的地址线采用全译码或者部分译码,经译码器输出控制片选信号,也可以用某一位I/O线来控制片选信号。也有少数D/A转换器有少量的地址线,用于选中片内独立的寄存器或者选择输出通道,这时单片机执行的地址线与D/A转换器的地址线对应连接。3.1.3 控制线连接D/A转换器主要有片选信号、写信号、及启动转换信号等,一般由单片机的有关引脚或译码器提供。一般来说,写信号多由单片机的信号控制;启动信号常常由片选信号与写信号的组合形式(LE1、LE2)形成,当单片机执行一条输出指令时,传送的地址使转换器的片选信号有效。3.2 DAC0832的认识 图3.1 DAC0832的管脚结构3.2.1 DAC0832的结构DAC0832的结构如图1.1所示,主要由控制逻辑电路、输入寄存器、DAC寄存器和D/A转换器构成。由上图逻辑控制电路可知:LE1=(+)ILELE2=+由LE1控制输入寄存器读入数据,由LE2控制输入寄存器向DAC寄存器传输数据,同时开始D/A转换。3.2.2 DAC0832的引脚DAC0832的引脚如图2.2所示:DI0DI7:8位数据输入线,高电平有效。ILE:数据锁存允许控制输入线,高电平有效。:片选信号输入线,低电平有效。:输入锁存器写选通输入线,负脉冲有效。输入锁存器的信号就是LE1。LE1负跳变有效。:数据传送控制信号输入线,低电平有效。:DAC寄存器写选通信号输入线,负脉冲有效。DAC锁存信号就是LE2,LE2的负跳变有效。:模拟电流输出线。:模拟电流输出线,采用单极性输出时,通常接地。:反馈信号输入线。反馈电阻被制作在芯片里,用作外接运放的反馈电阻,为D/A转换器提供电压输出。:参考电压输入端。要求外接一精密电压源,电压范围在-10V+10V之间选定。通过的符号来改变输出极性。: 电源接口。AGND:模拟地。DGND:数字地。注:数字信号的高频噪声很大,如果模拟信地和数字地混合的话,就会把数字的噪声传到模拟部分,造成干扰。如果分开的话,高频噪声可以在电源处通过滤波来消除掉。3.2.3 DAC0832的启动控制方式DAC0832有三种启动控制方式:(1)直通方式:将信号都接地,ILE信号引脚接高电平,只要数据传送到数据线上,两级锁存器同时开始工作,并启动D/A转换,即转换器处于非受控状态。在这种工作方式下,转换器的数据线不能直接和单片机的数据线(P0.0P0.7)相连接。因为P0口分时复用为低8位的地址总线和数据总线,对输出无锁存能力,会使转换器的输出不确定。但是可以将ADC的数据线连接到某个I/O口上,执行端口输出指令(MOV Px A)即可启动一次D/A转换。这种方式很少采用。(2)单缓冲方式:两级锁存器接受同一种控制,例如将 和 直接接地,8位ADC锁存器处于非受控状态,只有8位输入锁存器处于受控状态,即此时仅有LE1控制ADC。这种方式在不要求多个模拟同步输出时采用。(3)双缓冲方式:俩个锁存器都处于受控状态,单片机要对转换器进行两步写操作:第一次执行指令使LE1有效,称作第一级缓冲,第二次执行指令使LE2有效,称作第二级缓冲。这种方式的优点是数据接收和启动转换可以异步进行,可在D/A转换的同时接收下一个转换数据,以提高转换速度,还可以实现多个转换器同时启动转换,同步输出。4 程序设计4.1 程序流程图4.1.1 程序设计思路(1)因为要使用到按钮(本例中选择独立按键),必须使用到键盘扫描,首先要进行键盘消抖,然后通过扫描确定是哪个按键被按下,通过I/O口(本例中为P1口)的数据判断选择五种波形中的哪一个;(2)根据(1)中的结果,通过编程产生各个波形的数字信号;(3)控制DAC转换数字信号为模拟信号。程序框图如下: 图4.1 程序设计思路4.1.2流程图在本流程图中分别以k1、k2、k3、k4、k5代表单片机的I/O口P1.0、P1.1、P1.2、P1.3、P1.4;设置flag1、flag2、flag3、flag4、flag5为1时分别代表方波、正弦波、三角波、梯形波、锯齿波。当确认按键按下时,令相对应的flagx=1,然后用连续的判断程序来选择将要输出的波形。程序实现了只需按一下按钮便可持续输出对应的波形。流程图如下: 图4.2 程序流程图4.2 用C语言实现根据程序流程图用C语言编程,C语言实现的代码为:#includetypedef unsigned char u8;typedef unsigned int u16;sbit k0=P10; sbit k1=P11; sbit k2=P12; sbit k3=P13; sbit k4=P14;sbit led1=P30;sbit led2=P31;sbit led3=P32;sbit led4=P33;sbit led5=P34;u8 temp;u8 const code SIN_code256=0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe3,0xe1,0xde,0xdc,0xda,0xd8,0xd6,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,0x80,0x7d,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52,0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x14,0x12,0x10,0xf,0xd,0xc,0xb,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x3,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x3,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xa,0xc,0xd,0xe,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e,0x20,0x23,0x25,0x27,0x29,0x2c,0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x40,0x43,0x46,0x48,0x4b,0x4e,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c;void delay (u16 num)u16 x,y;for (x=num; x0; x-)for (y=110; y0; y-);void main(void)u8 temp,a,t;a = 0x00;temp = 0x00;P0=0;while(1) led4=0;led2=0;led3=0;led1=0; led5=0; if(k1=0) /juchi led2=led2; for(temp=0xff;temp0x00;temp-) P0=temp; if (temp = 0x00) temp = temp; if(k2=0) /sanjiaoled3=led3; for(a=0x00;a0x00;a-)P0=a;if(k3=0) /tixing led4=led4; for(a=0x00;a0x00;a-) P0=a;delay(5); if(k4=0) /zhengxian led5=led5;for(t=0;t255;t+)P0=SIN_codet; if(k0=0) /juxing led1=1; P0=temp;delay(30); P0=temp ;delay(30); 5 Proteus仿真及结果将程序代码在Kill中编译输出.HEX文件,烧写进单片机中,用Proteus仿真软件仿真,得到的输出波形为:5.1方波: 图5.1 输出方波波形由仿真结果可知,通过键盘输入触发信号选择方波输出后,触发信号经过AT89c51单片机后,根据单片机内写入的程序,通过P0口输出数字信号,数字信号经过DAC转换,成为模拟信号,最后经过运算放大器放大输出,通过示波器显示输出波形。并且显示波形为方波的led灯点亮。根据方波信号可以明显看出符合c语言程序设计:P0=temp;delay(30); P0=temp ;delay(30);P0口先输出0信号,并延迟30ms,之后再取反输出高电平同样延迟30ms从而形成方波信号。形成一个方波信号后一直循环该程序,即可完成输出持续的方波信号。5.2正弦波:图5.2 输出正弦波形由仿真结果可知,通过键盘输入触发信号选择正弦波输出后,触发信号经过AT89c51单片机后,根据单片机内写入的程序,通过P0口输出数字信号,数字信号经过DAC转换,成为模拟信号,最后经过运算放大器放大输出,通过示波器显示输出波形。并且显示波形为正弦波的led灯点亮。根据正弦波信号可以明显看出符合c语言程序设计:for(t=0;t255;t+);P0=SIN_codet; P0口根据循环方式,从事先准备好的由256个数据形成的正弦波采点数组,依次输出数组中数据对应的电平,不同数据输出不同电平,循环256次。如t=0输出第一个数据的电平;t=11,输出第十二个数据的电平。形成一个正弦波信号之后一直循环该程序,即可完成输出持续的正弦波信号。5.3三角波: 图5.3 输出三角波形由仿真结果可知,通过键盘输入触发信号选择三角波输出后,触发信号经过AT89c51单片机后,根据单片机内写入的程序,通过P0口输出数字信号,数字信号经过DAC转换,成为模拟信号,最后经过运算放大器放大输出,通过示波器显示输出波形。并且显示波形为三角波的led灯点亮。根据三角波信号可以明显看出符合c语言程序设计:for(a=0x00;a0x00;a-) P0=a;P0口先输出0信号,并且根据循环输出信号依次升高至0xff,形成三角波的一侧,之后根据循环依次递减至0x00,形成完整的三角波。形成一个三角波信号之后一直循环该程序,即可完成输出持续的三角波信号。5.4梯形波: 图5.4 输出梯形波形由仿真结果可知,通过键盘输入触发信号选择梯形波输出后,触发信号经过AT89c51单片机后,根据单片机内写入的程序,通过P0口输出数字信号,数字信号经过DAC转换,成为模拟信号,最后经过运算放大器放大输出,通过示波器显示输出波形。并且显示波形为梯形波的led灯点亮。根据梯形波信号可以明显看出符合c语言程序设计:for(a=0x00;a0x00;a-)P0=a;delay(3);P0口先输出0信号,并且根据循环输出信号依次升高至0xff,形成三角波的一侧,再延迟一段时间,之后根据循环依次递减至0x00,再延迟一段时间,形成完整的梯形波。形成一个梯形波信号之后一直循环该程序,即可完成输出持续的梯形波信号。5.5锯齿波: 图5.5 输出锯齿波形 由仿真结果可知,通过键盘输入触发信号选择锯齿波输出后,触发信号经过AT89c51单片机后,根据单片机内写入的程序,通过P0口输出数字信号,数字信号经过DAC转换,成为模拟信号,最后经过运算放大器放大输出,通过示波器显示输出波形。并且显示波形为锯齿波的led灯点亮。根据锯齿波信号可以明显看出符合c语言程序设计:for(temp=0xff;temp0x00;temp-) P0=temp; if (temp = 0x00)temp = temp; P0口先输出信号根据循环从高到低开始降低,当降到0信号时P0口输出信号取反回到高电平,从而形成锯齿波信号。形成一个锯齿波信号之后一直循环该程序,即可完成输出持续的锯齿波信号。实 训 结 语:通过一周的课程设计,使我对单片机的结构功能和使用方法有了更深的了解,也加强了我对kill、Proteus的使用熟练度,为以后熟练运用打下了良好的基础,我能将学习的理论知识运用的课程设计的实践中,这加强了我对单片机相关知识、C语言以及数电模电知识的运用与掌握。设计单片机是一个复杂而且消耗时间很长的过程,需要先进行项目构思,寻找设计方法与思路,去了解相关方面的知识,构思完成后准备工作基本结束了,之后便是仿真硬件设计和软件设计。硬件设计第一点需要做的是根据设计做出框图,之后根据设计的需要选择元件连接成电路图。软件设计则需要根据电路原理图考虑到线路的连接方式与相连的端口设计相应的程序,这样才能正确的运行程序,要根据单片机的仿真图与实际运行结果画出程序流程图,根据流程图在KILL中编写程序代码,最后调试排错。在硬件和软件设计完成后,还需将两者结合,也就是说将程序产生的.HEX文件烧写进单片机,硬件与软件必须衔接恰当,否则就不能正常运行,如果不能运行,就必须调试电路结构或者改变程序,再次检查错误。比如在这次设计中,针对DAC0832单缓冲启动控制方式的程序就不能直接考入直通方式的电路中,反之亦然。电路有很多种连法,程序也是灵活多变,所以需要了解的是它们的原理,只有这样才能运用的自如。我在单片机课程中更加强化了我对C语言的了解,因为C语言太长时间不用有些生疏,所以在本次设计尝试使用C来编写代码是经常遇到困难,让我无从下手,这使我自己认识到对C语言还不熟悉,对C语言的设计思路有时会比较模糊,经验还不足,还需努力,多用多练。我深知此次在仿真层面的设计与真正制作实物还是有较大的差距,所以今后的日子里还要更加上进,认真学习知识,熟练运用知识,让自己更上一层楼! 参 考 文 献1 李念强. 单片机原理及应用M, 2版. 北京: 机械工业出版社, 2013.92 杨波, 刘明军. 程序设计基础(C语言)M, 第2版. 北京: 清华大学出版社, 2010.93 童诗白,华成英. 模拟电子技术基础M, 4版. 北京: 高等教育出版社, 2006.5(2014.5重印)4 阎石. 数字电子技术基础M, 5版. 北京: 高等教育出版社, 2006.5(2014.12重印)5 张靖武, 周灵彬. 单片机系统的PROTEUS设计与仿真M. 北京: 电子工业出版社,2007
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!