您的当前位置:首页正文

多功能信号发生器 毕业设计论文

2024-03-04 来源:客趣旅游网


摘要

多功能信号发生器是是一种常用的信号源,能产生模拟电压波形,广泛地应用于电子电路、自动控制系统和教学实验等领域。且特殊波形发生器的价格昂贵。目前使用的信号发生器大部分是函数信号发生器,它具有价格低、性能高和在低频范围内稳定性好、操作方便、体积小、耗电少等特点。

本设计信号发生器采用AT89S52单片机作为控制核心,外围采用了包括电源模块、数字/模拟转换电路(DAC0832)、运放电路(LM324)、键盘模块等。设计采用AT89S52单片机和一片DAC0832数模转换器以及一些外围电路组成低频信号发生器。此发生器能产生从1HZ-1MHZ的低失真正弦波,三角波,方波,矩形波,锯齿波等信号。输出波形的频率和种类可用程序控制改变。在单片机上加外围按键,通过按键控制波形频率的增减以及波形的选择。在单片机的输出端口接DAC0832进行D/A转换,再通过运算放大器进行波形幅度调整,最后输出波形接在示波器上显示。

本设计根据要求主要研究了软件编程实现波形和频率的可调。外围电路实现数模转换和信号波形放大。由于采用了LM324运算放大器和稳压电路,使其电路更加具有较高的稳定性能,性能比高。此电路清晰,出现故障容易查找错误,操作简单、方便。具有典型性。

[关键词]:函数信号发生器;单片机; DAC0832;AT89S52

摘要

Abstract

Signal generator is a common signal source, can produce an analog voltage waveform,widely used in electronic circuits, automatic control systems, and teaching experiments and other fields. waveform generator and a special price of expensive . Currently used mostly function signal generator signal generator。it has low cost, high performance and good stability at low frequency within the range, easy operation, small size, power consumption and so on. The design generator using AT89S52 microcontroller as the control, external analog / digital conversion circuit (DAC0832), operational amplifiers circuit (LM324), buttons and LCD liquid crystal display circuit.,etc..Design using AT89S52 microcontroller and a DAC0832 DAC as well as some peripheral circuit a low period of wave. The generator can produce from the 10-100HZ ,200-2000HZ, low-distortion sine wave, triangle wave, square wave signal, etc.. the period of wave can be controlled by procedure, at outer circle spare part of the machine, plus independence type keyboard , which can control wave increase or decrease of form-frequency and the choice of wave-form, at the same time LED display frequency size. The output of the machine connect DAC0832 to carry on a DA conversion,again pass operation amplifier to put an end exportation wave-form.

The major design required study a software programming waveform and frequency adjustable. External digital-analog conversion circuit and signal waveforms to enlarge. Because use the LM324 operational amplifier and voltage regulator circuit, so the circuit is with higher performance, the high performance. The circuit clear, easy to find failure error, simple and convenient. Is a typical circuit .

Key words: signal generator; SCM; DAC0832; AT89S52

1

摘要

目录

摘要 ................................................................................................................................................. 0 第一章 绪论 ................................................................................................................................... 3

1.1 课题背景、目的及意义 ................................................................................................... 3 1.2 设计要求和任务 ............................................................................................................... 3 1.3 单片机概述 ....................................................................................................................... 3

1.3.1 单片机的发展 ......................................................................................................... 4 1.3.2 单片机的应用 ......................................................................................................... 5 1.4 AT89S52单片机 ................................................................................................................ 6 1.5 信号发生器概述 ............................................................................................................... 8 1.6 本论文主要研究的内容 ................................................................................................... 9 第二章 系统设计方案 ............................................................................................................... 11

2.1 系统分析 ......................................................................................................................... 11

2.1.1 问题定义 ............................................................................................................... 11 2.1.2 系统可行性分析 ................................................................................................... 11 2.2 系统需求分析 ................................................................................................................. 12 2.3 总体方案设计 ................................................................................................................. 13 第三章 硬件设计 ....................................................................................................................... 13

3.1 总体硬件设计 ................................................................................................................. 14 3.2 系统模块设计 ................................................................................................................. 14

3.2.1 电源设计 ............................................................................................................... 14 3.2.2 显示器接口设计 ...................................................................... 错误!未定义书签。 3.2.3 复位与时钟电路设计 ........................................................................................... 15 3.2.4 键盘接口设计 ....................................................................................................... 16 3.2.5 D/A转换设计 ........................................................................................................ 17 3.2.6 I/V转换波形输出电路 .......................................................................................... 20

第四章 软件设计及测试 ............................................................................................................. 23

4.1软件总体设计 .................................................................................................................. 23 4.2 软件功能设计 ................................................................................................................. 23 系统总流程图如下图4-1: .................................................................................................. 23 图4-1 系统总流程框图 ........................................................................................................ 24 4.3 PROTEUS软件仿真 .......................................................................... 错误!未定义书签。 4.4 系统测试报告 ................................................................................................................. 27 结论与展望 ................................................................................................................................... 29 致 谢 ........................................................................................................................................... 30 参考文献 ....................................................................................................................................... 31 附录一 源程序 ............................................................................................................................. 32 附录二 电路原理图 ..................................................................................................................... 40 附录三 硬件实物图 ........................................................................................ 错误!未定义书签。 附录四 外文资料翻译 .................................................................................... 错误!未定义书签。

2

摘要

第一章 绪论

1.1 课题背景、目的及意义

随着电子测量及其他部门对各类信号发生器的广泛需求及电子技术的迅速发展,促使信号发生器种类增多,性能提高。尤其随着70年代微处理器的出现,更促使信号发生器向着自动化、智能化方向发展。现在,许多信号发生器带有微处理器,因而具备了自校、自检、自动故障诊断和自动波形形成和修正等功能,可以和控制计算机及其他测量仪器一起方便的构成自动测试系统。当前信号发生器总的趋势是向着宽频率覆盖、低功耗、高频率精度、多功能、自动化和智能化方向发展。

在科学研究、工程教育及生产实践中,如工业过程控制、教学实验、机械振动试验、动态分析、材料试验、生物医学等领域,常常需要用到低频信号发生器。而在我们日常生活中,以及一些科学研究中,锯齿波和正弦波信号是常用的基本测试信号。信号发生器作为一种通用的电子仪器,在生产、科研、测控、通讯等领域都得到了广泛的应用。 但市面上能看到的仪器在频率精度、带宽、波形种类及程控方面都已不能满足许多方面实际应用的需求。加之各类功能的半导体集成芯片的快速生产,都使我们研制一种低功耗、宽频带,能产生多种波形并具有程控等低频的信号发生器成为可能。

