找回密码
 立即注册

QQ登录

只需一步,快速开始

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

这是我做的波形发生器的课程设计附带程序码

[复制链接]
跳转到指定楼层
楼主
ID:258524 发表于 2018-10-12 10:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
摘要
这个系统是基于AT89C51单片机的波形信号发生器。使用AT89C51单片机作为控制核心,该系统由数字/模拟转换电路(DAC0832)、运放电路(OP07)、按键电路和6位数码管等组成。通过按键可控制方波、三角波、正弦波的产生,并且用数码管显示其对应的频率和波形的类型。这个设计方法简单、性能良好,这个系统可在多种需要低频信号的场所使用,它具有良好的实用性。

目 录
1总体方案设计 2
11 方案论证 1
12 系统描述 2
2单元模块设计 2
21 AT89C51功能介绍 3
22 时钟电路 4
23 复位电路 4
24 键盘控制电路 4
25 LED显示电路 5
251 数码管功能介绍 5
252 LED动态显示原理及电路 6
26 D/A转换及放大电路 7
261 DAC0832功能介绍 7
262 D/A转换电路 8
3系统调试 9
31 软件调试 9
311 三角波产生 9
312 方波产生 10
313 正弦波产生 11
314 键盘控制 12
315 LED显示 12
32 硬件调试 13
4系统功能介绍 14
5设计总结 15
参考文献 16
附录 17

1 总体方案设计
本次设计的任务是设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波和由用户编辑的特定形状波形。示意图如下:
基本要求如下:
(1)具有产生正弦波、方波周期性波形的功能;
(2)输出波形的频率范围为100Hz~20kHz(非正弦波频率按10次谐波计算);重复频率可调,频率步进间隔≤100Hz;
(3)输出波形幅度范围0~5V(峰-峰值),可按步进0.1V(峰-峰值)调整;
(4)具有显示输出波形的类型、重复频率(周期)和幅度的功能。
1.1 方案论证
方案一:采用单片函数发生器可产生正弦波、方波等,操作简单易行,用 D/A 转换器的输出来改变调节电压,可以实现数控调整频率,但产生信号的频率稳定度不高。
方案二:利用芯片组成的电路输出波形,MAX038是MAXIM公司生产的一个只需要很少外部元件的精密高频波形产生器,它能产生准确的高频正弦波、三角波、方波。输出频率和占空比可以通过调整电流、电压或电阻来分别地控制。所需的输出波形可由在A0和A1输入端设置适当的代码来选择,且具有输出频率范围宽、波形稳定、失真小、使用方便等特点。
方案三:采用Atmel公司的AT89C51单片机编程方法实现,该方案可以通过编程的方法控制信号波形的频率和幅度,而在硬件电路不便的情况下,通过程序实现频率的变化和输出波形的选择,并同时在显示器显示相应的结果。
方案一输出信号频率不够稳定;方案二成本高,程序复杂度高;方案三软硬件结合,硬件成本低,软件起点低,用汇编语言即可完成,优化型相对比较好,容易实现,且满足设计要求。综合考虑,我们采用了方案三,用AT89C51单片机设计多功能信号发生器,能够满足信号的频率稳定性和精度的准确性。
1.2 系统描述
    本方案以AT89C51为控制核心,主要模块包括复位电路、时钟信号发生电路、键盘控制电路、D/A转化及LED显示电路,其原理框图如下:
图1 系统原理框图
2 单元模块设计2.1 AT89C51功能介绍
AT89C51引脚图如下:
图2 AT89C51引脚图
1.主电源引脚Vcc和GND
  GND:接地。
  Vcc:主电源+5V。
2.时钟电路引脚XTAL1和XTAL2
  XTAL1、XTAL2为内部振荡器电路(反相放大器)的输入端和输出端,外接晶振电路。
3.控制引脚RST、ALE、PSEN、EA
  RST:复位引脚输入高电平使89C51复位,返回低电平退出复位。
  ALE:访问片外存储器时,ALE做锁存扩展地址低位字节的控制信号。
  PSEN:外部程序存储器的读选通信号,低电平有效。
  EA:程序存储器选择信号,当该端口输入高电平时,CPU执行片内程序存储器程序,当输入低电平时,CPU仅访问片外程序存储器。
