课程设计-函数信号发生器 -

 

课程设计报告

           

     题目         函数信号发生器                              

系 别         物理与电子工程学院                                   

年 级       11        专 业   光伏信息技术与产业               

班 级          Y光伏111                                 

学生姓名         刘存益                               

学 号            Y05311112                              

指导教师          涂国辉                              

设计时间           2013.7.11-7.15                             

目   录

1 设计任务和要求………………………………………………………………1

2设计方案与论证…………………………………………………………………1

2.1  方案一 ……………………………………………………………………………   1

2.2  方案二  ……………………………………………………………………………  1

2.3  各方案分析比较……………………………………………………………………  2

3电路设计与仿真………………………………………………………………2

3.1RC桥式正弦波振荡器…………………………………………………………………2

3.1.1 模块电路及功能说明  ………………………………………………………… 2

3.1.2 参数计算    ……………………………………………………… 3

3.2三角波和方波发生器   ………………………………………………………… 3

3.2.1 模块电路及功能说明  …………………………………………………………3

3.2.2 参数计算   ……………………………………………………… 4

3.3  器件说明 ………………………………………………………………5

3.4  电路仿真………………………………………………………………………………6

3.4.1仿真软件简介 …………………………………………………………………6

3.4.2仿真结果……………………………………………………………… 6

4电路的制作与调试……………………………………………………………8

   4.1电路安装 …………………………………………………8

4.2  电路调试 ……………………………………………………………………………9

  4.3显示结果 …………………………………………… 9

5小结……………………………………………………………………………13

6参考文献………………………………………………………………13

附录1:电路原理图………………………………………………………………14

附录2:元器件清单………………………………………………………………15

                    


1.设计任务和要求

1.1题目概述

设计能够方波/三角波/正弦波/锯齿波函数发生器

1.2设计任务和要求

要求完成能产生方波、三角波及正弦波等多种波形信号输出的波形发生器电路的设计、仿真、制作和调试。

(1)正弦波信号源:信号频率范围20Hz~20kHz 连续可调;频率稳定度较高。信号幅度可以在一定范围内连续可调;

(2)各种输出波形幅值均连续可调,方波占空比可调;

(3)设计完成后可以利用示波器测量出其输出频率的上限和下限,还可以进一步测出其输出电压的范围。

(4)利用仿真软件Multisim仿真电路,并绘制电路的原理图,要求图纸绘制清晰,布线合理,符合绘图规范;

(5)制作电路,完成电路的调试、测试和分析

(6)完成课程设计报告。

2.设计方案与论证

2.1 方案一

由文氏电桥产生正弦振荡,然后通过比较器得到方波,方波积分可得三角波。

这一方案为一开环电路,结构简单,产生的正弦波和方波的波形失真较小。但是对于三角波的产生则有一定的麻烦,因为题目要求有1000倍的频率覆盖系数,显然对于1000倍的频率变化会有积分时间dt的1000倍变化从而导致输出电压振幅的1000倍变化。而这是电路所不希望的。幅度稳定性难以达到要求。而且通过仿真实验会发现积分器极易产生失调。

2.2方案二

利用ICL8038芯片构成8038集成函数发生器。

8038集成函数发生器是一种多用途的波形发生器,可以用来产生正弦波、方波、三角波和锯齿波,其振荡频率可通过外加的直流电压进行调节,所以是压控集成信号产生器。由于外接电容C的充、放电电流由两个电流源控制,所以电容C两端电压uc的变化与时间成线形关系,从而可以获得理想的三角波输出。8038电路中含有正弦波变换器,故可以直接将三角波变成正弦波输出。另外还可以将三角波通过触发器变成方波输出。

2.3各方案分析和比较

第二种方案的特点是有稳定性好,频率易调等特点,但实验器材中缺少ICL8038芯片,所以我们选择第一种方案,简单,易连。
  

3.电路设计与仿真

    根据上面方案一,可以将电路分为两部分,第一部分是由RC桥式正弦波振荡器(文氏电桥振荡器)来实现正弦波的输出,第二部分由运放组成的滞回电路和积分电路首尾相接形成正反馈闭环系统,输出方波和三角波。

3.1 RC桥式正弦波振荡器

3.1.1模块电路以及功能说明

                 图1.RC桥式正弦波振荡器电路图

图1中RC串、并联电路构成正反馈支路,同时兼作选频网络;R4,R9,R5以及二极管等元器件构成负反馈和稳幅环节。调节滑动变阻器R5,可以改变负反馈以满足振幅条件,并改善波形。利于两个反向二极管D3,D4,正向电阻的非线性特性实现稳幅。R3是为了削弱二极管非线性影响,以改善波形失真的状况。