该设计课题的研究和制作全面说明对低频信号发生系统要有一个全面的解、对低频信号的发生原理要理解掌握,以及低频信号发生器工作流程:波形的设定,D/A转换,单片机(51单片机,键盘控制),显示和各模块的连接通信等各个部分要熟练联接调试,能够正确的了解常规芯片的使用方法、掌握简单信号发生器应用系统软硬件的设计方法,进一步锻炼了我们在信号处理方面的实际工作能力。

1.2 设计要求和任务

熟悉和掌握单片机的结构和工作原理,了解信号发生器的工作原理。掌握以单片机为核心的电路设计的基本方法,并通过实际程序的设计和调试,逐步掌握模块化程序的设计方法和调试技术;了解开发单片机应用系统的全过程。综合运用所学专业知识解决工程问题。 具体设计要求如下:

(1) 具有产生正弦波、三角波、方波、矩形波、锯齿波波形的功能。 (2) 信号的频率范围为1Hz-1MHz。 (3) 信号的输出波形幅度Vp-p可调。

(4) 通过键盘输入任意频率数值和选择任意波形。

3

摘要

1.3 单片机概述

单片微型计算机(单片机)作为微型计算机的一个很重要的分支,自问世以来,以其极高的性价比,受到人们的重视和关注,因此应用广泛,发展迅速。相对而言,单片机体积小、重量轻、抗干扰能力强,对环境要求不高,并且价格低廉、可靠性高、灵活性好,开发较为容易。目前,在我国,单片机已经广泛地用于智能仪表、机电设备过程控制、自动检测、家用电器和数据处理等各个方面。 1.3.1 单片机的发展

单片机诞生于20世纪70年代。最初的单片机是利用大规模集成电路技术把中央处

理单元(简称CPU)、数据存储器(RAM)、程序存储器(ROM)及其他I/O通信口集成在一块芯片上,构成一个最小的计算机系统。现代的单片机则增加了更多的片内外设(比如定时器、计数器、串行口、中断、并行I/O口,甚至包括A/D转换器、脉宽调制器PWM等),使得单片机的功能越来越强大,应用领域越来越广泛。因为这样一块芯片就具有一台计算机的功能,因而被称为单片微型计算机,简称单片机。由于单片机的硬件结构和指令系统都是按照工业控制要求来设计的,常用在工业的检查、控制装置中,因而也被称为微控制器(Micro-Controller)。

单片机按照其用途可以划分为通用型和专用型两大类。通常所说的单片机是指通用型单片机。通用型单片机是把可开发资源(如ROM,RAM,I/O口)全部提供给使用者。专用型单片机的硬件结构和指令是按照某个特定用途而设计的,如:频率合成调谐器(DDS)、USB控制器、收音机机芯控制器、打印机控制器等。 (1) 单片机发展历史

20世纪70年代,微电子技术正处于发展阶段,集成电路属于中规模发展时期,各种新材料、新工艺尚未成熟。

1976年Intel公司推出了MCS-48单片机,这个时期的单片机才是真正的8位单片微型计算机,并推向市场。

80年代初,单片机已经发展到了高性能阶段。

80年代,世界各大公司竞相研制出品种多、功能强的单片机,约有几十个系列,300多个品种,此时的单片机均属于真正的单片化,大多集成了CPU、RAM、ROM、数目繁多的I/O接口、多种中断系统,甚至还有一些带A/D转换器。其发展到了一个全新的阶段,应用领域更加广泛。 在众多品种的单片机中,MCS-51系列是我国较早引进的Intel公司的单片机产品。由于其性能优良,已经被国内外用户广泛认可和采用,占据了重要的

4

摘要

市场份额。

(2) 单片机发展特点

单片机技术从出现至今已走过近30多年的发展路程。纵观30多年来单片机的发展历程,单片机技术以微处理器技术及超大规模集成电路技术的发展为先导,以广泛的应用领域为动力,表现出极具个性的发展特点。主要表现在以下几点: 寿命长、8位、16位、32位共同发展、运行速度越来越快、低电压与低功耗、低噪声与高可靠性技术、OTP技术、MTP可多次编程。 (3) 单片机发展趋

回顾历史,在Intel公司推出了MCS-51不久便实施了最彻底的技术开放政策。在众多电器商、半导体商的积极参与下,将MCS-51发展成了众多型号系列的80C51 MCU(Micro Controller Unit,微控制器)家族。MCS-51经典的体系结构、极好的兼容性和Intel公司的开放政策不仅使众多厂家参与发展,也诱使半导体厂家对MCS-51实行为所欲为的改造。从各种新型单片机的性能可以看出,单片机是向大容量、高性能化、外围电路内集成化几方面发展。其中主要表现在以下及方面:CPU功能的加强、存储器的发展、片内I/O的改进、片内资源的增加、调试方式的改进等。 1.3.2 单片机的应用

单片机以其卓越的性能、小巧的体积、极高的性价比,在国民经济的各个领域中得到了广泛的应用。但是由于单片机自身的一些特点,在实际应用中又有着自己的应用特性和应用范围。 (1) 应用特点

基于单片机的应用系统和其他一般的微型机相比,具有以下一些特点:小巧灵活、可靠性高、使用方便,容易扩展、性价比高,容易产品化等等。 (2) 应用领域

智能化管理及过程控制等领域,大致可分如下几个方面:在智能仪器仪表上的应用、在工业控制中的应用、在家用电器中的应用、在计算机网络和通信领域中的应用、在医用设备领域中的应用等等。

此外,单片机在工商、金融、科研、教育和国防航空航天等领域都有着十分广泛的用途。

5

摘要

1.4 AT89S52单片机

(1) 功能特性描述

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash 存储器。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O口线,看门狗定时器,两个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

(2) 引脚功能

AT89S52单片机有44个引脚PLCC和TQFP方形封装形式,40个引脚的双列直插式封装形式,最常用的40个引脚封装形式及其配置如图1-1所示,各个引脚功能说明如下:

图1-1 89S52单片机的引脚

VCC:电源,接+5V GND:接地

P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1口:P1口是一个具有内部上拉电阻的8位双向I/O 口,P1 输出缓冲器能驱动4个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作

6

摘要

为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。在flash编程和校验时,P1口接收低8位地址字节。

P2口:P2口是一个具有内部上拉电阻的8位双向I/O 口,P2 输出缓冲器能驱动4个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能。在flash编程和校验时,P3口也接收一些控制信号。

RST:复位输入。晶振工作时,RST脚将持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。

ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。

外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52PSEN:

从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。

EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。

XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。

7

摘要

(3) AT89S52 的存储器结构

AT89S52器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64KB寻址。