4.输入/输出引脚
  P0—P3是4个寄存器,是单片机与外界联系的4个8位双向并行I/O口,其中P3口还具有第二功能。
2.2 时钟电路
    单片机的时钟信号通常用两种电路形式得到:内部振荡和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器,构成了内部振荡方式。由于单片机内部有一个高增益的反相放大器,当外接晶振后,就构成了自激振荡,并产生振动时钟脉冲。晶振通常选用 6MHZ、12MHZ、24MHZ。
本设计中时钟电路图如下图所示,我们选择24MHZ晶振分别接引脚XTAL1和XTAL2,电容 C1、C2均选择为30pF,对振荡器的频率有稳定作用。
图3 时钟电路
2.3 复位电路
复位引脚RST通过一个施密特触发器与复位电路相连,施密特触发器用来抑制噪声。复位电路通常采用上电自动复位和按钮复位两种方式。在每个机器周期的S5P2,施密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。本设计选择了按键复位如下图所示, 在系统运行时,按一下开关,就在RST断出现一段高电平,使时钟电路图中器件复位。此时ALE、PSEN、P0、P1、P2、P3输出高电平,在RST 上输入返回低电平以后,就退出复位状态开始工作。
图4 复位电路
2.4 键盘控制电路
键盘电路分为独立式按键和矩阵式键盘,为了简化程序,我们采用了独立式键盘。独立式按键是指直接用I/O口线构成的单个按键电路。每个独立式按键单独占有一根I/O口线,每根I/O口线的工作状态不会影响其他I/O口线的工作状态,这是一种最简单易懂的按键结构。电路图如下所示:
图5 键盘输入电路
2.5 LED显示电路2.5.1 数码管功能介绍
    数码管的外形结构如下图所示,由图可见它由8个发光二极管构成,通过不同的组合用来显示0—9,A—F及小数点“.”等符号。数码管通常有共阴极和共阳极两种型号,共阴极数码管的发光二极管阴极必须接低电平,当某发光二极管的阳极为高电平(一般为+5V)时,此二极管点亮;共阳极数码管的发光二极管是阳极并接到高电平,对于需点亮的发光二极管使其阴极接地电平即可(一般接地)。显然,要显示某字形就应使此字形的相应字段点亮,实际就是送不同电平组合代表的数据至数码管。这种装入数码管显示字形的数据称字形码。
图6 数码管原理图
要使数码管显示不同的数字或者字符,需要使端口输出相应的字型码,显示器的字形与字码关系如下图所示:
图7 段码表
2.5.2 LED动态显示原理及电路
LED数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
本次设计采用6位共阴极数码管,选取AT89C51的P0口作为信号输出端口,并外接两片锁存器74HC573,用于驱动数码管,其中一片作为数码管的段选信号输入端,另一片作为数码管的位选信号输入端,选取AT89C51的P2.6和P2.7分别作为两片锁存器的片选信号输入端,电路图如下所示:
图8LED显示电路
2.6 D/A转换及放大电路2.6.1 DAC0832功能介绍
DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。其引脚图如下所示:
图9 DAC0832引脚图
关于DAC0832的引脚功能如下:
D0~D7:数字信号输入端。
ILE:输入寄存器允许,高电平有效。
CS:片选信号,低电平有效。
WR1:写信号1,低电平有效。
XFER:传送控制信号,低电平有效。
WR2:写信号2,低电平有效。
IOUT1、IOUT2:DAC电流输出端。
RFB:是集成在片内的外接运放的反馈电阻。
VREF:基准电压(-10~10V)。
Vcc:是源电压(+5~+15V)。
AGND:模拟地。
NGND:数字地,可与AGND接在一起使用。
2.6.2 D/A转换电路
由于单片机输出的是数字信号,因此要得到模拟信号的波形就必须对其进行数模转换。我们采用了DAC0832数模转换器,由于其输出为电流输出,需要外加运算放大器OP07使之装换为电压输出,最后通过示波器显示输出的波形。我们选取了AT89C51的P1口作为波形数字信号的输出端口,电路图如下所示:
图10 D/A转换电路
3 系统调试
本次设计的系统仿真在Proteus软件中进行,并采用汇编语言进行程序的编写。
3.1 软件调试3.1.1 三角波产生
(1)输出波形如下图所示:
图11 三角波仿真图
(2)三角波程序如下:
TRI: CJNE R7,#0FFH,GO1
     CLR  20H
