基于51单片机的函数发生器设计_第1页
基于51单片机的函数发生器设计_第2页
基于51单片机的函数发生器设计_第3页
基于51单片机的函数发生器设计_第4页
基于51单片机的函数发生器设计_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 课程设计报告 课 程 名 称 51单片机 设 计 题 目 基于51单片机的函数发生器的设计与制作系 部 名 称 机械电子工程学院 专 业 班 级 2013级电子信息工程(2)班 姓 名 段绍敏、徐敏、李观生 学 号 134520、13452040、134520 成 绩 指 导 教 师 胡子健 2016年9月 摘 要函数发生器主要作为实验用信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。本次设计的主要目的就是为了学习基于单片机的函数发生器的工作原理,设计出一个低频的函数发生器。从事本次设计不仅可以让我对函数发生器的原理有更深的了解,而且也对单片机的知识有更深的掌握。单片机有很多

2、种类,而且制作函数发生器的方案繁多,本次设计是以AT89C51单片机为核心,选用DAC0832为数模转换芯片,并辅以必要的模拟电路,设计出了一个基于AT89C51单片机的函数信号发生器。其设计内容主要包括单片机最小系统的设计、DA转换模块的设计、键盘控制模块的设计及LCD显示模块的设计。其中DA转换模块包括2块DAC0832芯片和OP07运放电路,第一块DA芯片的输出作为第二块DA芯片的参考电压,而第一块DA芯片的2.5V参考电压由MC1403芯片的输出来提供;键盘控制模块采用3个按键来选择波形类型及调节频率、幅值;显示模块则采用LCD1602来显示波形类型、频率及幅值;最终将设计好的函数发生

3、器的输出接上示波器,在示波器上显示实际输出的波形。本设计最终能达到预期的效果,能实现电压步进0.1V,方波能够任意调节占空比以及在LCD1602上显示波形类型、电压和频率,并且可以通过示波器来观察其输出的波形。【关键词】AT89C51单片机 DAC0832 LCD1602 按键目 录前 言5第一章 单片机概述6第一节 单片机的发展历史及趋势6第二节 AT89C51单片机结构简介7一、AT89C51的基本特性7二、AT89C51单片机的外部引脚介绍8第三节 本章小结10第二章 方案选择11第一节 波形生成方案11第二节 频率改变方案12第三节 本章小结13第三章 系统硬件设计14第一节 各模块硬

4、件设计14一、系统总体设计14二、单片机最小系统设计15三、8位DA转换器DAC083216四、2.5V基准电压模块设计20五、系统显示功能设计20六、系统按键功能设计24第二节 本章小结25第四章 系统软件设计27第一节 Keil C51开发环境简介27一、Keil uVision3环境介绍27二、利用Keil uVision3创建新项目28第二节 系统软件流程设计29一、系统软件总体设计29二、子系统软件设计30三、系统详细流程32第三节 本章小结33第五章 设计成果34第一节 实物展示和性能说明34一、系统设计的实物整体34二、液晶显示模块35三、示波器显示模块37第二节 本章小结39结

5、 论40致 谢41参考文献42附 录43一、英文原文:43二、英文翻译:46三、工程设计图纸:48四、源程序:4962前 言本次设计的主要是学习基于单片机的函数发生器的工作原理,制作出一个低频的函数信号发生器。在科学研究、工程教育及生产实践中,如工业过程控制、教学实验、机械振动试验、动态分析、材料试验、生物医学等领域,常常需要用到低频信号发生器。函数发生器作为一种通用的电子仪器,在生产、科研、测控、通讯等领域都得到了广泛的应用。但市面上能看到的此类仪器在频率精度、带宽、波形种类及程控方面都已不能满足许多方面实际应用的需求。我们长期使用的信号发生器,大部分是由模拟电路构成的,这类仪器作为信号源,

6、频率可达上百MHz,在高频范围内其频率稳定性高、可调性好。但用于低频信号输出时,它所需要的RC值很大,参数准确度难以保证。而且其体积大,损耗也大。前人研制了采用8031单片机及程序存储器构成的最小系统组成的数字式低频信号发生器,它在低频范围内性能好,但是体积较大,价格较贵。随着大规模集成电路技术的发展,集成度不断提高,使得微型机的速度和性能大为提高,可靠性增加,成本降低。MCS-51就是将具有存储程序、处理数据以及与外设交换信息的功能电路集成在一块芯片中,并符合一定系统结构而构成的单片机。 单片机有很多种类,而且制作函数发生器的方案繁多,本次设计是以AT89C51单片机为核心,选用DAC083