程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。对于89S52,如果EA接VCC,读写程序先从内部存储器(地址为0000H~1FFFH)开始,接着从外部寻址,寻址地址为:2000H~FFFFH。

数据存储器:AT89S52 有256 字节片内数据存储器。高128 字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于7FH 的地址时,寻址方式决定CPU 访问高128 字节RAM 还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。 (4) 定时器

① MCS-51系列中51子系列有两个16位的可编程定时/计数器:定时/计数器T0和定时/计数器T1,52子系列有三个,还有一个定时/计数器T2。

② 每个定时/计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,通过编程设定来实现。

③ 每个定时/计数器都有多种工作方式,其中T0有四种工作方式;T1有三种工作方式,T2有三种工作方式。通过编程设置其方式寄存器TMOD可设定定时器工作于某种方式。

④ 每一个定时/计数器定时计数时间到时产生溢出,使控制寄存器TCON中相应的溢出位置位,溢出可通过查询或中断方式处理。 (5) 中断

AT89S52 有6个中断源:两个外部中断(INT0 和INT1),三个定时中断(定时器0、1、2)和一个串行中断。每个中断源都可以通过置位或清除特殊寄存器IE中的相关中断允许控制位分别使得中断源有效或无效。

1.5 信号发生器概述

目前,市场上的信号发生器多种多样,一般按频带分为以下几种: 超高频:频率范围1MHz以上,可达几十兆赫兹。 高频:几百KHZ到几MHZ。

8

摘要

低频:频率范围为几十HZ到几百KHZ。 超低频:频率范围为零点几赫兹到几百赫兹。 超高频信号发生器,产生波形一般用LC振荡电路。

高频、低频和超低频信号发生器,大多使用文氏桥振荡电路,即RC振荡电路,通过改变电容和电阻值,改变频率。

依据以上可以用单片机AT89S52,加上一片DAC0832,就可以做成一个简单的信号发生器,其频率受单片机运行的程序的控制。我们可以把产生各种波形的程序,写在ROM中,装入本机,按用户的选择,运行不同的程序,产生不同的波形。再在DAC0832输出端加上一些电压变换电路,就完成了一个频率、幅值可调的多功能信号发生器的设计。

1.6 本论文主要研究的内容

本设计采用89S52及其外围扩展系统,软件方面主要是应用C语言设计程序。系统以89S52单片机为核心,配置相应的外设及接口电路,用C语言开发,组成一个多功能信号发生系统。硬件电路设计具有典型性,电路设计具有实用性。 本设计将完成以下几个方面的工作:

(1) 选芯片,尽量满足一般工业控制要求、以增强其实用性。 (2) 原理图设计在保证正确的前提下,尽量采用典型的电路设计。

(3) 固化于单片机芯片中的软件采用模块设计,层次清楚,具有上电复位及初始化功能,具有很好的软件开发框架。

(4) 掌握单片机仿真软件KEIL的使用。 为此,论文包括以下内容:

① 绪论。主要介绍单片机发展概况和信号发生器的概述,为以后几章的介绍奠定基础。

② 系统总体方案设计。本章主要考虑系统性能、功能和器件选择。包括两个主要内容,系统分析和系统总体方案设计。

③ 系统的硬件设计。本章完成系统的硬件总体设计,详细说明了设计思路。 ④ 系统软件设计实现。本章是系统的具体实现,对系统按功能模块进行介绍。以及系统的测试结果总结。

9

摘要

10

摘要

第二章 系统设计方案

2.1 系统分析

2.1.1 问题定义

基于单片机的信号发生系统是一个实际应用系统,可为相关实验及实际应用提供支持。本论文包括硬件系统的详细设计及C语言在基本控制中的应用。此系统具有的功能如下:

硬件部分

(1) 单片机所需的平稳电压(电源设计±12V,5V); (2) 独立键盘;

(3) 时钟电路与复位电路;

(4) 具有8位精度的D/A转换功能; (5) 波形产生与电压变换功能; 软件部分

(1) 系统复位初始化; (2) 键盘扫描与处理; (3) 按键服务程序; (4) 定时器0中断服务程序;

(5) 正弦波,三角波,方波,矩形波,锯齿波发生程序; 2.1.2 系统可行性分析 (1) 设计环境

本设计主要用Protel电子设计软件进行电子线路的设计。电路原理图的设计是仿真中的第一步,也是非常重要的一步。电路原理图设计得好坏将直接影响到后面的工作。电路原理图的设计过程可分为以下几个步骤: ① 设置电路图纸参数及相关信息

11

摘要

② 装入所需要的元件 ③ 设置元件 ④ 连线电路图 ⑤ 调整、检查和修改 ⑥ 补充完善 (2) 可行性分析

根据技术指标及系统设计目的,经研究芯片的选择如下: ① 主控芯片采用ATMEL公司的AT89S52; ② 采用12MHz的晶振器为AT89S52提供时钟信号;

③ 稳压块选用7812与7805相串联,提供12V和5V电压,7912产生-12V电压; ④ 对于89S52的P0口的数据经过DAC0832进行D/A转换; ⑤ 8位D/A转换器采用DAC0832; ⑥ 运算放大器采用LM324。

(3) 设计中可能存在的问题及解决方案——排除问题的可行性讨论

此设计要求最终制作出实体,因此,设计原理图时应着重考虑设计最终的电路板的可行性。在设计时要对每一个电路模块仔细检查,查阅其他书籍进行校对,还要进行实物实验,以确保设计的可实现性。在最后的电路板的调试阶段,需要诊断模块程序和单片机仿真机合作进行,从而克服调试程序本身的不可靠性,可方便地进行调试及错误诊断。 (4) 经济上的可行性讨论

本设计是一个实验系统,芯片的选择在前面已经讨论,从前面的讨论中可见芯片大部分都是常用芯片。因此,设计费用主要集中在购买元器件上,而大部分的元器件,在市场上很容易找到不是很贵,所以经济上本设计完全可行。

2.2 系统需求分析

(1)系统功能要求

系统具有D/A转换功能,信号幅度放大功能,上电自动复位功能,键盘输入接口。 (2) 系统性能要求

① 系统的D/A转换功能具有8位精度; ② 89S52单片机时钟信号为12MHZ; ③ 系统上电自动复位;

12

摘要

2.3 总体方案设计

算法设计:本设计涉及的算法较少,将在第四章软件设计中介绍。

系统总体结构框图设计:一个单片机主系统的硬件电路设计包含两部分内容:一是单片机系统扩展部分设计,它包括存储器扩展和接口扩展。存储器扩展指EPROM、EEPROM和RAM的扩展。接口扩展是指各接口芯片以及其他功能器件的扩展。二是各功能模块的设计,如信号检测功能模块、信号控制功能模块、人机对话功能模块、通讯功能模块等,根据系统功能要求配置相应的D/A、键盘、显示器等外围设备。本设计主要包括硬件设计和软件设计。其中硬件主系统框图如图2-1所示。

