51单片机课程设计 波形发生器 - 图文

更新时间:2024-02-26 08:40:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

河南理工大学

《单片机应用与仿真训练》设计报告

多功能信号发生器设计

姓 名: 王彦凯 王翱翔 专业班级: 电仪 09-03 指导老师: 王 莉 所在学院:电气工程与自动化学院

2012年6月25 日

摘要

本设计是多功能信号发生器,以 AT89S52 单片机为核心,通过按键输入控制输出信号的类型、频率和幅值,采用 DA 转换芯片DAC0832输出相应的波形,同时以LED 显示器进行实时显示信号相关信息。我们采用 C 语言进行编程,可实现100-1Khz的方波,锯齿波,三角波和正弦波四种波形的产生,且波形的频率、幅值可通过按键调节,并显示在数码管上。而且,波形的幅值还可通过电位器实现无极调幅,增加了可选幅值范围。经测试该设计方案线路优化,结构紧凑,性能优越,满足设计要求。

关键字:单片机AT89S52,DAC0832,信号发生器

目录

第1章 概述 ..................................................................................................................................... 1

1.1选题背景及其意义 ............................................................................................................ 1 1.2 单片机概述 ....................................................................................................................... 1 1.3 信号发生器分类 ............................................................................................................... 1 1.4 研究题目及其意义 ........................................................................................................... 2 第2章 信号发生器方案设计与选择 ............................................................................................. 3

2.1 方案的设计与选择 ........................................................................................................... 3 2.2 设计原理简介 ................................................................................................................... 3 2.3 设计功能 ........................................................................................................................... 5 第3章 主要电路元器件介绍 ......................................................................................................... 6

3.1 AT89S52单片机简介 ........................................................................................................ 6

3.1.1 单片机简介 ........................................................................................................... 6 3.1.2主要性能 ................................................................................................................ 6 3.1.3 管脚功能说明 ....................................................................................................... 7 3.2 DAC0832简介 .................................................................................................................... 8

3.2.1 DAC0832的主要特性参数 .................................................................................... 8 3.2.2 DAC0832结构 ........................................................................................................ 8 3.2.3 DAC0832工作方式 ................................................................................................ 9 3.3 数码显示管 ..................................................................................................................... 10

3.3.1 原理及分类 ......................................................................................................... 10 3.3.2 显示器的工作方式 ............................................................................................. 10 3.3.3 数码管字型码 ..................................................................................................... 11

第4章 单元电路的硬件设计 ....................................................................................................... 12

4.1 硬件原理框图 ................................................................................................................. 12 4.2 单片机 AT89S52 系统的设计 ....................................................................................... 12 4.3 时钟电路 ......................................................................................................................... 13 4.4复位电路 .......................................................................................................................... 13 4.5数码管电路 ...................................................................................................................... 14 4.6 DAC0832模数转换电路 .................................................................................................. 15 4.7 LM324运放电路和低通滤波电路 .................................................................................. 16 4.8 按键和波形指示LED电路 ............................................................................................. 17 第5章 系统软件设计 ................................................................................................................... 18

5.1软件开发环境简介 .......................................................................................................... 18

5.1.1 Keil uVision4简介 .......................................................................................... 18 5.1.2 Proteus7.10 简介 ............................................................................................. 19 5.1.3 Keil 与Proteus 联合调试仿真 ...................................................................... 19 5.2主程序 .............................................................................................................................. 20 5.3按键处理程序 .................................................................................................................. 21 5.4 数码管输出程序分析 ..................................................................................................... 22 5.5 各种波形产生思路 ......................................................................................................... 22

5.5.1 方波产生思路 ..................................................................................................... 22 5.5.2 锯齿波产生思路 ................................................................................................. 22

5.5.3 三角波产生思路 ................................................................................................. 23 5.5.4 正弦波产生思路 ................................................................................................. 23 5.6 仿真的各种波形效果 ..................................................................................................... 23 第6章 课程设计体会 ................................................................................................................... 24 参考文献 ......................................................................................................................................... 25 致 谢............................................................................................................................................... 26 附1:源程序代码 .......................................................................................................................... 27

1.主程序 ................................................................................................................................. 27 2.头文件 ................................................................................................................................. 27 附 2:系统原理图 ......................................................................................................................... 31 附 3:实物效果图 ......................................................................................................................... 32

河南理工大学本科课程设计报告

第1章 概述

1.1选题背景及其意义

信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如方波、锯齿波、三角波、正弦波的电路被称为函数信号发生器。在通信、广播、电视系统,在工业、农业、生物医学领域内,函数信号发生器在实验室和设备检测中具有十分广泛的用途。