7、2为数模转换芯片,并辅以必要的模拟电路,设计出了一个基于AT89C51单片机的函数信号发生器。其设计内容主要包括单片机最小系统的设计、DA转换模块的设计、键盘控制模块的设计及LCD显示模块的设计。其中DA转换模块包括2块DAC0832芯片和OP07运放电路,第一块DA芯片的输出作为第二块DA芯片的参考电压,而第一块DA芯片的2.5V参考电压由MC1403芯片的输出来提供;键盘控制模块采用3个按键来选择波形类型及调节频率、幅值;显示模块则采用LCD1602来显示波形类型、频率及幅值;最终将设计好的函数发生器的输出接上示波器,在示波器上显示实际输出的波形。本设计最终能达到预期的效果,能实现电压步进

8、0.1V,方波能够任意调节占空比以及在LCD1602上显示波形类型、电压和频率,并且可以通过示波器来观察其输出的波形。第一章 单片机概述单片机的全称是单片微型计算机(Single Chip Microcomputer),国际上统称为微控制器(Micro Controller Unit,MCU)。它把组成微型计算机的各功能部件(中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、可编程存储器(EPROM)、并行及串行输入/输出(I/O)接口电路、定时器/计数器、中断控制器等)集成在一块半导体芯片上,构成一个完整的微型计算机。在进行一个具体的单片机应用系统开发之前,需要对单片机的

9、硬件资源配置和体系结构有较深入的了解。本章将对AT89C51单片机的基础内容作较详细的讲解。第一节 单片机的发展历史及趋势单片机出现的历史并不长,但发展十分迅猛。它的产生与发展和微处理器的产生和发展大体相同,自1971年Intel公司首先推出4位微处理器以来,它的发展到目前为止大致可分为4个阶段:一、 单片机发展的初级阶段(20世纪70年代初70年代中期)。1971年11月Intel公司首先设计出集成度为2000只晶体管/片的4位微处理器Intel 4004,并配有RAM、ROM和移位寄存器,构成了第一台MCS-4微处理器。随后又设计出了8位微处理器Intel8008,在此期间Fairchil

10、d公司也设计出了8位微处理器F8。这些微处理器虽然还不是真正的单片机,但从此拉开了研制单片机的序幕。二、 低性能单片机阶段(20世纪70年代中期80年代初期)。以1976年Intel公司推出的MCS-48系列为代表,采用将8位CPU、8位并行I/O端口、8位定时器/计数器、RAM和ROM等集成在一块半导体芯片上的单片结构,虽然其寻址范围有限,也没有串行I/O端口,RAM、ROM容量小,中断系统也较简单,但功能可满足一般工业控制和智能化仪表等的需要。这种采用将CPU与计算机外围电路集成到一块芯片上的技术,标志着单片机的诞生。从而导致了计算机领域中开始出现两大分支:通用计算机系统和嵌入式系统。三、

11、 高性能单片机阶段(20世纪80年代初期90年代初期)。这一阶段推出的8位单片机普遍带有串行口,有多级中断处理系统,多个16位定时器/计数器。片内RAM、ROM的容量加大,寻址范围可达64KB,个别片内还带有A/D转换接口。这一阶段中最具典型性的产品为1980年Intel公司推出的MCS-51系列单片机,其他代表产品有Motorola公司的6801和Zilog公司的Z8等。这类单片机的运算速度大幅度提高,增加了外围电路功能,强化了智能控制的特征,拓宽了单片机的应用范围,使之能用于智能终端、局域网络的接口等。因而,它是目前国内外单片机产品的主流,各制造公司还在不断的改进和发展它。四、8位单片机巩

12、固发展阶段及16位、32位单片机不断推出阶段(20世纪90年代至今)。此阶段单片机在集成度、功能、速度、可靠性、应用领域等方面向更高水平发展。如:CPU的位数有8位、16位、32位,而结构上采用双CPU结构或内部流水线结构,以提高处理能力和运算速度;时钟频率高达20MHz甚至更高,使指令执行速度相对加快;提高新型的串口总线结构,为系统的扩展和配置打下了良好的基础;增加新的特殊功能部件,如监视定时器WDT、DMA传输、PWM输出、可编程计数阵列PCA、调制解调器、通信控制器、浮点运算单元等;半导体制造工艺的不断进步,使芯片向高集成度、低功耗方向发展。此阶段单片机内集成的功能越来越强大,并朝着片上

13、系统方向发展,单片机在大量数据的实时处理、高级通信系统、数字信号处理、复杂工业过程控制、高级机器人以及局域网等各方面得到大量应用。随着技术的进步,早期的8位中、低档单片机逐渐被淘汰,但8位单片机并没有消失,尤其是51系列单片机不仅没有消失,反而还呈现快速发展的趋势。目前,单片机正朝着高性能和多品种方向发展,将进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方向发展。第二节 AT89C51单片机结构简介一、AT89C51的基本特性AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable

14、Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51单片机有40个管脚,分成两排,每一排各有20个脚,其中左下角标有箭头的为第1脚,然后按逆时针方向依次为第2脚、第3脚第40脚。在40个管脚中,其中有32个脚可用于各种控制,比如控制小灯的亮与灭、控制电机的正转与反转、控制电梯的升与降等,这32个脚叫做单

15、片机的“端口”,在单片机技术中,每个端口都有一个特定的名字,比如第一脚的那个端口叫做“P1.0”。AT89C51单片机的主要特性:与MCS-51兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 二、AT89C51单片机的外部引脚介绍AT89C51单片机的外部引脚的排列及名称如图1.1所示:图1.1所示管脚描述如下:VCC:提供掉电空闲正常工作电压。GND:接地。 P0口:P0口是开漏双向口,

16、可以写为1使其状态为悬浮用作高阻输入。P0也可以在访问外部程序存储器时作地址的低字节,在访问外部数据存储器时作数据总线,此时通过内部强上拉输出1。P1口:P1口是带内部上拉的双向I/O口,向P1口写入1时,P1口被内部上拉为高电平,可用作输入口。当作为输入脚时,被外部拉低的P1口会因为内部上拉而输出电流。其中P1.0用作定时/计数器2的外部计数输入/时钟输出;P1.1用作定时/计数器2重装载/捕捉/方向控制。图1.1 AT89C51单片机的外部引脚图P2口:P2口是带内部上拉的双向I/O口,向P2口写入1时,P2口被内部上拉为高电平,可用作输入口。当作为输入脚时,被外部拉低的P2口会因为内部上

17、拉而输出电流。在访问外部程序存储器和外部数据时,分别作为地址高位字节和16位地址(MOVX DPTR),此时通过内部强上拉传送1。当使用8位寻址方式(MOVRi)访问外部数据存储器时,P2口发送P2特殊功能寄存器的内容。P3口:P3口是带内部上拉的双向I/O口。向P3口写入1时,P3口被内部上拉为高电平,可用作输入口。当作为输入脚时被外部拉低的P3口会因为内部上拉而输出电流,P3口还具有以下特殊功能:RxD(P3.0):串行输入口TxD(P3.1):串行输出口INT0(P3.2):外部中断0INT1(P3.3):外部中断T0(P3.4):定时器0外部输入T1(P3.5):定时器1外部输入WR(

18、P3.6):外部数据存储器写信号RD(P3.7):外部数据存储器读信号RST:当晶振在运行中只要复位管脚出现2个机器周期高电平即可复位。内部有扩散电阻连接到Vss,仅需要外接一个电容到Vcc即可实现上电复位。ALE:地址锁存使能,在访问外部存储器时,输出脉冲锁存地址的低字节,在正常情况下,ALE输出信号恒定为1/6振荡频率。并可用作外部时钟或定时,注意每次访问外部数据时一个ALE脉冲将被忽略。ALE可以通过置位SFR的auxlilary.0禁止,置位后ALE只能在执行MOVX指令时被激活。PSEN:当执行外部程序存储器代码时,PSEN每个机器周期被激活两次.在访问外部数据存储器时PSEN无效,

19、访问内部程序存储器时PSEN无效。EA/VPP:在访问整个外部程序存储器时EA必须外部置低,如果EA为高时将执行内部程序,除非程序计数器包含大于片内FLASH的地址。该引脚在对FLASH编程时提供5V/12V编程电压(Vpp),如果保密位1已编程EA在复位时由内部锁存。XTAL1:反相振荡放大器输入和内部时钟发生电路输入。XTAL2:来自反向振荡器的输出。第三节 本章小结本章第一节主要介绍了单片机的发展历史及未来趋势,让我们对单片机有了一个初步的了解。第二节比较详细地描述了AT89C51单片机的结构特性及引脚功能,为学习下一章打下了坚实的基础。第二章 方案选择函数发生器一般是指能自动产生正弦波

20、、方波、三角波的电压波形的电路或者仪器。其波形产生方法有单片机控制DA技术、直接数字合成等;电路形式可以采用由运放及分离元件构成,也可以采用单片集成函数发生器。本章将讨论采用何种方法设计函数发生器。第一节 波形生成方案函数发生器在科学实验、电子测量、自动控制、设备检测、无线通讯等领域有着广泛的应用。信号发生器的基本功能是可以提供符合一定技术指标要求的电信号,其波形、频率、幅值均可以调节。实现信号发生器电路的方案很多,其特点也不同,主要有模拟电路实现方案、数字电路实现方案和模数混合实现的方案。1、 采用单片机控制技术实现的信号发生器 该方案的主要思路是采用编程的方法来产生希望得到的波形,用户将要