GO1: CJNE R7,#00H,GO2
     SETB 20H
GO2: JNB TF1,GO3   
     CLR  TF1
     JB   20H,GO4
     DEC  R7
     SJMP GO6
GO4: INC  R7
GO6: MOV  P1,R7
     LCALLDISPLAY
GO3: MOV A,P3
     ORL A,#1FH
     CPL A
     JZ  GO5
     LCALL DELAY
     MOV A,P3
     ORL A,#1FH
     CPL A
     JZ  GO5
     LJMPCHANGESTATE
GO5: LJMP TRI
3.1.2 方波产生
(1)输出波形如下图所示:
图12 方波仿真图
(2)方波程序如下:
REC:JNB TF1,GG1
    CLR TF1
    DJNZ R2,GG2
    MOV R2,#0FFH
    CPL 20H
GG2:JB 20H,GG3
    MOV P1,#00H
    SJMP GG4
GG3:MOV  P1,#0FFH
GG4:
GG1:MOV A,P3
    ORL A,#0FH
    CPL A
    JZ GG5
    LCALL DELAY
    MOV A,P3
    ORL A,#0FH
    CPL A
JZ GG5
GG5:LJMP REC
3.1.3 正弦波产生
(1)输出波形如下图所示:
图13 正弦波仿真图
(2)程序如下:
SIN: JNB  TF1,G1
     CLR TF1
     INC R1
     MOV A,R1
     MOVC A,@A+DPTR
     MOV P1,A
G1: MOV A,P3
     ORL A,#1FH
     CPL A
     JZ  G2
     MOV  A,P3
     ORL A,#1FH
     CPL A
     JZ  G2
G2:  LJMP SIN
3.1.4 键盘控制
    通过按键的控制,可以实现波形的相互转换和调频的功能。P3.5和P3.6端口的键盘分别实现频率的加减功能,P3.7端口的键盘实现波形之间的相互转换。其仿真效果如下图所示:
图14 波形转换仿真图
3.1.5 LED显示
本次设计采用6位数码管实现显示功能,其中前3位用于显示波形的类型,REC代表方波,SIN代表正弦波,TRI代表三角波;后3位用于显示波形的频率。其仿真效果如下图所示:
图15 LED仿真图
3.2 硬件调试
本次设计的硬件电路调试结果如下图所示:
图16 硬件效果图
4 系统功能介绍
    本次设计的电路可实现以下三大功能:
(1)波形产生
    本次设计电路可产生方波、三角波、正弦波三种波形,而且通过键盘控制可以实现三种波形之间的相互转换和频率调节的功能。