3.1.2参数计算

电路的振荡频率

            F=1/2πRC

             ≈1.6KHz

起振的幅值条件

            Rf/R4>2

式中,RF=R5+R9+(R8||rD);rD是二极管正向导通电阻。

根据电路元件,Rf/R4在18.2~28.2。

调节R5,使电路起振且波形失真最小。如果不能起振,说明负反馈太强,适当加大RF;如果波形失真严重,应当减小RF。

改变选频网络参数C或R,即可调节振荡频率。一般采用改变电容C作频率量程切换,调节R作频率量程内的细调。

3.2三角波和方波发生器

3.2.1模块电路以及功能说明

                     图2.三角波和方波发生器电路图

如图2,利于滞回比较器和积分器首尾相接形成正反馈,滞回比较器输出的方波经积分器可得到三角波,三角波又触发比较器自动转形成方波,这样就构成三角波,方波发生器。由于采用运放组成积分电路,因此可实现恒流充电,使三角波性大大改善。

3.2.2参数计算

电路的振荡频率

       f=R2/4·R7(Rf+RW)C1

  故f在4.38kHz~25kHz    

方波的幅值

     U1=Uz(Uz为稳压二极管的稳压值)

三角波的幅值

     U2=R7·Uz/R2

       

3.3器件说明

在实践过程中,我们用OP07CP来代替上面电路图中的运放。

Op07芯片是一种低噪声,非斩波稳零的双极性(双电源供电)运算放大器集成电路。由于OP07具有非常低的输入失调电压(对于OP07A最大为25μV),所以OP07在很多应用场合不需要额外的调零措施。OP07同时具有输入偏置电流低(OP07A为±2nA)和开环增益高(对于OP07A为300V/mV)的特点,这种低失调、高开环增益的特性使得OP07特别适用于高增益的测量设备和放 大传感器的微弱信号等方面。

特点:超低偏移: 150μV最大。 低输入偏置电流: 1.8nA 。低失调电压漂移: 0.5μV/℃ 。 超稳定,时间: 2μV/month最大高电源电压范围: ±3V至±22V。

                    图3.芯片OP07管脚图

              

                   OP07功能引脚的说明:

                   1和8为偏置平衡(调零端);

                   2为反向输入端;

                   3为正向输入端;

                   4接地;

                   5空脚;

                   6为输出;

                   7为电源。

3.4电路的仿真

3.4.1仿真软件的介绍

   NI Multisim软件结合了直观的捕捉和功能强大的仿真,能够快速、轻松、高效地对电路进行设计和验证。凭借NI Multisim,您可以立即创建具有完整组件库的电路图,并利用工业标准SPICE模拟器模仿电路行为。借助专业的高级SPICE分析和虚拟仪器,您能在设计流程中提早对电路设计进行的迅速验证,从而缩短建模循环。与NI LabⅥEW和SignalExpress软件的集成,完善了具有强大技术的设计流程,从而能够比较具有模拟数据的实现建模测量。

3.4.2仿真结果

正弦波仿真结果如下:

在仿真过程中,由于R5默认初始值在50%,仿真中波形失真,调节R5,约在30%的时候,波形开始不失真。

此时,仿真波形的频率f≈1.59KHz。

起振的幅值Rf/R1≈2.12>2,符合起振条件。

当R5小于或等于20%时,Rf/R1<2,电路不能起振。

                             图4.正弦波仿真结果图

三角波仿真结果如下:

      根据仿真结果,可得此时三角波的频率f=5kHz

      因为三角波的幅值 U=R7·Uz/R2,所以调节R7可改变三角波的幅值

      当R7为50%时,此时R7的幅值为0.82V

                              图5.三角波的仿真结果图

方波仿真结果如下:

根据仿真结果,此时方波的频率f=1KHz。

因为方波的幅值为稳压二极管的稳压值,所以U=10.43V。

RW为50%时,电路的振荡频率为14.16KHz。此时占空比约为40%。

                                  图6.方波的仿真结果图

4.电路的制作与调试

4.1电路的安装

根据上面的原理图,可以在面包板上进行元器件的制作与调试。

在对电路的制作时,先将核心元件芯片OP07插入槽中,对芯片的插入,两边管脚在凹槽的两边。根据原理图从左到右的顺序,将电阻,电容,滑动变阻器依次插入面包板中。根据横向短路,竖向不相关的原理,调整电路图。

对于接地线,将所有地线同时导入到最边缘的插孔中,同时用导线连到电路箱的接地端。电源连接到电路箱的电源端。