21、输出的波形预先存储在半导体存储器中,在需要某种波形时将储存在存储器中的数据依次读出来,经过数模转换、滤波等处理后,输出该波形的信号。该方案优点是输出信号的频率稳定,抗干扰能力强,实现任意波形的信号容易,可通过外置按键或键盘来设定所需要产生信号源的类型和频率,还可以通过显示器显示出波形的相关信息。不足之处是由于单片机的处理数据的速度有限,当产生频率比较高的信号时,输出波形的质量将下降。2、利用直接数字频率合成(DDS)集成芯片实现的信号发生器 随着大规模集成电路制作技术的发展,采用直接数字频率合成技术实现的信号产生集成芯片应用越来越广泛。DDS集成芯片内部主要由相位累加器、波形存储器、高速D/A

22、转换器等环节组成,在时钟脉冲的控制下,相位累加器对输入的频率控制字不断进行累加得到相应的相位码,同时相位码序列作为地址信号去寻址波形存储器进行相位码到幅度码的转换,并输出不同的幅度编码。这一系列不同的幅度编码经过D/A转换器得到相应的阶梯电压信号,最后经过低通滤波器平滑,即可输出相应的信号。一般集成DDS芯片内部时钟脉冲的频率固定,其相位累加器位数也不变,所以只需改变频率控制字即可实现输出信号频率的变化。利用DDS集成电路设计的信号发生器具有输出频率高,频率稳定度高,输出频率分辨率高,易于实现全数字控制等优点,是目前设计高精度、高性能信号发生器的首选方案。目前典型的DDS集成芯片有AD9850

23、、AD9851、AD9852和AD9834等。3、 利用专用函数发生器集成电路实现的信号发生器 利用集成函数发生器专用芯片可以方便的实现多种波形的输出,而且外围电路简单,调试容易。例如早期的函数发生器集成芯片有ICL8038、BA205、XR2206/2207/2209等,这些芯片的不足时输出信号的频率不高,最大仅有几百kHz,调节方式不灵活,频率和脉冲信号的占空比不能独立调节。MAX038是美国MAXIM公司推出的新一代单片函数信号发生器,MAX038内部含有精密带隙电压参考、鉴相器和TTL同步输出,可以采用较少的外部元件构成一台高频函数发生器,也可单独用作电压控制振荡器、频率调制器、脉宽调

24、制器、锁相环、频率合成器和FSK信号发生器,它的主要特点有:0.1Hz20MHz的输出频率调节范围,350:1的扫频范围,10%90%的占空比调节范围,可以输出正弦波、方波、矩形波、三角波、锯齿波等波形,且频率和占空比调节互不影响,是目前较为理想的函数发生器集成芯片。4、采用分立器件组成的信号发生器 过去传统的信号发生一般采用这种方式,该方案一般采用集成运算放大器外加电阻、电容等元件,构成方波、三角波发生器,然后将三角波信号或方波信号转换成正弦波信号输出;也可以直接采用RC正弦波信号发生器产生正弦波信号。该方案的缺点是输出信号频率较低,输出的波形质量差,输出频率调节范围小,电路复杂且体积大。

25、综合考虑成本、复杂程度、技术要求等各种因素,选择了单片机控制双DA技术完成频率的改变这种方案。第二节 频率改变方案方案一:单片机控制DA产生波形均是由查表产生,查表频率的改变可导致送至DA的数据端得点与点之间的距离变化,点与点距离的变化后,波形的周期将发生变化,也就是波形的频率改变了。因此控制单片机的查表频率即可实现频率的步进。其优点是能够很方便的改变频率;其缺点是对单片机查表频率的精度要求较高,且随着频率增高而提高。方案二:单片机控制计数器的初值。其优点是解除了单片机对查表频率精度的要求;其缺点是当DA的输出频率高于100Hz时,每改变一个计数频率引起输出频率的增加或者减少的频率都大于100

26、Hz。对计数器的位数要求较高(至少需要10位),且由于受到VCO的振荡频率的影响输出频率失真度增加。综合方案一和方案二的优缺点,本文采用了在低频时控制单片机的查表频率从而改变输出频率,在高频时改变计数器的计数初值来改变频率的方法从而较完美地实现要求。第三节 本章小结本章主要介绍了本设计的具体方案,本设计采用双DA技术来生成波形,在频率控制方面,本设计采用控制单片机查表的频率和改变计数器的计数初值相结合的方法。第三章 系统硬件设计 硬件设计是系统设计非常重要的一部分,这关系到系统能否正常运行,每一个模块的设计都关系到整体。本章将详细地介绍系统各个模块的设计,包括单片机最小系统、DA转换模块、液晶

