




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计(论文)题目基于51单片机的数字计频器的设计与实现所属院(系)电子信息工程学院2012年6月14日毕业设计(论文)任务书(由指导教师填写发给学生)学院(直属系)电子信息工程学院时间2012年3月8日学生姓名指导教师设计(论文)题目基于51单片机的数字计频器的设计与实现主要研究内容1对电信号测频方式的研究和选择2测量电路的设计,包括信号放大,整形变换电路3单片机测量,控制部分的程序编写4A/D转换,显示驱动,输出5误差分析及可能影响因素,矫正研究方法软件仿真为主,结合已有的资料进行独立设计主要技术指标或研究目标1对020MA,频率为010MHZ的电信号进行频率测量2所测电信号尽可能多样化,如方波,正弦波,三角波,锯齿波教研室意见教研室主任(专业负责人)签字年月日说明一式两份,一份装订入学生毕业设计(论文)内,一份交学院(直属系)。目录摘要IIIABSTRACTIV第一章设计内容111频率计介绍112计频方法213数字频率计设计的几种方案314几种方案的优劣讨论415本次设计采用的方案5第二章数字频率计的硬件结构设计621系统硬件的构成622系统工作原理图723AT89C51单片机及其引脚说明724信号调整及放大整形模块925时基信号产生电路1026显示模块12261主要功能12262技术参数12263引脚和指令功能14264显示位与DDRAM地址的对应关系15265初始化方法15第3章软件设计1731使用软件介绍18311UVISION2集成开发环境18312关于开发环境19313文件菜单和命令(FILE)19314编辑菜单和编辑器命令EDIT20315C51语言的扩展21316数据类型21317存储器类型22318存储模式23319指针243110重入函数263111中断服务程序273112参数传递273113对实时操作系统的支持283114和汇编语言的接口283115对8051的特殊优化2932定时读数3033量程转换3034BCD转换3135LCD显示3236软件运行仿真33致谢35参考文献36附录汇编源程序代码37附录二主电路接线图48基于51单片机的数字计频器的设计与实现摘要本设计着重介绍了一款能够实现对信号源进行准确测量的基于MCS51的数字计频器,该系统设计主要由信号放大电路模块整形变换电路模块单片机中断控制模块A/D转换模块显示模块组成。输入信号经过放大电路处理,由整形电路处理后送入单片机系统,单片机系统对输入信号进行脉冲计数,将得到的频率数据在输出屏幕上进行显示,最终实现输入频率在测量范围从1HZ10KHZ的正弦波、方波、三角波,用单片机实现自动测量功能,信号源由信号发生器产生,采用液晶显示,并且实现了自动换挡的功能。关键词单片机,频率计,控制电路ABSTRACTTHISARTICLEDESCRIBESAFREQUENCYCOUNTERBASEDONAT89C51SINGLECHIPCOMPUTER,WHICHCANMEASURESIGNALSOURCESACCURATELYTHESYSTEMMAINLYCONSISTSOFTHEMICROCONTROLLERMODULE,AMPLIFIEDRECTIFIERMODULE,CONTROLMODULEANDDISPLAYMODULESIGNALSAREAMPLIFIEDBYTHEAMPLIFIERANDSENTBYTHECIRCUITTOTHEMICROCONTROLLERSYSTEMWHICHCOUNTSTHEPULSEOFSINEWAVE,SQUAREWAVEANDTRIANGLEWAVESIGNALSTHROUGHTHETIMERANDCOUNTERANDTHENFREQUENCYDATAWILLBEDISPLAYEDONTHELCDSCREENULTIMATELYFREQUENCYCOUNTINGOFSQUAREWAVE,SINEWAVEANDTRIANGLEWAVESIGNALSWHOSEINPUTISBETWEEN1HZ10KHZANDWHOSEFREQUENCYRANGESFROM0HZ10MHZISACHIEVEDSIGNALSOURCESCOMEFROMTHESIGNALGENERATORSIGNALOUTPUTISLCDDISPLAYEDULTIMATELY,AUTOMATICSHIFTFUNCTIONISREALIZEDKEYWORDSSCM,FREQUENCYCOUNTER,CONTROLCIRCUIT。第一章设计内容11频率计介绍数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。频率计主要由四个部分构成时基电路、输入电路、计数显示电路以及控制电路。是测量周期量频率值的仪表,本设计是针对电信号频率的测量。频率计最基本的工作原理为当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率FN/T(如图所示)图1测频原理图在电子测量仪发展历史中,示波器,频谱仪,在初期作为频率测量时的主要仪器使用,随着电子技术的发展,更多种类更高、频率的电信号开始出现,例如在测试通讯、微波器件或产品时,常常需要测量频率,通常这些都是较复杂的信号,如含有复杂频率成分、调制的或含有未知频率分量的、频率固定的或变化的、纯净的或叠加有干扰的等等,用户对电子计数器也提出了新的要求。由于示波器在进行频率测量时测量精度低,误差比较大。频谱仪虽然可以准确的测量频率并显示被测信号的频谱,但测量速度慢,无法实时快速的跟踪捕捉到被测信号频率的变化。上述的仪器不再适用现代科技所需要的对信号频率快速准确测量的要求,与此同时由于频率计能够快速准确的捕捉到被测信号频率的变化,因此,频率计拥有非常广泛的应用范围,各种不同原理的频率计在同时被设计并制造。数字计频器是计算机通讯设备音频视频等科研生产领域不可或缺的测量仪器。随着人们文化生活水平的提高,加上现在中国国力的上升,人民在不断的追求高质量的生活的同时大都在密切的关注着我们民族产业的发展前景。二频率计的发展虽是一个极小部分但也反应出我国民族产业发展的现状。我国在很多的方面都已经不在是过去那个很贫穷落后的国家,但是关系着我们国计民生的民族产业的发展却是不尽人意,不能不成为今天令人注目的焦点。我国现阶段电子产品的市场特点,电子数字化发展很快,数字计频器已经应用于高科技等产品上面,可以毫不夸张的说没有不包含频率计的电子产品,到今天频率计已经开始向智能精细的方向发展。随着单片机的问世,其性能不断提高和完善,同时又能满足很多场合的应用需要,而且单片机具有集成度高功能强速度快体积小功耗小使用方便价格低廉等特点,在工业控制智能仪器仪表数据采集和处理通信系统高级计算机家用电器等领域的应用日益广泛。随着单片机技术的不断发展,单片机能够实现更灵活的逻辑控制功能,具有很强的数据处理能力,可以用单片机通过软件设计直接用十进制数字显示被测信号频率,能克服传统频率计结构复杂,稳定性差,精度不高的弊端,而且频率计的性能也将大幅提高。12计频方法频率的测量实际上就是在1S的时间内对信号进行计数,计数值就是信号的频率,随着单片机的技术不断发展,单片机能实现更加灵活的逻辑控制功能,具有很强的数据处理能里。常用的计数法有内部计数器计数法外部计数器计数法测周期法三种。频率测量仪的设计思路主要是对信号分频,测量一个或几个被测量信号周期中已知标准频率信号的周期个数,进而测量出该信号频率的大小,其原理如右图所示。图2计数测频原理若被测量信号的周期为,分频数M,分频后信号的周期为T,则TMTX。由图可知TNTO(注TO为标准信号的周期,所以T为分频后信号的周期,则可以算出被测量信号的频率F。)由于单片机系统的标准频率比较稳定,而是系统标准信号频率的误差,通常情况下很小;而系统的量化误差小于1,所以由式TNTO可知,频率测量的误差主要取决于N值的大小,N值越大,误差越小,测量的精度越高。基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。所谓“频率”,就是周期性信号在单位时间(1S)内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为FN/T。其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率FX。时间基准信号发生器提供标准的时间脉冲信号,若其周期为1S,则门控电路的输出信号持续时间亦准确地等于1S。闸门电路由标准秒信号进行控制,当秒信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。秒信号结束时闸门关闭,计数器停止计数。由于计数器计得的脉冲数N是在1秒时间内的累计数,所以被测频率FXNHZ13数字频率计设计的几种方案频率测量的方法有很多种,主要分为模拟法和数字法两大类,因为本次设计的要求和环境,现在主要讨论数字法中的电子计数式的几种测频方法。电子计数式的测频方法主要有以下几种脉冲数定时测频法(M法),脉冲周期测频法(T法),脉冲数倍频测测频法(AM法),脉冲数分频测频法(AT法),脉冲平均周期测频法(M/T法),多周期同步测频法。下面是几种方案的具体方法介绍。脉冲数定时测频法(M法)此法是记录在确定时间TC内待测信号的脉冲个数MX,则待测频率为FXMX/TC(11)脉冲周期测频法(T法)此法是在待测信号的一个周期TX内,记录标准频率信号变化次数MO。这种方法测出的频率是FXMO/TX(12)脉冲数倍频测测频法(AM法)此法是为克服M法在低频测量时精度不高的缺陷发展起来的。通过A倍频,把待测信号频率放大A倍,以提高测量精度。其待测频率为FXMX/ATO(13)脉冲数分频测频法(AT法)此法是为了提高T法高频测量时的精度形成的。由于T法测量时要求待测信号的周期不能太短,所以可通过A分频使待测信号的周期扩大A倍,所测频率为FXAMO/TX(14)脉冲平均周期测频法(M/T法)此法是在闸门时间TC内。同时用两个计数器分别记录测频信号的脉冲数MX和标准信号数MO。若标准信号的频率为FO,则待测频率信号频率为FXFOMX/MO(15)多周期同步测频法是由闸门时间TC与同步门控时间TD同时控制计数器计数的一种测量方法,待测信号频率与M/T法相同。14几种方案的优劣讨论以上几种方法各有其优缺点脉冲数定时测频法,时间TC为准确值,测量的精度主要取决于计数MX的误差。其特点在于测量方法简单,测量精度与待测信号频率和门控时间有关,当待测频率信号频率较低时,误差较大。脉冲周期测频法,此法的特点是低频测量时间精度高,但当高频检测时误差较大。脉冲数倍频测测频法,其特点是待测信号脉冲间隔减小,间隔误差降低,精度比M法高A倍,但控制电路较复杂。脉冲分频测频法,其特点是高频测量精度比T法高A倍,但控制电路也较复杂。脉冲平均周期测频法,此法在测高频时精度较高,但在测低频信号时精度较低。多周期同步测频法,此法的优点是,闸门时间与被测信号同步,消除了对被测信号技术产生的1个字误差,测量精度大大提高,且测量精度与待测信号的频率无关,达到了在整个测量频段等精度测量。15本次设计采用的方案本设计为基于单片机的为电路控制系统的数字式频率计,采用脉冲定时测频法,则在低频率的测量时误差会大一些。采用麦种周期测频法则测高频率时精度无法保证;采用脉冲数倍测频法和脉冲数分频测频法则精度有所提高,但控制电路较复杂;采用脉冲平均周期测频法则很难兼顾低频信号的测量;而采用多周期同步测频法,闸门时间与被测信号同步,消除了对被测频信号计数产生的1误差,测量精度大大提高,且测量精度与待测信号的频率无关,达到了在整个测量频段等精度测量。本设计根据需要,采用脉冲定时测频法。第二章数字频率计的硬件结构设计21系统硬件的构成本频率计的数据采集系统主要元器件是单片机AT89C51,由它完成对待测信号频率的计数和结果显示等功能,外部还要有分频器、显示器等器件。可分为以下几个模块放大整形模块、秒脉冲产生模块、换档模拟转换模块、单片机系统、LCD显示模块。各模块关系图如图2所示图2数字频率计功能模块显示时基电路倍频锁相放大整形单片机被测信号22系统工作原理图该系统工作的总原理图如图3所示图3数字频率计系统工作原理图23AT89C51单片机及其引脚说明89C51是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征4K字节的程序存储器,128字节的RAM,32条I/O线,2个16位定时器/计数器,一个5中断源两个优先级的中断结构,一个双工的串行口,片上震荡器和时钟电路。引脚说明VCC电源电压GND地P0口P0口是一组8位漏极开路型双向I/O口,作为输出口用时,每个引脚能驱动8个TTL逻辑门电路。当对0端口写入1时,可以作为高阻抗输入端使用。当P0口访问外部程序存储器或数据存储器时,它还可设定成地址数据总线复用的形式。在这种模式下,P0口具有内部上拉电阻。在EPROM编程时,P0口接收指令字节,同时输出指令字节在程序校验时。程序校验时需要外接上拉电阻。P1口P1口是一带有内部上拉电阻的8位双向I/O口。P1口的输出缓冲能接受或输出4个TTL逻辑门电路。当对P1口写1时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。当作为输入端使用时,P1口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流(IIL)。P2口P2是一带有内部上拉电阻的8位双向的I/O端口。P2口的输出缓冲能驱动4个TTL逻辑门电路。当向P2口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。P2口在访问外部程序存储器或16位地址的外部数据存储器(例如MOVXDPTR)时,P2口送出高8位地址数据。在这种情况下,P2口使用强大的内部上拉电阻功能当输出1时。当利用8位地址线访问外部数据存储器时(例MOVXR1),P2口输出特殊功能寄存器的内容。当EPROM编程或校验时,P2口同时接收高8位地址和一些控制信号。P3口P3是一带有内部上拉电阻的8位双向的I/O端口。P3口的输出缓冲能驱动4个TTL逻辑门电路。当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。P3口同时具有AT89C51的多种特殊功能,具体如下表1所示端口引脚第二功能P30RXD串行输入口P31TXD(串行输出口)P32外部中断00INTP33(外部中断1)1P34T0(定时器0)P35T1(定时器1)P36(外部数据存储器写选通)WRP37(外部数据存储器都选通)D表1P3口的第二功能RST复位输入。当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。ALE/当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的PROG低8位字节。当在FLASH编程时还可以作为编程脉冲输出()。PROG一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。程序存储允许时外部程序存储器的读选通信号。当AT89C52执行外部程序PSEN存储器的指令时,每个机器周期两次有效,除了当访问外部数据存储器时,PSEN将跳过两个信号。/VPP外部访问允许。为了使单片机能够有效的传送外部数据存储器从0000H到EAFFFH单元的指令,必须同GND相连接。需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。当执行内部编程指令时,应该接到VCC端。EAXTAL1振荡器反相放大器以及内部时钟电路的输入端。XTAL2振荡器反相放大器的输出端。在本次设计中,采用89C51作为CPU处理器,充分利用其硬件资源,结合D触发器CD4013,分频器CD4060,模拟转换开关CD4051,计数器74LS90等数字处理芯片,主要控制两大硬件模块,量程切换以及显示模块。下面还将详细说明。24信号调整及放大整形模块放大整形系统包括衰减器、跟随器、放大器、施密特触发器。它将正弦输入信号VX整形成同频率方波VO,幅值过大的被测信号经过分压器分压送入后级放大器,以避免波形失真。由运算放大器构成的射级跟随器起阻抗变换作用,使输入阻抗提高。同相输入的运算放大器的放大倍数为(R1R2)/R1,改变R1的大小可以改变放大倍数。系统的整形电路由施密特触发器组成,整形后的方波送到闸门以便计数。由于输入的信号幅度是不确定、可能很大也有可能很小,这样对于输入信号的测量就不方便了,过大可能会把器件烧毁,过小可能器件检测不到,所以在设计中采用了这个信号调理电路对输入的波形进行阻抗变换、放大限幅和整形,信号调理部分电路具体实现电路原理图参数如下图4所示图4放大整形模块电路原理25时基信号产生电路CD4013双上升沿D触发器,引脚及功能见如下图5CD4013由两个相同的、相互独立的数据型触发器构成。每个触发器有独立的数据置位复位时钟输入和Q及Q非输出。此器件可用作移位寄存器,且通过将Q非输出连接到数据输入,可用作计数器和触发器。在时钟上升沿触发时,加在D输入端的逻辑电平传送到Q输出端。置位和复位或复位线上的高电平完成。图5CD4013芯片引脚用功能图CD406014位二进制串行计数器,引脚及功能见如下图6CD4060由一震荡器和14极二进制串行计数器位组成,震荡器的结构可以是RC或晶振电路。CR为高电平时,计数器清零且振荡器使用无效,所有的计数器位均为主从触发器CP1非(和CP0)的下降沿计数器以二进制进行计数,在时钟脉冲线上使用施密特触发器对时钟上升和下降时间无限制。D4DIODED3DIODED2DIODE23765184U3LM31D1DIODECLR11CLK13D12D212CLK211SET14SET210CLR213Q15Q16Q29Q28GND75V14IC174LS1412J1CON212J2CON2C1105R1RES1R2RES1R3RES1R4RES1R5RES1R6RES1D5ZENER1VC15VVCC15VGNDVC15VVCC15VGNDGNDGND5VGNDVCGND32184U1ALF353567U1BLF353图6CD4060芯片引脚用功能图时基信号的产生原理本电路采用32768HZ晶体震荡器,利用CD4060芯片经过14级分频得到2HZ的信号(32768/214),在经过CD4013双D触发器经过二分频得到05HZ的方波,即输出秒脉冲信号使单片机进行计数。图7秒脉冲产生电路原理图Q121Q132Q143Q64Q55Q76Q47VSS809010111RESET12Q913Q814Q1015VDD16U10000000000CD4060Q11Q12CLOCK13RESET14D15SET16VSS7SET28D29RESET210CLOCK211Q212Q213VDD14U2CD4013C110PY232768GNDVCCVCCC201UR71M/INTO26显示模块261主要功能A、40通道点阵LCD驱动B、可选择当作行驱动或列驱动C、输入/输出信号输出,能产生202个LCD驱动波形输入,接受控制器送出的串行数据和控制信号,偏压V1V6D、通过单片机控制将所测的频率信号读数显示出来。262技术参数表2极限参数表标准值名称符号MINTYPEMAX单位电路电源VDDVSS0370VLCD驱动电压VDDVEEVDD135VDD03V输入电压VIN03VDD03V静电电压100V工作温度2070C储存温度3080C表3电参数表标准值名称符号测试条件MINTYPEMAX单位输入高电平VIH22VDDV输入低电平VIL0306V输出高电平VOHIOH02MA24V输出低电平VOLIOL12MA04V工作电流IDDVDD50V20MATA0C49TA25C47液晶驱动电压VDDVEETA50C45V表4时序特性表标准值项目符号测试条件MINTYPEMAX单位允许时间周期TCYCE1000NS允许脉冲宽度,高电平PWEH450NS允许上升和下降时间TERTEF25NS地址建立时间TAS140NS数据延迟时间TDDR320NS数据建立时间TDSW195NS数据保持时间TH10NSDATAHOLDTIMETDHR20NS地址保持时间TAH51A51B10NS263引脚和指令功能表5模块引脚功能表引线号符号名称功能1VSS接地0V2VDD电路电源5V103VEE液晶驱动电压保证VDDVEE455V电压差4RS寄存器选择信号H数据寄存器L指令寄存器5R/W读/写信号H读L写6E片选信号下降沿触发,锁存数据7|14DB0|DB7数据线数据传输表6寄存器选择功能表RSR/W操作00指令寄存器IR写入01忙标志和地址计数器读出10数据寄存器DR写入11数据寄存器读出指令功能格式RSR/WDB7DB6DB5DB4DB3DB2DB1DB0共11种指令清除,返回,输入方式设置,显示开关,控制,移位,功能设置,CGRAM地址设置,DDRAM地址设置,读忙标志,写数据到CG/DDRAM,读数据由CG/DDRAM。264显示位与DDRAM地址的对应关系表7显示位与地质对应关系显示位序号1234540第一行000102030427DDRAM地址HEX第二行404142434467265初始化方法用户所编的显示程序,开始必须进行初始化,否则模块无法正常显示,下面介绍两种初始化方法51利用内部复位电路进行初始化下面指令是在初始化过程中执行的。1清屏DISPLAYCLEAR2功能设置FUNCTIONSETDL18BIT接口数据N01行显示F057DOT字形3显示开/关控制DISPLAYON/OFFCONTROLD0显示关C0光标关B0消隐关4输入方式设置ENTRYMODESETI/D1增量S0无移位52软件复位如果电路电源不能满足复位电路的要求的话,那么初始化就要用软件来实现,过程如下等待41MS等待100US检查忙标志或延时40US检查忙标志或延时40US检查忙标志或延时40US检查忙标志或延时164检查忙标志或延时40图8八位接口初始化流程图电源开VDD上升到45V后等待15RSR/WDB7DB6DB5DB4DB3DB2DB1DB0000011RSR/WDB7DB6DB5DB4DB3DB2DB1DB0000011RSR/WDB7DB6DB5DB4DB3DB2DB1DB0000011RSR/WDB7DB6DB5DB4DB3DB2DB1DB0000011NFRSR/WDB7DB6DB5DB4DB3DB2DB1DB000000010RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000000001RSR/WDB7DB6DB5DB4DB3DB2DB1DB000000001I/DS初始化结束第3章软件设计图9主流程图设计主要能过编写软件来控制硬件完成以下各模块的功能定时读数,量程转换,BCD转换,LCD显示的功能单片机当C/T1时为计数方式,多路开关与定时器的外部引脚连通,外部计数脉冲由引脚输入。当外部信号由1至0跳变时,计数器加1,此时T0成为外部事件的计数器。由于确认一次由1至0的跳变要用24个振荡器周期,所以计数器的计数频率为单片机内部计数器频率的1/24。当CT0时为定时方式,对单片机内部计数器进行M2分频后,计数器的实际计数频率为单片机内部频率凡的1/M2,当GATE0时,反相器输出为1,或门输出为1,打开与门,使定时器的启动仅受TRO端信号电平的控制。在此种情况下,INT0引脚的电平变化对或门不起作用。TRO1时接通控制开关,计数脉冲加到计数器上,每来一个计数脉冲,计数器加1,只有当TRO0时,控制开关断开,计数器停止计数。当GATA0时,若TRO1,或门、与门全部打开,外部信号电平通过INTO引脚直接控制定时器的启动和关闭。输人高电平时允许计数,否则停止计数。根据定时器的结构原理,若我们将GATE位、TR0均设为1,INT0端输人被测频率信号,当被测信号的高电平到来时,开始计数;当被测信号的低电平到来时,计数器停止计数,此时TL0、TH0的数据就是相应的N值。31使用软件介绍KEIL8051开发工具提供数个十分有用的特性,可以帮助你快速地成功开发嵌入式应用。这些工具使用简单并保证你达到你的设计目的。KEILUVISION2是德国KEILSOFTWARE公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统C语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到UVISION2的集成开发环境中,这个集成开发环境包含编译器,汇编器,实时操作系统,项目管理器,调试器。UVISION2IDE可为它们提供单一而灵活的开发环境。311UVISION2集成开发环境UVISION2IDE是一个基于WINDOW的开发平台,包含一个高效的编辑器,一个项目管理器和一个MAKE工具。UVISION2支持所有的KEIL8051工具,包括C编译器,宏汇编器,连接/定位器,目标代码到HEX的转换器。UVISION2通过以下特性加速你的嵌入式系统的开发过程全功能的源代码编辑器。器件库用来配置开发工具设置。项目管理器用来创建和维护你的项目。集成的MAKE工具可以汇编,编译和连接你的嵌入式应用。所有开发工具的设置都是对话框形式的。真正的源代码级的对CPU和外围器件的调试器。高级GDI(AGDI)接口用来在目标硬件上进行软件调试,以及和MONITOR51进行通信。与开发工具手册和器件数据手册和用户指南有直接的链接。312关于开发环境UVISION2界面提供一个菜单,一个工具条以便快速选择命令按钮,另外还有源代码的显示窗口,对话框和信息显示。UVISION2允许同时打开浏览多个源文件313文件菜单和命令(FILE)菜单工具条快捷键描述NEWCTRLN创建新文件OPENCTRLO打开已经存在的文件CLOSE关闭当前文件SAVECTRLS保存当前文件SAVEALL保存所有文件SAVEAS另外取名保存DEVICEDATABASE维护器件库PRINTSETUP设置打印机PRINTCTRLP打印当前文件PRINTPREVIEW打印预览19打开最近用过的文件EXIT退出UVISION2,提示是否保存文件。314编辑菜单和编辑器命令EDIT菜单工具条快捷键描述HOME移动光标到本行的开始END移动光标到本行的末尾CTRLHOME移动光标到文件的开始CTRLEND移动光标到文件的结束CTRL移动光标到词的右边CTRLA选择当前文件的所有文本内容UNDOCTRLZ取消上次操作REDOCTRLSHIFTZ重复上次操作CUTCTRLX剪切所选文本CTRLY剪切当前行的所有文本COPYCTRLC复制所选文本PASTECTRLV粘贴INDENT将所选文本右移一个制表键的距离SELECTEDTEXTUNINDENT将所选文本左移一个制表键的距离SELECTEDTEXTTOGGLEBOOKMARKCTRLF2设置/取消当前行的标签GOTONEXTBOOKMARKF2移动光标到下一个标签处GOTOPREVIOUSBOOKMARKSHIFTF2移动光标到上一个标签处CLEARALLBOOKMARKS清除当前文件的所有标签FINDCTRLF在当前文件中查找文本F3向前重复查找SHIFTF3向后重复查找CTRLF3查找光标处的单词CTRL寻找匹配的大括号,圆括号,方括号(用此命令将光标放到大括号,圆括号或方括号的前面)REPLACECTRLH替换特定的字符FINDINFILES在多个文件中查找315C51语言的扩展虽然C51是一个兼容ANSI的编译器,但为了支持8051系列MCU还是加入了一些扩展的内容。C51编译器的扩展内容包括数据类型存储器类型指针重入函数中断服务程序实时操作系统和PL/M及A51源程序的接口以下各节简单地描述了上述的扩展特性316数据类型本C51编译器支持下表列出的各种规格的数据类型。除了这些数据类型以外,变量可以组合成结构,联合及数组。除非特别说明,这些变量都可以用指针存取。注BIT,SBIT,SFR,和SFR16为8051硬件和C51及C251编译器所特有,它们不是ANSIC的一部分,也不能用指针对它们进行存取。这些SBIT,SFR和SFR16类型的数据使你能够操作8051MCU所提供的特殊功能寄存器。例如,下面的表达式SFRP00X80/DEFINE8051P0SFR/声明了一个变量P0,并且把它和位于0X80(8051的端口0)处的特殊功能寄存器联系在一起。当结果的数据类型和源数据类型不同时,C51编译器在数据类型间自动进行转换。例如,一个BIT变量赋值给一个INTERGER变量时将会被转换为INTEGER。当然,你可以用类型表示进行强制转换。数据转换时要注意,有符号变量的转换,其符号是自动扩展的317存储器类型本C51编译器支持8051及其派生类型的结构,能够访问8051的所有存储器空间。具有下表列出的存储器类型的变量都可以被分配到某个特定的存储器空间。存储器类型描述CODE程序空间(64KBYTES);通过MOVCADPTR访问。DATA直接访问的内部数据存储器;访问速度最快(128BYTES)。IDATA间接访问的内部数据存储器;可以访问所有的内部存储器空间(256BYTES)。BDATA可位寻址的内部数据存储器;可以字节方式也可以位方式访问(16BYTES)。XDATA外部数据存储器(64KBYTES);通过MOVXDPTR访问。PDATA分页的外部数据存储器(256BYTES);通过MOVXRN访问。访问内部数据存储器将比访问外部数据存储器快的多。由于这个原因,你应该把频繁使用的变量放置在内部数据存储器中,把很少使用的变量放在外部数据存储器中。这通过使用SMALL模式将很容易就做到。通过定义变量时包括存储器类型,你可以定义此变量存储在你想要的存储器中。在变量的声明中,你可以包括存储器类型和SIGNED或UNSIGNED属性。CHARDATAVAR1CHARCODETEXT“ENTERPARAMETER“UNSIGNEDLONGXDATAARRAY100FLOATIDATAX,Y,ZUNSIGNEDINTPDATADIMENSIONUNSIGNEDCHARXDATAVECTOR1044CHARBDATAFLAGS如果在变量的定义中,没有包括存储器类型,将自动选用默认或暗示的存储器类型。暗示的存储器类型适用于所有的全局变量和静态变量,还有不能分配在寄存器中的函数参数和局部变量。默认的存储器类型由编译器的参数SMALL,COMPACT及LARGE决定。这些参数定义了编译时使用的存储模式。318存储模式存储模式决定了默认的存储器类型,此存储器类型将应用于函数参数,局部变量和定义时未包含存储器类型的变量。你可以在命令行用SMALL,COMPACT和LARGE参数定义存储模式。定义变量时,使用存储器类型显式定义将屏蔽默认存储器类型。81)小SMALL模式所有变量都默认在8051的内部数据存储器中。这和用DATA显式定义变量起到相同的作用。在此模式下,变量访问是非常快速的。然而,所有数据对象,包括堆栈都必须放在内部RAM中。堆栈空间面临溢出,因为堆栈所占用多少空间依赖于各个子程序的调用嵌套深度。在典型应用中,如果具有代码分段功能的BL51连接/定位器被配置成覆盖内部数据存储器中的变量时,此SMALL模式是最好的选择。82)紧凑(COMPACT)模式此模式中,所有变量都默认在8051的外部数据存储器的一页中。地址的高字节往往通过PORT2输出。其值必须由你在启动代码中设置,编译器不会为你设置。这和用PDATA显式定义变量起到相同的作用。此模式最多只能提供256字节的变量。这种限制来自于间接寻址所使用的R0,R1(MOVXR0/R1)。这种模式不如SMALL模式高效,所以变量的访问不够快。不过它比LARGE模式要快。83)大(LARGE)模式在大模式下,所有的变量都默认在外部存储器中(XDATA)。这和用XDATA显式定义变量起到相同的作用。数据指针(DPTR)用来寻址。通过DPTR进行存储器的访问的效率很低,特别是在对一个大于一个字节的变量进行操作时尤为明显。此数据访问类型比SMALL和COMPACT模式需要更多的代码。319指针C51编译器支持用星号()进行指针声明。你可以用指针完成在标准C语言中有的所有操作。另外,由于8051及其派生系列所具有的独特结构,C51编译器支持两种不同类型的指针存储器指针和通用指针。通用指针通用或未定型的指针的声明和标准C语言中一样。如CHARS/STRINGPTR/INTNUMPTR/INTPTR/LONGSTATE/LONGPTR/通用指针总是需要三个字节来存储。第一个字节是用来表示存储器类型,第二个字节是指针的高字节,第三字节是指针的低字节。通用指针可以用来访问所有类型的变量,而不管变量存储在哪个存储空间中。因而许多库函数都使用通用指针。通过使用通用指针,一个函数可以访问数据,而不用考虑它存储在什么存储器中。通用指针很方便,但是也很慢。在所指向目标的存储空间不明确的情况下,它们用的最多。存储器指针存储器指针或类型确定的指针在定义时包括一个存储器类型说明,并且总是指向此说明的特定存储器空间。例如CHARDATASTR/PTRTOSTRINGINDATA/INTXDATANUMTAB/PTRTOINTSINXDATA/LONGCODEPOWTAB/PTRTOLONGSINCODE/正是由于存储器类型在编译时已经确定,通用指针中用来表示存储器类型的字节就不再需要了。指向IDATA,DATA,BDATA和PDATA的存储器指针用一个字节保存,指向CODE和XDATA的存储器指针用两个字节保存。使用存储器指针比通用指针效率要高,速度要快。当然,存储器指针的使用不是很方便。在所指向目标的存储空间明确并不会变化的情况下,它们用的最多。存储器指针和通用指针的比较使用存储器指针可以显著的提高8051C程序的运行速度。下面的示例程序说明了使用不同的指针在代码长度,占用数据空间和运行时间上的不同。DESCRIPTIONIDATAPOINTERXDATAPOINTERGENERICPOINTERC源程序IDATAIPCHARXDATAXPCHARPCHARVALHARVALCHARVALVALIPVALXPVALXP编译后的代码MOVR0,IPMOVDPL,XP1MOVR1,P2MOVVAL,R0MOVDPH,XPMOVR2,P1MOVA,DPTRMOVR3,PMOVVAL,ACALLCLDPTR指针大小1BYTE2BYTE3BYTE代码长度4BYTES9BYTES11BYTESLIBRARYCALL执行时间4CYCLES7CYCLES13CYCLES3110重入函数多个进程可以同时使用一个重入函数。当一个重入函数被调用运行时,另外的一个进程可能中断此运行过程,然后再次调用此重入函数。通常情况下,C51函数不能被递归调用,也不能应用导致递归调用的结构。有此限制是由于函数参数和局部变量是存储在固定的地址单元中。重入函数特性允许你声明一个重入函数。即可以被递归调用的函数。如INTCALCCHARI,INTBREENTRANTINTXXTABLEIRETURNXB重入函数可以被递归调用,也可以同时被两个或更多的进程调用。重入函数在实时应用中及中断服务程序代码和非中断程序代码必须共用一个函数的场合中经常用到。对每一个重入函数来说,根据存储模式,重入堆栈被安置在内部或外部单元中。3111中断服务程序C51编译器允许你用C语言创建中断服务程序。你仅仅需要关心中断号和寄存器组的选择。编译器自动产生中断向量和程序的入栈及出栈代码。在函数声明时包括INTERRUPT,将把所声明的函数定义为一个中断服务程序。另外,你可以用USING定义此中断服务程序所使用的寄存器组。UNSIGNEDINTINTERRUPTCNTUNSIGNEDCHARSECONDVOIDTIMER0VOIDINTERRUPT1USING2IFINTERRUPTCNT4000/COUNTTO4000/SECOND/SECONDCOUNTER/INTERRUPTCNT0/CLEARINTCOUNTER/3112参数传递C51编译器能在CPU寄存器中传递最多三个参数,由于不用从存储器中读出和写入参数,从而显著提高了系统性能。参数传递由REGPARMS和NOREGPARMS编译参数所控制。下表列出了不同的参数和数据类型所占用的寄存器参数CHAR,INT,LONG,GENERIC数目1BYTEPOINTER2BYTEPOINTERFLOATPOINTER1R7R6用SRC指示C51编译器编译时产生以下汇编文件PR_ASMFUNC1ASM1SEGMENTCODEPUBLICASMFUNC1RSEGPR_ASMFUNC1ASM1USING0ASMFUNC1VARIABLEARG00ASSIGNEDTOREGISTERR6/R7MOVA,R7LOADLSBOFTHEINTADDA,01HADD1MOVR7,APUTITBACKINTOR7CLRAADDCA,R6ADDCARRYRETURNRESULTINR6/R7你可以用PRAGMAASM和PRAGMAENDASM预处理指示器来在你的C语言程序中插入汇编指令。3115对8051的特殊优化窥孔优化当能够缩小代码空间或执行时间时,复杂的操作被简单的操作代替。访问优化常量和变量被计算后直接包含在操作中。扩展访问优化用DPTR做存储器指针来增加代码的密度。数据覆盖一个函数的数据和位变量空间是可覆盖的,BL51连接器将采用覆盖技术来分配变量空间。CASE/SWITCH优化根据使用的数字,序列和位置,用跳转表或一连串的跳转指令来优化SWITCH及CASE结构。32定时读数设计以AT89C51单片机为核心,AT89C51内部具有两个16位定时/计数器,定时/计数器的工作可以由编程来实现定时,计数和产生计数溢出中断要求的功能。在构成为定时器时,每个机器周期加1(使用12MHZ时钟时,每1US加1),这样以机器周期为基准可以用来准确定时。在构成计数器时,在相应的外部引脚发生从1到0的跳变时计数器加1,这样在计数阀门的控制下可以用来测量待测信号的频率。外部输入每个机器及周期被采样一次,这样检测一次1到0的跳变至少需要两个机器周期(24个震荡周期),所以最大计数速率为时钟频率的1/24(使用12MHZ时钟时,最大计数速率为500KHZ)。本次设计用到两种中断服务,一个是内部定时器0产生中断,另外一个是外部INT0产生中断。内部定时器0产生中断的目的主要是统计在一次产生外部中断期间产生内部定时器0中断的次数变量ADD;产生外部中断的目的就是根据内部中断产生的次数变量ADD以及当时计数寄存器TH0、TL0中的计数值计算出一个外部中断期间共产生了多少个机器周期,即一个外部中断周期内的总体计数值变量N。中断模块设计包括中断初始化,定时器0中断服务设计,外部中断INT的中断服务设计。33量程转换在被测信号与单片机输入口之间,加上分频器对被测信号进行分频。就可以扩展被测量信号的周期。如原信号的频率经过M1分频后周期变为原周期的M1倍。被测信号首先经过放大、整形后再由分频器进行分频,然后送入单片机的T0端口并开始计数,分频器的分频系数由单片机来控制,计数、分频达到规定的精度后结束计数,然后调用显示子程序,显示结果,分频、频率的计算和显示由单片机控制。34BCD转换在单片机的应用中,经常使用BCD码转换程序。实现这种转换的常规方法是采用循环减法来完成,即先转换最高位,再次高位,逐次转换到个位。这种转换方法的确定是运算量大,转换时间长,数据大小不同时转换周期也不相同,而且数据长度不等时程序也不易兼容。为了克服这些缺点,我们在实际工作中使用了的BCD转换程序方法,利用BCD码调整指令,移位,加法等运算指令编制。35LCD显示本次设计用到的1602液晶显示屏所用到的驱动函数包括液晶写数据函数,液晶写命令函数,液晶读数据函数,液晶读状态函数,液晶初始化函数,液晶在指定位置显示一个字符函数以及液晶在指定位置显示一串字符函数。在编程应用1602液晶驱动时,只根据图的流程图调用相关函数即可完成显示模块的所用功能,对于本设计所用的1602驱动函数,其中液晶初始化函数已经包括了初始化合清屏两大功能,此外,在指定位置显示一串字符的函数也已经包括了设置显示位置和显示字符串的两大功能,因为在本课题的实际编程中对于液晶显示模块的设计相对来说比较简单。开始初始化清屏设置显示位置显示字符结束36软件运行仿真图10选择对应的硬件图11程序输入窗口图12程序运行结果致谢毕业论文的制作是一个难得的学习机会,在我徜徉书海查找资料的日子里,面对无数书本的罗列,最难忘的是每次找到资料时的激动和兴奋;在不断学习,调试程序的过程中加强了单片机和汇编语言的学习,在程序设计的过程中遇到了不少的难题无法下手,在此期间老师和同学们给了我很大的帮助。数字计频器是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,会被经常使用到。通过这次课程设计,不但加深我对在课程上所学到的单片机理论知识的认识和理解,重新让自己认识到了这门学科的在应用方面的广阔前景,并且通过知识与应用于实践的结合更加丰富了自己的知识。扩展了知识面,不但掌握了本专业的相关知识,而且对其他专业的知识也有了一定的了解,而且较系统的掌握单片机应用系统的开发过程,得到了很多收获和体会。巩固和加深了对电子线路基本知识和理解,提高了综合运用所学知识的能力。增强了根据课程需要选学参考资料,查阅手册,图表和文献资料的自学能力。通过独立思考,深入研究有关问题,学会自己分析解决问题的方法。通过实际电路方案的分析比较,设计计算,元件选取,安装调试等环节,初步掌握了简单实用电路的分析方法和工程设计方法。第四,掌握了比较常用的仪器的使用方法,提高了动手能力。第五,培养了严谨的工作作风和科学态度。最后感谢指导老师丁伟老师在过程中的悉心指导与帮助,在此表示衷心的感谢。参考文献1毕满清,王黎明,高文华模拟电子技术基础M电子工业出版社2张毅刚,彭喜缘MCS51单片机应用设计M哈尔滨工业大学出版社3KEILELEK
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年三四线城市房地产投资风险评估与市场前景分析报告
- 药品进口设备管理制度
- 药师调剂授权管理制度
- 药店在岗培训管理制度
- 药店药品卫生管理制度
- 菜鸟货物仓储管理制度
- 设备使用规范管理制度
- 设备器材安全管理制度
- 设备房除尘灰管理制度
- 设备管理中心管理制度
- 油气管道输送试题及答案
- 2025年挖掘铲运和桩工机械司机(技师)职业技能鉴定理论考试题库(含答案)
- 2024-2025学年湘少版(三起)(2024)小学英语三年级下册(全册)知识点归纳
- 《义务教育生物课程标准(2022年版)》解读
- 承包安全协议书
- 广东食品安全管理人员抽查考核题库附答案
- 2025年白芷种植市场调研报告
- 《DTP药房管理中静脉注射类创新药物患者用药风险识别分析5400字》
- 全国行政区域身份证代码表(电子表格版)
- 期末复习人教PEP版英语五年级下册
- 微弱的光亮(2024年山东烟台中考语文试卷记叙文阅读试题)
评论
0/150
提交评论