图7.电路的安装结果图

4.2电路调试

在电路的的调试中,刚接入电源和示波器中时,正弦波失真。由于R5的初始值在50%,调节滑动变阻器R5,达到一定数值时波形开始不失真,再度调小时,正弦波慢慢变成一条直线。

在调试三角波和方波时,示波器显示失真,利用万用表检验元件实际值,如下。

                    表.1元器件的实测值

根据原理图,Rf值应为2.7k欧姆,重新选取电阻插入面包板。由于碳膜电阻没有固定2.7k,利用两个2K和0.5K的电阻串联。

4.3结果显示

方波波形

根据示波器读数,方波的频率f=987Hz。方波的幅值为10.23V,调节Rw,可改变电路的振荡频率,方波的占空比。电路的振荡频率在5.2Hz~24.4kHz之间

                                图8.方波显示图

三角波波形 

    根据示波器,可得此时三角波的频率f=5.2kHz。

因为三角波的幅值 U=R7·Uz/R2,所以调节R7可改变三角波的幅值。R7/R2在0~0.45之间,故可得三角波的幅值在0~0.522V之间。

     

图9.三角波显示图

正弦波波形

根据示波器读数,调节Rf,即调节滑动变阻器R5达到一定值后,使起振的幅值Rf/R1>2,符合起振条件,电路开始起振。电路的的频率取决于RC,频率f≈1.48KHz。为了可以改变电路的频率,将R改成最大量程为20K的滑动变阻器,此时可以调节电路的频率。

 

                               图10.正弦波显示图                                   

                   

                         5.小结

一.文氏电桥振荡器,这种RC桥式振荡器可以产生正弦波,在电路中,利于两个反向并联稳压二极管可以实现稳幅,同时也可以再并联个电阻,该电阻可以削弱稳压二极管的非线性影响,便于改善波形失真的状况。

二.利于滞回比较器和积分器构成的方波和三角波发生器。把滞回比较器和积分器的首尾相连形成正反馈闭环系统。比较器可输出方波,方波经积分电路可产生三角波。同时可以将积分电路的输出一支连到积分电容的输入,这样一样可以实现恒流充电,使原本线性度较差的三角波得到改善。在电路的设计中,可重分利用闭环系统,改善原本较弱的一环。

三.在面包板连接电路的接地时,倘若是接地端连在一行然后导入接地,可能会导致线路之间的互相影响,使波形不够稳定。一般来说,尽量将电路中接地端分别接地,以达电路的最佳状态。

                        6.参考文献

[1]王港元 编 《电工电子实践指导》 20##年2月   江西科学技术出版社

[2]华成英 童诗白 编 《模拟电子技术基础》 20##年5月  高等教育出版社

[3]王永洪 编 《线性集成运算放大器及其应用》 1989年2月  机械工业出版社

[4]张郁弘 庄灿涛 著 《晶体管运算放大器及其应用》1978年9月  国防工业出版社

[5]谢嘉奎 宣月清 冯军 编 《电子线路(线性部分)》 1999年6月 高等教育出版社

附录一:电路原理图

                  

附录二:元器件清单

     

          

 

第二篇:基于单片机的函数信号发生器课程设计(毕业设计)完整版

                                         

电子与信息工程学院

综合实验课程报告

课题名称    基于单片机的函数信号发生器                         

专    业    电子信息工程                         

班    级    07电子1班                         

学生姓名                               

学    号                            

指导教师    宋杨老师                           

          

               20##年   7   月   5  日

摘  要

本文介绍一种用AT89C51单片机构成的波形发生器,可产生方波、三角波、正弦波、锯齿波等多种波形,波形的周期可用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、性能优越等特点。文章给出了源代码,通过仿真测试,其性能指标达到了设计要求。

关键词:单片机;DAC;信号发生器


目  录

摘  要...............................................................

目  录...............................................................

第一章 绪论..........................................................

1.1单片机概述......................................................

1.2信号发生器的分类................................................

1.3研究内容........................................................

第二章 方案的设计与选择..............................................

2.1方案的比较......................................................

2.2设计原理........................................................

2.3设计思想........................................................

2.4设计功能........................................................

第三章 硬件设计......................................................

3.1硬件原理框图....................................................

3.2主控电路........................................................

3.3数、模转换电路..................................................

3.4按键接口电路....................................................

3.5时钟电路........................................................

3.6显示电路........................................................

第四章 软件设计......................................................

4.1程序流程图......................................................

第五章 总结与展望....................................................

致  谢...............................................................

参考文献.............................................................

附录1电路原理图.....................................................

附录2 源程序........................................................