电流电压转换电路复位电路AT89S52按键波形输出D/A转换芯片

图2-1 主系统结构框图

13

摘要

第三章 硬件设计

3.1 总体硬件设计

单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元(如ROM、I/O、定时/计数器等)容量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计适当的电路。二是系统配置,即按照功能要求配置外围设备如显示设备、D/A转换等。 (1) 程序存贮器

89S52内部自带8K的ROM,512B的RAM,所以不需要对其扩展存储器。 (2) 键盘接口

本设计使用按键较少,采用独立式键盘控制。 (3) D/A转换

本设计D/A转换部分采用DAC0832芯片,由于它自带锁存器,故在使用时不必加74LS373进行数据锁存。 (4) 信号变换部分

对信号的变换部分采用四运放集成芯片LM324,它采用14脚双列直插塑料封装,它的内部包含四组形式完全相同的运算放大器。

3.2 系统模块设计

3.2.1 电源设计

稳压电源是单片机控制系统的重要组成部分,它不仅为测控系统提供多路电源电压,还直接影响到系统的技术指标和抗干扰性能。

本机使用三种共地电源:+12V,-12V,+5V,硬件设计中采用自带稳压电源方式,此电源稳压主要采用稳压块7812、7912和7805,使用这些稳压块,稳压效果比较好,使用较方便。

14

摘要

图3-1 稳压电源模块电路图

3.2.2 复位与时钟电路设计 (1 ) 复位电路设计

单片机的复位是靠外电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便实现初始化状态复位。为了保证应用系统可靠地复位,通常是RST引脚保持10ms以上的高电平。复位电路连接如图3-4所示。此电路仅用一个电容及一个电阻。系统上电时,在RC电路充电过程中,由于电容两端电压不能跳变,故使RESET端电平呈高电位,系统复位。经过一段时间,电容充电,使RESET端呈低电位,复位结束。

+5V C1 R1 89S52

图3-2 复位电路

(2) 时钟电路设计

8051系列单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。本设计采用内部震荡方式。在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振),就构成了内部振荡方式。由于单片机内部有一个高增益反向放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。晶振通常选用6MHZ、12MHZ或24MHZ。内部

15

摘要

振荡方式如图3-5所示。图中电容C1、C2起稳定振荡频率、快速起振的作用。电容值一般5~30pF。内部振荡方式所得时钟信号比较稳定,实用电路中使用较多。

图3-3 内部振荡

3.2.3键盘接口设计 (1) 人机交互接口的设计

所谓人机交互接口,是指人与计算机之间建立联系、交互信息的输入/输出设备的接口。这些输入/输出设备主要有键盘、显示器和打印机等。是控制系统与操作人员之间的交互窗口。键盘的结构形式一般有两种:独立式键盘与矩阵式键盘。本次主要介绍设计所用的独立键盘的工作方式。

(2) 键盘设计需要解决的几个问题 ① 按键的确认

键盘实际上是一组按键开关的集合,其中每一个按键就是一个开关量输入装置。键的闭合与否,取决于机械弹性开关的通、断状态。反应在电压上就是呈现出高电平或低电平,若高电平表示断开,那么低电平键闭合。所以,通过电平状态(高或低)的检测,便可确定相应按键是否已被按下。 ② 重键与连击的处理

实际按键操作中,若无意中同时或先后按下两个以上的键,系统确定哪个键操作是有效的,完全取决设计者的意图。如视按下时间最长者为有效键,或认为最先按下的键为当前的按键,也可以将最后释放的键看成是输入键。不过单片机控制系统的资源有限,交互能力不强,通常总是采用单键按下有效,多键同时按下无效的原则。

有时,由于操作人员按键动作不够熟练,会使一次按键产生多次击键的效果,及重键的情形。为消除重键的影响,编制程序时可以将键的释放作为按键的结束。等键释放电平后再转去执行相应的功能程序,以防止一次击键多次执行的错误发生。

16

摘要

③ 按键防抖动技术

键盘作为向系统提供操作人员的干预命令的接口,以其特定的按键代表着各种确定操作命令。所以准确无误地辨认每个键的动作及其所处的状态,是系统能否正常工作的关键。 多数键盘的按键均采用机械弹性开关。一个电信号通过机械触点的断开、闭合过程,完成高、低电平的切换。由于机械触点的弹性作用,一个按键开关闭合及断开的瞬间必然伴随有一连串的抖动。

消除按键盘抖动通常有两种方法:硬件消抖和软件消抖。通过硬件电路消除按键过程中抖动的影响是一种广为采用的措施。这种做法,工作可靠,且节省机时。 硬件消抖是通过在按键输出电路上加一定的硬件线路来消除抖动,一般采用R—S触发器或单稳态电路。 独立式键盘就是各按键相互独立,每个按键各接一根I/O口线,每根I/O口线上的按键都不会影响其它的I/O口线,示例如图3-6所示。矩阵式键盘又叫行列式键盘。用I/O口线组成行、列结构,键位设置在行列的交点上。例如4×4的行、列结构可组成16个键的键盘,比一个键位用一根I/O口线的独立式键盘少了一半的I/O口线。对矩阵键盘的工作过程可分两步:第一步是CPU首先检测键盘上是否有键按下;第二步是再识别是哪一个键按下。

图3-4 独立式键盘

3.2.4 D/A转换设计

DAC0832是CMOS工艺制造的8位D/A转换器,属于8位电流输出型D/A转换器,

转换时间为1us,片内带输入数字锁存器。DAC0832与单片机接成数据直接写入方式,当单片机把一个数据写入DAC寄存器时,DAC0832的输出模拟电压信号随之对应变化。利用D/A转换器可以产生各种波形,如方波、三角波、正弦波、锯齿波等以及它们组合产生的复合波形和不规则波形。 (1) DAC0832主要性能

17

摘要

输入的数字量为8位;

采用CMOS工艺,所有引脚的逻辑电平与TTL兼容; 数据输入可以采用双缓冲、单缓冲和直通方式; 转换时间:1us; 分辨率:8位;

单一电源:5—15V,功耗20mw; 参考电压:-12— +12V; (2) DAC0832内部结构资料

芯片内有两级输入寄存器,使DAC0832具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。D/A转换结果采用电流形式输出。要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个功能。运放的反馈电阻可通过RFB端引用片内固有电阻,还可以外接。

该片逻辑输入满足TTL电压电平范围,可直接与TTL电路或微机电路相接,下面是芯片电路原理图3-7。