27、显示模块和按键控制模块等。第一节 各模块硬件设计 一、系统总体设计本设计总体框图如图3.1所示:图3.1 系统总体框图系统总体款图主要包括以下几个部分:单片机部分:本设计选用AT89C51单片机作为控制核心。DA转换部分:本设计采用2块DAC0832芯片,其中一块的输出用于另一块DA的基准基准电压部分:第一块DA的2.5V基准电压通过MC1403芯片来实现。显示部分:本设计采用LCD1602来显示波形的类型、幅值的大小、频率的大小。键盘部分:本设计采用3个独立按键来控制波形类型的选择、幅值大小的改变及频率大小的改变。二、单片机最小系统设计本设计以AT89C51单片机为核心,要使AT89C51单

28、片机正常工作,必须满足它的基本条件,这就是最小工作系统,如图3.2所示:图3.2 AT89C51单片机最小系统最小工作系统包括如下几部分:电源:单片机使用的是5V电源,其中正极接40引脚(Vcc),负极接20引脚(GND)。晶振电路:晶振是晶体振荡器的简称,单片机是一种时序电路,必须提供脉冲信号才能正常工作。AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要

29、求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为11.0592MHz,电容值约为30F。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。单片机内部已经集成了振荡器;使用晶体振荡器,接18(XTAL2)、19(XTAL1)脚。只要买来晶振、电容,按图接上即可。复位电路:单片机复位电路是指单片机的初始化操作。单片机启运运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。因而,复位是一个很重要的操作方式。单片机的复位

30、操作使单片机进入初始化状态,其中包括使程序计数器PC0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值,见表3.1。 表3.1 寄存器复位后状态表特殊功能寄存器初始状态特殊功能寄存器初始状态ABPSWSPDPLDPHP0P3IPIE00H00H00H07H00H00HFFH*00000B0*00000BTMODTCONTH0TL0TH1TL1SBUFSCONPCON00H00H00H00H00H00H不定00H0*B按图中画法连好9脚(RST),单片机即可上电初始化。复位电

31、路的工作原理是:通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程度,即为低电平,时间不少于5ms。复位后单片机才开始正常工作。EA引脚:31引脚一般接到正电源端。三、8位DA转换器DAC0832DAC0832芯片引脚介绍DAC0832是双列直插式8位D/A转换器。能完成数字量输入到模拟量(电流)输出的转换。图3.3和图3.4分别为DAC0832的引脚图和内部结构图。其主要参数如下:分辨率为8位,转换时间为1s,满量程误差为1LSB,参考电压为(+10-10)V,供电电源为(+5+15)V,逻辑电平输入与TTL兼容。从图4中可见

32、,在DAC0832中有两级锁存器,第一级锁存器称为输入寄存器,它的允许锁存信号为ILE,第二级锁存器称为DAC寄存器,它的锁存信号也称为通道控制信号/XFER。图3.3中,当ILE为高电平,片选信号/CS和写信号/WR1为低电平时,输入寄存器控制信号为1,这种情况下,输入寄存器的输出随输入而变化。此后,当/WR1由低电平变高时,控制信号成为低电平,此时,数据被锁存到输入寄存器中,这样输入寄存器的输出端不再随外部数据DB的变化而变化。对第二级锁存来说,传送控制信号/XFER和写信号/WR2同时为低电平时,二级锁存控制信号为高电平,8位的DAC寄存器的输出随输入而变化,此后,当/WR2由低电平变高

33、时,控制信号变为低电平,于是将输入寄存器的信息锁存到DAC寄存器中。图3.3 DAC0832引脚图图3.3中其余各引脚的功能定义如下:(1)、DI7DI0:8位的数据输入端,DI7为最高位。(2)、IOUT1:模拟电流输出端1,当DAC寄存器中数据全为1时,输出电流最大,当DAC寄存器中数据全为0时,输出电流为0。(3)、IOUT2:模拟电流输出端2,IOUT2与IOUT1的和为一个常数,即IOUT1IOUT2常数。(4)、RFB:反馈电阻引出端,DAC0832内部已经有反馈电阻,所以RFB端可以直接接到外部运算放大器的输出端,这样相当于将一个反馈电阻接在运算放大器的输出端和输入端之间。(5)

34、、VREF:参考电压输入端,此端可接一个正电压,也可接一个负电压,它决定0至255的数字量转化出来的模拟量电压值的幅度,VREF范围为(+10-10)V。VREF端与D/A内部T形电阻网络相连。(6)、VCC:芯片供电电压,范围为(+515)V。(7)、AGND:模拟量地,即模拟电路接地端。(8)、DGND:数字量地。图3.4 DAC0832内部结构图DAC0832的工作方式DAC0832可处于三种不同的工作方式:(1)直通方式 :当ILE接高电平,CS、WR1、WR2和XFER都接数字地时,DAC处于直通方式,8位数字量一旦到达DI7DI0输入端,就立即加到8位D/A转换器,被转换成模拟量。

