找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14971|回复: 1
打印 上一主题 下一主题
收起左侧

基于单片机的多种波形发生器设计论文

[复制链接]
跳转到指定楼层
楼主
ID:339208 发表于 2018-5-27 17:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目录

1前言
2硬件电路设计
2.1主要芯片介绍
2.1.1单片机AT89C52
2.1.2 DAC0832数模转换器
2.1.3其他器件
2.2硬件连接图
2.2.1主控电路
2.2.2 独立式键盘
2.2.3数模转换电路
2.2.4驱动电路
2.3总电路图
3 程序设计
3.1主流程图的设计
3.2 子程序的设计
3.2.1锯齿波的产生
3.2.2三角波的产生
3.2.3梯形波的产生
3.2.4正弦波的产生
3.2.5主程序
4应用软件
4.1 Proteus
4.2 KeilC51
5调试与仿真结果
6总结
参考文献



1前言

在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域,经常需要用到各种各样的信号波形发生器。随着集成电路的迅速发展,用集成电路可很方便地构成各种信号波形发生器。用集成电路实现的信号波形发生器与其它信号波形发生器相比,其波形质量、幅度和频率稳定性等性能指标,都有了很大的提高。

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

2硬件电路设计

   本方案是基于AT89C52与DAC0832的单缓冲方式接口电路来设计。单缓冲式接口电路具有过程简单,容易实现。由于本设计运用汇编的编程语言,导致用独立式键盘来实现简单控制。本方案所产生的信号频率稳定性高,精确度高。而且在硬件方面它所选的元器件比较常见。其主要流程图和模块如图1所示。

图1软硬件结合设计框图

2.1主要芯片介绍

2.1.1单片机AT89C52

   AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,



片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

   AT89C52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。图2为AD89C52单片机的管脚图。

图2 AT89C52管脚图

其各管脚功能为:

    P0口:P0口是一组8位漏极开路型双向I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

    P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51 不同之处是,P1.0 和P1.1还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入。   

    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口输出缓冲级可驱动(吸收或输出电流个TTL逻辑)4门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。

RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

    ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOV指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。

    PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

    EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。

    XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。

    XTAL2:振荡器反相放大器的输出端。

2.1.2 DAC0832数模转换器

    DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。图3为其芯片管脚图。

图3 DAC0832管脚图

各个管脚功能如下:

    D0~D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错)

    ILE:数据锁存允许控制信号输入线,高电平有效;   

    CS:片选信号输入线(选通数据锁存器),低电平有效;  

    WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;   

    XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于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:模拟信号地  

   DGND:数字信号地

2.1.3其他器件

   本次设计中,不仅仅用到了AT89C52单片机和DAC0832数模转换芯片,还用到了74HC138译码器和74HC573锁存器。

   74HC138 作用原理于高性能的存贮译码或要求传输延迟时间短的数据传输系统,在高性能存贮器系统中,用这种译码器可以提高译码系统的效率。

   74HC573数据锁存器。主要用于数码管、按键等等的控制。

             

          图4 74HC138                              图5  74HC573

2.2硬件连接图

2.2.1主控电路

中断系统是使处理器具有对外界异步事件的处理能力而设置的。当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这个紧急事件。在波形发生器中,只用到片内定时器/计数器溢出时产生的中断请求,即是在AT89C52输出一个波形采样点信号后,接着启动定时器,在定时器未产生中断之前,AT89C52等待,直到定时器计时结束,产生中断请求,AT89C52响应中断,接着输出下一个采样点信号,如此循环产生所需要的信号波形。如图所示2.1,AT89C52所在电路中的工作情况。

    本此课设中,AT89C52单片机的P1口接独立式按键电路,P2口部分接译码器,P0口接锁存器。主控电路图如图6所示

图6 主控电路

2.2.2 独立式键盘

    独立式键盘中,各按键相互独立,每个按键各接一根输入线,每根输入线上的按键工作状态不会影响其它输入线上的工作状态。因此,通过检测输入线的电平状态就可以很容易的判断按键是否被按下了。独立式键盘电路配置灵活,软件结构简单。但每个按键需占用一根输入线,在按键数量较多时,输入口浪费大,电路结构显得很繁杂,故此种键盘适用于按键较少或操作速度较高的场合。如图7所示。