信号发生器作为一种常见的应用电子仪器设备,传统的可以完全由硬件电路搭接而成,如采用555振荡电路发生正弦波、三角波和方波的电路便是可取的路径之一,不用依靠单片机。但是这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点。在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟机械振动等领域常常要用到低频信号源。而由硬件电路构成的低频信号其性能难以令人满意,而且由于低频信号源所需的RC很大;大电阻,大电容在制作上有困难,参数的精度亦难以保证;体积大,漏电,损耗显著更是致命的弱点。一旦工作需求功能有增加,则电路复杂程度会大大增加 1.2 单片机概述

单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器 CPU 随机存储器 RAM、只读存储器 ROM、多种 I/O 口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机具有集成度高、系统结构简单、使用方便、实现模块化、可靠性高、处理功能强、速度快等特点,因为被广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。 1.3 信号发生器分类

信号发生器是指产生所需参数的电信号的仪器。因其应用广泛,种类繁多,特性各异,分类也不尽一致。按信号波形可分为正弦信号、函数信号、脉冲信号和随机信号发生器等四大类;按频率覆盖范围分为低频信号发生器、高频信号发生器和微波信号发生器;按输出电平可调节范围和稳定度分为简易信号发生器、标准信号发生器和功率信号发生器;按频率改变的方式分为调谐式信号发生器、

1

河南理工大学本科课程设计报告

扫频式信号发生器、程控式信号发生器和频率合成式信号发生器等。信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。 1.4 研究题目及其意义

信号发生器是一种经常使用的设备,由纯粹物理器件构成的传统的设计方法存在许多弊端,如:体积较大、重量较沉、移动不方便、信号失真较大、波形形状调节过于死板,无法满足用户对精度、便携性、稳定性等要求,研究设计出一种具有频率稳定、准确、波形质量好、输出频率范围宽、便携性好等特点的波形发生器具有较好的市场前景。以满足工业领域对信号源的要求。本次试验实现利用单片机 AT89S52 和 8 位 D/A 转换芯片 DAC0832 共同实现方波、锯齿波、三角波、正弦波这四种常用波形的发生。根据设计的要求,对各种波形的频率和幅度进行程序的编写,并将所写程序装入单片机的程序存储器中。在程序运行中,当接收到来自外界的命令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。并且可以通过数码管和键盘显示模块,键盘可以实现对几种波形的切换。

2

河南理工大学本科课程设计报告

第2章 信号发生器方案设计与选择

信号发生器是指产生所需参数的电信号的仪器。按信号波形可分为正弦信号、波形信号、脉冲信号和随机信号发生器等四大类。本文利用单片机构造低频信号发生器,可产生正弦波,方波,三角波,锯齿波四种波形,通过 D/A 转换器 DAC0832 把数字信号转变为模拟信号,经 LM324 放大输出到示波器,与此同时外接 8 位 LED 数码管显示输出信号的类型、频率和幅值。 2.1 方案的设计与选择

方案一:NE555数字芯片结合外围电路,组成波形发生器,能够产生,方波,三角波,锯齿波和正弦波,电路简单,而且,频率和幅值都能调节,但是不能显示频率。

方案二:采用单片函数发生器可产生正弦波、方波等,操作简单易行,用 D/A 转换器的输出来改变调节电压,可以实现数控调整频率,但产生信号的频率稳定度不高。

方案三:利用芯片组成的电路输出波形,MAX038 是 MAXIM 公司生产的一个只需要很少外部元件的精密高频波形产生器,他能产生准确的高频正弦波、三角波、方波。输出频率和占空比可以通过调整电流、电压或电阻来分别地控制。所需的输出波形可由在 A0和 A1 输入端设置适当的代码来选择,且具有输出频率范围宽、波形稳定、失真小、使用方便等特点。

方案四:采用 Atmel 公司的 AT89S52单片机编程方法实现,该方法的可以通过编程的方法控制信号波形的频率和幅度,而在硬件电路不便的情况下,通过程序实现频率的变化和输出波形的选择,并同时在显示器显示相应的结果。

方案一和二输出信号频率不够稳定;方案三成本高,程序复杂度高;方案四,软硬件结合,硬件成本低,软件起点低,优化型相对比较好,容易实现,且满足设计要求。综合考虑,我们采用了方案四,用 AT89S52 单片机设计多功能信号发生器,能够满足信号的频率稳定性和精度的准确行。。 2.2 设计原理简介