图3-5 DAC0832电路原理图

待转换的8位数字量由芯片的8位数据输入线D0~D7输入,经DAC0832转换后,

通过2个电流输出端IOUT1和IOUT2输出,IOUT1是逻辑电平为\"1\"的各位输出电流之和,IOUT2是逻辑电平为\"0\"的各位输出电流之和。另外,ILE、CS、WR1、WR1和XFER是控制转换的控制信号。

DAC0832由8位输入寄存器、8位DAC寄存器和8位D/A转换电路组成。输入寄存器和DAC寄存器作为双缓冲,因为在CPU数据线直接接到DAC0832的输入端时,数据

18

摘要

在输入端保持的时间仅仅是在CPU执行输出指令的瞬间内,输入寄存器可用于保存此瞬间出现的数据。有时,微机控制系统要求同时输出多个模拟量参数,此时对应于每一种参数需要一片DAC0832,每片DAC0832的转换时间相同,就可采用DAC寄存器对CPU分时输入到输入寄存器的各参数在同一时刻开始锁存,进而同时产生各模拟信号。 DAC0832的数据输出方式在微机应用系统中,通常使用的是电压信号,而DAC0832输出的是电流信号,这就需要由运算放大器组成的电路实现转换。其中有输出电压各自极性固定的单极性输出和随系统变化输出电压有正负极性的双极性输出两种输出方式。 (3) DAC0832芯片原理

ILE是输入数据锁存信号,高电平有效。 CS是片选信号,低电平有效。 WR1是读信号,低电平有效。

当ILE 、CS 、WR1 同时有效时LE=1输入寄存器的输出随输入而变化。 WR1 由低到高跳变时将输入数据锁存到输入寄存器。 XFER是转移控制信号,低电平有效。 WR2是写信号,低电平有效。

当XFER 、WR2同时有效时,LE2=1,DAC寄存器输出随输入而变化。

WR2出现由低到高电平上跳变时将输入数据锁存到DAC寄存器,数据进入D/A转换器开始D/A转换。

255VREF IOUT1模拟电流输出端1 当输入数字全“1”是,输出电流最大约为256RFB,,全是“0”

是输出电流为零。

IOUT2模拟电流输出端2,IOUT1+IOUT2=常数。

制作低频信号发生器有许多方案:主要有单缓冲方式,双缓冲方式和直通方式。单缓冲方式具有适用于只有一路模拟信号输出或几路模拟信号非同步输出的情形的优点,但是电路线路连接比较简单。本设计主要用单缓冲方式。主要介绍单缓冲工作方式,单缓冲工作方式DAC寄存器工作处于直通状态,输入寄存器工作于受控锁存器状态,此时需要一

19

摘要

次写操作就开始转换,转换一个数据的主要过程,首先去数字量,而后依次打开第一级锁存和第二级锁存。

D/A转换简单说就是应用电阻解码网络,将N位数字量逐位转化为模拟量并求和,从而实现将N位数字量转化为模拟量(简单的说就是加权,比如十进制的1101=1*10^3+1*10^2+0*10^1+1*10^0,只是在这里应用的是二进制算法) (4) DAC0832同CPU的连接

微处理器与DAC0832之间可以不加锁存器,而是利用DAC0832内部锁存器,将CPU通过数据总线直接向DAC0832输出的停留时间很短的数据保存,直至转换结束。

DAC0832同CPU的接口如图3-8所示。DAC0832作为微处理器的一个端口,用地址92H的选通作为CS和WR1的控制信号,微处理器的写信号直接来控制XFER和WR2。

图3-6 D/A转换电路图

3.2.5 I/V转换波形输出电路

DAC0832为电流输出型转换器,一般要求输出是电压,所以还必须经过一个外接的运

算放大器转换成电压。

如图3-9所示为一种用两级运算放大器组成的模拟电压输出电路。从第一个运放输出为单极性模拟电压,从第二个运放输出为双极性模拟电压。如果参考电压为+5V,则点a输出电压为0~-5V,点b输出电压为±5V。

20

摘要

图3-7 I/V转换波形发生电路

(1) LM324简介

LM324是四运放集成电路,它采用14脚双列直插塑料封装。它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。每一组运算放大器可用图1所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的相位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。LM324的引脚排列见3-10中图2。由于LM324四运放电路具有电源电压范围宽,静态功耗小,可单电源使用,价格低廉等优点,因此被广泛应用在各种电路中。

图3-8 LM423外部与内部结构

(2) 双极性输出的实现

若D/A转换器输出为双极性,则设计如图3-11所示。

21

+5V 摘要

U1VfbDAC0832Iout1Iout265R1=2RBI17R3=2RCR2=RVout1I2R9810Vout2Vref=(数字码-128)/128

图3-9 D/A转换器双极性输出电路

图3-11中,运算放大器A2的作用是把运算放大器A1的单向输出电压转换成双向输出电压。其原理是将A2的输入端Σ通过电阻R1与参考电压VREF相连,VREF经R1向A2提供一个偏流I1,其电流方向与I2相反,因此运算放大器A2的输入电流为I1、I2之代数和。则D/A转换器的总输出电压为:

U1VREFRWRWU (3-1) R1R2'Dn (3-2) UVREF256' VREF为DAC0832提供的参考电压,Dn输入的波形数据。由上式3-1和3-2可得:

''DnDnRWRW1 U1VREFVREFVREFRW() (3-3)

R1R2256256R2R1 取R12R2,当Dn'0时,U1VREFU1VREFRW;Dn'128时,U10;Dn'255时, 2R2RW。由上述分析可看出,Dn'取不同数据时(0~255),可得对称的双极性波2R2形输出。再取RWR1,则式(3-1)可表示为:

'DnU1VREF(1)

128由上式可知,输出信号的幅度受VREF的改变而改变。

22

摘要

第四章 软件设计及测试

4.1软件总体设计

应用系统中的应用软件是根据系统功能要求而设计的,能可靠地实现系统的各种功能。一个优秀的应用系统的应具有下列特点:

(1) 根据软件功能要求,将系统软件分成若干个独立的部分。设计出软件的总体结构,使其结构清晰、流程合理。

(2) 要树立结构化程序设计风格,各功能程序模块化、子程序化。既便于调试、链接,又便于移植、修改。

(3) 建立正确的数学模型。即根据功能要求,描述各个输入和输出变量之间的数学关系,它是关系到系统好坏的重要因素。

(4) 为提高软件设计的总体效率,以简明、直观法对任务进行描述,在编写应用软件之前,应绘制出程序流程图。

