基于STC89C52的函数发生器.docx

上传人:b****7 文档编号:9262368 上传时间:2023-02-03 格式:DOCX 页数:25 大小:2.68MB
下载 相关 举报
基于STC89C52的函数发生器.docx_第1页
第1页 / 共25页
基于STC89C52的函数发生器.docx_第2页
第2页 / 共25页
基于STC89C52的函数发生器.docx_第3页
第3页 / 共25页
基于STC89C52的函数发生器.docx_第4页
第4页 / 共25页
基于STC89C52的函数发生器.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

基于STC89C52的函数发生器.docx

《基于STC89C52的函数发生器.docx》由会员分享,可在线阅读,更多相关《基于STC89C52的函数发生器.docx(25页珍藏版)》请在冰豆网上搜索。

基于STC89C52的函数发生器.docx

基于STC89C52的函数发生器

五邑大学

课程设计

论文题目:

函数发生器

 

信息工程学院

自动化

院系

3114001891

专业

杨煜基

学号

刘焕成

学生姓名

2016年10月24日

指导教师

完成日期

 

目录

摘要2

Abstract3

第1章绪论4

1.1课题背景和意义4

1.2函数发生器的发展概况4

1.3研究的主要内容4

第2章硬件设计5

2.1单片机最小系统5

2.2人机交互6

2.3正负电压产生电路7

2.4波形发生电路8

2.5系统硬件总体框图9

第3章软件设计11

3.1系统初始化11

3.1.1单片机初始化11

3.1.2LCD1602初始化11

3.1.3中断初始化12

3.2系统中断函数13

3.3系统软件总框图13

结论15

参考文献21

附录1部分程序22

附录2原理图和PCB图26

摘要

函数发生器的使用范围很广,是一种不可缺少的通用信号源。

它可以用于生产测试、仪器维修和实验室,还广泛使用在其他科学领域。

本课程设计主要任务是设计一个函数发生器,使能够产生正弦波、方波、三角波和锯齿波。

系统使用STC89C52作为微控制单元、用MAX232产生正负电压、LCD1602和机械按键用于人机交互、DAC0832和运放OP07用作电压的控制和输出、最后以LED的亮灭来显示输出或者截止。

本系统最终可以实现基本功能。

关键词函数发生器;DAC0830;STC89C52;

 

Abstract

Functiongeneratoriswidelyused,itisanindispensableuniversalsignalsource.Itcanbeusedinproductiontesting,equipmentmaintenance,laboratoryandotherscientificfields.ThesystemusesSTC89C52asthemicrocontrolunit,usingMAX232togeneratepositiveandnegativevoltage;usingLCD1602andthemechanicalkeysforhuman-computerinteraction,DAC0832andOP07asthecontrolvoltageamplifieroutput,andtheledouttodisplaytheoutputorcut-off.Thesystemcanrealizethebasicfunction.

KeywordsFunctiongenerator;DAC0830;STC89C52;

 

第1章 绪论

1.1课题背景和意义

函数发生器有很宽的频率范围,使用范围广,它是一种不可缺少的通用信号源。

现已广泛应用于生产测试、仪器维修和实验室,不仅如此,在其他科学领域函数发生器也发挥着巨大的作用,比如:

医学、教育、化学、通讯、地球物理学、工业控制、军事和宇航等。

对于一名电子信息类的学生来说,拥有自己的万用表,示波器和函数发生器是自己动手做电子设计所必须的。

市面上的函数发生器价格少则上百多则过千,对于一名学生来说是奢侈的,所以本课程设计的主要任务是设计一台低成本便携的函数发生器。

1.2函数发生器的发展概况

自六十年代以来,信号发生器有了迅速的发展,出现了函数发生器,扫频信号发生器、合成信号发生器、程控信号发生器等新种类。

各类信号发生器的主要性能指标也都有了大幅度的提高,同时在简化机械结构、小型化、多功能等各方面也有了显著的进展。

几年来随着GSM、GPRS、3G、BlueTooth乃至已经被提出的标准的4G等移动通信以及LMDS、无线本地环路等无线接入的发展,同时加上合成孔径雷达、多普勒冲雷达等现代军事、国防、航空航天等在科技上的不断创新与进步,世界各国非常重视频率合成器的发展。