该设计设计一个多功能信号发生器,我们采用的是 AT89S52 单片机用软件实现信号的输出。该单片机是一个微型计算机,包括中央处理器 CPU,RAM,ROM、I/O 接口电路、定时计数器、串行通讯等,是波形设计的核心。该信号发生器原理框图如图 2.1,总体原理为:利用 AT89S52 单片机构造多功能信号发生器,可产生正弦波,方波,三角波,锯齿波四种波形,通过 C 语言对单片机的

3

河南理工大学本科课程设计报告

编程即可产生相应的波形信号,并可以通过键盘进行各种功能的转换和信号频率的控制,当输出的数字信号通过数模转换成模拟信号也就得到所需要的信号波形,通过运算放大器的放大输出波形,同时让显示器显示输出的波形信息。

按键电路单片机波形ROM表数模转换电路电源放大电路低通滤波波形输出

图2-1 系统框图

本方案其主要模块包括复位电路、时钟信号、键盘控制、D/A 转化及 LED 显示。其各个模块的工作原理如下:

1.复位电路是为单片机复位使用,使单片机接口初始化;89C51 等 CMOS51 系列单片机的复位引脚 RET 是施密特触发输入脚,内部有一个上拉低电阻,当振荡器起振以后,在 RST 引脚上输出 2 个机器周期以上的高电平,器件变进入复位状态开始,此时 ALE、PSEN、P0、P1、P2、P4 输出高电平,RST 上输入返回低电平以后,变退出复位状态开始工作。该方案采用的是人工开关复位,在系统运行时,按一下开关,就在 RST 断出现一段高电平,使器件复位。

2.时钟信号是产生单片机工作的时钟信号,控制着计算机的工作节奏,可以通过提高时钟频率来提高 CPU 的速度。AT89S52 内部有一个可控的反相放大器,引脚 XTAL1、XTAL2 为反相放大器输入端和输出端,在 XTAL1、XTAL2 上外接 12MHZ 晶振和 30pF 电容便组成振荡器。时钟信号常用于 CPU 定时和计数。

3.键盘模块是是用于控制信号输入的类型,当按键按下时,可以通过单片机编AT89S52单片机数/模准换器、DAC0832、LM324、运放放大、接口电路、键盘输入程读取闭合的键号,实现相应的信号输出。

其步骤主要是

a、判断是否有键按下;

b、去抖动,延时 20ms 左右; c、识别被按下的键号; d、处理,实现功能。

4.D/A 转换也称为数模转换,是把数字量变换成模拟量的线性电路。单片机产生的数字信号通过 DAC0832 转化成模拟信号,输出相应的电流值,通过LM324 集成运算放大器可以取出模拟量得电压值,最后利用示波器获得输出的

4

河南理工大学本科课程设计报告

模拟信号的波形;衡量数模转换的性能指标有分辨率、转换时间、精度、线性度等。LED 显示器用由若干个发光二极管按一定的规律排列而成,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光用于是显示相关输出波形的信息,包括信号的类型、频率和幅值。 2.3 设计功能

1.产生方波、锯齿波、三角波、正弦波四种波形频率100HZ-1KHZ,按键可实现步进100HZ调节。

2.产生-5V- +5V的幅值的波形信号,幅值调节可选按键步进0.1V,也可选择用电位器无极调节。

3.显示采用 8 位 LED 显示器,前两位显示幅值;后四位显示频率。 4.按键输入采用8个按键实现输入,P00-P07。

表 2.1按键功能及IO借口 方波 锯齿波 三角波 正弦波 幅值加 幅值减 频率加 频率减 按键 K8 K7 K1 K2 K6 K3 K5 K4 I/O P0.7 P0.6 P0.0 P0.1 P0.5 P0.2 P0.4 P0.3

5

河南理工大学本科课程设计报告

第3章 主要电路元器件介绍

3.1 AT89S52单片机简介 3.1.1 单片机简介

AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。其外形及引脚排列如图 3-1所示。

图 3-1 51单片机引脚图 3.1.2主要性能

? 与MCS-51单片机产品兼容;

? 8K字节在系统可编程Flash存储器; ? 1000次擦写周期;

? 全静态操作:0Hz-33MHz; ? 三级加密程序存储器;

6

河南理工大学本科课程设计报告

? 32个可编程I/O口线; ? 三个16位定时器/计数器; ? 六个中断源;

? 全双工UART串行通道; ? 低功耗空闲和掉电模式; ? 掉电后中断可唤醒; ? 看门狗定时器; ? 双数据指针; ? 掉电标识符。 3.1.3 管脚功能说明