(5) 要合理分配系统资源,包括ROM、RAM、定时数器、中断资源等。 (6) 注意在程序的有关位置处写上功能注释,提高程序的可读性。 (7) 加强软件抗干扰设计,它是提高系统应用可靠性的有利措施。 本系统的软件包括以下几个程序模块: (1) 初始化程序; (2) 显示程序;

(3) 键盘扫描程序与处理程序; (4) 定时器0服务程序;

(5) 正弦波发生程序及其服务程序; (6) 三角波发生程序;

(7) 方波发生程序; (8) 矩形波发生程序; (9) 锯齿波发生程序;

4.2 软件功能设计

系统总流程图如下图4-1:

23

摘要

开始初始化调用按键扫描子程序N是否有按键按下Y判断功能调输出波形子程序 图4-1 系统总流程框图

其中系统的初始化流程如图4-2所示。

设定初始值延时两秒转键盘扫描图4-2 初始化流程图

(1) 键盘扫描及处理程序设计

这部分程序包括如下几部分: ① 键盘扫描程序judge;

24

摘要

② 先对P1置数,行扫描; ③ 判断是否有键按下; ④ 延时10ms,软件去干扰;

⑤ 确认按键按下X = P1, 保存行扫描时有键按下时状态; ⑥ 列扫描;

⑦ 保存列扫描时有键按下时状态; ⑧ 取出键值; ⑨ 执行相应键值程序。 下面分别介绍其功能及设计思想。 键盘扫描程序:

单片机系统中,键盘扫描是CPU工作的一个主要内容之一。CPU忙于各项工作任务时,如何兼顾键盘扫描。既保证不失时机的响应键盘操作,又不过多占用CPU时间。因此,要根据应用系统中的CPU的忙、闲情况,选择好键盘的工作方式。

在单片机应用系统设计中,为了节省硬件,通常采用非编码键盘,在这种键盘结构中,单片机对它的控制有三种方式:程序控制扫描方式;定时扫描工作方式;中断工作方式。 ① 程序控制扫描方式

这种方式就是只有当单片机空闲时,才调用键盘扫描子程序,响应键盘的输入请求。 ② 定时扫描方式

这种方式就是每隔一定的时间对键盘扫描一次。通常是利用单片机内部定时器产生10ms的定时中断,CPU响应定时器溢出中断请求,对键盘进行扫描,以响应键盘输入请求。

③ 中断工作方式

为进一步提高CPU效率,可以采用中断扫描工作方式。即在键盘有健按下时,才执行键盘扫描,执行该键功能程序。

本系统采用程序控制扫描工作方式。在该设计中的键盘线连接于89S52的P3口上。键盘扫描程序自复位后就开始工作,时刻监视键盘,有无键按下。在监视键盘过程中,允许定时器T0中断,即同时动态显示数据和输出波形。一旦有键按下,先延时10ms,去除键的抖动,然后关中断,不允许定时器T0发生中断。其框图如图4-3所示:

25

摘要

对P1置数行扫描保存列状态N判断有无键按下延时10ms计算键值确认按键保存行状态确认按键保存行状态执行键值程序

图4-3 键盘扫描

键盘采用独立式键盘,由软件产生相应编码,再根据相应编码调用相应的子程序。 (2) 正弦波三角波发生程序设计

DAC0832是8位的D/A转换器件,当输入00数字量的时候,输出为0V电压;当输入80数字量的时候,输出为2.5V电压;当输入FF数字量的时候,输出为5V电压。单片机的I/O输出均为+5 V的TTL电平,因此产生的正弦波幅值为+2.5 V。将一个周期内的正弦波形等分为256份,那么第1点的角度为0°,对应的正弦值为2.5sin0°;第2点的角度为360°/256,对应的正弦值为2.5sin (360°/256 ) ……,如此计算下去,将这些模拟量正弦值都转换为单极性方式下的数字量,得到一张按照点号顺序排列的正弦波波形数据表格。而每次送到锁存器的八位数字量是根据查正弦波形数据表格而得到。 其实在计算正弦波形数据的时候,并不需要算出整个0—2π区间的每一个值,而只

11需计算出0—π中的值就行,其他区间的值都可以通过对0—π中的值取不同的变换。

2211比如π—π的值可以和0—π值一一对应,而π—2π的值可以对0—π区间的值取反得

22到。计算值可以用C语言编程得到。 幅度公式为Y=2.5[1+sin(

90N)] (N=0,1,2……64) 6426

摘要

5≈0.0196 255Y2Y1 那么每一个点相对于起一个点的递增率为A= (Y2当前的点,Y1为前一

δ 相应的Y值数字化后的递增量δ=个点)

所以每一个点的数字量与递增率A成一一对应关系。 (3) 锯齿波发生程序设计

锯齿波中的斜线用一个个小台阶来逼近,在一个周期内从最小值开始逐步递增,当达到最大值后又回到最小值,如此循环,当台阶间隔很小时,波形基本上近似于直线。适当选择循环的时间,可以得到不同周期的锯齿波。锯齿波发生原理与方波类似,只是高低两个延时的常数不同,所以用延时法,来产生锯齿波。

4.3 系统测试报告 (1) 系统使用说明

要产生一个波形,正确的操作过程如下:

① 在接电源后,电源指示灯亮,按下复位键

② 把本机右端两根标有“输出”字样的线接示波器输入端,红线为波形输出线,黑线为地线。

③ 输入波形代号:按下键盘上k1键,可调节输入波形种类。

④ 选好波形代号后,选择k2---k3键,分别对频率进行增加降低调整。 ⑤ 输入完波形代号与频率后,输出端将产生出想要的波形及相应的频率。 ⑥ K4键是停止输出。 (2)系统性能指标 ① 输出频率宽度

正弦波:10Hz~100Hz可按步进每次10Hz调节 三角波:50Hz~500Hz可按步进每次50Hz调节 方 波:200Hz~2000Hz可按步进每次200Hz调节 ② 输出波形的幅值

本机设计目标是用于低频小信号范围。最高幅值: +5V。 ③ 波形零点调节范围:0V~+5V。 ④ 本机可带的负载:RL≥500Ω。

27

摘要

⑤ 本机输出电流:I0+≤40mA,I0-≤20mA。

28

摘要

结论与展望

(1) 结论

单片机控制多功能信号可以用于“单片机技术”的教学实践,也可以用于实验信号的产生。其比较典型的接口电路设计也为实际应用提供参考。该仪器的研制既解决了实验教学的需求,也节约了实验设备投资,降低了实验成本。经过进一步完善后,可由学生利用课程设计的机会,亲自动手制作,这样还可以进一步降低成本,同时极大地提高了学生的动手能力,是一件一举多得的好事。

