基于单片机的函数信号发生器毕业设计.docx

上传人:b****3 文档编号:5346215 上传时间:2022-12-15 格式:DOCX 页数:19 大小:438.26KB
下载 相关 举报
基于单片机的函数信号发生器毕业设计.docx_第1页
第1页 / 共19页
基于单片机的函数信号发生器毕业设计.docx_第2页
第2页 / 共19页
基于单片机的函数信号发生器毕业设计.docx_第3页
第3页 / 共19页
基于单片机的函数信号发生器毕业设计.docx_第4页
第4页 / 共19页
基于单片机的函数信号发生器毕业设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

基于单片机的函数信号发生器毕业设计.docx

《基于单片机的函数信号发生器毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的函数信号发生器毕业设计.docx(19页珍藏版)》请在冰豆网上搜索。

基于单片机的函数信号发生器毕业设计.docx

基于单片机的函数信号发生器毕业设计

 

本科毕业设计

 

题目基于单片机的函数信号发生器

学院工学院

专业农业电气化及自动化

毕业届别二〇一一届

姓名

指导老师杨

职称讲师

 

北京农业大学教务处制

二〇一一年六月

目录

第一章绪论4

1.1设计背景及意义4

第二章整体设计6

2.1设计思路6

2.2系统硬件设计7

第三章单片机AT89S51介绍8

3.1单片机的选择8

3.2AT89S51主要性能8

3.3AT89S51主要特点8

第四章硬件设计10

4.1信号发生部分8

4.2频率计数器部分10

4.2.1利用AT89S51计数10

4.3放大电路11

4.4LED显示器12

4.4.1数码管的选择12

4.4.2数码管段驱动芯片74LS57314

4.4.3键盘电路设计15

第五章程序设计17

5.1信号频率数据采集程序17

5.1.1程序设计的语言15

5.2程序设计16

5.3正弦波的产生17

5.4方波的产生17

5.4.1方波流程图17

5.4.2程序设计18

5.5锯齿波的产生18

5.5.1锯齿波产生的流程图19

5.5.2锯齿波程序设计19

5.6键盘程序设计22

5.6.1键盘扫描程序22

5.6.2 键盘处理程序设计24

5.7数码管程序设计25

设计总结25

参考文献26

致谢28

 

基于单片机的函数信号发生器

谁谁谁

(北京农业大学工学院2007级农业电气化与自动化)

摘要:

函数(波形)信号发生器能产生某些特定的周期性时间函数波形(正弦波、方波、三角波、锯齿波和脉冲波等)信号。

它在军事方面,如航天飞机的飞行控制、卫星陀螺仪的控制以及导弹发射架的起降控制等。

在民用方面,如在生产制造以及一些厂矿企业,对电机的正反转的控制,以及工厂机器人和机械手的控制等。

所以说函数信号发生在军事国防和现代化工业生产上也具有广泛地应用前景。

而本系统就能够产生正弦波、方波、三角波,同时还可以作为频率计测频率。

函数信号的产生由MAX038、AT89S51和外围电路完成,能产生1HZ---20MHZ的波形。

当我们通过,相应的按键输入时,所产生模拟信号,通过单片机的计算和相应的程序语言环境下,由数码显示器进行显示。

操作方便、维护简单、可靠性性高,因此对环境的适应能力相当强。

本文在针对现有的函数信号发生器基础上,将单片机等电子元器件常规控制,通过合理的选择和设计,大大提高控制水平以及控制精度,使函数信号发生器达到较为理想的运行效果。

在介绍单片机基本结构的基础上,深入分析单片机的工作原理,阐述单片机的特点和优点,重点分析单片机的硬件设计和软件设计,研究分析并提出基于单片机的函数信号发生器设计的实现方案,最后对本论文进行总结。

关键词:

单片机、波形产生器、MAX038、AT89S51

 

 

第一章绪论

1.1设计背景及意义

对于函数信号发生器来说,一般常用模拟电子器件构成电路,在终端接上显示器。

当接通电源时,来进行对各种波形来模拟。

可是用模拟电子器件来进行对函数信号的模拟,会有很多的缺点,比如:

首先,电路设计较为复杂,需要进行大规模的计算及实验,无法进行预估,容易出错;其次,花费较大;最后,电路连接的导线等在通电后容易产生较大的电磁,导致相互影响,从而使得模拟出来的函数信号,有着相当大的误差,继而人们需要加装相应的滤波电路等代价太大。

进入二十一世纪以来,随着科学技术的发展和计算机技术的发展单片机技术的发展与成熟。

单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条地执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作。

因此单片机具有以下几个特点:

 1、单片机集成度高。

单片机包括CPU、4KB容量的ROM(8031无)、128B容量的RAM、2个16位定时/计数器、4个8位并行口、全双工串口行口;2、系统结构简单,使用方便,实现模块化;3、单片机可靠性高,可工作到10^6~10^7小时无故障;4、处理功能强,速度快。

根据以上的特点,单片机应用于军事方面和民用方面。

例如,在军事方面上的导弹导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输等;在民用方面上的工业自动化过程的实时控制和数据处理。

由于单片机的具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。

采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。

例如精密的测量设备(功率计,示波器,各种分析仪);现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等;在某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。

如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。

如:

音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。

在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。

针对老旧的函数信号发生器的故障多,设计复杂,线路繁杂,功耗大,性价比低的缺点。

从而提出采用功能多,可靠性强,线路设计简单,性价比高的基于单片机的函数信号发生器。

 

第二章整体设计

2.1设计思路

本函数信号发生器是由MAX038芯片产生我们希望输出的正弦波、三角波。

它是本制作的核心,当然随带的频率计用于显示输出频率,它是由单片机AT89S51控制的,由于用单片机所能测的频率范围有限,直接所计数的频率最大只能达到500KHZ,为了能够测得更高的频率,所以加上分频器进行分频后再加到AT89S51的外部中断入口。

考虑到小信号时,所以必须加放大,然后整形才能达到分频器的输入要求。

至于显示部分就用芯片74S573驱动数码管显示。

2.2系统硬件设计

具体的系统(硬件设计)的框图,如下图所示:

数字信号可以通过数模转换电路来转换成模拟信号,因此可以通过产生数字信号在转换成模拟信号的方法来获得所需要的波形。

AT89S51单片机本身就是一个微型计算机。

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

 

第三章单片机AT89S51介绍

3.1单片机的选择

在选择单片机的时,应注意几点,第一、选择功能较为齐全的单片机;第二、选择价格低廉的,但性能优越的单片机;第三、选择可靠性高的,运算速度快的单片机;第四、选择符合我们所掌握知识的单片机。

通过查阅资料,我选择了性能较为丰富的51系列单片机AT89S5(见图)。

图3

3.2AT89S51主要性能

AT89S51有PDIP、PLCC、TQFP三种封装方式,其中最常见的就是采用40pin封装的双列直接PDIP封装。

芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口(见图)左边那列引脚逆时针数起,依次为1、2、3、4等直到40,其中芯片的1脚顶上有个凹点(见图)。

在单片机的40个引脚中。

电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8位可编程I/O引脚32根。

3.3AT89S51主要特点

与MCS-51产品指令系统完全兼容;4K字节在系统编程(ISP)Flash闪速存储器;1000次擦写周期;4.0-5.5V的工作电压范围;全静态工作模式:

0HZ-33MHZ;三级程序加密锁;128*8字节内部RAM;32个可编程I/O口线;2个16位定时/计数器;6个中断源;全双工串行UART通道;低功耗空闲模式唤醒系统;看门狗(WDT)及双数据指针;掉电标识和快速编程特性;灵活的在系统编程(ISP字节或页面模式);标准的51单片机有32根可编程I/O口线;外接晶振引脚(2根):

1.XTAL1(pin19):

片内振荡电路的输入端、2.XTAL2(pin20):

片内振荡电路的输出端;控制引脚(1根)RST/VPP(pin9),

(1)复位引脚,引脚上出现2个机器周期的高电平将使单片机复位;可编程输入/输出引脚(15根);主电源引脚(2根),