? VCC:供电电压 4~6V 典型值 5V); ? GND:接地;

? RST:复位引脚输入高电平使 89C51 复位,返回低电平退出复位; ? EA/Vpp:运行方式时,EA为程序存储器选择信号,EA接地时 CPU 总是

从外部存储器中取指令,EA接高电平时 CPU 可以从内部或外部取指令;FLASH 编程方式时,该引脚为编程电源输入端 Vpp(=5V 或 12V); ? PSEN:外部程序存储器读选通信号,CPU 从外部储存器取指令时,从 PSEN引脚输出读选通信号(负脉冲); ? ALE/ PROG:运行方式时,ALE 为外部储存器低8位地址锁存信号,FLASH

编程方式时,该引脚为负脉冲输入端;

? XTAL1,XTAL2 为内部振荡器电路(反相放大器)的输入端和输出端,外接

晶振电路;

? P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门

电流。当 P0 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH进行校验时,P0 输出原码,此时 P0 外部必须被拉高;

? P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收; ? P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可

接收,输出 4个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给

7

河南理工大学本科课程设计报告

出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号;

? P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出

4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口也可作为AT89S52 的一些特殊功能口如 表 3.1。

表 3.1 引脚 P3.0 P3.1 P3.2 P3.3 第二功能 引脚 第二功能 T0(记时器 0 外部输入) T1(记时器 1 外部输入) RXD(串行输入口) P3.4 TXD(串行输出口) P3.5 /INT0(外部中断 0) P3.6 /WR(外部数据存储器写选通) /INT1(外部中断 1) P3.7 /RD(外部数据存储器读选通) 3.2 DAC0832简介

DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。 3.2.1 DAC0832的主要特性参数

* 分辨率为8位; * 电流稳定时间1us;

* 可单缓冲、双缓冲或直接数字输入; * 只需在满量程下调整其线性度; * 单一电源供电(+5V~+15V); * 低功耗,20mW。

3.2.2 DAC0832结构

* D0~D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);

* ILE:数据锁存允许控制信号输入线,高电平有效; * CS:片选信号输入线(选通数据锁存器),低电平有效;

* WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由

8

河南理工大学本科课程设计报告

ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;

图 3-2 DAC0832的逻辑框图和引脚排列

* XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;

* WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR2、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。

* IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化; * IOUT2:电流输出端2,其值与IOUT1值之和为一常数;

* Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度; * Vcc:电源输入端,Vcc的范围为+5V~+15V;

* VREF:基准电压输入线,VREF的范围为-10V~+10V; * AGND:模拟信号地 * DGND:数字信号地 3.2.3 DAC0832工作方式

⑴单缓冲方式。单缓冲方式是控制输入寄存器和DAC寄存器同时接收资料,或者只用输入寄存器而把DAC寄存器接成直通方式。此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。

⑵双缓冲方式。双缓冲方式是先使输入寄存器接收资料,再控制输入寄存器的输出资料到DAC寄存器,即分两次锁存输入资料。此方式适用于多个D/A转换同步输出的情节。

⑶直通方式。直通方式是资料不经两级锁存器锁存,即 CS*,XFER* ,WR1* ,WR2* 均接地,ILE接高电平。此方式适用于连续反馈控制线路和不带微机的控

9

河南理工大学本科课程设计报告

制系统,使用时,必须通过另加I/O接口与CPU连接,以匹配CPU与D/A转换。

3.3 数码显示管 3.3.1 原理及分类

一位 LED 显示器由 8 个

发光二极管组成,其中 7 个发光二极管 a-h控制 7 个笔画

段的亮或暗,另一位控制一个小数点的亮和暗。LED 显示器有共阴极和共阳极 2 种形式,其结

图 3-3 数码管结构图 构如图3-3所示。共阳极显示器是发光二极管的阳极连接在一起,当需要显示某字符时,只需要将共阳极端接高电平,a-h 中某些位接低电平即可。共阴极显示器是发光二极管的阴极连接在一起,当需要显示某字符时,只需要将共阴极端接低电平,a-h 中某些位接高电平即可。

3.3.2 显示器的工作方式

显示器的工作方式分为静态显示方式和动态显示方式两种。 ? 静态显示方式

静态显示方式就是显示器在显示一个字符时,相应的发光二极管恒定的导通或截止,例如 a、b、c、、e、f 导通,g 截止时显示“0”,这种使显示器显示字符的字形数据常称为段数据。静态显示方式的每一个七段显示器,需要由一个 8 位并行口控制。优点是显示稳定,提高了工作效率,缺点是位数较多时显示口随之增加。