35、例如在构成波形发生器的场合,就要用到这种方式,即把要产生基本波形的数据存在ROM中,连续取出送到DAC去转换成电压信号。(2)单缓冲方式 :只要把两个寄存器中的任何一个接成直通方式,而用另一个锁存器数据,DAC就可处于单缓冲工作方式。一般的做法是将WR2和XFER都接地,使DAC寄存器处于直通方式,另外把ILE接高电平,CS接端口地址译码信号,WR1接CPU的WR信号,这样就可以通过一条MOVX指令,选中该端口,使CS和WR1有效,启动D/A转换。(3)双缓冲方式 :主要在以下两种情况下需要用双缓冲方式的D/A转换。需在程序的控制下,先把转换的数据输入输入缓存器,然后在某个时刻再启动D/A转换

36、。这样,可先选中CS端口,把数据写入输入寄存器;再选中XFER端口,把输入寄存器内容写入DAC寄存器,实现D/A转换。在需要同步进行D/A转换的多路DAC系统中,采用双缓冲方式,可以在不同的时刻把要转换的数据打入各DAC的输入寄存器,然后由一个转换命令同时启动多个DAC转换。先用3条输出指令选择3个端口,分别将数据写入各DAC的输入寄存器,当数据准备就绪后,再执行一次写操作,使XFER变低同时选通3个D/A的DAC寄存器,实现同步转换。DAC0832与单片机连接及外围电路的设计图3.5 第一片DAC0832外接转换电路图3.6 第二片DAC0832外接转换电路本次函数发生器的设计采用双AD技术

37、。即用第一片DAC0832芯片的输出作为第二片DAC0832的基准电压,通过改变单片机对第一片DAC0832的输入来改变其输出,从而改变第二片DAC0832的基准电压,从而控制第二片DAC0832的输出电流,由此可见,幅值的大小可由单片机来控制。同样单片机也与第二片DAC0832相连接,通过单片机查表频率的改变和定时器初值的改变来控制波形频率的大小。由于DAC0832是电流输出型,在输出端需接一个电流电压转换电路和一个负电压转换为正电压转换电路即可输出0Vref的电压值。其电路图如图3.5、图3.6所示:四、2.5V基准电压模块设计本设计采用MC1403芯片实现2.5V电压基准,其引脚图如图3

38、.7所示:图3.7 MC1403引脚图MC1403是低压基准芯片。一般用作812bit的D/A芯片的基准电压等一些需要基本精准的基准电压的场合。输出电压:2.5V/-25mV,输入电压范围:4.5V40V,输出电流:10mA。因为输出是固定的,所以电路很简单。就是Vin接电源输入,GND接底,Vout加一个0.1uf1uf的电容就可以了。Vout一般用作812bit的D/A芯片的基准电压。五、系统显示功能设计本设计采用LCD1602来显示波形的类型、幅值及频率。LCD1602液晶显示模块,它可以显示两行,每行16个字符,采用单+5V电源供电,外围电路配置简单。LCD1602管脚如图3.8所示:

39、图3.8接口管脚功能表如表3.2所示:图3.8 LCD1602芯片管脚图表3.2 LCD1602管脚功能表引脚号符号状态功能1Vss电源地2Vdd电源+5V3V0对比度控制端4RS输入寄存器选择5R/W输入读、写操作6E输入使能信号7DB三态数据总线8DB三态数据总线9DB三态数据总线10DB三态数据总线11DB三态数据总线12DB三态数据总线13DB三态数据总线14DB三态数据总线15LEDA输入背光+5V16LEDK输入背地光 LCD1602主要管脚介绍:V0:液晶显示器对比度调整端,接地电源时对比度最高,对比度过高时会产生鬼影,使用时可以通过一个10K的电位器调整对比度。RS:寄存器选择

40、,高电平时选择数据寄存器;低电平时选择指令寄存器。R/W:读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址;当RS为高电平R/W为高电平R/W为低电平时可以写入数据。E:使能端,当E端由高电平跳变成低电平时,液晶模块执行指令。LCD1602控制指令:LCD1602有11个控制指令,如表3.3所示:表3.3 LCD1602指令对应功能表指令功能清屏清DDRAM和AC值归位AC=0,光标、画面回HOME位输入方式设置设置光标、画面移动方式显示开关控制设置显示、光标及闪烁开、关光标、画面位移光标、画面移动,不影响DDRAM功能设置工作方式设置C

41、GRAM地址设置设置CGRAM地址。A5A0=03FHDDRAM地址设置DDRAM地址设置读BF及AC值读忙标志BF值呵地址计时器AC值写数据数据写入DDRAM或CGRAM内读数据从DDRRAM或CGRAM清屏指令表如表3.4所示:表3.4 LCD1602清屏指令表RSR/WDB7DB6DB5DB4DB3 DB2DB1 DB00000000001显示开关控制如表3.5所示:表3.5 显示开关控制表RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000001DCB功能:设置显示、光标及闪烁开、关;其中:D表示显示开关:D=1为开,D=0为关。 C表示光标开关:C=1为开,C=0为关。