随着科学技术的不断发展,以及实验教学要求的不断更新,要求我们开发的应用系统具有良好的可扩充性和更新能力,作为一名技术人员,应时刻跟踪科技发展的步伐,不断丰富专业知识,不断完善我们开发的系统。本设计是是自己对“单片机技术”课程的理解和实际技术的总结。论文中可能会存在一些不足之处,敬请评审专家和各位老师批评指正。 (2) 展望未来

通过本次毕业设计,我感到自己应用基础知识及专业知识解决问题的能力有了很大的提高。并且这次毕业设计的选题,是一个实际应用工程。是我学完单片机课程后,自己动手做的一个大系统。尽管在设计过程中碰到了不少“难题”,通过自己翻阅大量资料,解决了一个个难题。通过这次毕业设计,我深深体会到:世上无难题,只怕有心人。碰到难题不要惧怕,只要你肯钻研,问题总会有解决的办法。我想,通过这次毕业设计,到了工作单位后,我将能够更快的适应工作岗位和工作要求,我对自己未来充满信心。 总之,这次毕业设计对我而言是受益匪浅的。

29

摘要

致 谢

首先,我要感谢的是我的导师张建平老师。张老师平日里工作繁多,但在我做毕业设计的每个阶段,都给予我耐心的指导和帮助。可以说,没有张老师的耐心指导和帮助,我是不可能顺利完成我的毕业设计的。另外,张老师严谨的治学态度以及对待学生极端负责的精神,给我留下很深的印象,并将积极影响我今后的学习和工作。其次,感谢电信0903班的兄弟姐妹们,是他们陪伴我度过愉快的大学四年生活!最后我要感谢的是我亲爱的物联网工程学院的每一位老师和同学。

总之,感谢每一位关心过我,爱护过我的人。滴水之恩,当涌泉相报。最后,再次感谢我的导师张建平老师。

30

摘要

参考文献

[1] 陈永真等编著.新编全国大学生电子设计大赛试题精解选.电子工业出版社,2009 [2] 童诗白、华成英编著.电子技术基础.北京高等教育出版社,第一版,2001 [3] 康华光、陈大钦编著. 电子技术基础.北京高等教育出版社,第四版,1999 [5] 阎石编著. 电子技术基础.北京高等教育出版社,第五版,2006

[6] 李清泉、黄昌宁编著.集成运算放大器原理与应用.北京科学出版社,第一版,1980 [7] 陈永真等编著.高效率开关电源设计与制作.北京中国电路出版社,第一版,2008 [8] 李杏春主编.单片机原理及使用接口技术.北京航空航天大学出版社,第一版,1996 [9] 李华主编.MCS-51系列单片机实用接口技术.北京航空航天出版社,第三版,1993 [10] 张毅刚、彭喜元主编.单片机原理与应用.电子工业出版社,第一版,2008 [11] 何利民编著.单片机应用系统设计.北京航空航天大学出版社,第一版,1995 [12] 侯伯文编著.单片微型计算机原理及应用.机械工业出版社,第一版,1987 [13] 潘新民、王燕芳编著.微型计算机控制技术.电子工业出版社,第一版,2004

[14] 全国大学生电子设计竞赛组委会编.第五届全国大学生电子设计竞赛获奖作品选编.北京理工大

学出版社,第一版,2003

[15] 章忠全主编.电子技术基础实验与课程设计.中国电力出版社,第一版,1999 [16] 黄远林主编.C程序设计基础.中山大学出版社,第一版,2004

[17] 杨旭、徐庆等编.C语言程序设计实用教程.人民邮电出版社,第一版,2005 [18] 朱承学主编.C语言程序设计教程.中国水利水电出版社,第一版,2004

31

摘要

附录一 源程序

#include

#define uchar unsigned char #define uint unsigned int //#define T_temp 67

#define Fosc 24000000/12000000 //12分频后的频率 #define DAdata P0 //DA数据端口

sbit DA_S1= P2^0; // 控制DAC0832的8位输入寄存器,仅当都为0时,可以输出数据(处于直通状态),否则,输出将被锁存

sbit DA_S2= P2^1; // 控制DAC0832的8位DAC寄存器,仅当都为0时,可以输出数据(处于直通状态),否则,输出将被锁存 sbit key= P3^2;

uchar wavecount; //'抽点'计数

uchar THtemp,TLtemp; //传递频率的中间变量 //uint T_temp;

uchar judge=1; //在方波输出函数中用于简单判别作用 uchar waveform; //当其为0、1、2时,分别代表三种波

uchar code freq_unit[3]={10,50,200}; //三种波的频率单位

uchar idata wavefreq[3]={1,1,1}; //给每种波定义一个数组单元,用于存放单位频率的个数

uchar code lcd_hang1[]={\"Sine Wave \" \"Triangle Wave \" \"Square Wave \" \"Select Wave: \" \"press No.1 key! \

uchar idata lcd_hang2[16]={\"f= Hz \

/*uchar code wave_freq_adjust[]={ //频率调整中间值 0xff,0xb8,0x76,0x56,0x43,0x37,0x2e,0x26,0x20,0x1c, //正弦波频率调整中间值

0xff,0x8e,0x5a,0x41,0x32,0x28,0x20,0x1b,0x17,0x0e, //三角波频率调整中间值 0xff,0x8e,0x5a,0x41,0x32,0x28,0x20,0x1b,0x17,0x0e};

32

uint code wave_freq_adjust[]={ //频率调整中间值

摘要

380,184,118,86,67,55,46,28,38,32,

295,142, 90,65,50,40,32,27,23,14, 295,142, 90,65,50,40,32,27,23,14}; */

/*uchar code waveTH[]={

0xfc,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xfc,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};

uchar code waveTL[]={

0xf2,0x78,0xfb,0x3c,0x63,0x7d,0x8f,0x9d,0xa8,0xb1,

0x17,0x0b,0xb2,0x05,0x37,0x58,0x70,0x82,0x90,0x9b,

0x4d,0xa7,0xc4,0xd3,0xdc,0xe2,0xe6,0xea,0xec,0xee}; //***********这两组数组很重要,需要根据波形来调试,选择合适的值,使输出波形达到频率要求************// uchar code waveTH[]={

0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};

uchar code waveTL[]={

0x06,0x8a, 0x10,0x4e, 0x78,0x93, 0xa8,0xb3, 0xbe,0xc6, //正弦波频率调整中间值

0xac,0xde,0x48,0x7a,0x99,0xaf,0xbb,0xc8,0xd0,0xde, //三角波频率调整中间值 0xff,0x8e,0x5a,0x41,0x32,0x28,0x20,0x1b,0x17,0x0e};

uchar code triangle_tab[]={ //每隔数字8,采取一次 f,

uchar code sine_tab[256]={ //输出电压从0到最大值(正弦波1/4部分)

0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0x

33

0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78, 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xf

0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80, 0x78,0x70,0x68,0x60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,0x00};

摘要

b1,0xb4,0xb7,0xba,0xbc,

0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe

5,0xe7,0xe9,0xea,0xec,

0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff

,0xff,0xff,0xff,0xff,

//输出电压从最大值到0(正弦波1/4部分) 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0

xf2,0xf1,0xef,

0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xc

c,0xca,0xc7,0xc5,0xc2,

0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x

90,0x8d,0x89,0x86,0x83,0x80,

//输出电压从0到最小值(正弦波1/4部分) 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x

4e,0x4c,0x48,0x45,0x43,

0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0

x1a,0x18,0x16 ,0x15,0x13,

0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0

x00,0x00,0x00,0x00,0x00,0x00,

//输出电压从最小值到0(正弦波1/4部分) 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0

x0a,0x0b,0x0d,0x0e,0x10,

0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0

x33,0x35,0x38,0x3a,0x3d,

0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0

x6f,0x72,0x76,0x79,0x7c,0x80};

void delay(uchar z) {

uint x,y;

34

摘要

}

for(x=z;x>0;x--) for(y=110;y>0;y--);

void triangle_out() //三角波输出 {

DAdata=triangle_tab[wavecount++]; }

void sine_out() //正弦波输出 {

if(wavecount>64) wavecount=0;

DA_S1=0; //打开8位输入寄存器 DA_S1=1; //关闭8位输入寄存器

DAdata=sine_tab[wavecount++]; }

void square_out() //方波输出 {

DA_S1=0; //打开8位输入寄存器 DA_S1=1; //关闭8位输入寄存器

judge=~judge;

if(judge==1) DAdata=0xff; }