? 动态显示方式

动态显示方式是一位一位的轮流点亮各位显示器,对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数可以实现亮度较高较稳定的显示,如显示器的位数不大于 8 位,则控制显示器公共极的电位只需要一个 8 位口(位数据口),控制字形也需要一个 8 位口(段数据口)。

10

河南理工大学本科课程设计报告

3.3.3 数码管字型码

要使显示管显示不同的数字或者字符,需要使端口输出相应的字型码,显示器的字形与字码关系如表 3.1:

表 3.2 显示器字形与字型码对应关系表

11

河南理工大学本科课程设计报告

第4章 单元电路的硬件设计

硬件电路的设计决定一个系统的的功能,是设计的基础所在,而一般设计的目标:可靠,简洁,高效,优化,好的硬件电路可以给程序的编写带来极大的优势,同时使可以很好的提高该信号设计的精度和灵敏度,使整个系统工作协调有序。 4.1 硬件原理框图

对于该低频信号发生器的设计,我们采用了以AT89S52单片机芯片作为核心处理器,编程实现各种不同类型信号的产生,最后通过 DA 转换输出到示波器。结构简单,思路仅仅有条,而根据设计的基本要求,我们又把其细分为不同的功能模块,各个功能模块相互联系,相互协调,通过单片机程序构成一个统一的整体,其整体电路原理框图如图4-1 所示:

电源(+5V、+12V、-12V)

键 盘输 入 AT89S52 单片机 8位数码管 4个LED DAC0832 电源+12v、-12V 时钟复位 LM324

图4-1硬件原理框图

4.2 单片机 AT89S52 系统的设计

AT89S52 单片机是该信号发生器的核心,具有 2 个定时器,32 个并行 I/O 口,1 个串行 I/O 口,5 个中断源。由于本设计功能复杂,数据处理精确,数据存储空间也足够,因为我们采用了片选法选择芯片,进行芯片的选择和地址的译码。在单片机最小最小系统中,单片机从 P0.0-P0.7 口接收来自按键的信号,并通过 P1.0-P1.7 口输出DAC0832的8位数据,通过 DA 转换芯片最终由示波器显示输出波形;P2给锁存器74HC573送数据,P2分时送段信号和位信号。

12

河南理工大学本科课程设计报告

P3.7和P3.6分别控制送的是位还是段选信号。2个74HC573一个用来所存段选,另一个锁存位选。P3.5、P3.4、P3.3、P3.2分别是方波、锯齿波、三角波、正弦波的指示灯控制口。 4.3 时钟电路

单片机的时钟信号通常用两种电路形式得到:内部振荡和外部振荡方式。在引脚XTAL1 和 XTAL2 外接晶体振荡器,构成了内部振荡方式。由于单片机内部有一个高增益的反相放大器,当外接晶振后,就构成了自激振荡,并产生振动时钟脉冲。晶振通常选用 6MHZ、12MHZ、24MHZ。本设计中时钟电路图如图4-2,我们选择了12MHZ和晶振分别接引脚XTAL1和XTAL2,电容 C1,C2 均选择为 30pF,对振荡器的频率有稳定作用,当频率较大时,正弦波、方波、三角波及锯齿波中每一点的延时时间为几微妙,故延时时间还要加上指令时间才能获得较大的频率波形。

C130pFX1C230pF图 4-2 时钟电路 12Mhz4.4复位电路

复位引脚 RST 通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的 S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。复位电路通常采用上电自动复位和按钮复位两种方式。本设计选择了按键复位如图 4-3,在系统运行时,按一下按键,就在 RST 断出现一段高电平,使器件复位。此时 ALE、PSEN、P0、图 4-2时钟电路图P1、P2、P4 输出高电平,RST 上输入返回低电平以后,变退出复位状态开始工作。

13

河南理工大学本科课程设计报告

图 4-3 复位电路

4.5数码管电路

本设计选择了 8 位共阴极数码管如图 4-4,它的 8 个发光二极管的阴极(二极管正端)连接在一起,通常公共阴极接低电平电平,其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

图 4-4 数码管电路

显示电路用于显示信号的波形种类和信号的频率,并且使系统能根据按键实时显示先关信息。该系统中添加 两个74LHC573 锁存器,用于驱动数码显示管,使其更易于控制,增加显示的准确性。利用 P3.6和P3.7 控制数码管的段选和位选。

其中2位数码管显示幅值,4位数码管显示频率,幅值是以0.1V步进显示,频率是以100HZ步进显示。

14

河南理工大学本科课程设计报告