42、 B表示闪烁开关:B=1为开,B=0为关。光标、画面位移控制如表3.6所示:表3.6 LCD1602光标、画面位移控制表RSR/WDB7DB6DB5DB4DB3DB2DB1DB0000001S/CR/L*功能:光标、画面移动,不影响DDRAM。其中:S/C=1:画面平移一个字符位; S/C=0:光标平移一个字符位; R/L=1:右移;R/L=0:左移。功能设置如表3.7所示:表3.7 LCD1602功能设计表RSR/WDB7DB6DB5DB4DB3DB2DB1DB000001DLNF*功能:工作方式设置(初始化指令)其中:DL=1,8位数据接口;DL=0,四位数据接口; N=1,两行显示;N=

43、0,一行显示; F=1,5 10点阵字符;F=0,5 7点阵字符。读写控制时序如表3.8所示:表3.8 LCD1602读写控制时序RSR/WE功能00下降沿写指令代码01高电平读忙标志和AC码10下降沿写数据11高电平读数据LCD1602与单片机连接图如下:图3.9 LCD1602与单片机连接电路图六、系统按键功能设计此信号发生器采用三个按键与LCD1602配合使用来调节输出信号的各个参数。如图3.10所示,三个按键分别赋予的意义为:“+”键、“”键、功能键。图3.10 按键分布与功能图“功能键”是选择输出波形需要调节的参数,“+”键和“”键则是增加或者减小输出波形幅值或频率。操作时必须观察L

44、CD1602上显示的内容再按键来调节相应参数。LCD1602上显示的内容如图3.11所示。(1)G:M“+”键和“”键调节输出波形类型,改变的是mode 的值(方波为0,三角波为1,正弦波为2)。(2)G:F “+”键和“”键调节输出信号频率,改变的是定时器的值。(3)G:A “+”键和“”键调节输出信号幅值,改变的是A的值(0.05.0V, 步进为0.1V)。图3.11 LCD1602显示内容示意图说明:按动“功能键”会使G的值在0、1、2之间循环切换。第二节 本章小结本章是本文的核心内容,其详细地介绍了该系统硬件设计的具体方案,对各硬件模块以及调试过程中遇到的问题及解决方法作了比较系统的阐

45、述。其中硬件设计方面包括单片机最小系统的设计、按键的设计、液晶显示模块的设计、DA转换模块的设计及基准电压的设计等。在本次硬件调试过程中主要遇到两个问题:第一个问题是由于焊接技术比较生疏,造成在焊接完电路板后出现短路问题。因为没有通过PCB制板,而是由自己直接搭的电路,所以在焊接过程中用到了很多导线来连接,导线越多则越容易焊接错误。比如出现短路、短路以及线跟线之间的干扰等一系列问题。这些问题都可能导致整个电路不通电。在开始调试的时候发现将USB电源接口通过数据线接入电脑的USB接口后电路板上的电源指示灯并不亮,当时想到可能是由于短路或者断路造成的,后来通过万用表一一排查发现原来是USB电源接口

46、那里焊接短路,于是用吸焊器将那里的锡吸出并重新焊接,问题终于得到解决。第二个问题是液晶上显示乱码。通过网上查询后知道液晶显示乱码可能有两个原因:一是软件延时问题,二是线路干扰问题。我试着编了一个简单的液晶测试程序,通过改变延时时间的大小(从100us到1s)发现液晶仍然显示乱码,因此我认为问题不是出在这里,所以我把注意力放在了线路上。经过半天的检查,发现液晶的使能端口和读写指令端口的导线裸露处相连了,所以造成了干扰。通过将两根导线分开并重新焊接后问题得到了解决,液晶正常显示。在此次电路的调试过程中出现的问题虽然很让人烦恼,但是在通过自己的努力使得问题得到解决后,那种成就感油然而生,并且然我懂得

47、了搞科研是多么需要那种认认真真、一丝不苟的精神啊!第四章 系统软件设计如果说硬件是一个系统的躯体,那么软件就是系统的灵魂。所谓软件设计当然包括软件的流程设计和具体程序的编写。流程的设计代表系统的一个大概的运行思路,而程序的编写当然涉及到编写程序的软件。本章将介绍编写程序的Keil软件及具体流程的设计,并且将最终的设计成果一一展现。第一节 Keil C51开发环境简介一、Keil uVision3环境介绍Keil C51是KEIL公司推出的51系列单片机C语言软件开发系统,对于多数单片机的应用开发,Keil C51是一款非常优秀的软件。Keil C51软件支持功能强大的集成开发调试工具和丰富的库