按键与AT89C52的P1口连接。 KEY1是监测是否输出锯齿波按键;KEY2是监测是否输出三角波按键;KEY3监测是否输出梯形波按键;KEY4监测是否输出正弦波按键;KEY5是调频按键。

图7 独立式键盘电路图

2.2.3数模转换电路

DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。

    由于AT89C51所产生的是数字信号,所以通过DAC0832把数字信号转换成模拟信号。DAC0832输出的模拟量是电流,为了转换成电压,所以在它后面接入一个运放器。如图8。

图 8 数模转换电路图

2.2.4驱动电路

    74HC138作用原理于高性能的存贮译码或要求传输延迟时间短的数据传输系统,在 高性能存贮器系统中,用这种译码器可以提高译码系统的效率。

    74HC573数据锁存器。主要用于数码管、按键等等的控制。如图9所示,74HC138加74HC573的工作电路。

图9 74HC138和74HC573的工作电路。

2.3总电路图

    多种波形发生器的总电路图如图10所示

图11 总电路图

3 程序设计

3.1主流程图的设计

主程序的流程图如图12所示,开始时判断是否调频,然后判断是否调用锯齿波程序,然后判断是否调用三角波程序,然后判断是否调用梯形波程序,然后判断是否调用正弦波程序,最后在循环回到判断是否调频。

图12 软件主程序流程图

3.2 子程序的设计

3.2.1锯齿波的产生

    锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。子程序如下:

  ST:MOV A,#00H           ;设置初值

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: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,R6              ;下降波形做准备

      DEC A

      MOV R7,0EEH            ;循环次数

LOP2:MOVX @DPTR,A           ;进行延时

      DJNZ R7,LOP2

LOOP1: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个数值全部输出之后,从头开始继续输出。正弦波产生的子程序如下:

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              ;返回检测开关

;--------以下是通过正弦的值所建立的一个表

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

   DB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H

   DB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99H

   DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80H

   DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H

   DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H

   DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH

   DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H

   DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H

   DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH

   DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H

   DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H

   DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H

   DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H

   DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H

   DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H

   DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H

   DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH

   DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H

   DB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80H

3.2.5主程序

    主程序的代码如下:

      ORG 0000H              ;程序开始

      MOV SP,#60H            ;设置堆栈

      MOV DPTR,#7FFH         ;0832的地址

  LOP:MOV P1,#0FFH

      MOV A,P1

      JNB P1.5,FM            ;是否需要调频

      MOV R6,#01H            ;设置步长

      MOV R5,#01H  

START:JNB P1.0,ST            ;输出锯齿波程序

      JNB P1.1,TRIANGLE      ;输出三角波程序

      JNB P1.2,TXING         ;输出梯形波程序

      JNB P1.3,SINE          ;输出正弦波程序

      SJMP LOP               ;循环检测

4应用软件

    本次课程设计中,我们用到了Protues7.8对其电路图进行绘制和仿真,还用到了Keil C51对程序进行译码和编译。下面对这两个软件进行简单的介绍。

4.1 Proteus

   Protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。

    Protues软件具有其它EDA工具软件的功能。它能够完成原理布图、PCB自动或人工布线和SPICE电路仿真的功能。同时Protues具有革命性的特点:

  • 互动的电路仿真。用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
  • 仿真处理器及其外围电路。可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Protues建立了完备的电子设计开发环境。

Protues提供了4大功能模块:

(1)智能原理图设计(ISIS

丰富的器件库:超过27000种元器件,可方便地创建新元件;智能的器件搜索:通过模糊搜索可以快速定位所需要的器件;智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间;支持总线结构:使用总线器件和总线布线使电路设计简明清晰;可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。

(2)完善的电路仿真功能(Prospice

ProSPICE混合仿真:基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真;超过27000个仿真器件:可以通过内部原型或使用厂家的SPICE文件自行设计仿真器件,Labcenter也在不断地发布新的仿真器件,还可导入第三方发布的仿真器件; 多样的激励源:包括直流、正弦、脉冲、分段线性脉冲、音频(使用wav文件)、指数信号、单频FM、数字时钟和码流,还支持文件形式的信号输入; 丰富的虚拟仪器:13种虚拟仪器,面板操作逼真,如示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、SPI调试器、I2C调试器等; 生动的仿真显示:用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件(如电机、显示器件、按钮)的使用可以使仿真更加直观、生动; 高级图形仿真功能(ASF):基于图标的分析可以精确分析电路的多项指标,包括工作点、瞬态特性、频率特性、传输特性、噪声、失真、傅立叶频谱分析等,还可以进行一致性分析。

(3)独特的单片机协同仿真功能(VSM

支持主流的CPU类型:如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU类型随着版本升级还在继续增加,如即将支持CORTEX、DSP处理器;支持通用外设模型:如字符LCD模块、图形LCD模块、LED点阵、LED七段显示模块、键盘/按键、直流/步进/伺服电机、RS232虚拟终端、电子温度计等等,其COMPIM(COM口物理接口模型)还可以使仿真电路通过PC机串口和外部电路实现双向异步串行通信; 实时仿真:支持UART/USART/EUSARTs仿真、中断仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真。编译及调试:支持单片机汇编语言的编辑/编译/源码级仿真,内带8051、AVR、PIC的汇编编译器,也可以与第三方集成编译环境(如IAR、Keil和Hitech)结合,进行高级语言的源码级仿真和调试。

(4)实用的PCB设计平台

原理图到PCB的快速通道:原理图设计完成后,一键便可进入ARES的PCB设计环境,实现从概念到产品的完整设计;先进的自动布局/布线功能:支持器件的自动/人工布局;支持无网格自动布线或人工布线;支持引脚交换/门交换功能使PCB设计更为合理; 完整的PCB设计功能:最多可设计16个铜箔层,2个丝印层,4个机械层(含板边),灵活的布线策略供用户设置,自动设计规则检查,3D可视化预览;多种输出格式的支持:可以输出多种格式文件,包括Gerber文件的导入或导出,便利与其它PCB设计工具的互转(如protel)和PCB板的设计和加工。

4.2 KeilC51

    Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。

    Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

    C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

Keil具有具有很多优点:

(1)Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

(2)与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

5调试与仿真结果

    本次的设计主要应用了protues和keilC51软件进行系统设计和仿真,经过仿真后,结果较好,示波器可以正确的输出锯齿波、三角波、梯形波、正弦波。

    没有按键按下时,波形图如图13所示

图13 没有按键按下时波形图

当按下K1按键时,产生锯齿波,如图14所示

图14 按下K1键产生锯齿波

当按下K2按键时,产生三角波,15如图所示

图15 按下K2键时产生三角波

当按下按键K3时,产生梯形波,如图16所示

图16 按下K3产生梯形波

当按下K4按键时,产生正弦波,如图17所示

图17 按下K4产生正弦波

按下K5按键的时候采样频率会发生变化。

6总结

经过近两周的单片机课程设计,终于完成了我们组的波形发生器的设计,基本达到了设计要求,从心底里来说,还是很高兴的。但还是有很多需要反思的问题。

在本次设计的过程中,虽然让我长进了很多。对于单片机设计,其中硬件电路是比较简单的,主要是解决程序设计的问题,而程序设计它反映了我们解决问题的思维逻辑和创新能力。因此在整个设计过程中大部分时间是用在程序上面的。

要设计一个成功的电路,必须要有耐心,要有坚持的毅力。完成这次设计后,我在书本理论知识的基础上又有了更深层次的理解。我发现,在我们所使用的书籍上有些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整。这就要求我们更加注重实践环节。



完整的Word格式文档51黑下载地址:
基于单片机的多波形信号发生器设计.docx (368.93 KB, 下载次数: 84)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:771950 发表于 2020-6-7 17:26 | 只看该作者
求资源
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表