4.6 DAC0832模数转换电路

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

根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。本设计选用直通方式。

DAC0832的数据口和单片机的P2口相连。 CSDA:片选信号输入线(选通数据锁存器),低电平有效;

WR:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;

图 4-5 DAC0832电路

系统硬件设计时考虑到要求波形的频率和幅值都可调,因此有两种方案 方案一:

用按键来输入相应的波形类型、频率和幅值,然后,由单片机通过程序实现波形类型、频率和幅值的改变。

方案二:

用按键选择波形类型,设置波形的频率,但是,通过电位器调节DAC0832

15

河南理工大学本科课程设计报告

的参考电压来实现幅值的可调。

经过仔细分析发现,方案一实施起来比较困难,因为,在调节波形的频率的时候将会面临波形的点数问题,例如,一个三角波一个周期30个点,当设置的频率较低时,需要增加点数,不然波形将会失真严重,当频率较高时,为了满足频率的要求,一个周期内波形的点数又不能太多。同时,波形要实现幅值可调也要考虑点数问题,当点数太多时,如果只有0.1V在这么小的幅值里以DAC0832的分辨率根本分不出30个点。

综上所述,实现波形的幅值和频率可调都将同时影响波形一个周期内的点数,这是一个有些复杂的技术问题,相对来说,方案一通过按键实现这一功能有些复杂,不一定能实现,因此,硬件电路里综合考虑了两种方案。即系统电路既可以以方案一工作又能以方案二工作即波形频率可通过案件调节,波形幅值即可通过按键步进0.1V调节还能通过调节电位器调节DAC0832参考电压实现更多幅值的选择增加了系统的功能。选择方案只需通过一个跳线帽的位置来实现。

4.7 LM324运放电路和低通滤波电路

图 4-6 LM324运放电路和低通滤波电路

LM324的5管脚与DAC0832的(IOUT2)12管脚相连,LM324的6管脚与DAC0832的(IOUT1)11管脚相连,LM324的7管脚与DAC0832的REF(9)管脚相连.

第一级运算放大器的作用是将DAC0832输出的电流信号转化为电压信号V1,第二级运算放大器的作用是将V1通过反向放大电路-(R2/R1)倍。

16

河南理工大学本科课程设计报告

5.4 数码管输出程序分析

数码管显示入口 关位码 送段码 开位码 返回 图 5-3 数码管显示流程图

数码管输出程序是送段选码和位选码的程序,位于主程序中。轮流点亮6个数码管,每大约5ms变换一次,由于轮换的次数太快,由于视觉暂留效应,看上去是6个数码管看上去好像一直点亮。

5.5 各种波形产生思路 5.5.1 方波产生思路

方波的产生比较简单,只需要根据按键输入的幅值和频率计算出相应的DA数据送给数据就可以产生相应的波形。

具体来说,例如产生500Hz的2.5V的波形。

首先,要计算出定时器的定时频率,由于,方波只有两种状态,峰值和0值。峰值时由按键设定的,其中峰值占一个周期的一半,即要定时产生1000Hz的定时器频率,每进一次中断函数就把DA的数据更新为上次值的取反。让DA数据在峰值和0之间依次切换即可。 5.5.2 锯齿波产生思路

首先,根据按键设定的波形频率,选择一个周期内合适的点数,根据点数和峰值计算相邻2个点的幅度的步进值,根据点数和频率设定相邻2点的时间值,计算出定时器的初值,然后,定时输出刷新DA的数据就可以产生一定频率和幅值的波形。

22

河南理工大学本科课程设计报告

5.5.3 三角波产生思路

首先,根据按键设定的波形频率,选择一个周期内合适的点数,根据点数和峰值计算相邻2个点的幅度的步进值,根据点数和频率设定相邻2点的时间值,计算出定时器的初值,然后,设置一个变量每进一次定时中断DA数据就加幅值步进,当等于总点数的一半时,每进一次定时中断就把DA数据减幅值步进直到DA数据为0,计数变量清零。每进一次定时中断输出刷新DA的数据就可以产生一定频率和幅值的三角波。 5.5.4 正弦波产生思路

首先,写一个表格,然后根据按键设定的波形频率,选择一个周期内合适的点数,根据点数和峰值计算相邻2个点的幅度的步进值,根据点数和频率设定相邻2点的时间值,计算出定时器的初值,然后,设置一个变量每进一次定时中断DA数据就加幅值步进,当等于总点数的一半时,每进一次定时中断就查表把DA数据减幅值步进直到DA数据为0,计数变量清零。每进一次定时中断查表输出刷新DA的数据就可以产生一定频率和幅值的三角波。 5.6 仿真的各种波形效果