48、函数,生成的目标代码效率很高,多数语句的汇编代码很紧凑,且容易理解,在开发大型软件时更能体现高级语言的优势Keil uVision3是Keil C51 for Windows的集成开发环境,可以用开编译C源代码、汇编源程序、连接和重定位目标文件和库文件、创建HEX文件、调试目标程序等。它集编辑、编译、仿真于一体,并且支持汇编语言。Keil uVision3提供的多功能的文件操作环境,包括一个内藏式编辑室,它是标准的文件编辑器,具有十分强大的文件编辑功能,例如文件块的移动、剪切、复制、查找、删除等,它支持鼠标操作,也有快捷键。在Keil uVision3中,用户可以同时打开多个窗口对多个不同的文

49、件进行处理,这一特性有利于使用C51进行结构化的多模块程序设计。在模块化编程时,如果同时打开多个不同文件,可以在Keil uVision3中分别进行编辑处理。Keil uVision3的主菜单栏涵盖了几乎所有的C51编辑、编译以及调试等功能方式,共有11个选项,分别是File、Edit、View、Project、Debug、Flash、Peripherals、Tool、SVCS、Windows和Help。下面分别对各菜单的列表项所指向的功能进行说明。(1)文件(File)菜单 文件菜单命令主要用于对文件的一些操作,如新建、打开、关闭、输出等。文件菜单的“Device Database”选项用于

50、修改Keil支持的51系列芯片的型号的设定。(2)编辑(Edit)菜单编辑菜单命令主要包括剪切、复制、粘贴、查找、替换等编辑操作和书签管理命令。(3)视图(View)菜单视图菜单命令用于控制Keil的界面显示,使用视图菜单中的命令可以显示或隐藏Keil的各个窗口和工具栏。(4)项目(Project)菜单项目菜单命令包括项目的创建、打开、关闭、维护、目标环境设定、编译等命令。(5)调试(Debug)菜单调试菜单命令用于软件仿真环境下的调试,提供断点、单步、跟踪等操作指令。(6)烧写(Flash)菜单烧写菜单命令主要用于程序下载到EEPROM的控制。(7)外设(Perpherals)菜单外设菜单是

51、外围模块菜单命令,用于控制芯片的复位和片内功能模块的控制。(8)工具(Tools)菜单工具菜单主要用于支持第三方调试系统,包括Gimpel Software公司的PC-Lint和西门子公司的Easy-Case.(9)软件版本控制系统(SVCS)菜单软件版本控制系统菜单命令用于设置和运行软件版本控制系统。(10)窗口(Windows)菜单窗口菜单命令用于设置窗口的排版方式,与Windows的窗口管理兼容。(11)帮助(Help)菜单帮助菜单用于提供软件帮助信息和版本说明。二、利用Keil uVision3创建新项目Keil uVision3中的项目是一个特殊结构的文件,它包含应用开发系统相关所以

52、文件的相互关系,在Keil uVision3中,主要使用项目来进行应用系统的开发。创建一个新项目的详细步骤为:1、选择菜单命令Project|New Project,弹出“Creat New Project”对话框。2、在对话框中选择新项目要保存的路径和文件名,单击“保存”按钮即可。Keil uVision3的项目文件扩展名为.uv2。3、单击“保存”按钮后,弹出“Select Device for Target”对话框。用户需要在左侧的芯片列表中选择调试使用的51系列单片机型号,使对话框右侧的“Descripion”文本框可以查看选中单片机型号的说明。4、单击“Select Device f

53、or Target”对话框中的“确定”按钮,程序会询问是否将标准51初始化程序加入到项目中,选择“是”,程序会自动复制标准51初始化程序到项目所在目录并将其加入项目文件。5、下面需要向项目中添加文件。选中项目窗口中的文件组后单击鼠标右键,在弹出的菜单中选择Add Files to Group”项添加所需文件。6、如果没有现成的程序,就需要新建一个程序文件。单击新建文件的快捷按钮,屏幕中出现一个新的文字编辑窗口,这样就可以在新的窗口中输入需要的程序了。第二节 系统软件流程设计一、系统软件总体设计系统软件总体设计,初始化时输出的是方波,显示方波的幅值和频率。通过按键可以选择调节频率还是调节幅值以及选择输出正弦波和三角波。流程图如图4.1所示: 图4.1主程序流程图二、子系统软件设计外部中断0本设计采用外部中断0控制波形类型的选择以及幅值频率的增加,当程序检测到外部中断0时,执行相应的操作。其程序流程图如图4.2所示: 图4.2 外部中断0程序流程外部中断1本设计采用外部中断1控制波形类型的选择以及幅值频率的减小,当程序检测到外部中断1时,执行相应的操作。其程序流程图如图4.3所示: 定时器0本设计采用定时器0来控制波形频

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论