(2)LED显示
本次设计的显示功能通过6位数码管实现,可以显示三种波形的类型和频率。
(3)键盘控制
本次设计的电路具有键盘控制功能,可以进行三种波形之间的任意转换和波形频率的调节,并可以将改变后的结果实时地显示在在数码管上。
5 设计总结
我们小组此次的设计题目是波形发生器的设计,通过小组成员将近一个月的努力,并按照本次电子设计竞赛的相关要求,最终完成此次设计。在此次设计中收获颇多,主要有以下几点:
(1)通过对电路的设计,对51系列单片机的原理和功能有了进一步的了解,对之前学过的书本上的电路知识有了更深刻的体会,如复位电路的原理,晶振电路的作用,上拉电阻的功能,LED显示电路的原理等,熟悉了DAC0832芯片的原理和功能,并且能对其进行应用。
(2)通过原理图的绘制,学会了Proteus软件的使用,并且能用它完成一些简单的电路设计,对常用的一些元器件有了一定的了解和认识。
(3)本次设计的硬件电路相对简单,核心部分是程序的编写,考虑到汇编语言与硬件电路联系比较紧密,我们组通过讨论最终选取汇编语言进行程序的编写,方便后期调试过程查找错误。在软件和硬件的调试阶段遇到很多的问题,如LED显示乱码、闪烁、波形失真等,通过不断的查找错误,对程序进行相应的修改,使其达到设计的要求,在这个过程中,认识到有时候一个简单的错误就有可能造成电路无法正常工作,可谓“失之毫厘,差之千里”,培养了我们严谨细致的工作态度,同时对电路的的工作原理有了更深刻的认识。
(4)在本次电路设计的过程中,深刻体会到对于一个功能较为复杂的系统设计,一定要学会划分功能模块,逐个实现,最终再进行整合,切不可眉毛胡子一把抓,那样不仅操作起来麻烦,效率低,而且容易出错。
(5)“纸上得来终觉浅,绝知此事要躬行”,通过本次电子设计竞赛,深刻体会到理论联系实践的重要性,要学会活学活用。同时,在实践的过程中,也可以加深对理论知识的认识,提高动手能力。
(6)通过本次电子设计竞赛,我更加深刻的认识到团队合作的重要性,小组成员分工合作,是设计成功的关键,只有大家团结一致,才能更快更好的完成任务。
我们此次的设计基本满足设计的要求,当然还是存在不足的地方,例如当频率过小的时候波形会有些失真,波形的频率调节范围比较小,D/A转换器转换时可以加一个锁存器,放大电路设计上还有待进一步改进,使其具有更强的输出能力等。
参考文献
[1] 康华光.电子技术基础模拟部分.第五版.北京:高等教育出版社,2011.11
[2] 邱关源.电路.第五版.北京:高等教育出版社,2011.12
[3] 阎石.数字电子技术基础.第五版.北京:高等教育出版社,2012.11
[4] 张迎新.单片微型计算机原理.第二版.国防工业出版社,2009.5
[5] 周润景.Proteus入门实用教程.第二版.机械工业出版社,2011.11
附录
1 系统原理图
2 主程序
    ORG 0000H
    lJMP MAIN
MAIN:
    MOV TMOD,#20H
    MOV R0,#02H
    MOV A,#0FFH
    MOV P3,A
    MOV A,#70H
    MOV SP,A
    MOV R6,#0FFH
REMAIN:CLR TR1
      MOV TH1,R6
      SETB TR1
      LCALL JM
   CJNE R0,#01,SHIFT     
TRI: CJNE R7,#0FFH,GO1
    CLR  20H
GO1: CJNE R7,#00H,GO2
    SETB 20H
GO2: JNB TF1,GO3   
    CLR  TF1
    JB   20H,GO4
    DEC  R7
    SJMP GO6
GO4: INC R7
GO6: MOV P1,R7
    LCALL DISPLAY
GO3:
    MOV A,P3
    ORL A,#1FH
    CPL A
    JZ  GO5
    LCALL DELAY
    MOV A,P3
    ORL A,#1FH
    CPL A
    JZ  GO5
    LJMP CHANGESTATE
GO5: LJMP TRI
SHIFT:JC SIN1
REC:JNB TF1,GG1
   CLR TF1
   DJNZ R5,GG2
   MOV  R5,#0FFH
   CPL  20H
GG2:JB 20H,GG3
   MOV  P1,#00H
   SJMP GG4
GG3:MOV P1,#0FFH
GG4:LCALL DISPLAY
GG1:MOV A,P3
   ORL A,#1FH
   CPL A
   JZ  GG5
   LCALL DELAY
   MOV A,P3
   ORL A,#1FH
   CPL A
    JZ  GG5
   LCALL  CHANGESTATE
GG5:LJMP REC
SIN1:NOP
MOV DPTR,#TABSIN
SIN: JNB TF1,G1
    CLR  TF1
    INC  R1
    MOV  A,R1
    MOVC A,@A+DPTR
    MOV  P1,A
    LCALL DISPLAY