附录 3 器件清单......................................................


第一章 绪论

1.1单片机概述

随着大规模集成电路技术的发展,中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、(I/O)接口、定时器/计数器和串行通信接口,以及其他一些计算机外围电路等均可集成在一块芯片上构成单片微型计算机,简称为单片机。单片机具有体积小、成本低,性能稳定、使用寿命长等特点。其最明显的优势就是可以嵌入到各种仪器、设备中,这是其他计算机和网络都无法做到的[9,10]

1.2信号发生器的分类

信号发生器应用广泛,种类繁多,性能各异,分类也不尽一致。按照频率范围分类可以分为:超低频信号发生器、低频信号发生器、视频信号发生器、高频波形发生器、甚高频波形发生器和超高频信号发生器。按照输出波形分类可以分为:正弦信号发生器和非正弦信号发生器,非正弦信号发生器又包括:脉冲信号发生器,函数信号发生器、扫频信号发生器、数字序列波形发生器、图形信号发生器、噪声信号发生器等。按照信号发生器性能指标可以分为一般信号发生器和标准信号发生器。前者指对输出信号的频率、幅度的准确度和稳定度以及波形失真等要求不高的一类信号发生器。后者是指其输出信号的频率、幅度、调制系数等在一定范围内连续可调,并且读数准确、稳定、屏蔽良好的中、高档信号发生器。

1.3 研究内容

本文是做基于单片机的信号发生器的设计,将采用编程的方法来实现三角波、锯齿波、矩形波、正弦波的发生。根据设计的要求,对各种波形的频率和幅度进行程序的编写,并将所写程序装入单片机的程序存储器中。在程序运行中,当接收到来自外界的命令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。    


第二章 方案的设计与选择

2.1 方案的比较

方案一:采用单片函数发生器(如8038),8038可同时产生正弦波、方波等,而且方法简单易行,用D/A转换器的输出来改变调制电压,也可以实现数控调整频率,但产生信号的频率稳定度不高。

方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。

方案三:采用单片机编程的方法来实现。该方法可以通过编程的方法来控制信号波形的频率和幅度,而且在硬件电路不变的情况下,通过改变程序来实现频率的变换。此外,由于通过编程方法产生的是数字信号,所以信号的精度可以做的很高。

鉴于方案一的信号频率不够稳定和方案二的电路复杂,频率覆盖系数难以达标等缺点,所以决定采用方案三的设计方法。它不仅采用软硬件结合,软件控制硬件的方法来实现,使得信号频率的稳定性和精度的准确性得以保证,而且它使用的几种元器件都是常用的元器件,容易得到,且价格便宜,使得硬件的开销达到最省。

2.2 设计原理

数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及其接口、显示器及其接口、数模转换及波形输出、指示灯及其接口等四部分,即可构成所需的波形发生器,其信号发生器构成原理框图如图2.1所示。

 

                          

图2.1  信号发生器原理框图

89C51是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号幅度的调节。当数字信号经过接口电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。


2.3 设计思想

(1)利用单片机产生方波、正弦波、三角波和锯齿波等信号波形,信号的频率和幅度可变。

(2)将一个周期的信号分离成256个点(按X轴等分),每两点之间的时间间隔为T,用单片机的定时器产生,其表示式为:T=T/256。

如果单片机的晶振为12MHz,采用定时器方式0,则定时器的初值为:

                         X=213T/Tmec                                  (2.1)

                                        

定时时间常数为:

                     TL =(8192—T)/MOD256                           (2.2)

TH=(8192T)/256                                  (2.3)

MOD32表示除32取余数

(3)正弦波的模拟信号是D/A转换器的模拟量输出,其计算公式为:

                         Y=(A/2sint)+A/2   (其中A=VREF)                 (2.4)

                        t=NT             (N=1~256)                      (2.5)

那么对应着存放在计算机里的这一点的数据为:                    

                                                                             (2.6)    (4)一个周期被分离成256个点,对应的四种波形的256个数据存放在以TAB1--TAB4为起始地址的存储器中。

2.4 设计功能

(1)本方案利用8155扩展8个独立式按键,6个LED显示器。其中“S0”号键代表方波输出,“S1”号键代表正弦波输出,“S2”号键代表三角波输出,“S3” 号键代表锯齿波输出。

(2)“S4”号键为10Hz的频率信号,“S5”号键为100Hz的频率信号,“S6”号键为500Hz的频率信号,“S7”号键为1KHz的频率信号,6个LED显示器输出信号的频率值,选用共阳极LED。

(3)利用两片DAC0832实现幅度可调的信号源,(其中一片用来调节幅度,另外一片用来实现信号源的输出)。