所有的这些社会需求以及微电子技术、计算机技术、信号处理技术等本身的不断进步都极大刺激了频率合成器技术的发展。

可以预料,随着低价格、高时钟频率、高性能的新一代DDS芯片的问世,DDS的应用前景将不可估量!

1.3研究的主要内容

熟悉运用电路绘图软件,使用热转印法制作印刷电路板;运用模拟电路技术课程和电路分析课程上所学习到的运算放大器的理论知识搭建电路;运用单片机原理、接口技术与课程设计课程上所学习的51单片机知识编写程序;培养阅读芯片手册的能力,查阅DAC0832芯片手册,并学会驱动它;了解函数发生器的基本原理;通过程序实现发生出:

正弦波、方波、三角波、锯齿波4种常用波形,频率从0~600Hz可调步进量是1Hz,峰峰值从0-5V可调,步进量是0.1v。

第2章 硬件设计

2.1单片机最小系统

本系统使用STC89C52RC作为微控制单元。

STC89C52RC是宏晶公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。

STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

使51单片机正常工作的外部条件有4个:

1、有可靠稳定的电源供电。

2、在时钟输入引脚输入稳定的时钟。

3、有可靠的复位电路。

4、给EA脚接入高电平或低电平,为51机指示程序代码的位置。

图2.1为本人为满足51机运行条件而设计的51机最小系统电路。

图2.151单片机最小系统

2.2人机交互

本系统使用4个机械按键和1块LCD1602构成人机交互。

LCD1602显示输出的波形,峰峰值和频率,4个机械按键用作改变输出的波形,峰峰值,频率以及是否输出。

LCD1602是工业字符型液晶,能够同时显示16×2即32个字符。

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:

阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,因此用C语言编程十分方便。

LCD1602与最小系统是以并行连接,具体原理图如图2.2。

图2.2LCD1602

机械按键的设计思想是,按下之后改变往单片机IO口输入的电平。

本系统使IO口先接入高电平,同时接一个机械按键接地,当机械按键按下之后高电平到IO口的通路被短路,IO口由高电平到低电平变化。

实现的原理图如图2.3。

高电平到IO口之间串联一个电阻是为了限流,防止电源往IO口灌入电流太大,烧坏IO口。

图2.3机械按键

2.3正负电压产生电路

由于本系统使用正负双电源供电的运算放大器,所以必须产生正负电压。

为了产生正负电压,使用美信公司的芯片MAX232。

查阅芯片手册之后可知MAX232内部有电荷泵电路,只需在外围增加4只电容就可以产生±12V的电压,电路简单方便。

具体原理图如图2.4所示。

图2.4MAX232

2.4波形发生电路

波形发生电路是本系统的核心部分,本系统采用一片DAC0832和两片OP07运算放大器构成波形发生电路。

DAC0832是8分辨率的D/A转换集成芯片。

与微处理器完全兼容。

这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。

D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。

DAC0832芯片数据输入可采用双缓冲、单缓冲和直通三种方式,本系统将DAC0832接成直通方式,其外围电路及单片机的连接图如图2.5所示。

图2.5DAC0832

通常我们在使用D/A时,用的较多的是控制电压的变化,而很少去控制电流的变化,有很多D/A芯片是直接输出电压的,而DAC0832是电流输出型的D/A,所以如果要实现电压的输出,需要在DAC0832输出端加入电流-电压变换电路。

电流-电压的变换电路通过两片0P07实现,如图2.6所示,根据模拟电路的知识,先计算第一级运算放大电路的输入,第一级运算放大器的6脚连接到DAC0832的

反馈引脚上,这个引脚内部串联一个电阻

,所以根据虚短和虚断得出

,由公式得出,一片放大电路只能输出负的电压,因此要输出正的电压需加多一级放大电路,使电压反转为正电压。

现在计算第二级放大电路的电压输出

,由于

的取值都是10K,所以

,从而使负电压变成正电压输出。

图2.6电流-电压转换电路