35

else DAdata=0x00;

DA_S1=0; //打开8位输入寄存器 DA_S1=1; //关闭8位输入寄存器

摘要

void main() {

uchar i=0;

DA_S2=0; //使DAC寄存器处于直通状态 DAdata=0;

DA_S1=1; //关闭8位输入寄存器 init_lcd();

waveform=0; }

TMOD=0x01; //设置定时器0为16位工作方式 IT0=1; //设置外部中断0为下降沿触发 ET0=1; //开定时器中断 EX0=1; EA=1; while(1) { }

//DAout(0xff); //可输出TTL波形 //DAout(0x80); //T_temp=32;

void timer0() interrupt 1 {

//TH0=0xff;

//TL0=T_temp; TH0=THtemp; TL0=TLtemp; //T_temp=28;

//TH0=(65536-(Fosc*T_temp))/256;

36

摘要

}

//TL0=(65536-(Fosc*T_temp))%256; if(waveform==0) sine_out(); else if(waveform==1) triangle_out(); else if(waveform==2) square_out();

void key_int0() interrupt 0 {

uchar keytemp;

case 0xd0: //频率按规定单位依次增加 wavefreq[waveform]++; uint total_freq; //总频率

EA=0; TR0=0; //关总中断与定时器 delay(5); //延时够吗

if(key==0) //确实有按键按下而引发中断 {

keytemp=P3&0xf0; //获取P3口高四位的值 switch(keytemp) {

case 0xe0: //选择波形

waveform++;

if(waveform>2) waveform=0; break;

if(wavefreq[waveform]>10) wavefreq[waveform]=1; // 这边要用“>10”,因为它比“=11”可靠

break;

// 性更高,使加数有个上限,不会一直

加下去*/

case 0xb0: //频率按规定单位依次衰减

wavefreq[waveform]--;

37

摘要

if(wavefreq[waveform]<1) wavefreq[waveform]=10; //这边要用“<1”,因为它比“=0”可靠

性更高

case 0x70: //TTL输出 }

//试验

DA_S2=1; //使DAC寄存器关闭

break;

break;

//waveform=0;/**/

THtemp=waveTH[waveform*10+(wavefreq[waveform]-1)]; //方括号中选取第几个

数后,并把该值赋给T_temp

TLtemp=waveTL[waveform*10+(wavefreq[waveform]-1)];

//T_temp=wave_freq_adjust[waveform*10+(wavefreq[waveform]-1)]; //方括号中选

取第几个数后,并把该值赋给T_temp

lcd_hang2[5]=total_freq%10+0x30; //在液晶中显示个位,(0x30 在液

//T_temp+=20;

total_freq= wavefreq[waveform] * freq_unit[waveform]; //求输出频率(个数*单位)

晶显示中表示数字0)

disp_lcd(0x80,&lcd_hang1[waveform*16]); //在第一行显示 disp_lcd(0xc0,lcd_hang2); //在第二行显示 }

// T_temp=32;

//TH0=(65536-Fosc*T_temp)/256; //TL0=(65536-Fosc*T_temp)%256;

38

total_freq/=10; lcd_hang2[4]=total_freq%10+0x30; //在液晶中显示时十位 total_freq/=10; lcd_hang2[3]=total_freq%10+0x30; //在液晶中显示时百位 total_freq/=10; lcd_hang2[2]=total_freq%10+0x30; //在液晶中显示时千位

摘要

}

//wavecount=0; //'抽点'计数清零 //while(!key);

EA=1; TR0=1; //开启总中断与定时器

39

123456

DVCC +12VDSWD7220V1D9D10C10uFVin7812GNDD8VCC +5V变压器2附录二 电路原理图

10uFC3VinGND27912Vout10uF1210uFGNDVout31Vin7805Vout3SW10uFSWVCC -12VC5V 摘要

R7.5KC15K-12V1234567891011121314151617181920P1.0VCCP1.1P0.0P1.2P0.1P1.3P0.2P1.4P0.3P1.5P0.4P1.6P0.5P1.7P0.6RST/VPDP0.7P3.0EA/VDDP3.1ALE/PROGP3.2PSENP3.3P2.7P3.4P2.6P3.5P2.5P3.6P2.4P3.7P2.3XTAL2P2.2XTAL1P2.1VSSP2.04039383736353433323130292827262524232221765416151413218DI0DI1DI2DI3DI4DI5DI6DI7XFERWR2VCCILEVrefRfbIOUT1IOUT2DGNDAGNDCSWR12019891112103117R215K4R315KSW23ATL0821R17.5K65B7TL0828DAC08325VR47.5KOUTBB12VR7.5KR7.5KC112MC2AT89S52AATitleSizeNumberRevisionBDate:File:26-May-2013Sheet of C:\\Users\\Windows7\\Desktop\\MyDesign2.ddDrawn Bby:1234

5640

摘要

稳压电源模块

41

摘要

系统模块

42

因篇幅问题不能全部显示,请点此查看更多更全内容