(4)频率范围:10~1000Hz。

(5)输出波形幅度为0~5V。


第三章 硬件设计

3.1 硬件原理框图

硬件原理方框图如图3.1所示。

 

图3.1  硬件原理框图

3.2 主控电路

AT89C51单处机内部设置两个16位可编程的定时器/计数器T0和T1,它们具有计数器方式和定时器方式两种工作方式及4种工作模式。在波形发生器中,将其作定时器使用,用它来精确地确定波形的两个采样点输出之间的延迟时间。模式1采用的是16位计数器,当T0或T1被允许计数后,从初值开始加计数,最高位产生溢出时向CPU请求中断。

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

如图3.2所示,AT89C51从P0口接收来自键盘的信号,并通过P2口输出一些控制信号,将其输入到8155的信号控制端,用于控制其信号的输入、输出。如果有键按下,则在读控制端会产生一个读信号,使单片机读入信号。如果有信号输出,则在写控制端产生一个写信号,并将所要输出的信号通过8155的PB口输出,并在数码管上显示出来。


图3.2  主控电路图

3.3 数/模转换电路

由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以该文选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。但实际上,DAC0832输出的电量也不是真正能连续可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。DAC0832是电流型输出,在应用时外接运放使之成为电压型输出。

由图3.3可知,DAC0832的片选地址为7FFFH,当P25有效时,若P0口向其送的数据为00H, 则U1 的输出电压为0V;若P0口向其送的数据为0FFH时, 则U1的输出电压为-5V. 故当U1 输出电压为0V时,由公式                  得:Vout = - 5V.当输出电压为- 5V时,可得:Vout = +5V,所以输出波形的电压变化范围为- 5V~+ 5V. 故可推得,当P0所送数据为80H时,Vout为0V[4]

 


图3.3  数模转换电路


3.4 按键接口电路

图3.4为键盘接口电路的原理图,图中键盘和8155的PA口相连,AT89C51的P0口和8155的D0口相连,AT89C51不断的扫描键盘,看是否有键按下,如有,则根据相应按键作出反应。其中“S0”号键代表方波输出,“S1”号键代表正弦波输出,“S2”号键代表三角波输出。 “S3”号键代表锯齿波输出,“S4”号键为10Hz的频率信号,“S5”号键为100Hz的频率信号,“S6”号键为500Hz的频率信号,“S7”号键为1KHz的频率信号[3]

   图3.4  按键接口

3.5 时钟电路

8051单片机有两个引脚(XTAL1,XTAL2)用于外接石英晶体和微调电容,从而构成时钟电路,其电路图如图3.5所示。

电容C1、C2对振荡频率有稳定作用,其容量的选择为30pf,振荡器选择频率为12MHz的石英晶体。由于频率较大时,三角波、正弦波、锯齿波中每一点的延时时间为几微秒,故延时时间还要加上指令时间才能获得较大的频率波形[9]

     图3.5  时钟电路


3.6 显示电路

显示电路是用来显示波形信号的频率,使得整个系统更加合理,从经济的角度出发,所以显示器件采用LED数码管显示器。而且LED数码管是采用共阳极接法,当主控端口输出一个低电平后,与其相对应的数码管即变亮,显示所需数据。其器件模型如图3.6所示。

 

图3.6  LED显示电路


第四章  软件设计

4.1 程序流程图

本文中子程序的调用是通过按键的选择来实现,在取得按键相应的键值后,启动计时器和相应的中断服务程序,再直接查询程序中预先设置的数据值,通过转换输出相应的电压,从而形成所需的各种波形。

主程序的流程图如图4.1所示,在程序开始运行之后,首先是对8155进行初始化,之后判断信号频率值,如符合所需的频率,则重置时间常数,并通过显示器显示出来,不符则返回。在中断结束后,还要来判断波形是否符合,如符合,则显示其频率,不符则返回,重新判断。

图4.1  主程序流程图


图4.2为各波形子程序的流程图。如图所示,在中断服务子程序开始后,通过判断来确定各种波形的输出,当判断选择的不是方波后,则转向对正弦波的判断,如此反复。如果选择的是方波,则用查表的方法求出相应的数据,并通过D/A转换

器将数据转换成模拟信号,形成所需波形信号。

图4.2  子程序流程图


综合实验总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在好几个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在宋阳老师的辛勤指导下,终于游逆而解。同时,在宋阳老师那里我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!


参考文献

[1] 程全.基于AT89C52实现的多种波形发生器的设计[J].周口师范学院学报,2005.22(5):57~58.