2.5系统硬件总体框图

系统硬件的总体框架是,系统从外部供电,供电电压为5v,供电直接供给MAX232,使之输出±12v的电压为运算放大器供电。

电源,晶振电路,复位电路都与STC89C52RC相连构成可运行的最小系统;LCD1602通过并行接口和STC89C52RC连接,4个按键连接到STC89C52RC的4个IO口上构成人机交互部分;DAC0832通过并行接口与STC89C52RC相连接,另外DAC0832的输出引脚和反馈引脚连接到一片OP07运算放大器上,第一级运算放大器与一个反相放大器相连结,构成波形输出电路。

系统的硬件总体设计框图如图2.7所示。

图2.7系统硬件总体框图

 

第3章 软件设计

3.1系统初始化

系统的初始化主要包括三个部分:

51单片机的初始化,LCD1602初始化和中断初始化。

3.1.1单片机初始化

51机的初始化步骤如下:

(1)51机上电复位,设置从那个地址开始执行程序;

(2)设置主程序跳转;(3)设置需要使用的中断的中断服务程序入口地址(4)设置各个中断的服务程序地址标号(5)定位主程序的代码首地址。

由于本系统全部使用C语言编程,所以在编程软件自带的库里面已经包含了这些内容,故不需要自己编写。

3.1.2LCD1602初始化

LCD1602内部集成了控制器HD44780。

HD44780是时序约束器件,只要用单片机IO口模拟其时序即可驱动它,其时序如图3.1所示。

而LCD1602的初始化步骤大体如下:

(1)写指令0x38。

(2)写指令0x06。

(3)写指令0x01。

(4)写指令0x0c。

图3.1LCD1602读写时序图

3.1.3中断初始化

本系统使用51机的3个中断资源,分别是:

外部中断0,定时器0和定时器1。

外部中断0用作控制系统是输出波形,还是截止调控波形。

以输出/截止按键接入单片机外部中断0输入接口。

当系统处于截止调控波形时,用户通过3个功能按键调控出希望输出的波形,频率以及峰峰值,调控完毕后,按下输出/截止按钮,外部中断0触发,系统对外输出波形;当系统处于对外输出波形时,按下输出/截止按键,系统停止对外输出波形,同时液晶上光标闪烁,用户可以通过其余3个按键修改波形的参数。

定时器0用于3个功能按键的消抖。

通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。

按键的消抖方案有许多,本系统采用定时器0中断的方式消抖。

定时器定时2ms,每次进入中断检测3个按键的状态,当连续检测到4次都为低电平时候,认为按键可靠按下,向主程序返回标志位。

定时器1用于波形频率的发生。

正弦波、方波、锯齿波、三角波四种波形都采用一个周期采样32个点的方式重构波形表。

波形表数组如图3.2所示。

而系统采用12.000000M的晶振作为时钟,根据51单片机1个机器等于12个时钟周期的关系,不难得出定时器1定时时间t和波形频率f的关系:

由此可以确定定时器的初装值。

图3.2四种波形表

各个中断的关系如下:

外部中断0的优先级最高,由外部中断0来控制着定时器1和定时器0中断的开启和关闭。

若现在为输出状态,则定时器中断1开启(用于波形频率发生),定时器0则关闭(用于按键消抖),此时按3个功能按键无效,当按下输出/截止按键时,外部中断0触发:

关闭定时器1中断(用于波形频率发生),开启定时器0(用于按键消抖),此时可以通过3个功能按键修改波形的参数,但此时无输出,当修改完毕,再按下输出/截止按钮时,定时器1开启定时器0关闭,波形输出,如此循环往复。

中断初始化的步骤为:

(1)定时器1和定时器0设置为16位定时器,功能为定时。

(2)定时器0设置为定时2ms。

(3)开总中断。

(4)外部中断0设置为优先级中断。

(5)外部中断0设置为下降沿触发。

(6)开外部中断0。

(7)关闭定时器0和定时器1。

3.2系统中断函数

系统的中断程序有三个:

外部中断0函数,定时器0函数和定时器1函数。

外部中断0函数主要思路如下:

进入中断函数,判断是输出还是截止,如果是输出,则关闭定时器0。

通过用户输入的频率计算定时器1初装值,通过用户的输入的峰峰值计算新的波表。

打开定时器1,波形开始输出。

如果是截止,则关闭定时器1,打开定时器0。

定时器0函数的主要思路如下:

进入中断函数,重装TH0和TL0,读取3个功能按键的电平,并存储。

每次判断是否有连续4个低电平的按键,如果有,返回改按键的标志位。

定时器1函数的主要思路如下:

进入中断函数,重装TH1和TL1,按波值表使DAC0832输出电压,每次输出波值表中数组的一个元素,每次进入函数,元素加一再输出,元素达到31后元素归0重新输出。

3.3系统软件总框图

系统程序流程大概为:

初始化单片机→初始化液晶→初始化中断→打开液晶显示,显示预设的波形、峰峰值和频率→等待中断的触发。

系统软件总流程图如图3.3所示。

 

图3.3系统软件总流程图

 

结论

本课程设计作品从设计电路到制成,经历了查阅相关芯片资料,理论计算,面包板搭建电路仿真,绘制原理图,绘制PCB图,用热转印法制作印刷电路,焊接,测试,写程序,调试等步骤,历时1周。

最终基本可以实现预想要求:

输出波形:

正弦波、方波、锯齿波、三角波。

输出频率:

0-600Hz可调,步进量1Hz。

输出电压峰峰值:

0-5.0v可调,步进量0.1v。

由于51单片机的运行速度有限,加上主频选用12M的晶振以及采用的波值表为每个周期采样32个点,所以进入中断,以及波形的输出时,会消耗几个机械周期,所以,最高的输出频率只有600Hz。

0-600Hz的频率十分有限,完全不能满足学生的需求,在后期可能会改用速度更快的单片机。

由于电阻,的阻值与其标称值有误差;同时运算放大器存在非线性误差;MAX232可输出的电流太小,导致电压被拉低。

这些因素导致了峰峰值的误差。

我将继续把函数发生器这个课题做下去,将换用主频更快的单片机,选用精度和分辨率更高的D/A芯片,在电路的计算方面充分考虑误差问题,全面考虑系统的合理性,争取把函数发生器做得更好。

通过本次课程设计,我学会了用课堂上的理论知识解决实际的问题,例如运算放大器的计算,电路的设计;在查阅资料的时候,我学会了看英文版本的芯片资料;对单片机的理解有所加深;在面包板的搭建电路,以及后期用热转印法制作PCB的时候,我的动手能力得到加强,并且熟练地掌握了万用表,示波器,函数发生器和电烙铁的安全使用方法;在绘制电路原理图的时候能够全方面地考虑电气特性,在绘制PCB图的时候,充分考虑了元器件的摆放以及液晶的固定问题锻炼了自己的全局思维;在写程序的时候,我养成了良好的写程序的习惯,也在后面写上注释方便日后的阅读;在调试程序Bug的时候,磨练了我的耐心,最终使作品基本实现了功能。

 

作品外观图如图4.1所示。

图4.1作品外观图

图4.2-4.9为本作品发生的一些波形图。

图4.2正弦波-2.5v-100Hz

图4.3正弦波-3.0v-400Hz

图4.4正弦波-5v-100Hz

 

图4.5正弦波-5v-600Hz

图4.6方波-3.0v-400Hz

 

图4.7方波-5.0v-100Hz

图4.8三角波-5.0v-100Hz

 

图4.9锯齿波-5.0v-100Hz

 

参考文献

[1]廖惜春.模拟电子技术基础.北京:

科学出版社,2011.

[2]李瀚荪.简明电路分析基础.北京:

高等教育出版社,2002.7.

[3]刘焕成.单片机原理、接口技术与程序设计.北京:

清华大学出版社,2014.

[4]谭浩强.C程序设计(第四版).北京:

清华大学出版社,2010.

 

附录1部分程序

主函数

外部中断0

定时器0

定时器1

界面显示

 

附录2原理图和PCB图

原理图

PCB图

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

当前位置:首页 > 工作范文 > 行政公文

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

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