(1)VCC(pin40)电源输入接+5V的电源、

(2)GND(pin20)接地线。

 

 

第四章硬件设计

4.1信号发生部分

在接通电源控制在输出状态,此时波形所产生的电路工作,它产生我所选择的波形并输出到外部电路,另一部分则送入计数器。

波形发生器的这部分电路是由MAX038及其外围电路完成的。

经查资料MAX038是一个精密高频波形产生器。

它能够产生频率高达20MHZ的正弦波、三角波、方波等脉冲信号,其压振荡器的频率分粗调和细调两层控制。

另外MAX038还包括占空比调整电路、波形同步电路、相位检测电路、波形切换开关和电压基准源等电路,所需外部元件少,使用很方便,如下图所示:

图4

图5

本系统采用MAX038设计了输出三角波、方波和正弦波的函数信号发生器,能够满足大多数实验与检测的需求(见上图)。

整机电路由信号产生级、电压放大级、功率输出级和电源四部分组成。

信号产生级的核心部件MAX038,它的输出有三种,有波形设定端AO和A1控制,其中1为高电平,0为低电平。

MAX038的输出频率f0由Iin,FADJ端电压和住振荡器COSC的外接电容器cf三者共同确定。

当UFDA=0V时,输出频率f0=Iin/rin=2.5/rin.当UFAD不等于0V时,输出频率f0=f(1-0.2915UFADJ).由波段开关SA2选择不同的CF值,将整个输出信号分为五个频段。

即:

1HZ---10HZ

10HZ—100HZ

100HZ—1KHZ

1KHZ—20MHZ

每段频率的调节由电位器RP1和RP2完成。

其中RP1为粗调电位器,改变RP1使振荡器电容器CF的充电电流Iin改变。

从而使频率改变。

RP2为细调节电位器,通过改变UFADJ的数值,输出频率变化,它的变化范围较小,起着微调的作用。

为了简化电路,则可使得各种波形的占空比固定比为百分之五十。

这已能满足多数场合的使用要求。

4.2频率计数器部分

4.2.1利用AT89S51计数

AT89S51单片机共有两个16位的定时器/计数器,本频率计就是利用它的定时器与计数器同时工作,外部输入的脉冲在下降沿跳变时有效,进行计数器加1,定时器定时一秒内计数器所计的数就是外部输入信号的频率,见下图所示。

由于单片机计算的频率的范围有限,必须切换调整在它的范围内,才能准确的计算频率。

控制是否经过100分频的电路,切换通过单片机控制完成。

<对于分频电路,在高频的时候,单片机不能直接读取,所以要通过分频电路进行分频再送到单片机进行计数。

本分频电路采用的是74LS390双十进制计数器进行分频的。

4.3放大电路

由于单片机计算的频率的范围有限,必须切换调整在它的范围内,才能准确的计算频率。

控制是否经过100分频的电路,切换通过单片机控制完成。

对于分频电路,在高频的时候,单片机不能直接读取,所以要通过分频电路进行分频再送到单片机进行计数。

本分频电路采用的是74LS390双十进制计数器进行分频的。

见下图所示

为了输入的是小信号时也能对精确的测出它的频率,所以在信号的输入口加电压放大。

有的输入的信号波形不是很好,放大后也是失真的信号,这就影响到所测信号的频率,因此要经过整形。

4.4LED显示器

4.4.1数码管的选择

本系统采用4位共阳极数码管进行显示。

而每位数码显示用4个发光二极管的阳极连接在一起(见下图所示)。

通常,公共阳极接高电平(一般接电源),其他管脚接段驱动电路输出端。

当某段驱动电路的电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。

此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

图9

4.4.2数码管段驱动芯片74LS573

74LS73芯片是一种常用的数码管译码器驱动器,常用在各种数字电路和单片机系统的显示系统中,具有门电路逻辑符号大全(三态门,同或门,异或门,或非门,与或非门,传输门,全加器,半加器等)常用集成门电路的逻辑符号对照表三态门,或门,异或门,或非门,与或非门,传输门,全加器,半加器,基本rs触发器,同步rs触发器,jk触发器,d触发器.

 