[2] 周明德.微型计算机系统原理及应用[M].北京:清华大学出版社,2002.341~364.

[3] 刘乐善.微型计算机接口技术及应用[M].北京:北京航空航天大学出版社,2001.258~264.

[4] 童诗白.模拟电路技术基础[M].北京:高等教育出版社,2000.171~202.

[5] 杜华.任意波形发生器及应用[J].国外电子测量技术,2005.1:38~40.

[6] 张友德.单片微型机原理、应用与实践[M].上海:复旦大学出版社,2004.40~44.

[7] 程朗.基于8051单片机的双通道波形发生器的设计与实现[J].计算机工程与应用,2004.8:100~103.

[8] 张永瑞.电子测量技术基础[M].西安:西安电子科技大学出版社,2006.61~101.

[9] 李叶紫. MCS-51单片机应用教程[M].北京:清华大学出版社,2004.232~238.

附录1 电路原理图

附录2 源程序

源程序:

ORG  0000H

AJM  MAIN

ORG  000BH

LJMP  TC0

ORG  0030H

MAIN:MOV  DPTR,#9FFFH                指向DAC0832(1)

MOV  A,70H

MOVX  @DPTR,A                          DAC0832(1)输出

MOV  DPTR,#7F00H                        指向8155命令字端口地址

MOV  A,#06H                              设置A口为输入,B口、C口为输出

MOVX  @DPTR,A                          送命令字

MOV  DPTR,#7F01H                        指向A口地址

MOVX  A,@DPTR                          读入A口的开关数据

JNB   ACC.4,K10H                         判断是否“4”号键,若是则转输出10Hz信号

JNB   ACC.5,K100H                        判断是否“5”号键,若是则转输出100Hz信号

JNB   ACC.6,K500H                        判断是否“6”号键,若是则转输出500Hz信号

JNB   ACC.7,K1K                          判断是否“7”号键,若是则转输出1KHz信号

AJMP  MAIN

LED1: MOV R3,#06H                      设置6个LED显示

MOV  R2,#01H                             选通第一位LED数据

MOV  R1,#30H                             送显示缓冲区首址

GN1:MOV  DPTR,#7F03H                  指向C口地址

MOV  A,R2                                位选通数据送A

MOVX  @DPTR,A                          位选通数据送C口

RL  A                                       选通下一位

MOV  R2,A                                位选通数据送R2中保存


MOV  A, @R1                             取键值

MOV  DPTR,#TAB                         送LED显示软件译码表首址

MOVC  A,@A+DPTR                       查表求出键值显示的段码

MOV   DPTR,#7F02H                       指向B口地址

MOV   @DPTR,A                          段码送显示

LCALL  LOOP1                             调延时子程序

INC  R1                                    指向下一位显示缓冲区地址

DJNZ  R3,GN1                             循环显示6个LED

RET

LOOP1:MOV  R4,#08H                    延时子程序

LOOP:MOV   R5,#0A0H

DJNZ  R5,$

DJNZ  R4,LOOP

RET

K10H:MOV  30H,#00H                   显示10Hz

MOV  31H,#00H

MOV  32H,#00H

MOV  33H,#00H

MOV  34H,#01H

MOV  35H,#00H

LCALL  LED1                            调显示子程序

MOV  TMOD,#00H

MOV  TL0,#15H

MOV  TH0,#9EH

AJMP  PD

K100H:MOV  30H,#00H                 显示100Hz

MOV  31H,#00H

MOV  32H,#00H

MOV  33H,#01H

MOV  34H,#00H


MOV  35H,#00H

LCALL  LED1                          调显示子程序

MOV  TMOD,#00H

MOV  TL0,#08H

MOV  TH0,#0F6H

AJMP  PD

K500H:MOV  30H,#00H               显示500Hz

MOV  31H,#00H

MOV  32H,#00H

MOV  33H,#05H

MOV  34H,#00H

MOV  35H,#00H

LCALL  LED1                         调显示子程序

MOV  TMOD,#00H

MOV  TL0,#01H

MOV  TH0,#0FEH

AJMP  PD

K1K:MOV  30H,#00H                显示1KHz

MOV  31H,#00H


MOV  32H,#01H

MOV  33H,#00H

MOV  34H,#00H

MOV  35H,#00H

LCALL  LED1                        调显示子程序

MOV  TMOD,#00H

MOV  TL0,#01H

MOV  TH0,#0FFH

PD:JNB  ACC.0,KE0               判断是否“0”号键按下,若是则转方波输出

JNB  ACC.1,KE1                   判断是否“1”号键按下,若是则转正弦方波输出

