




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京理工大学紫金学院毕业设计说明书(论文)作者:陶洋学号:110401337系:电子工程与光电技术系专业:电子信息工程题目:基于单片机的低频信号发生器设计副教授朱红副教授朱红指导者:(姓名)(专业技术职务)评阅者:(姓名)(专业技术职务)2021年5月南京理工大学紫金学院毕业设计〔论文〕评语学生姓名:陶洋班级、学号:电信〔3〕班110401337题目:基于单片机的低频函数信号发生器设计综合成绩:指导者评语:本课题以51单片机为控制核心,设计低频函数信号发生器,该系统运用单片机控制产生正弦波、三角波、方涉及锯齿波等波形并且其频率、幅值均为连续可调。具有工作稳定,容易调试,整体结构简单,本钱低廉等优点。函数信号发生器主要包括D/A转换电路、键盘显示器输入输出电路等。该生较好地完成了毕业设计所规定的任务,所设计的函数信号发生器电路设计正确,仿真结果正确,说明作者具有较好的实践能力。整个设计工作量饱满。论文说明书结构完整,论述详细正确,图表等格式标准。论文对信号发生器各种波形的频率误差分析不够详细。建议毕业设计成绩为优秀。论文说明书符合毕业设计的要求,建议参加辩论。指导者(签字):年月日
毕业设计〔论文〕评语评阅者评语:评阅者(签字):年月日辩论委员会〔小组〕评语:辩论委员会〔小组〕负责人(签字):年月日毕业设计说明书〔论文〕中文摘要信号发生器是一种常见的信号源,它广泛的应用于电子测量实验和自动化控制等领域中。本次课题使用51单片机、D/A转换器、矩阵键盘、放大器和液晶显示设计一个低频信号发生器。该系统主要功能是可以输出正弦波、三角波、锯齿波和方波四种信号,其中三角波的频率范围为1Hz~125Hz,正弦波的频率为1Hz~60Hz,方波频率范围为10Hz~8kHz,锯齿波的频率范围为1Hz~300Hz。输出可调电压范围为0~5V。通过键盘可以选择波形的类型和频率的大小,使用液晶显示器来显示输出信号的参数。该低频信号发生器具有体积小、操作简单、使用方便、价格低廉和智能化等优点。关键词单片机信号发生器D/A液晶显示毕业设计说明书〔论文〕外文摘要TitleTheDesignofLowFrenquencySignalGeneratorBasedonSingleChipMicrocomputerAbstractSignalgeneratorisakindofcommonsignalsourceandwidelyusedinelectronicmeasuringexperimentsandautomationcontrolareas.weusetheAT89C51microcontroller、D/Aconverters,matrixkeyboards、amplifiersandLCDdesignalow-frequencysignalgenerator.Thesystemmainfunctionisoutputsinewave、trianglewave、sawtoothandsquarewavefoursignals.therangeoftriangularfrequencyis1Hzbetweens125Hz.therangeofsinefrequencyis1Hzbetween60Hz.therangeofsquarefrequencyis10Hzbetween8kHz.therangeofserratedfrequencyis1Hzbetween300kHz.Thesystemoutputrangeofvoltageis0between5V.Wecanchoosethesizeoffrequencyandwaveformsbykeyboardandliquidcrystaldisplaytoindicatethesizeofandsignalofthetypeandfrequency.Thelow-frequencysignalgeneratorhasadvantageofconvenient、inexpensiveandintelligent.KeywordsMCUFunctionGeneratorDAC0832LCD目次1引言 11.1课题研究的目的和意义 11.2信号发生器的分类 21.3信号发生器的历史和开展趋势 31.4单片机技术的特点 31.5本系统主要功能 32总体方案论证与设计 52.1主控模块的选型和论证 52.2显示模块的选型和论证 52.3信号产生模块的选型和论证 62.4控放大模块的选型和论证 62.5系统整体设计概述 72.6本章小结 73系统硬件电路设计 93.1主控模块 93.2液晶显示局部 133.3键盘模块设计 153.4信号产生模块设计 183.5程控放大模块的设计 204软件系统设计 234.1软件设计流程图 234.2主函数的设计 234.3波形产生子程序的设计 244.4显示局部程序的设计 274.5本章小结 285系统调试 295.1软件系统调试 295.2软件仿真 305.3硬件调试 31结论 33致谢 34参考文献 35附录A 36附录B 381引言1.1课题研究的目的和意义随着社会的进步我国的经济和科技的开展水平不断提高,近几年来微型计算机技术和电子信息测量产业的开展越来越迅速,电子产品的功能变得更强且更加智能化了从而使得人们的生活方式也发生了巨大的变化。电子技术的开展离不开电子测量,而信号发生器是电子测量中必不可少的电子设备。因此函数信号发生器在电子科技领域中越来越占主导地位,电子测量技术和很多相关部门对信号发生器的功能需求也越来越多,推动了着信号发生器开展的种类增加的越来越多。同时对发生器的性能要求也跟着提高了。目前当前我们在市场上看到的信号发生器大多数都是带有小型CPU芯片的,因此它不仅具备了可以自动生成波形还可以拓展对信号进行自校、自动故障检测和诊断等,当前市场上的信号发生器还可以同其他测量设备连在一起用计算机来控制构成自动测试系统,这样就能够实现更多的功能。目前的信号发生器是向着低功耗、频率范围广、精度高、功能多、自动化和智能化的趋势开展。波形发生器又称为测试信号发生器。随着数字电子技术的迅速开展,数字化的电子测量设备在工业和科研中应用也越来越广泛,因此在很多地方都需要用到低频的信号源而低频信号发生器不但能产生信号源而且还能对信号的参数进行测试和分析,它是电子实验设计过程中不可缺少的仪器设备。以前,在市面上我们看到的信号发生器多数是纯硬件电路焊接的。它们多半是用独的立元件组成的,其输出的波形信号类型比拟简单,信号波形不稳定,无法生成低频或者超低频的信号。精度也不够加上调试比拟困难,研发时间周期较长,不能量产,所以很难适应市场的需求。后来随着科技大开展人们用集成芯片来替代,集成芯片所设计的信号发生器,能生成不同种类的波形类型也能够到达低频或较高的频率,但是由于集成芯片设计的电路比拟复杂、不易调试且本钱较高,不适合市场化推广。在过去传统的波形发生器大都是由硬件模拟电路组合而成的,比方用555定时器搭的振荡电路然后通过积分或者微分变换电路就可以产生多种信号,最后通过放大电路输出就能得到幅值和峰峰值等参数。这种低频函数信号发生器不用单片机来控制能生成一定的信号,但是硬件电路设计出的信号发生器抗干扰性不强容易受到外界因素的影响,这样它的输出的波形就会不稳定。且用于测量时它的精度低对测量结果有很大影响还有它体积大和电路复杂不够智能化等缺点。随着科技的开展和时代的进步,在科学研究、通信设备、仪器仪表和工业生产中,高性能的低频信号发生器已经成为了电子工程师进行电子实验研究的必备工具。如工业过程控制,电信技术,电子实验科研教育、还是在材料试验领域常需要用到低频信号源。然而,传统的硬件电路组成的信号发生器它的性能已远远不能满足人们的需求,且在引进低频信号源还需要很大的RC。而对于RC在生产制作大电容和大电阻方面目前的技术还是非常困难的,该参数的精度也不能到达实际要求。功耗大、体积大不便于携带更是其致命的缺陷。假使日后需进一步研究拓展工作增加它的功能需要时,那么更会大大的增加电路的复杂性。信号发生器可以作为单独的信号源测量和检测元器件的性能参数等。研究设计出一种高性价比的新一代智能信号发生器已经是市场的迫切需求和不可阻挡的趋势。在电子测量过程中信号发生器不仅可以和其他高性能仪器配合使用还可以大大的简化相应系统的检测过程,减少检测费用并且也能够提高检测精度。因此在本次设计我做一个低频信号发生器它是基于单片机的可以智能化控制。低频信号发生器其本质就是能产生频率很低、幅度可调的信号源,所以我选择了用单片机作为整个系统的核心,用中断查表法完成波形数据的输出。再利用数模转换器DAC0832来生成电压信号。最后再通过放大器UA741对信号进行放大输出。连接单片机通过软件编程的方式来实现产生不同类型的信号波形〔三角波、方波、锯齿波和正弦波〕,对各种波形的频率范围进行编程。当外界按键按下有命令需要固定频率的某一波形时,通过矩阵键盘来选择控制,送给单片机执行最后的输出信号的参数通过LCD液晶显示屏来显示。该系统可以根据人们的需要进行灵活调整、本钱低廉、体积小,使用方便实用价值很高。1.2信号发生器的分类函数信号发生器在电子仪器,电子实验室和工业生产等领域应用非常广泛且种类较多,性能价格也各有差异,因此分类的方法也不相同。按照频率范围的大小来分类可以分为以下几类在频率为30kHz以下称为超低频信号发生器,在频率为300kHz-6MHz时是视频信号发生器,频率为6-30MHz时称为高频信号发生器,当它的频率为300-3000MHz左右时称为超高频信号发生器而当它的频率在30-300kHz时我们就称它为低频信号发生器。根据信号的输出波形可以分为两种类型,正弦信号发生器和非正弦信号发生器。按性能分类又能分为一般的和标准的信号发生器,从使用范围来信号发生器又可以分为通用信号发生器和专用信号发生器这两种型号。随着科技水平的开展,测量技术中有了越来越多的函数信号发生器,其性能越来越好同时功能也变得越来越强。现在市场上同一台信号发生器往往具有相当宽的频率覆盖范围[1]。1.3信号发生器的历史和开展趋势作为在工业生产的研制和测试中信号发生器能够产生标准信号和用户自定义的信号,所输出的信号稳定性高、精度高且在实验中调试方便。波形发生器可以对信号波形的频率和幅值还有相位等参数进行动态的测量和控制也可以用来模拟生成各种复杂信号。它可以与其他设备进行通信,组成自动测试系统,被广泛应用于自动控制系统,超声波诊断技术,频谱治疗仪,通信设备调试和仪器仪表生成调试中。在电子测量技术中函数信号发生器的开展已经有着漫长的历史了,从上世纪40年代定量分析信号发生器到60年代的晶体管模拟电路组成的信号发生器再到了70年代的微处理器嵌入的半智能化信号发生器。当今在数字化系统的生活中高精度智能化的信号发生器已是一种常用信号源,传统的模拟电路组成的信号发生器已不能满足人们需要,因此也逐渐的被市场淘汰了。取而代之的是本钱低、功耗小、抗干扰性强和功能全面的数字电路。尤其是近代微处理器的迅速开展更是进一步推动了信号发生器向智能化方向研制开展。现在许多智能信号发生器带有微处理器外还有RS232总线这样就可以很方便的和控制计算机及其他测量仪器连接构成自动测试系统。目前国内外信号发生器总的趋势向着频率范围广、精度高、功能全面、自动化和智能化的方向开展[1]。1.4单片机技术的特点随着电子计算机术革命的不断开展,单片机应用越来越广泛了,它的本质其实就一个小型的CPU,它是一种集控制器、存储器、运算器以及输入和输出口于一身的微小的芯片。它突出的优点有质量轻、抗干扰性能强、功能全和灵活性能好易于开发。而且它的使用寿命长、运算速度快可靠性能好正是因为它有如此多的优点。所以单片机越来越受人们重视和关注,近些年来使得它的开展迅速已广泛的应用在我们日常生活的各个领域。如仪器仪表、家用电器及专用的智能化领域。1.5本系统主要功能本系统设计的低频信号发生器。能实现以下几种功能。1〕用户可以通过键盘来设定波形、幅度和频率等参数。2〕本系统输出正弦波、方波、三角波和锯齿波。3〕本系统输出幅度范围为0-5V。4〕系统所有的设置的参数都能在LCD1602上显示。
2总体方案论证与设计在电子电路的设计过程中对总体方案的论证和选择是必不可少的,从整个系统出发将系统分成多个电路模块。根据所要实现的功能和指标要求来划分,该系统被分为这样几个主要模块:主控模块、显示模块、信号生成模块、可编程增益模块,下面就是对这几个模块的选型和论证。2.1主控模块的选型和论证方案一:采用MSP430系列的单片机芯片,该单片机是16位低功耗的混合信号处理器,它有着精简指令集(RISC)根据用户对实际应用的需求,该芯片将多个不同功能的模拟、数字电路模块和一块小型的微处理器集于一身。该系列的单片机处理能力强,运算速度快,低功耗、片内资源丰富且方便高效的开发环境[2]。但由于该芯片比拟昂贵不适用于普通设计的开发。方案二:采用51系列的单片机,该单片机包含CPU、ROM、RAM、定时/计数器和并行输入输出口。它的特点是体积小、运用灵活、本钱低、功耗低、可靠性高加上32个IO口和多样化的串行总线方便组成智能化的控制设备,且易于实现在线编程和在线仿真的功能。综合考虑因此选用方案二中的51系列单片机作为主控芯片模块。2.2显示模块的选型和论证方案一:选用点阵式数码管来显示,它是由8×8的二极管构成,该方案适宜显示字母文字,如用于显示数字有些太浪费,且价格也较高,所以不用此方案作为显示模块。方案二:选用数码管LED动态扫描显示,动态扫描显示是单片机系统常用的显示方式之一。但是在本系统中虽然LED数码管本钱不贵,但是它和点阵式数码管一样适合显示数字。采用动态扫描法时LED与单片机连接通过位选和段选控制I/O口输出对应的字型码,循环移位显示完整字符,这样占用的单片机IO虽比起静态相对减少了,可是动态扫描时它不能显示全部字符串,还需要一个移位存放器对字符串进行移位操作然后循环轮流显示,因为该74LS164芯片在进行硬件调试时,不容易调试。所以也不宜选用LED数码管显示。方案三:选用LCD1602液晶显示,液晶显示屏具有功耗小体积小,显示内容丰富,清晰可见,超薄轻巧且提供了8位并行数据接口,方便与单片机相连。在本设计中显示相关的参数用一个LCD1602的液晶显示屏就够了,价格适中,接口不多方便硬件电路的调试。由此可以选用方案三作为该系统的显示模块。2.3信号产生模块的选型和论证方案一:利用R2R型DA转换器DAC0832进行产生信号,把要产生的信号根据其规那么建立一个ROM表,单片机每隔一段时间根据ROM表值去改变数模转换器的电压输出值,如果ROM表示根据正弦变化记录的表那么输出的波形那么为正弦波,如此类推,只用通过改变时间的间隔即可改变输出波形的频率。方案二:利用集成芯片DDS芯片AD9833进行产生信号,该芯片可以通过与单片机通信设定其输出波形和频率,而且设定的频率精度非常高。DDS芯片也被称为直接数字式频率合成器,它主要包含频率控制存放器〔对用户输入的频率控制码的存储和装载〕、正弦计算器〔通过相位值计算式幅度〕和高速相位累加器〔根据频率控制码将每一周期内的相位相加从而得到相位的值〕组成。DDS芯片是输出的数字化的正弦信号,要想得到模拟频率信号因此还需要通过D/A转换器和低通滤波器来进行转换。方案三:使用MAX038芯片组成电路来产生波形信号,该电路组成的信号生成特点是高频,高精度精度,抗干扰性能好是一种高性能波形产生器,该芯片电路可以产生四种精度高稳定性能好的信号。可是该设计的程序和电路比拟复杂,本钱高。只适用于设计军用高精度函数信号发生器,不适合大规模市场推广。通过上面三种信号生成模块的论证,综合考虑还是选择方案一。因为方案2和方案3本钱较高、电路复杂是不易于实现。而方案一使用的独立的8位D/A转换器,设计比拟灵活,只要预先把波形的ROM表生成好存储到单片机内部的存放器中然后调用即可输出波形信号。2.4控放大模块的选型和论证方案一:选用DAC0832芯片与外部的电路构成一个可编程放大器,由于DAC0832是一个8位的D/A转换器,所以它能设置成256档放大。通过单片机控制D/A转换器的数字端口即可改变放大倍数。方案二:选用VCA810作为主芯片进行程控放大,VCA是一款高性能的压控放大器芯片,它有一个增益控制引脚,用户可以通过改变该脚的电压进行增益的控制,增益的控制范围为80dB,不过VCA810需要和外部的数模转换器搭配才能实现程控放大的功能。方案三:采用一个直接耦合单运算放大器UA741作为程控放大器该电路结构简单,价格廉价。它有两个补偿引脚可以与外界电路相连从而补器件偿电路电压,它可以将DAC0832的电压电流型输出转化为电压型输出。但是在做硬件时该器件抗干扰性能不强,输出电压不够稳定,不过它的价格廉价能满足本设计实验要求。综合考虑由于UA741的价格比VCA810廉价且电路结构简单,使用方便精度也能满足本设计的要求,因此这里选用方案三UA741进行程控放大。2.5系统整体设计概述本系统设计是以微型处理器为核心用键盘电路控制选择波形类型和频率的值,用DAC0832生成波形外加上增益模块用来放大信号,波形的参数通过液晶屏来显示波形的参数等外围设备构成一个完整的系统。该系统设计思路的总体结构框图如下列图2.1所示。图2.1系统设计框图2.6本章小结本章首先介绍了低频信号发生器的设计理念以及对组成模块的论证和选择,根据系统的设计要求对每一个模块进行分析,明确每个模块的作用。对单元电路进行了选择和论证,为下一步系统电路的设计做好铺垫。其次还介绍了系统设计的框图,将分散的模块组成在一起使头脑中有一个整体系统的概念。通过这些研究可以更进一步提高对整个电路设计的效率和质量。
3系统硬件电路设计本章介绍基于单片机的低频信号发生器硬件电路的设计,这局部是主要先通过Proteus仿真软件辅助完成的。分别将每一个模块的电路都进行了详细的介绍并把每一个模块的电路都连接起来。与Keil软件配合使用,该软件可以观察整个仿真过程,如果电路系统器件逻辑有错误的话会发出错误警告,非常方便调试。3.1主控模块主控模块在整个系统中起到核心控制作用,它需要检测键盘电路,波形选择和频率设定控制等多种功能,同时还要驱动液晶器显示相关参数内容。因此在本系统设计选择上我选用了51系列的单片机芯片作为系统的主控模块。51系列单片机起初是由Intel公司开发设计的,后来英特尔公司把51的内核使用权转给其他的芯片生产制造商,如Philip和Atmel等公司。他们在80C51单片机的根底上开发了很多新型的51系列单片机其指令兼容51,这样MCS-51系列单片机就变成了有很多制造厂商支持的多品种单片机系列[3]。这里我们就着重介绍下STC89C52RC因为这也是硬件电路所选用的单片机芯片。它的内部是自带8KB的可擦写只读存储器还有256B的RAM,它是新一代增强型8051单片机,它指令代码兼容8051但是执行代码的速度比传统的8051快,它有40个引脚32个I/O、3个16位的定时计数器和2个外部中断接口。最重要的是它有2个通信端口和两个读写口很方便与外接电路相连也方便编译,所以在研发过程中可以大大缩短短研发的周期。它是一种高速低功耗、体积小、内部结构简单和高性能的新一代51单片机。美国ATMEL公司的AT89C51是曾经在我国非常流行的51单片机。不过当前已经停产,其替代产品是AT89S51/52[4]。STC89C52RC单片机的根本结构组成框图见图3.1。图3.1STC89C52RC单片机结构图3.1.1MCS-51单片机主要特性一般来说,MCS-51系列〔MicroControllerSystem,简称MCS〕可分为51与52两大类,52类是51的增强型,52单片机的特点就是内部存储器容量便的更大了,同时比51也多加了个定时计数器。本小节对51单片机中的典型的单片机STC89C52RC进行概述。STC89C52RC内部其核心处理器为8位,4kB的FLASH内存存储器,128ByteRAM,32跟I/O口线,可寻址外部数据能力为64kB。两个定时/计数器、5个中断、5个优先级、一个全双工串行口,还具有位寻址功能。适用于位运算的布尔处理机[5]。STC89C52RC单片机的外部引脚排列如图3.2所示:图3.2STC89C52RC管脚图STC89C52RC管脚说明:在单片机的引脚中我们常用的I/O口有32个,它们分别是P0、P1、P2、P3口。4个8位双向可编程端口。P0口既可以作为数据总线也可以作为输入输出口,P0口的输出在结构上和P1、P2、P3是不同的,因为它的I/O口为8位漏极开路在作为通用输入输出时需加上拉电阻而P0口作为地址数据总线时就不要外加上拉电阻。P1口和P2口都可以作为多功能的通用输入输出口。P3口还具有第二功能,在应用系统中也常被使用[5]。引脚具体功能如表3.1所示:表3.1单片机P3口第二功能引脚名称作用P3.0RXD串行口输入通道P3.1TXD串行口输出通道P3.2外部中断0输入P3.3外部中断1输入P3.4T0定时器/计数器T0P3.5T1定时器、计数器T1外部输入P3.6外部数据存储器写选通P3.7外部数据存储器读选通在本设计中用到的接口比拟多P0、P1、P2和P3接口都用到了,其中单片机P1口的P1.0、P1.1和P1.2接口用于控制液晶显示模块的读写时序,P1.3、P1.4、P1.5、P1.6接口用于按键的控制,P0.0—P0.7口用于连接上拉电阻和连接D0-D7的端口从而来设定其功能指令,P3局部I/O口用于单片机控制D/A转换器产生波形。XTAL1和XTAL2:这两个引脚分别指的反向放大器的输入端口和输出端口。单片机还需要一个并联谐振电路,它可以通过1个晶振以及2个电容和构成,电容的大小决定了该振荡器的稳定性,通常选择12Hz的晶振和20pF电容。当外接时钟信号时,可直接连至XTAL1端,并将XTAL2端悬空[6]。RST端口:STC89C52RC芯片的RST引脚需要复位的话那么可以通过持续给出两个机器周期的高电平。单片机复位后,所有I/O口都为高电平。除了SP为07H外,使其余的存放器均恢复初始状态[6]。3.1.2单片机最小系统设计图3.3单片机最小系统电路图 图3.3为单片机最小系统电路图,单片机最小系统有主要有51单片机、时钟电路、复位电路这几局部组成,时钟电路选用了12MHz的晶振提供时钟,而单片机是以晶振提供的周期为时间基准的,一个机器周期的时间便可以执行完一条指令。在单片机的复位电路中复位分为上电复位和开关复位。上电复位是上电瞬间电容两端电压值不变电容的负极接RESET电压加在电阻上RESET为高芯片被复位,然后电源给电容充电最后电压为零,芯片正常工作。图中在P0口上加上10K的上拉电阻,由于P0口跟其他I/O结构不一样,它为漏极开路电路结构需外接加上上拉电阻后才能正常工作。3.2液晶显示局部液晶显示模块已成为很多电子产品的信息显示器件,比方在计算器、电子表等很多电子产品中都有应用。液晶显示器在我们日常生活中随处可见,它主要用来显示数字图形和字符等参数。由于本设计中只需要求显示字符,LCD1602液晶模块内部自带字符库能实时显示输出波形信号中的各种参数,同时也方便用户进行设置和调节。3.2.1液晶原理介绍液晶显示器〔LiquidCrystalDisplay〕的英文简称是LCD。液晶显示的原理就是通过电压来控制晶体透光和遮光特性来到达显示目的,有电就能显示。它可以显示出2行字符和传统的CRT显示器相比LCD在体积上变得更小、显示清楚度更高、质量上变的更轻且功耗要比原来的传统显示器低的多。只有当接收到信号后显示器的每个点才会保持当前色彩的发光所以当颜色不变时液晶显示屏也不会改变,就不需要考虑其刷新率的问题。LCD1602液晶模块具有体积小、功耗低显示内容丰富、超薄轻巧等优点,在低功耗应用系统中被广泛的应用,它已成为单片机应用设计中最常用的信息显示器件[8]。它是基于HD44780控制器组成的,该控制器是有很强的指令集。可以控制字符在LCD1602的上下两行分别显示,还可以实现字符的移动和字符的闪烁。1602液晶显示模块的主要技术参数有显示字符容量的大小、工作电流电压的范围等。它的工作电压范围是5V左右,工作电流为2mA。LCD1602采用16脚接口,与单片机P0口相连电路图如图3.4所示,各引脚功能定义引脚图如表3.2所示。图3.41602液晶显示器的引脚的图表3.2功能定义引脚编号符号引脚说明编号符号引脚说明1Vss电源地6E使能信号2VDD电源正极7-14D0-D78位双向数据线3VO比照度调节15BLA背光源正极4RS数据命令选择端16BLK背光源负极5R/W读写选择端1)第3脚:显示屏的亮暗程度可以通过该引脚来控制,当它接5v电源时比照度是最弱的而接0V时比照度是最高的。2)第4脚:它是选择存放器可以通过上下电平来区分是数据存放器还是指令寄存器。3)第5脚:它通过控制上下电平来区分读操作或写操作。4)第6脚:该引脚是使能控制端,当它为低电平执行指令反之那么读取信息。液晶存放器内部的控制指令集如表3.3所示。表3.3液晶模块的控制器指令集RSR/W操作说明00写指令存放器〔去除屏〕01读取忙状态标志以及读取位址计数器的值10写入数据存放器〔显示各字型等〕11从数据存放器读取数据3.2.3液晶显示局部与STC89C52RC单片机如图3.5所示。用单片机的P0口作为数据传送端口与LCDD0-D7的8个数据端口相连,使用STC89C52RC单片机的通用I/O口P2.0控制液晶模块的R/W端口、I/O口P2.1控制液晶模块的R/S端口、P2.2控制它的使能信号接口。LCD1602读写操作时序如下:当单片机需要接收LCD1602状态字时使能端为高电平、RS=0,R/W=1。当液晶显示模块的使能信号和R/W端口为高电平、数据命令选择端口RS为低电平时就可以读数据了。当使能信号E为高脉冲而RS和R/W都为低脉冲时LCD液晶模块进行写时序,当RS和E都为高脉冲,R/W=0它为写数据状态。图3.5LCD1602与STC89C52RC的连接电路3.3键盘模块设计本系统在设计键盘界面通过键盘来调节不同的频率和选择不同波形时,需要用到很多功能按键。如果本设计采用简单的独立按键来控制波形的类型和频率的大小时,虽然在软件编程的时候会变的容易了,但是硬件电路的设计会占用单片机很多的I/O口资源。而单片机的I/O口又有限,因此在许多情况下一般不采用这种独立键控制,而是选择矩阵键盘。在本设计中选择的就是4×4键盘矩阵,这样可以大大减少端口的占用。它能识别按键的工作原理和检测方法有两种,第一种是扫描法:首先可以先将行全部置高电平然后给某一列置低电平这样就确定了列数然后轮流检测各行是否变成低电平,如果检测到某行是低电平就可以确定哪个按键被按下的。用同样的方法可以检测所有按键。第二种是线反转法:通过把列值置零读行值,然后再输出行值读列值最后综合行列值确定按键坐标。本设计选择的是第一种扫描法来确定哪个按键按下的。4×4键盘矩阵电路与单片机的连接示意图如图3.6所示。图3.64×4矩阵键盘单片机的连接图3.3.1MM74C922芯片为了节省单片机I/O口,在设计中使用了16键专用解码MM74C922芯片,因为4×4矩阵键盘它一般占用单片机的8个接口,键盘控制设备通常是由单片机来识别的。传统的矩阵键盘检测某行某列的按键是否被按下还需要延时消抖操作。在设计过程中用外接芯片MM74C922来驱动矩阵键盘。它的内部振荡器能完成对键盘的消抖和检测,X1-X4引脚对应矩阵键盘的4列,Y1-Y4对应键盘的4行。通过用A-D分别和单片机的P3.4-P3.7相连,当有按键按下时DA为高电平就可以读出8421码键值即对应的键值。MM74C922芯片数据线还有三态输出的功能,这样还可以方便的与其他设备的总线接口相连接。其引脚图如图3.7所示:图3.7MM74C922引脚图MM74C922各引脚功能如下:X1-X4为列键输入端口;Y1-Y4为行键输入端口;A-D端口是数据输出端,可以直接和单片机的接口相连;KBM端口是键颤屏蔽端;OSC能够用于输入外部的脉冲,它为振荡器的外部接线口;OE为数据输出允许端,呈低电平有效;DA为数据有效输出引脚。按下一个键时它的引脚是高电位,释放后引脚又变成为低电位。MM74C922译码后的真值表如3.3表所示。表3.3MM74C922真值表开关位置数据的输出开关位置数据的输出DCBADCBA0〔Y1X1〕00008〔Y1X1〕10001(Y1X2)00019〔Y1X1〕10012(Y1X3)001010〔Y1X1〕10103(Y1X4)001111〔Y1X1〕10114(Y1X5)010012〔Y1X1〕11005(Y1X6)010113〔Y1X1〕11016(Y1X7)011014〔Y1X1〕11107(Y1X8)011115〔Y1X1〕11113.3.274LS04芯片74LS04芯片是低功耗的高速硅栅COMS器件,是6非门反相器。它的内部有6组COMS反相器。它的引脚图如图3.8所示。图3.874LS04引脚图及真值表它的作用是:因为按键按下DA为高电平,而单片机的外部中断0是低电平有效所以需要接一个反相器,它起到反向作用。3.4信号产生模块设计该设计的核心是信号生成局部。本课题需要产生正弦波信号、方波信号、锯齿波和三角波这四种信号,单片机输出的是数字信号因此需要通过数模转换变成模拟信号输出。综合考虑选择了DAC0832作为主芯片,DAC0832是一款是国家半导体公司采用先进的8位DA转换器,单片机通过查询内部的预存的波形ROM表来实现波形产生。3.4.1D/A转换技术D/A转换模块是组成信号发生器的重要模块。D/A转换器是把数字量转化为模拟量,将数字量按权值大小转化为模拟量,然后再把模拟量相加从而实现数模转换的。在选取D/A转换器型号时主要考虑位数、转换精度和转换时间[9]。D/A的转换精度是通过分辨率和转换误差来描述的。分辨率=1/(2n-1),其大小与D/A转换器的位数有关。3.4.2DAC0832功能和使用方法功能:DAC0832是常用的8位D/A转换芯片,内部具有两级锁存控制功能,能够实现多通道D/A的同步输出[9]。它的工作方式分为单缓冲、双缓冲或直通。DAC0832的转换时间约为1s,输出信号以为电流或电压形式输出。它由5V~15V电源供电,参考电源是-10V~10V。DAC0832芯片的内部引脚结构如图3.8所示。引脚功能如下:D0-D7:是数据输入输出的接口,:是片选信号;、:是写选通和写控制线。:DAC锁存器选择信号;RFB:通过反应电阻引出引脚与外部放大器实现I/V转换;ILE是允许数据输入端,高电平有效;VREF是参考电压;和是DAC电流输出1和2口〔当DAC存放器为N时=,=-;DGND和AGND:数字信号和模拟信号接地。图3.8DAC0832内部结构图DAC0832芯片是根据DAC0832的数据锁存器和存放器上下电平的不同来控制的它的工作方式的。DAC0832数模转换芯片有单缓冲方式、双缓冲方式和直通的工作方式。该模块的设计就采用单缓冲的方式,将DAC0832与单片机的连接方法是将ILE接5V电源,和接单片机的地址选择线P2.3口,和由单片机的地址线P2.7控制使两级存放器的控制信号同时选通,CPU对DAC0832进行写操作输入数据进入内部DAC存放器,从而进行D/A转换。因为直通的工作方式DAC0832不能直接与CPU的数据线相连因此很少使用。工作在双缓冲方式时需要进行二级缓冲而此设计单缓冲就能满足要求了,所以本设计采用的是工作在单缓冲方式下。单片机输出离散的数字信号经过DAC0832芯片数模转换后变成电流信号。它的电路图如图3.9所示。图3.9数模转换电路3.5程控放大模块的设计1)集成运放特点是一个集成的高增益直接耦合放大器,该放大器提供输出短路保护和闭锁功能。通过外接反应网络组成不同的运算放大电路因此它被广泛用于商业,工业和军事。属于单运算放大器,里面就一个运算放大器单元,因此它们和其他类型放大器外观是不同的,比方LM324是14脚的封装,而uA741一般是8脚的封装。uA741比LM324多出2个补偿脚。这两个补偿脚可以利用外接电路补偿失调电压。而LM324没有外引的补偿端,补偿是自动的,相比之下,uA741理论上可以实现更高精度。它的电路内部结构和引脚图如图3.10所示。图3.10的引脚图它的1引脚和5引脚都是为置零口。2引脚与程控放大器的正向输入口连接。3引脚是与放大器的反向输入端相连;4和8引脚分别接地和空引脚;6和7引脚引脚分别接电源。2〕程控放大电路的设计DAC0832的电压输出分为单级输出和多级输出,如图3.11所示用Proteus软件画的单极性DAC0832的电压输出的仿真连接图,它的内部反应电阻是,输出电压的计算公式是:。而D/A的转换结果输出的是电流的形式,所以要把电流信号转换为电压信号,即通过单片机的内部反应电阻和UA741运算放大器构成I/V转换器,输出电压信号。图3.11程控放大电路设计3.6本章小结在本章主要介绍了该系统设计的硬件电路以及对各个硬件模块设计的原理分析。首先对主控单片机模块及其最小系统电路进行说明,接着是对液晶显示电路的工作原理及其硬件电路进行了分析说明。然后对键盘电路以及译码电路模块进行介绍。再到本设计的核心信号发生模块进行了详细的说明。最后对程控放大电路局部的电路设计仿真图以及各个端口做了详细的描述。
4软件系统设计系统的设计分为硬件设计和软件设计两局部组成,而软件局部是整个系统的核心,因为所有要实现的功能都是由软件程序来编写的。以下就是对软设计原理的详细介绍。4.1软件设计流程图本课题的软件编程的设计是在KEIL软件的平台来实现编译和调试的。在该平台下可以用的是C语言和汇编语言来编程,本系统的程序编程采用的是C语言来编写的,因为C语言功能强大,能够模块化开发。使用C语言会使开发周期大为缩短且程序可读性强易于移植,所以用C语言开发单片机系统已经成为了必然趋势[11]。在用程序编写之前我们应该心里面有个思路,通过设计出软件的流程图如图4.1所示来编写程序,这样编写程序就有了明确的目标,知道这一步做的什么下一步又该做什么,可以提高软件程序的编写效率。该系统的软件编程大概思路是这样的:单片机芯片在进行上电复位后首先是系统初始化,LCD显示SingalGenerator。然后进入中断初始化,键值扫描后通过查表得出数据再经过D/A转换输出波形最后由LCD显示波形参数。图4.1软件程序流程图4.2主函数的设计 主函数是整个软件的核心局部这局部程序控制全局各个模块的调用函数。其主要功能就是系统的初始化,中断效劳和对各个模块的调用和控制。在本设计中在函数里主要讲了首先系统初始化,然后翻开中断初始化接着定时器初始化设置,然后启动D/A转换,最后对LCD液晶显示屏进行初始化显示波形的参数。具体程序如下voidmain(){ SPP=0;//蜂鸣器初始化 P1=0;//LCD初始化 delayms(10); EX0=1; //翻开外部中断0 ET0=0; //关定时中断 TR0=0; //关定时器 EA=1; //允许全局中断 TMOD=0x01; //定时器0方式1计数〔16位〕 CE=0;//低电平使能 WRR=0; delayms(10); RstLcd(); WriteString("SingalGenerator",0,0);delayms(100); EA=1; //允许全局中断 while(1) { ; }}4.3波形产生子程序的设计波形数据产生的子流程图如图4.2所示,波形数据的子程序是定时器T0的中断程序,当定时器计算器溢出时就中断一次单片机将按顺序把波形表中的数据送到DAC0832中经过数模转换,然后DAC0832再根据数据输入的大小输出电压值,当表中的数据输送完后清零。正弦波、三角波和锯齿波生成波形的原理都是这样的。而方波是通过将单片机的晶振频率进行定时,然后取反。不断的循环即可产生方波。图4.2波形产生流程图波形信号产生的工作过程:在单片机的存储器中先存入波形数据,当要产生波形输出时,存在存放器中的信息经D/A转换成模拟量。然后再通过放大器放大输出平滑的电压信号。该波形的输出由单片机内部存储的数字信号控制的,在一个信号中周期为把一个周期分为S个区间,每个区间间隔即。而时间间隔在程序中编程是由中断函数控制的,中选择一种波形调节不同的频率时它的ROM表中的数据是不变的,改变的是中断时间的大小。中选择不同的波形时就调用不同的ROM表中的值而定时器的中断那么与TH0和TL0的初值设置有很大的关系,在上面的主函数里面我们可以知道定时/计数器工作在方式一,它是16位计数器,计数的最大值是65536再加上1溢出,它的计数方式是根据=-〔计数值〕计数的。当在定时由定时值,从而得到计数初值。是表示计数周期单片机执行一个机器周期时间也称为单片机时钟的12分频,在本设计中用的是12MHz的晶振可以算出=1从而将值带入公式(65536-X)10-6=t。即我们可以得到计数初值,再根据TH0=〔65536-X〕/256,TL0=〔65536-X〕%256可以得到定时器初值。这里的256指的是定时器工作在方式一中,它是由高8位TH0和低8位TL0组成的,所以也就是每256个计数THO进行一次重新装载。单片机内部提供的数据是数字量只有0和1两种,所产生的信号是离散的。为了让单片机可以输出想要得到平滑连续的数字信号应对离散信号进行采样和量化。在信号发生器局部编程设计时我先对波形的特征进行了分析然后给它们建表,当它为方波时可以通过P1口的上下电平和单片机的晶振分频来生成;当它为三角波时,它是由最小值到最大值上升到一个峰值再慢慢下降到最小值。锯齿波是从低到高每5个点作为一个阶,即了51个点。正弦波也是通过查表的方法产生的它一个周期有256个点组成每两个点之间约〔360/256〕=1.4,每个点对应的电压值所对应的数字量放入表格中。N位的DAC相移值对应的数字量。单片机的定时器中断溢出一般需要20个时钟周期才能返回,所以需要减去20ms。由公式=1M/(2(X+20))可得。方波最大频率等于8K时,可以计算出我们所要的定时器计数值X=42.5,当最小频率为10Hz时此时X=50000,同理得当它为锯齿波时公式是=1M/(52(X+20)),当它为三角波时=1M/(102(X+28));当它为正弦波时=1M/(177(X+28))都可以根据频率分别计算出它们的计数初值。由于在本设计中定时器中断要快速响应,所以可以在中断效劳程序中直接赋值,可以先把65525-X=P算出来然后在中断程序中可以直接写TH0=P/256;TL0=P%256。通过这些不同公式可得当它的频率不同时所得到计算值X不一样,定时器的初值也不一样从而它的波形也不一样。因此通过控制不同的计数初值就可以控制信号的频率。4.4显示局部程序的设计液晶模块LCD1602的显示操作是依据读写时序和时序参数进行的,在显示函数中通过控制RS、R/W和控制使能端的上下电平来决定输出数据还是状态的。RS=1,R/W=1E为高脉冲此时是读数据。根据时序分析可以写出以下读数据的函数:ucharBusy_Check()//忙等待{ ucharLCD_Status; RS=0;//读状态存放器控制 RW=1; EN=1; delayms(10); LCD_Status=P0; EN=0; returnLCD_Status;}当RS=1,R/W=0E为高脉冲此时D0-D7为写数据。根据时序分析可以写出以下写数据的函数:voidLcdWd(INT8Udat)//写LCD数据存放器{ while((Busy_Check()&0x80)==0x80); RS=1; //写命令控制字 RW=0; P0=dat;//发送命令至数据口 EN=1;delayms(10); EN=0;}同理只需要把RS改为低电平即可得写指令函数。LCD1602初始化需要完成的功能有:功能设定、显示开关设定、输入模式的设定和去除显示任务。根据以上步骤可以写出它初始化的程序如下。voidRstLcd()//复位LCD{ delayms(10); LcdWc(0x38); //置功能,显示模式设置8位双行,5×7 delayms(10); LcdWc(0x08); //显示关闭 delayms(10); LcdWc(0x01); //显示清屏 delayms(10); LcdWc(0x06); //显示光标移动位置,屏幕不动,字符后移 delayms(10); LcdWc(0x0c); //显示开及光标设置 delayms(10);} 4.5本章小结本章重点介绍了系统软件设计的流程图。在软件编程设计中把整个系统清晰的分为好几个模块来分析有主程序、子程序、显示程序和键盘控制程序等。着重讲了信号发生局部软件设计的思路首先画了一个流程图然后跟着流程图来编写函数,在定时器中断TH0和TL0给出了详细的思路公式算法。在液晶显示局部的函数首先介绍了液晶读写操作时序的函数然后又介绍了系统初始化的程序以及初始化需要完成的功能等。
5系统调试本章主要是对所设计系统的验证,调试硬件与软件局部是否符合设计要求,能否到达预期的设计目标。5.1软件系统调试软件系统的调试主要包括两个方面:程序的调试与电路原理图设计调试。为了可以保证和提高硬件电路的正确率,先使用Proteus软件仿真进行在计算机上模拟调试。看单片机的各个引脚对应是否连接正确,因为在设计中用到的引脚比拟多,用分单元模块方式来对应检查,还要考虑是否和程序中定义的引脚是否一致。检查单片机其他端口有的需要接地有的需要供电等。然后再逐一检查仿真电路中的其他模块看是否能实现功能。主要包括键盘电路、键盘驱动电路、显示电路、信号生成模块以及放大电路。还有一些细节上的问题比方所用电容电阻值是否合理。程序的调试:首先通过KEIL软件调试,调试前先根据程序流程图检查程序是否有逻辑错误,然后编译会在下面出现错误提示。比方没有结尾分号,端口定义错误和LCD1602读写操作时序时出现了错误等。在软件的调试过程当中碰到了很多问题尤为突出的问题有以下几个:问题1.将程序的HEX文件加载进单片机后,开始运行调试,发现LCD不能显示。解决:把调用的延时程序里面的延时时间重新修改了。因为数据的延时时间太短了,所以将原来是1ms,改成10ms就可以显示了。其次,由于本设计是作动态扫描方式显示的相关参数的而并不是静态,因为动态扫描很快,人的眼睛是不能看的出来差异的。问题2.LCD液晶显示不停闪动,而且亮度不均匀。解决:程序亮度不均匀是在调用的显示程序时显示屏出现很亮的现象,后来在显示子程序的后面加上了屏蔽子令,再仿真时LCD亮度就变得均匀了。问题3.当有按下按键的时候,发现单片机读取的数值传送到LCD跟设定的数值并不一致。解决:重新检查键盘电路的,发现并没有连接错误。后来重新检查了程序发现定义错了,然后重新建立一个新的对应关系。5.2软件仿真仿真和程序调试好了,将程序生成的HEX文件加载到单片机芯片中,设置晶振频率为11.0592MHz。点击PROTEUS左下方的运行按钮,进入到仿真状态,通过键盘电路选择不同波形不同频率观察LCD1602显示的参数和模拟示波器显示的波形。进一步检查、调试波形观察是能满足本次课题设计的根本要求。在Proteus中仿真测试在不同的频率下输出的波形,低频信号发生器生成频率分别为10Hz、1KHz、8KHz的方波如图5.1所示,锯齿波的频率为1Hz、100Hz、300Hz如图5.2所示,三角波的频率为1Hz、50Hz、125Hz如图5.3所示,正弦波的频率为1Hz、30Hz、60Hz由图5.4所示,图5.1方波的仿真图图5.2锯齿波的仿真图图5.3三角波的仿真图图5.4正弦波的仿真图5.3硬件调试在软件调试成功的根底上就要开始硬件电路制作,首先先将软件仿真的HEX文件加载到51单片机中这就需要下载一个STC-ISP软件和串口线才能将HEX文件下载到单片机中。接着再将买好的电子元器件插在覆铜板上合理的进行布局然后焊接,在焊接时先将整个电路分成几个小模块然后每做好一个就进行测试,这样不会出错即使出错也能及时改正。最后将整个电路通过用导线连接再进行焊接最终完成整个硬件的设计。完成后先用万用表进行测试看是否存在短路或者元器件损坏等情况,以防影响硬件的调试,调试效果如图5.5所示。图5.5调试效果图接着将做好的硬件实物带到学校的实验室接上示波器调节波形。仿真可以,但是硬件调试并不是很顺利在实验室调了好几个小时才调到稳定的波形,调试得到的稳定波形信号如下列图:a.幅度为5V;正弦波的频率为30Hz;b.三角波的波形;c.矩形波。〔a〕(b)(c)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年半导体用石英玻璃材料项目发展计划
- 绿色新能源发电技术研发投资合同
- 机房服务外包服务合同
- Picrinine-Standard-生命科学试剂-MCE
- Isoflavone-Standard-生命科学试剂-MCE
- 幼儿绘本绿野仙踪教案设计
- 贷款反担保协合同书
- 2025年铝锻压材项目建议书
- 2025年起动脚蹬杆项目合作计划书
- 股权有偿转让协议
- 2024年广东高考(新课标I卷)语文试题及参考答案
- XX卫生院关于落实国家组织药品集中采购使用检测和应急预案及培训记录
- 人教版八年级地理下册教材分析
- Part3-4 Unit4 Volunteer Work课件-【中职专用】高一英语精研课堂(高教版2021·基础模块2)
- 法律援助课件
- 粒籽源永久性植入治疗放射防护要求
- 双减政策之下老师如何打造高效课堂
- 新员工入职健康体检表
- 养老院行业现状分析-2023年中国养老院行业市场发展前景研究报告-智研咨询
- 广东省特种作业操作证核发申请表
- 胸腔穿刺知情同意书
评论
0/150
提交评论