图10

4.4.3键盘电路设计

在本设计已经介绍了键盘的电路设计,在这里我将着重介绍矩阵式键盘电路。

(1)矩阵式键盘电路

矩阵式键盘电路是由行线和列线组成,按键位与行、列交叉点上,行、列线分别连接到按键开关的两端。

行线通过上拉电阻连接到+5V上。

平时无按键按下时,行线处于高电平状态,而当有按键按下时行线的电平状态将由与此行线相连的列线电平决定。

若列线的电平为低,则行线电平为低;若列线的水平为高,则行线的水平为高。

(2)矩阵式键盘的编码

对于矩阵式键盘,按键的位置有行号和列号唯一确定,所以分别对行、列号进行二进制编码,然后将两值合成一个字节,高四位是行号,低四位是列号。

所以无论以何种方式编码,最基本的是键所在的物理位置即行号和列号,它是各种编码的之间相互转换的基础,编码相互转换可以通过查表的方式来实现。

见下图所示

图11

 

第五章程序设计

5.1信号频率数据采集程序

本设计将各种波形的数据储存在单片机的程序储存器里,通过改变数据的输出速度来改变信号的频率,然后通过改变D/A转换器的参考点要求来改变信号的频率。

所以程序编辑,是本设计的灵魂。

为此本节介绍程序语言的选择和程序设计两部分内容。

5.1.1程序设计的语言

在所有的程序语言的设计中,我采用了c语言的。

因为C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。

许多著名的系统软件,如PC-DOS,DBASEⅣ都是由C语言编写的。

用C语言加上一些汇编语言子程序,就更能显示C语言的优势了。

归纳起来C语言具有下列特点:

1.C是中级语言

它把高级语言的基本结构和语句与低级语言的实用性结合起来。

C语言可以象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。

2.C是结构式语言

结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。

这种结构化方式可使程序层次清晰,便于使用、维护以及调试。

C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

3.C语言功能齐全

C语言具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。

另外C语言也具有强大的图形功能,支持多种显示器和驱动器。

而且计算功能、逻辑判断功能也比较强大,可以实现决策目的。

4.C语言适用范围大

C语言还有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于种机型。

故对本系统采用C语言进行程序编辑。

5.2程序设计

主程序设计是整个程序设计的核心。

而主程序流程图起了一个提纲的作用。

本系统的流程图。

见下图所示。

图12

5.3正弦波的产生

Voidsinwave(uchart)

{

Uchari;//定义1个无字符型变量

For(i=0;i<255;i++)

{

MAX0380=sin[i];//给MAX038赋予命令

Delay(t);

}

5.4方波的产生

方波产生的原理,是设个自变量i=0使之延迟一段时间,再使i=255时在延时与i=0相同的时间,重复上述过程便会得到方波波形。

5.4.1方波流程图

图13

5.4.2程序设计

Voidrecwave(uchart)

{

Uchari;//定义1个无字符型变量

MAX0380=0xff;//给MAX038赋予命令

For(i=0;i<255;i++)

Delay(t);

MAX0380=0x00;

For(i=0;i<255;i++)

}

5.5锯齿波的产生

锯齿波中的斜线用一个个小台阶来逼近,在一个周期内从最小值开始逐步递增,当达到最大值后回到最小值,如此循环,当台阶间隔很小时,波形基本上近似为一条直线。

适当的选择循环时间,可以得到不同周期的锯齿波。

锯齿波发生原理与方波相似,只是高低两个延时的常数不同,所以延时法,来产生锯齿波,设个自变量i=0使之不断的自动加1,直到加到255,MAX030可以又自动归0。

然后再不断地重复上述过程而产生锯齿波

5.5.1锯齿波产生的流程图

图14

5.5.2锯齿波程序设计

Voidzigwave(uchart)

{

Uchari;//定义1个无字符型变量

For(i=0;i<255;i++)

{

MAX0380=0x00;

Delay(t);

}

MAX0380=255;

Delay(t);

5.6键盘程序设计

5.6.1键盘扫描程序

Voidkeyscan()

{

Ucharcol,i;

P2=0xff;//行线输出全低

Col=p2&0xf0;

If(col==0xf0)return;//无键,返回

Delay(20);//延时消抖

P2=0xf0;//重新检测是否有按下的案件

Col=p2&0xf0;

If(col==0xf0)return;//无键,返回

Switch(col)//判断按键所在的列

{case0xe0:

keyval=0;break;

Case0xd0:

keyval=1;break;

Case0xb0:

keyval=2;break;

}

For(i=0;i<4;i++)

}

P2=scan[i];//输出键盘扫描码

Col=p2&0xf0;

If(col!

=0xf0)break;//按下按键

}

Keyval+=i*4;//计算键值

}