图 5-4 各种波形效果图

23

河南理工大学本科课程设计报告

第6章 课程设计体会

经过将近两周的单片机课程设计,终于完成了我们的多功能信号发生器的设计,基本达到设计要求,从心底里来说,还是很高兴的,毕竟这次设计把实物都做了出来。

在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。

要设计一个成功的电路,必须要有耐心,要有坚持的毅力。在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。完成这次设计后,我在书本理论知识的基础上又有了更深层次的理解。

同时在本次设计的过程中,我还学会了高效率的查阅资料、运用工具书、利用网络查找资料。我发现,在我们所使用的书籍上有一些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整。偶而还会遇到错误的资料现象,这就要求我们应更加注重实践环节。

最后还要在此感谢指导老师们和我的同学,他们在整个过程中都给予了我充分的帮助与支持。

24

河南理工大学本科课程设计报告

参考文献

[1] 谭浩强.C 程序设计. 北京:清华大学出版社,2002

[2] 王为青,程国刚. 单片机 Keil Cx51 应用开发技术.北京:人民邮电大学出版社,2007 [3]道客巴巴 基于单片机的信号发生器设计[2010-04-0]http://www.doc88.com/p-79529167301.html

[4]张友德,赵志英,涂时亮. 单片机微型机原理、应用和实验. 上海:复旦大学出版社,2006.10

[5]丁向荣,谢俊,王彩申. 单片机 C 语言编程与实践. 北京:电子工业出版社,2009.8

25

河南理工大学本科课程设计报告

致 谢

在单片机课程设计过程中,我得到指导老师和同学的无私帮助。我们想向

曾经给予我帮助和支持的人表示衷心的感谢!感谢我们的指导老师王莉,本课程设计论文是在王莉老师的关怀和指导下完成的。她严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我们,在此谨向王老师致以诚挚的谢意和崇高的敬意。我们还要感谢在一起愉快的度过课程设计论文小组的同学们,正是由于你们的帮助和支持,我们才能克服一个一个的困难和疑惑,直至本文的顺利完成。

同时,我们要感谢的各位老师,正是由于他们的传道、授业、解惑,让我们学到了专业知识,并从他们身上学到了如何求知治学、如何为人处事。我们愿在未来的学习和研究过程中,以更加丰厚的成果来答谢曾经关心、帮助和支持过我们的所有老师、同学、和朋友,学无止境。明天,将是我们终身学习另一天的开始!

最后,再次对关心、帮助我们的老师和同学表示衷心地感谢!

26

河南理工大学本科课程设计报告

附1:源程序代码

1.主程序:

#include\void main() {

timer_init(); while(1) { keysccan(); display(); if(buttonflag==1)//有按键动作再执行 { switch(boxing) { case 0:led=0x20;//方波指示灯 th=tab2[f-1];//周期设定 tl=tab3[f-1];//周期设定 break; case 1:led=0x10;//锯齿波指示灯 th=255;//周期设定 tl=tab5[f-1];// dj=tab4[fz-1]/tab6[f-1];//步进计算 break; case 2:led=0x08;//三角波指示灯 th=255;//周期设定 tl=tab7[f-1];// ds=tab4[fz-1]/tab8[f-1];//步进计算 break; case 3:led=0x04; th=255;//周期设定 tl=tab11[f-1];// break; } } P3=led;//指示波形 } }

2.头文件:

#include

#define uchar unsigned char #define uint unsigned int sbit we=P3^6; sbit du=P3^7; sbit led1=P3^5; sbit led2=P3^4; sbit led3=P3^3; sbit led4=P3^2;

uchar th=236,tl=120;//定时器初值设定 uchar i;

uchar led,fz=50;//指示灯和幅值50代表5.0 uchar f=5;//1频率代表100

uchar boxing=0;//0方波1锯齿波2三角波3正弦波 uchar buttonflag;//按键动作标志 uchar dj;//锯齿波两点之间的步进; uchar ds;//三角波两点之间的步进 uchar sq;//方波切换标志

uchar scount;//三角波点数计数 uchar dz;//正弦波步进 uchar zcount;//正弦波计数 uchar code tab0[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,

27

河南理工大学本科课程设计报告

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};//共阴数码管显示0~f

//uchar code tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选编码 uchar code tab1[]={0xfe,0xfd,0xef,0xdf,0xbf,0x7f};//位选编码