JNB  ACC.2,KE2                   判断是否“2”号键按下,若是则转三角波输出

JNB  ACC.3,KE3                   判断是否“3”号键按下,若是则转锯齿波输出

LJMP  PD

KE0:MOV  R7,#00H

LCALL  LED1                     调显示子程序

MOV  R6,#00H

AJMP  GN

KE1:MOV  R7,#02H

LCALL  LED1                     调显示子程序

MOV  R6,#00H

AJMP  GN

KE2:MOV  R7,#02H

LCALL  LED1                     调显示子程序

MOV  R6,#00H

AJMP  GN                        

KE3:MOV  R7,#02H

LCALL  LED1                      调显示子程序

MOV  R6,#00H

GN: SETB TR0

SETB  ET0

SETB  EA

LOP1:JNB  ACC.4,K10H          判断是否“4”号键,若是则转输出10Hz信号

JNB  ACC.5,K100H                判断是否“5”号键,若是则转输出100Hz信号

JNB  ACC.6,K500H                判断是否“6”号键,若是则转输出500Hz信号


JNB  ACC.7,K1K                  判断是否“7”号键,若是则转输出1KHz信号

AJMP  LOP1

TC0:CJNE  R7,#00H,TC1        发送方波程序

MOV  DPTR,#TAB1               送方波数据表首址

MOV   A,R6                     发送数据寄存器

MOVC  A,@A+DPTR

MOV  DPTR,#0AFFFH             指向DAC0832(2)

MOVX  @DPTR,A                 DAC0832(2)输出

MOV  A,R6

INC  A

MOV  R6,A

CJNE  A,#32,QL1

MOV  R6,#00H

AJMP  QL1

TC1:CJNE  R7,#01H,TC2          发送正弦波程序

MOV  DPTR,#TAB2                 送正弦波数据表首址

MOV  A,R6

MOVC  A, @A+DPTR

MOV  DPTR,#0AFFFH              指向DAC0832(2)

MOVX  @DPTR,A                  DAC0832(2)输出

MOV  A,R6

INC  A

MOV  R6,A

CJNE  A,#32,QL1

MOV  R6,#00H

AJMP  QL1

TC2:CJNE  R7,#02H,QL1          发送三角波程序

MOV  DPTR,#TAB3                 送三角波数据表首址

MOV  A,R6

MOVC  A,@A+DPTR


MOV  DPTR,#0AFFFH              指向DAC0832(2)

MOVX  @DPTR,A                 DAC0832(2)输出

MOV  A,R6

INC  A

MOV  R6,A

CJNE  A,#32,QL1

MOV  R6,#00H

AJMP  QL1

TC3::CJNE  R7,#03H,QL1         发送锯齿波程序

MOV  DPTR,#TAB4                 送锯齿波数据表首址

MOV  A,R6

MOVC  A, @A+DPTR

MOV  DPTR,#0AFFFH              指向DAC0832(2)

MOVX  @DPTR,A                 DAC0832(2)输出

MOV  A,R6

INC  A

MOV  R6,A

CJNE  A,#32,QL1

MOV  R6,#00H

QL1: RETI

TAB:   DB 0C0H,0F9H,0A4H,0B0H,99H,82H,0F8H,80H

TAB1:  DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

         DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH

         DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H


         DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

         DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

TAB2:    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

