1、多种波形发生器设计讲解四川师范大学成都学院电子工程学院电子技术课程设计 电子技术课程设计多种波形发生器设计 学生姓名付小洋学 号2014209034所在学院电子工程学院专业名称应用电子技术班 级2014级指导教师陈海川成 绩 四川师范大学成都学院二15年12月四川师范大学成都学院电 子 工 程 学 院课程设计考核表课程设计名称电子技术课程设计课程设计题目多种波形发生器设计学 生 姓 名付小洋年级2014级专业应用电子技术学号2014209034指 导 教 师陈海川课程设计成绩等级职称分数评语:(注:课程设计成绩以等级和分数记录。优:90100 良:8089 中:7079 及格:6069 不及格
2、:60分以下) 指导教师签名: 年 月 日四川师范大学成都学院电 子 工 程 学 院课程设计任务书课程设计名称电子技术课程设计课程设计题目多种波形发生器设计学 生 姓 名付小洋年级2014级专业应用电子技术学号2014209034指 导 教 师陈海川职称备注课程设计起止日期设计内容:设计一个能产生正弦波、方波、三角波、梯形波、锯齿波的波形发生器,完成原理图设计,软件编制及设计报告。任务与要求:具体要求如下: 1)以单片机为核心,利用数摸转换芯片0832完成数模转换。 2)以按键来选择要产生的波形 3)用示波器观察波形。设计步骤: 1)按照任务书的要求完成系统需求分析及功能定义。 2)使用pro
3、teus进行原理性设计与仿真。 3 ) 完成代码编写,给出软件流程图。 4)撰写设计报告。主要参考资料: 单片机系统教材及相关元器件的数据手册摘要 随着电子技术的飞快发展,单片机也应用得越来越广泛,基于单片机的智能仪器的设计技术不断成熟。单片机构成的仪器具有高可靠性,高性价比。单片机技术在智能仪表和自动化等诸多领域有了极为广泛的应用,并用到各种家庭电器,单片机技术的广泛应用推动了社会的进步。利用单片机采用程序设计方法来产生波形,线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强等优点,而且还能对波形进行细微的调整,改良波形,易于程序控制。只要对电路稍加修改,调整程序,就能实现功能的升
4、级。本系统利用单片机AT89C52采用程序设计方法产生锯齿波、三角波、正弦波、梯形波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,并通过按键来控制四种波形的类型选择。本次设计主要由信号发生模块、数模转换模块和仿真模块。关键词: AT89C52单片机,DAC0832,独立式键盘,Proteus,KeilAbstract:With the rapid development of electronic technology, single-chip microcomputer is also more and more widely used,
5、 design technology based on single chip microcomputer intelligent instrument matures. Single chip instrument has high reliability, high cost performance. SCM technology in many fields such as intelligent instrument and automation has the extremely widespread application, and to all kinds of househol
6、d appliances, extensive application of single-chip computer technology promotes the social progress. Microcontroller programming method is used to produce waveform, line road is relatively simple, compact structure, low price, high rate of frequency stability, the advantages of strong anti interfere
7、nce ability, and also can carry on the fine adjustment of waveform, change a good waveform, easy in process control. As long as to modify the electric road a little bit, the adjustment procedure, can achieve the function upgrade. This system using single chip microcomputer AT89C52 process sequence d
8、esign method is used to produce three Angle of wave, sawtooth wave, string, ladder shaped wave four waveform, again through D/A converter DAC0832 converts digital signals into analog signals, filter amplifier, ultimately displayed by oscillograph, and through the keys to control the type selection o
9、f four kinds of waveform. This design is mainly composed of signal producing module, analog-to-digital conversion module, and the simulation module.Key words: AT89C52 single chip microcomputer, DAC0832, independent type keyboard, Proteus, Keil目录1前言 12硬件电路设计 12.1主要芯片介绍 12.1.1单片机AT89C52 12.1.2 DAC0832
10、数模转换器 42.1.3其他器件 52.2硬件连接图 52.2.1主控电路 52.2.2 独立式键盘 62.2.3数模转换电路 72.2.4驱动电路 82.3总电路图 83 程序设计 93.1主流程图的设计 93.2 子程序的设计 103.2.1锯齿波的产生 103.2.2三角波的产生 103.2.3梯形波的产生 113.2.4正弦波的产生 123.2.5主程序 134应用软件 144.1 Proteus 144.2 KeilC51 165调试与仿真结果 176总结 20参考文献 211前言 在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域,经常需要用到各种各样的信号
11、波形发生器。随着集成电路的迅速发展,用集成电路可很方便地构成各种信号波形发生器。用集成电路实现的信号波形发生器与其它信号波形发生器相比,其波形质量、幅度和频率稳定性等性能指标,都有了很大的提高。 波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、高稳定性、可 重复性和易操作性的电子仪器。函数波形发生器具有连续的相位变换、和频率稳定性等优点,不仅可以模拟各种复杂信号,还可对频率、幅值、相移、波形进行动态、及时的控制,并能够与其它仪器进行通讯,组成自动测试系统,因此被广泛用于自动控制系统、震动激励、通讯和仪器仪表领域。2硬件电路设计 本方案是基于AT89C52与DAC0832的单缓冲
12、方式接口电路来设计。单缓冲式接口电路具有过程简单,容易实现。由于本设计运用汇编的编程语言,导致用独立式键盘来实现简单控制。本方案所产生的信号频率稳定性高,精确度高。而且在硬件方面它所选的元器件比较常见。其主要流程图和模块如图1所示。图1软硬件结合设计框图2.1主要芯片介绍2.1.1单片机AT89C52 AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元
13、,AT89C52单片机在电子行业中有着广泛的应用。 AT89C52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。图2为AD89C52单片机的管脚图。图2 AT89C52管脚图其各管脚功能为: P0口:P0口是一组8位漏极开路型双向I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端
14、用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51 不同之处是,P1.0 和P1.1还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入
15、。 P2口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX RI 指令)时,P2口输出P2锁存器的内容。Flash 编程或校验时,P2亦接收高位地址和一些控制信号。 P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸
16、收或输出电流个TTL逻辑)4门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问
17、外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOV指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。 PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP:外部访问允许。欲使CPU仅访问外
18、部程序存储器(地址为0000HFFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。 XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。2.1.2 DAC0832数模转换器 DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到
19、广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。图3为其芯片管脚图。图3 DAC0832管脚图各个管脚功能如下: D0D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错) ILE:数据锁存允许控制信号输入线,高电平有效; CS:片选信号输入线(选通数据锁存器),低电平有效; WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存; XFER:数据传输控制信号输入线,低电平有效,
20、负脉冲(脉宽应大于500ns)有效; WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR2、XFER 的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。 IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化; IOUT2:电流输出端2,其值与IOUT1值之和为一常数; Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度; Vcc:电源输入端,Vcc的范围为+5V+15V; VREF:基准电压输入线,VREF的范围为-10V+10V; AGND:模拟信
21、号地 DGND:数字信号地2.1.3其他器件 本次设计中,不仅仅用到了AT89C52单片机和DAC0832数模转换芯片,还用到了74HC138译码器和74HC573锁存器。 74HC138 作用原理于高性能的存贮译码或要求传输延迟时间短的数据传输系统,在高性能存贮器系统中,用这种译码器可以提高译码系统的效率。 74HC573数据锁存器。主要用于数码管、按键等等的控制。 图4 74HC138 图5 74HC5732.2硬件连接图2.2.1主控电路中断系统是使处理器具有对外界异步事件的处理能力而设置的。当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这
22、个紧急事件。在波形发生器中,只用到片内定时器计数器溢出时产生的中断请求,即是在AT89C52输出一个波形采样点信号后,接着启动定时器,在定时器未产生中断之前,AT89C52等待,直到定时器计时结束,产生中断请求,AT89C52响应中断,接着输出下一个采样点信号,如此循环产生所需要的信号波形。如图所示2.1,AT89C52所在电路中的工作情况。 本此课设中,AT89C52单片机的P1口接独立式按键电路,P2口部分接译码器,P0口接锁存器。主控电路图如图6所示图6 主控电路2.2.2 独立式键盘 独立式键盘中,各按键相互独立,每个按键各接一根输入线,每根输入线上的按键工作状态不会影响其它输入线上的
23、工作状态。因此,通过检测输入线的电平状态就可以很容易的判断按键是否被按下了。独立式键盘电路配置灵活,软件结构简单。但每个按键需占用一根输入线,在按键数量较多时,输入口浪费大,电路结构显得很繁杂,故此种键盘适用于按键较少或操作速度较高的场合。如图7所示。按键与AT89C52的P1口连接。 KEY1是监测是否输出锯齿波按键;KEY2是监测是否输出三角波按键;KEY3监测是否输出梯形波按键;KEY4监测是否输出正弦波按键;KEY5是调频按键。图7 独立式键盘电路图2.2.3数模转换电路DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等
24、优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。 由于AT89C51所产生的是数字信号,所以通过DAC0832把数字信号转换成模拟信号。DAC0832输出的模拟量是电流,为了转换成电压,所以在它后面接入一个运放器。如图8。图 8 数模转换电路图2.2.4驱动电路 74HC138作用原理于高性能的存贮译码或要求传输延迟时间短的数据传输系统,在 高性能存贮器系统中,用这种译码器可以提高译码系统的效率。 74HC573数据锁存器。主要用于数码管、按键等等的控制。如图9所示,74HC138加74HC573的工作电路。图9 7
25、4HC138和74HC573的工作电路。2.3总电路图 多种波形发生器的总电路图如图10所示 图11 总电路图3 程序设计3.1主流程图的设计 主程序的流程图如图12所示,开始时判断是否调频,然后判断是否调用锯齿波程序,然后判断是否调用三角波程序,然后判断是否调用梯形波程序,然后判断是否调用正弦波程序,最后在循环回到判断是否调频。图12 软件主程序流程图3.2 子程序的设计3.2.1锯齿波的产生 锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。子程序如下: ST:MOV A,#0
26、0H ;设置初值LOOP:MOVX DPTR,A ;把数据送到端口转换 ADD A,R6 ;通过步长改变数据,上升波形 CJNE A,#00H,LOOP ;A值是否到最高点 DJNZ R5,LOOP SJMP LOP 3.2.2三角波的产生 三角波的实现是设置一个初值,当加到某个值的时候,执行减一操作,减到初值时,再加一。子程序如下:TRIANGLE:MOV A,#00H ;设置初值 LOOP3:MOVX DPTR,A ;把数据送到端口转换 ADD A,R6 ;通过步长改变数据上升波形 CJNE A,#00H,LOOP3 ;A值是否到最高点 DEC A ;减少步长改变数据下降波形 LOOP2:
27、MOVX DPTR,A ;把数据送到端口转换 DEC A ;减少步长改变数据下降波形 CJNE A,#00H,LOOP2 ;A值是否到最低点 DJNZ R5,LOOP3 ;波形周期 SJMP LOP ;返回检测开关3.2.3梯形波的产生梯形波的实现是设置一个初值,然后进行加一,当加到某个数时延时,之后减一,减到初值时在返回到之前的操作,继续加一、延时、减一。梯形波产生的子程序如下:TXING:MOV A,#00H ;设置初值LOOP4:MOVX DPTR,A ;把数据送到端口转换 ADD A,R6 ;增加步长改变数据上升波形 CJNE A,#00H,LOOP4 ;A值是否到最高点 SUBB A
28、,R6 ;下降波形做准备 DEC A MOV R7,0EEH ;循环次数 LOP2:MOVX DPTR,A ;进行延时 DJNZ R7,LOP2LOOP1:MOVX DPTR,A ;把数据送到端口转换 SUBB A,R6 DEC A CJNE A,#00H,LOOP1 ;是否到最低点 MOV R7,0EEH ;循环次数 LOP1:MOVX DPTR,A ;把数据送到端口转换 DJNZ R7,LOP1 ;进行延时 SJMP LOP ;返回检测开关3.2.4正弦波的产生 正弦波的实现比较麻烦,需要查表,每查一次表,输出一个数值,之后查下一个数值继续输出,当一个波形的256个数值全部输出之后,从头开
29、始继续输出。正弦波产生的子程序如下: SINE:MOV A,#00H ;设置初值LOOP7:MOV R7,A ;保存当前的数据 MOV DPTR,#SIN ;读取表的地址 MOVC A,A+DPTR ;读取表中的数据 MOV DPTR,#7FFH ;D/A0832的端口地址 MOVX DPTR,A ;进行数据转换 MOV A,R7 ;恢复当前数据 INC A ;为读取表的下一个值做准备 CJNE A,#00H,LOOP7 ;是否读完表的数据 SJMP START ;返回检测开关 FM:MOV R6,#04H ;改变调频/调幅 MOV R5,#02H SJMP START ;返回检测开关;-以下
30、是通过正弦的值所建立的一个表SIN: DB 80H, 83H, 86H, 89H, 8DH, 90H, 93H, 96H DB 99H, 9CH, 9FH,0A2H,0A5H,0A8H,0ABH,0AEH DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H DB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH DB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H DB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH DB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1