本次设计的任务是设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波和由用户编辑的特定形状波形。示意图如下: 
基本要求如下: (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显示电路,其原理框图如下:
键盘控制电路键盘电路分为独立式按键和矩阵式键盘,为了简化程序,我们采用了独立式键盘。独立式按键是指直接用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分别作为两片锁存器的片选信号输入端,电路图如下所示: 
图8 LED显示电路
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 三角波产生图11 三角波仿真图 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 3.1.2 方波产生
图12 方波仿真图 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 正弦波产生
图13 正弦波仿真图 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 系统功能介绍 本次设计的电路可实现以下三大功能: 本次设计电路可产生方波、三角波、正弦波三种波形,而且通过键盘控制可以实现三种波形之间的相互转换和频率调节的功能。 本次设计的显示功能通过6位数码管实现,可以显示三种波形的类型和频率。 本次设计的电路具有键盘控制功能,可以进行三种波形之间的任意转换和波形频率的调节,并可以将改变后的结果实时地显示在在数码管上。
5 设计总结我们小组此次的设计题目是波形发生器的设计,通过小组成员将近一个月的努力,并按照本次电子设计竞赛的相关要求,最终完成此次设计。在此次设计中收获颇多,主要有以下几点: - 通过对电路的设计,对51系列单片机的原理和功能有了进一步的了解,对之前学过的书本上的电路知识有了更深刻的体会,如复位电路的原理,晶振电路的作用,上拉电阻的功能,LED显示电路的原理等,熟悉了DAC0832芯片的原理和功能,并且能对其进行应用。
- 通过原理图的绘制,学会了Proteus软件的使用,并且能用它完成一些简单的电路设计,对常用的一些元器件有了一定的了解和认识。
- 本次设计的硬件电路相对简单,核心部分是程序的编写,考虑到汇编语言与硬件电路联系比较紧密,我们组通过讨论最终选取汇编语言进行程序的编写,方便后期调试过程查找错误。在软件和硬件的调试阶段遇到很多的问题,如LED显示乱码、闪烁、波形失真等,通过不断的查找错误,对程序进行相应的修改,使其达到设计的要求,在这个过程中,认识到有时候一个简单的错误就有可能造成电路无法正常工作,可谓“失之毫厘,差之千里”,培养了我们严谨细致的工作态度,同时对电路的的工作原理有了更深刻的认识。
- 在本次电路设计的过程中,深刻体会到对于一个功能较为复杂的系统设计,一定要学会划分功能模块,逐个实现,最终再进行整合,切不可眉毛胡子一把抓,那样不仅操作起来麻烦,效率低,而且容易出错。
- “纸上得来终觉浅,绝知此事要躬行”,通过本次电子设计竞赛,深刻体会到理论联系实践的重要性,要学会活学活用。同时,在实践的过程中,也可以加深对理论知识的认识,提高动手能力。
- 通过本次电子设计竞赛,我更加深刻的认识到团队合作的重要性,小组成员分工合作,是设计成功的关键,只有大家团结一致,才能更快更好的完成任务。
我们此次的设计基本满足设计的要求,当然还是存在不足的地方,例如当频率过小的时候波形会有些失真,波形的频率调节范围比较小,D/A转换器转换时可以加一个锁存器,放大电路设计上还有待进一步改进,使其具有更强的输出能力等。
附录1 系统原理图
单片机源程序如下:
- 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
-
- SETB P2.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
复制代码完整的Word格式文档51黑下载地址:
51单片机实现波形发生器.doc
(3.34 MB, 下载次数: 197)
|