uchar code tab2[]={236,246,249,251,252,252,253,253,253,254};//方波Th uchar code tab3[]={150,78,148,53,45,214,75,165,234,35};//方波TL uchar code tab4[]={5,10,15,20,26,31,36,41,46,51, 56,61,66,71,77,82,87,92,97,102, 107,112,117,122,128,133,138,143,148,153, 158,163,168,173,179,184,189,194,199,204, 209,214,219,224,230,235,240,245,250,255};//幅值 uchar code tab5[]={161,181,200,210,200,212,206,200,208,215};//锯齿TL uchar code tab6[]={80,50,40,35,25,25,19,15,15,15};//锯齿波点数

uchar code tab7[]={153,180,196,197,198,200,194,194,192,187};//三角波TL uchar code tab8[]={40,25,20,15,12,10,8,7,6,5};//三角波点数的一半 uchar code tab9[]={80,50,40,30,24,20,16,14,12,10};//三角波点数 uchar code tab10[]={135,145,158,167,176,188,199,209,//正弦64 218,226,234,240,245,249,252,254, 254,253,251,247,243,237,230,222, 213,204,193,182,170,158,146,133, 121,108,96,84,72,61,50,41, 32,24,17,11,7,3,1,0, 0,2,5,9,14,20,28,36, 45,55,66,78,90,102,114,128 };//正弦波表格

uchar code tab11[]={123,253,176,131,160,179,119,138,154,169};//正弦波tl uchar code tab12[]={64,64,32,16,16,16,8,8,8,8};//正弦波点数 uchar code tab13[]={135,158,176,199,//正弦32 218,234,245,252, 254,251,243,230, 213,193,170,146, 121,96,72,50, 32,17,7,1, 0,5,14,28, 45,66,90,114 };//正弦波表格

uchar code tab14[]={135,176,//正弦16 218,245, 254,243, 213,170, 121,72, 32,7, 0,14, 45,90 };//正弦波表格

uchar code tab15[]={135,//正弦8 218, 254, 213, 121, 32, 0, 45 };//正弦波表格

uchar code tab16[]={135,209,//正弦10 254,230, 158,61, 7,14, 78,128 };//正弦波表格

void delay(uchar i) {

uchar x,y;

for(x=i;x>1;x--) for(y=100;y>1;y--); }

void timer_init() {

TMOD=1;

28

河南理工大学本科课程设计报告

TH0=th; TL0=tl; EA=1; ET0=1; TR0=1; }

void display(void) //数码管动态显示四位数 {

uchar fzs,fzg,fs,fg; uchar x,y; fzs=fz/10; fzg=fz; fs=f/10; fg=f;

for(x=0;x<6;x++) {

du=1; switch(x) { case 0:P2=tab0[fzs]+0x80;break; case 1:P2=tab0[fzg];break; //case 2:P2=0x40;break; //case 3:P2=0x40;break; case 2:P2=tab0[fs];break; case 3:P2=tab0[fg];break; case 4:P2=tab0[0];break; case 5:P2=tab0[0];break; } du=0; we=1; P2=tab1[x]; we=0; for(y=120;y>0;y--); } }

void keysccan() {

P0=0xff; delay(1); if(P0!=0xff) { delay(1); if(P0!=0xff) { switch(P0) { case 0xfe:i=0;boxing=2;break;//三角波 case 0xfd:i=1;boxing=3;break;//正弦波 case 0xfb:i=2;if(f>1)f--;break;//频率减 case 0xf7:i=3;if(fz>1)fz--;break;//幅值减 case 0x7f:i=4;if(fz<50)fz++;break;//幅值加 case 0xbf:i=5;if(f<10)f++;break;//频率加 case 0xdf:i=6;boxing=1;break;//锯齿波 case 0xef:i=7;boxing=0;break;//方波 } buttonflag=1; } while(P0!=0xff) { display(); } }

else buttonflag=0; }

void timer0() interrupt 1 {

TH0=th; TL0=tl; sq=!sq;

29

河南理工大学本科课程设计报告

switch(boxing) { case 0:if(sq)P1=tab4[fz-2]; //如果直接写tab4[fz]不行 else P1=0; break; case 1:if(P1ds)P1=P1-ds; else P1=0; } if(scount>tab9[f-1]) scount=0; break; case 3:if(f<3)//100hz,200hz 64点 { if(zcount3&&f<7)//400-600hz 16个点 { if(zcount6) { if(zcount

}

30

河南理工大学本科课程设计报告

附 2:系统原理图

原理图

PCB图

31

河南理工大学本科课程设计报告

附 3:实物效果图

32

本文来源:https://www.bwwdw.com/article/lxka.html

Top