TAB3:    DB  00H,02H,04H,06H,08H,0AH,0CH,0EH

           DB  10H,12H,14H,16H,18H,1AH,1CH,1EH

           DB  20H,22H,24H,26H,28H,2AH,2CH,2EH

           DB  30H,32H,34H,36H,38H,3AH,3CH,3EH

           DB  40H,42H,44H,46H,48H,4AH,4CH,4EH

           DB  50H,52H,54H,56H,58H,5AH,5CH,5EH

           DB  60H,62H,64H,66H,68H,6AH,6CH,6EH

           DB  70H,72H,74H,76H,78H,7AH,7CH,7EH

           DB  80H,82H,84H,86H,88H,8AH,8CH,8EH

           DB  0A0H,0A2H,0A4H,0A6H,0A8H,0AAH,0ACH,0AEH

           DB  0B0H,0B2H,0B4H,0B6H,0B8H,0BAH,0BCH,0BEH

           DB  0C0H,0C2H,0C4H,0C6H,0C8H,0CAH,0CCH,0CEH

           DB  0D0H,0D2H,0D4H,0D6H,0D8H,0DAH,0DCH,0DEH

           DB  0E0H,0E2H,0E4H,0E6H,0E8H,0EAH,0ECH,0EEH

           DB  0F0H,0F2H,0F4H,0F6H,0F8H,0FAH,0FCH,0FEH

           DB  0FFH,0FEH,0FCH,0FAH,0F8H,0F6H,0F4H,0F2H

           DB  0F0H,0EEH,0ECH,0EAH,0E8H,0E6H,0E4H,0E2H


           DB  0E0H,0DEH,0DCH,0DAH,0D8H,0D6H,0D4H,0D2H

           DB  0D0H,0CEH,0CCH,0CAH,0C8H,0C6H,0C4H,0C2H

           DB  0C0H,0BEH,0BCH,0BAH,0B8H,0B6H,0B4H,0B2H

           DB  0B0H,0AEH,0ACH,0AAH,0A8H,0A6H,0A4H,0A2H

           DB  0A0H,09EH,9CH,9AH,98H,96H,94H,92H

           DB  90H,8EH,8CH,8AH,88H,86H,84H,82H

          DB  80H,7EH,7CH,7AH,78H,76H,74H,72H

          DB  70H,6EH,6CH,6AH,68H,66H,64H,62H

          DB  60H,5EH,5CH,5AH,58H,56H,54H,52H

          DB  50H,4EH,4CH,4AH,48H,46H,44H,42H

          DB  40H,3EH,3CH,3AH,38H,36H,34H,32H

          DB  30H,2EH,2CH,2AH,28H,26H,24H,22H

          DB  20H,1EH,1CH,1AH,18H,16H,14H,12H

          DB  10H,0EH,0CH,0AH,08H,06H,04H,02H

TAB4:   DB 00H,01H,02H,03H,04H,05H,06H,07H

          DB 08H,09H,0AH,0BH,0CH,0DH,0EH,0FH

          DB 10H,11H,12H,13H,14H,15H,16H,17H

          DB 18H,19H,1AH,1BH,1CH,1DH,1EH,1FH

          DB 20H,21H,22H,23H,24H,25H,26H,27H

          DB 28H,29H,2AH,2BH,2CH,2DH,2EH,2FH

          DB 30H,31H,32H,33H,34H,35H,36H,37H

          DB 38H,39H,3AH,3BH,3CH,3DH,3EH,3FH

          DB 40H,41H,42H,43H,44H,45H,46H,47H

          DB 48H,49H,4AH,4BH,4CH,4DH,4EH,4FH

          DB 50H,51H,52H,53H,54H,55H,56H,57H

          DB 58H,59H,5AH,5BH,5CH,5DH,5EH,5FH

          DB 60H,61H,62H,63H,64H,65H,66H,67H

          DB 68H,69H,6AH,6BH,6CH,6DH,6EH,6FH

          DB 70H,71H,72H,73H,74H,75H,76H,77H

          DB 78H,79H,7AH,7BH,7CH,7DH,7EH,7FH


          DB 80H,81H,82H,83H,84H,85H,86H,87H

          DB 88H,89H,8AH,8BH,8CH,8DH,8EH,8FH

          DB 90H,91H,92H,93H,94H,95H,96H,97H

          DB 98H,99H,9AH,9BH,9CH,9DH,9EH,9FH

          DB 0A0H,0A1H,0A2H,0A3H,0A4H,0A5H,0A6H,0A7H

          DB 0A8H,0A9H,0AAH,0ABH,0ACH,0ADH,0AEH,0AFH

          DB 0B0H,0B1H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7H

          DB 0B8H,0B9H,0BAH,0BBH,0BCH,0BDH,0BEH,0BFH

          DB 0C0H,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C7H

          DB 0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEH,0CFH

          DB 0D0H,0D1H,0D2H,0D3H,0D4H,0D5H,0D6H,0D7H

          DB 0D8H,0D9H,0DAH,0DBH,0DCH,0DDH,0DEH,0DFH

          DB 0E0H,0E1H,0E2H,0E3H,0E4H,0E5H,0E6H,0E7H

          DB 0E8H,0E9H,0EAH,0EBH,0ECH,0EDH,0EEH,0EFH

          DB 0F0H,0F1H,0F2H,0F3H,0F4H,0F5H,0F6H,0F7H

          DB 0F8H,0F9H,0FAH,0FBH,0FCH,0FDH,0FEH,0FFH

END

                

                  附录3 器件清单

1.  89C51芯片..................................................1个

2.  8155芯片....................................................1个

3.  DAC0832芯片...........................................2个

4.  3PF电容....................................................10个

5.  12MHZ晶振.............................................1个

6.  8位拨码开关................................................1个

7. 万能版............................................................1个

8.  3位显示管....................................................2个

9. 运算放大器358...............................................2个   

相关推荐