5.6.2键盘处理程序设计

Voidkeydisp()

{

Ucharx;

If(keyval==10)//选择键处理

{

Keyselcount++;

Switch(keyselcount)//选择信号波形

{

Case1:

Recwave(freq);//调用方波函数

Break;

Case2:

Zigwave(freq);//调用锯齿波产生函数

Break;

Case3:

Triwave(freq);//调用三角波产生函数

Break;

Case4:

Sinwave(freq);//调用正弦波产生函数

Break;

}

If(keyselcount==4)keyselcount=1;

}

If(keyval<10)//数字处理

{

Keyselcount++;

Disp[Keyselcount-1]=keyval;

X=x*10+x;//计算信号频率

If(Keyselcount==4)

{

Keyselcount=1;

Freq=x;

X=0;

}

}

}

5.7数码管程序设计

Voidmain()

{

Freq=2;

While

(1)

{

Display();//调用数码管显示函数

Keyscan();//调用键盘扫描函数

}

}

设计总结

经过近几个月的学习和研究,通过在图书馆、网络中查阅有关资料,了解了单片机的起源和发展,并且加深了对单片机的运行过程、控制系统的认识,熟悉了程序在单片机控制系统中的运用,在所学知识的基础上,利用已有的单片机控制系统设计及借鉴了前人的研究成果,对单片机控制系统作了深入的分析和研究。

通过此次毕业设计,加强了我对原有知识理论有了更为系统化、理论化、实用化的理解。

本设计利用单片机控制技术,针对模拟电子控制进行改造,充分利用现代换流技术数字化电子控制技术,达到对函数信号发生器的控制。

并节约了电能。

采用单片机改造后的函数信号发生器,结构紧凑,功耗低,运行效率高,维修简单,故障率低,具有明显的节能特性,也具有一定得经济效益和社会效益。

改造过程中值得注意的问题:

对单片机的选择。

一般来说,其功能越多越好。

但是对于一个简单的函数信号发生器,选择适当的单片机,可以简化我们的设计复杂程度;程序设计。

程序是单片机的灵魂,否则一切都将失去意义。

参考文献

[1]康华光.电子技术基础(第四版)[M].北京:

高等教育出版社.1998

[2]张有德等.单片微型机原理、应用预实验[M].上海:

复旦大学出版社.1993

[3]陈泽宗等.单片精密函数发生器应用[J].电子技术报,1997

[4]常新等.高频信号发生器原理,维修与鉴定[M].北京:

电子工业出版社,1996

[5]谢嘉奎,宣月清.电子线路[非线性部分][M].北京:

高等教育出版社,1998

[6]张素文.高频电子线路[M].电子技术报,1998

[7]谢月珍等.信号产生电路[M].北京:

电子工业出版社,1999

[8]黄晓东.现代测控技术及设计概要[M].北京:

高等教育出版社,2004

[9]肖瑞珠等.基于虚拟检测技术原理[J].北京:

清华大学出版社,2006

[10]程文峰等.基于虚拟检测技术原理[J].北京:

清华大学出版社,2007

[11]江太辉等.高频波形发生器的特性[J].西安:

西北工业大学出版社,2008

[12]刘乃安陈建《高频电子线路》西安电子科大出版社

[13]李朝青《单片机技术》北京航空航天大学出版社

[14]徐伟祥刘敏《LED幕显示技术》电子工业出版社

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1