G1: MOV  A,P3
    ORL  A,#1FH
    CPL  A
    JZ   G2
    LCALL DELAY
    MOV  A,P3
    ORL  A,#1FH
    CPL  A
    JZ   G2
    LCALL  CHANGESTATE
G2: LJMP SIN
                              
CHANGESTATE:
          JB  P3.7,GOTO1
          INC R0
          CJNE R0,#03H,GOTO1
          MOV  R0,#00H
GOTO1:    JB   P3.6,GOTO2
          INC  R6
GOTO2:    JB   P3.5,GOTO3
          DEC  R6         
GOTO3:    MOV  A,P3
          CPL  A
          JNZ  GOTO3
          LJMP REMAIN
JM:MOV DPTR,#TABNUM
  MOV A,R6
  MOV B,#100
  DIV AB
  MOVC A,@A+DPTR
  MOV 14H,A
  MOV A,B
  MOV B,#10
  DIV AB
  MOVC A,@A+DPTR
  MOV 15H,A
  MOV A,B
  MOVC A,@A+DPTR
  MOV 16H,A
  MOV DPTR,#TABWM
  MOV A,R0
  MOV B,#03H
  MUL AB
  MOV 10H,A
  MOVC A,@A+DPTR
  MOV  11H,A
  INC  DPTR
  MOV  A,10H
  MOVC A,@A+DPTR
   MOV 12H,A
  MOV  A,10H
  INC  DPTR
  MOVC A,@A+DPTR
  MOV  13H,A
  RET
DISPLAY:
  SETB P2.6
  MOV  P0,11H
  CLR  P2.6
  MOV  P0,#0FFH
  SETB P2.7
  MOV  P0,#0FEH
  CLR  P2.7
  MOV  P0,#0FFH
  LCALL DELAY
  SETB P2.6
  MOV  P0,12H
   CLR  P2.6
  MOV  P0,#0FFH
  SETB P2.7
  MOV  P0,#0FDH
  CLR  P2.7
  MOV  P0,#0FFH
  LCALL DELAY
  SETB P2.6
  MOV  P0,13H
  CLR  P2.6
  MOV  P0,#0FFH
  SETB P2.7
  MOV  P0,#0FBH
  CLR  P2.7
  MOV  P0,#0FFH
  LCALL DELAY
  SETB P2.6
   MOV  P0,14H
  CLR  P2.6
  MOV  P0,#0FFH
  SETB P2.7
  MOV  P0,#0F7H
  CLR  P2.7
  MOV  P0,#0FFH
  LCALL DELAY
   
  SETB P2.6
  MOV  P0,15H
  CLR  P2.6
  MOV  P0,#0FFH
  SETB P2.7
  MOV  P0,#0EFH
  CLR  P2.7
  MOV  P0,#0FFH
  LCALL DELAY
   SETBP2.6
  MOV  P0,16H
  CLR  P2.6
  MOV  P0,#0FFH
  SETB P2.7
  MOV  P0,#0DFH
  CLR  P2.7
  MOV  P0,#0FFH
  LCALL DELAY
  RET
DELAY:MOV R2,#0FFH
     MOV R3,#1
LOOP:
     DJNZ R3,LOOP
     MOV  R3,#2
     DJNZ R2,LOOP
     RET
TABNUM: DB  3FH,06H,5BH,4FH,66H
       DB  6DH,7DH,07H,7FH,6FH
TABWM: DB  6DH,06H,37H,07H,77H
       DB  30H,77H,79H,39H
TABSIN:
       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
END

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:430058 发表于 2018-11-20 18:53 | 只看该作者
有电路图吗
回复

使用道具 举报

板凳
ID:435621 发表于 2018-11-29 12:24 | 只看该作者
没看到电路图啊?
回复

使用道具 举报

地板
ID:449435 发表于 2018-12-18 23:15 来自手机 | 只看该作者
楼主有完整的仿真和程序吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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