• 2.26 MB
  • 2022-04-22 13:33:52 发布

以AD637为基础的交流毫伏表设计毕业论文.doc

  • 50页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'以AD637为基础的交流毫伏表设计毕业论文目录摘要IAbstractII1绪论12单片机22.1单片机概述22.2单片机的内部结构22.3AT89C51简介32.4单片机最小系统93单元电路设计103.1衰减、放大倍数可调电路设计103.2真有效值直流(RMS-DC)变换电路设计123.3A/D模数转换单元设计153.3.1A/D转换器概述153.3.2逐次逼近式A/D原理及AD574芯片153.4直流稳压电源设计203.4.1单相桥式整流电路203.4.2桥式整流电路的技术指标213.4.3三端固定式集成稳压器223.4.4稳压电源电路23 4数码管LED及可编程接口芯片设计244.1LED数码管结构与原理244.1.1LED数码管结构种类244.1.2LED数码管的工作原理244.28155可编程接口芯片设计254.2.18155的内部组成及引脚说明264.2.28155的RAM和I/O口地址编码274.2.38155I/O的工作方式274.2.48155的命令/状态字285系统设计305.1数字交流毫伏表概述305.2系统使用305.3硬件电路图316软件设计326.1量程自动转换326.2分贝值计算与显示32结论35致谢36参考文献37附录38 1绪论自90年代以来,以计算机技术、通信技术和软件技术为核心的信息技术取得了更加迅猛的发展极大的促进了嵌入式系统的发展。随着嵌入式系统应用的不断深入和产业化程度的不断提升,新的应用环境和产业化需求对嵌入式系统软件提出了更加严格的要求。在新需求的推动下,嵌入式操作系统内核不仅需要具有微型化、高实时性等基本特征,还将向高可信性、自适应性、构件组件化方向发展;支撑开发环境将更加集成化、自动化、人性化。同时随着电子技术的迅速发展、数字电路应用领域的不断扩展,当今社会,产品数字化、智能化已成为人们追求的一种趋势,设备的性能、价格、发展空间等备受人们的关注,尤其对电子测量设备的精密度和稳定度最为关注。在电量的测量中,电压,电流和频率是最基本的三个被测量,其中电压量的测量最为经常,而且随着电子技术的发展,更需要测量弱电的电压,所以毫伏电压表就成为一种必不可少的测量仪器。另外,由于数字式仪器具有读数准确方便,精度高,误差小,灵敏度和分辨率高,测量速度快等特点,而倍受用户青睐,人们对数显仪表类器件的精度需求越来越严格。当今社会,仪表制作技术已经很成熟,仪表制作和嵌入式系统结合的越来越紧密,但是交流毫伏表方面特别是数字显示的交流毫伏表技术才刚刚起步且有待发展,高性能的数显交流毫伏表器件的开发和应用存在巨大的发展空间。本设计正是应社会发展的需求,研制出一种基于单片机的高性能的数字显示交流毫伏表。本数字显示交流毫伏表系统测量交流电压精确,电压测量误差±5%,测量频率范围广,能有效应用于需要高精度、宽频率范围的交流电压测量等领域。2单片机2.1单片机概述47 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广,发展很快。单片机体积小,重量轻,抗干扰能力强,环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面。2.2单片机的内部结构MCS-51单片机的内部结构如图所示,MCS-51单片机把微型计算机的基本部件,如将中央处理器、随机存储器、程序存储器、并行I/O接口、串行I/O接口、定时器/计数器、中断系统以及特殊功能寄存器等集成在一块芯片上,并通过单一的内部总线连接起来。图2-1MCS-51单片机的内部结构(1)8位的CPU。(2)4KB的片内程序存储器(ROM/EPROM/EEPROM/Flash)(3)128Byte的片内数据存储器(RAM)(4)64KB外部RAM寻址空间,即最大可扩展64KB外部RAM。(5)2个16位的定时器/计数器。(6)4个8位并行I/O接口:P0,P1,P2,P3。(7)1个全双工串行I/O口,可实现多机通信。47 (8)21Byte的专用寄存器(SFR)。(9)5个中断源,可编程为2个优先级。(10)片内自带振荡器,还可作为时钟输出。(11)片内采用单总线结构。(12)采用单一的+5V电源供电。2.3AT89C51简介AT89C51是美国ATMEL公司生产的低电压,高性能COMS8位单片机,片内含4Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。47 图2-1AT89C51管脚分布1.主要性能参数(1)与MCS-51产品指令系统完全兼容(2)4K字节可重擦写Flash闪速存储器(3)1000次擦写周期(4)全静态操作:0Hz—24MHz(5)三级加密程序存储器(6)128×8字节内部RAM(7)32个可编程I/O口线(8)2个16位定时/计数器(9)6个中断源(10)可编程串行UART通道(11)低功耗空闲和掉电模式2.功能特性概述AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器。串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。47 3.引脚功能说明VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写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口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉电阻的缘故。P3口也可作为AT89C51的一些特殊功能口,P3口同时为闪烁编程和编程校验接收一些控制信号。P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)47 P3.7/RD(外部数据存储器读选通)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。4.时钟振荡器AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。用户也可以采用外部时钟。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。5.复位电路MCS-51 单片机复位电路是指单片机的初始化操作。单片机启运运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。因而,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。47 (1)复位功能。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。单片机的复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位(如图2-2(a))和按钮复位(如图2-2(b))两种方式。图2-2RC复位电路(2)单片机复位后的状态:单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值,见表2-1。值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的初始化部分是十分必要的。说明:表中符号*为随机状态;47 表2-1寄存器复位后状态表特殊功能寄存器初始状态特殊功能寄存器初始状态ABPSWSPDPLDPHP0—P3IPIE00H00H00H07H00H00HFFH***00000B0**00000BTMODTCONTH0TL0TH1TL1SBUFSCONPCON00H00H00H00H00H00H不定00H0********BPSW=00H,表明选寄存器0组为工作寄存器组;SP=07H,表明堆栈指针指向片内RAM07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;Po-P3=FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出。IP=×××00000B,表明各个中断源处于低优先级;IE=0××00000B,表明各个中断均被关断;系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。51单片机在系统复位时,将其内部的一些重要寄存器设置为特定的值,至于内部RAM内部的数据则不变。47 2.4单片机最小系统单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路.下面给出一个51单片机的最小系统电路图。图2-2最小系统电路图在智能化仪器仪表中,控制核心均为微处理器,而单片机以高性能、高速度、体积小、价格低廉、稳定可靠而得到广泛应用,是设计智能化仪器仪表的首选微控制器。单片机结合简单的晶体振荡电路和复位电路即可构成单片机最小系统,它是智能化仪器仪表的基础,也是测控、监控的重要组成部分。47 3单元电路设计3.1衰减、放大倍数可调电路设计信号的衰减及放大由单片机I/O口通过微型继电器控制,与A/D配合,以实现量程的自动转换。若被测电压高于单片机此时设定的量程,单片机控制相应的继电器对信号衰减,反之则放大,保证输入RMS-DC变换器的信号不超过其工作电压范围,并尽量使RMS-DC变化器工作在最佳状态,提高灵敏度。1.集成运放集成运放应用首先是构成各种运算电路,在运算电路中,以输入电压自变量,以输出电压作为函数,当输入电压发生变化时,输出电压反映输入电压某种运算的结果,因此,集成运放必须工作在线性区,在深度负反馈条件下,反馈网络可以实现各种数学运算。同相比例运算电路,图3-1所示图3-1同相比例运算电路同相比例运算电路见图3-1a),利用“虚断”的概念有利用“虚短”的概念有最后得到输出电压的表达式47 (3-1-1)由于是串联反馈电路,所以输入电阻很大,理想情况下Ri=∞。由于信号加在同相输入端,而反相端和同相端电位一样,所以输入信号对于运放是共模信号,这就要求运放有好的共模抑制能力。在同相比例运算电路中,若将输出电压的全部反馈到反相输入端,就构成图3-1b)所示的电压跟随器。(3-1-2)理想运放的开环差模增益为无穷大,因而电压跟随器具有比射极输出器好得多的跟随特性。2.微型继电器微型继电器本设计中起开关导通作用,MCS-51单片机来控制“1”,“2”管脚与“3”管脚的导通,当“5”管脚加高电平“1”时,“1”管脚与“3”管脚导通,当“5”管脚加低电平“0”时,“2”管脚与“3”管脚导通。微型继电器示意图,如图3-2所示。图3-2微型继电器示意图3.信号衰减、放大倍数可调电路假定输入信号电压为V,P2.1=0,P2.2=0,P2.3=1则第一个运放输出端电压为V,第二个运放输出端电压为V,第三个运放输出端电压为V=V,因为P2.3=1,所以最后得出第三个继电器末端电压为V,即为衰减了,同理可得以下结果。(1)信号衰减倍数可调电路真值表,如表3-1所示表3-147 P2.1P2.2P2.3衰减倍数0101011100001000011000(2)信号放大倍数可调电路真值表,如表3-2所示表3-2P2.1P2.2P2.3放大倍数100111110110100(3)信号衰减、放大倍数可调电路图,如图3-3所示图3-3信号衰减、放大倍数可调电路图3.2真有效值直流(RMS-DC)变换电路设计普通数字电压表只能测量直流电压。如果要测量交流电压,必须增加交流/直流(AC/DC)转换电路。由于本系统采用测交流有效值的方案,所以需要进行真有效值转换。真有效值方法检测电压、电流的核心是TRMS/DC转换器,这类转换电路现已实现单片集成化。AD637是一块高精度单片TRMS/DCC转换器,可以计算各种复杂波形的真有效值。采用了峰值系数补偿,在测量峰值系数高达10的信号时附加误差仅为1%,频带宽度在2V输入时可达8MHz。AD637的制造工艺先进,采用激光修正,一般情况下不需要加外部调整元件。惟一的外围元件是平均电容47 ,用来设定平均时间常数,并决定低频准确度、输出波纹的大小及稳定时间。AD637的内部有独立的缓冲放大器,既可作输入缓冲器用,亦可构成有源滤波器来减小纹波,提高测量准确度。此外,芯片内部输入端有过压保护电路,即使输入电压超过电源电压,一般也不会损坏芯片。它具有响应速度快,响应时间和信号幅度无关等特点,根据其特性曲线,AD637在输入电压0.2V—2V范围内有最佳频率响应,故衰减放大电路的输出信号应控制在该范围内。本文设计的数字交流毫伏表其衰减放大电路的输出信号在0.2V—2V范围内。下图是AD637的内部框图,主要由缓冲器,有源整流器,偏置电路,平方/除法器和滤波电路组成。1.AD637的管脚排列及内部框图图3-4AD637的管脚排列及内部框图(1)COM—公共地.(2)Vin,-输入电压端,该端输入阻抗的典型值为16.67k,最大值为20k(3)OUTOFFSET-输出补偿端(4)CS—片选端,供备用(掉电)模式用(5)DEVIN–基准输入端,侧均方值时用.6)VdB一分贝(电平)电压输出端(7)BUFIN,BUFOUI,一一分别为缓冲器的输入、输出端.缓冲器输入阻抗高达100M,输出阻抗小于0.5,该缓冲器完全独立的,既可接于Vin,端之前,又可接在Vo端之后47 (8)Vo—电压输出端。2.AD637电路主要组成AD637的简化电路如图3-5所示,主要包括5部分:(1)有源整流器(亦称绝对值电路,属全波整流);(2)平方/除法器;(3)滤波放大器;(4)缓冲放大器;(5)偏置电路。图3-5AD637内部原理图3.真有效值直流(RMS-DC)变换电路数字交流毫伏表其衰减放大电路的输出信号在0.2V—2V之间,被测信号经真有效值直流(RMS-DC)变换电路,如图3-6所示,转换为真有效值从AD637的BUFFOUT端输出,经放大输出到A/D模数转换模块,进行处理。图3-6真有效值直流(RMS-DC)变换电路47 3.3A/D模数转换单元设计在计算机实时数据采集和实时监控系统及智能化仪表中,检测和控制的对象大部分是模拟量,如温度、光强、压力、速度、流量等。由于单片机只能识别和处理数字量,因此这些模拟量必须转换为相应的数字量才能送给单片机,能够把模拟量转换为数字量的器件称为模数转换器(ADC)。模拟接口的作用就是在计算机所能处理得数字量与外部设备的模拟信号之间建立一条信息交换渠道。3.3.1A/D转换器概述常用的A/D转换器按其转换原理可分为4种:计数式A/D转换器,双积分式A/D转换器,逐次逼近式A/D转换器和并行式A/D转换器。目前,在微机控制领域最常用的是双积分式和逐次逼近式转换器。A/D转换器的主要技术指标(1)分辨率。分辨率是指A/D转换器能分辨的最小模拟输入量。通常用能转换成的数字量的位数来表示,如8位、10位、12位、16位等。位数越高,分辨率越高。例如,对于8位A/D转换器,当输入电压满刻度为5V时,其输出数字量的变化范围为0~255,转换电路对输入模拟电压的分辨能力为5V/255=19.5mV。(2)转换时间。转换时间是A/D转换器完成一次转换所需的时间。转换时间是编程时必须考虑的参数。若CPU采用无条件传送方式输入A/D转换后的数据,则从启动A/D芯片转换开始,到A/D芯片转换结束,需要一定的时间,此时间为延时等待时间,实现延时等待的一段延时程序,要放在启动转换程序之后,此延时等待时间必须大于或等于A/D转换时间。(3)量程。量程是指A/D转换器所能转换的输入电压范围。(4)精度。精度是指与数字输出量所对应的模拟输入量的实际值与理论值之间的差值。A/D转换电路中与每一个数字量对应的模拟输入量并非是单一的数值,而是一个范围。目前,常用的A/D转换器的精度为1/4~2LSB。3.3.2逐次逼近式A/D原理及AD574芯片1.逐次逼近式A/D原理概述N位的逐次逼近式A/D转换器(图3-6),由N位寄存器、N位D/A转换器、比较器、逻辑控制电路、输出缓冲器等五部分组成。47 图3-6逐次比较式A/D转换器的结构工作原理:启动信号作用后,时钟信号先通过逻辑控制电路使N位寄存器的最高位DN-1为1,以下各位为0,这个二进制代码经D/A转换器转换成电压U0(此时为全量程电压的一半)送到比较器与输入模拟电压UX比较。若UX>U0,则保留这一位;若UX数据2(A)=00—数据1=数据2(A)=FF—数据1<数据2CMPX:MOV42H,#289;≤289等效于≤20mv;CMPX数据比较子程序;便于确定档位MOVR0,#40HMOVR1,#42HCMP:MOVA,@R0MOVB,AMOVA,@R0MOVR7,ACMP3:INCR0INCR1MOVA,@R0MOVB,AMOVA,@R1CJNEA,B,CMP8DJNZR7,CMP3MOVA,#00HLJMPCMP6CMP8:JCCMP1MOVA,0FFHLJMPCMP6CMP1:MOVA,#01HCMP6:MOV42H,ARET;根据AD574各引脚的功能,89C51单片机与AD574的接口电路可按如图;3-10所示电路来安排。由于89C51的高8位地址P2.0~P2.7没有使用,;故可采用寄存器间接寻址方式。其中启动A/D的地址为1FH,读出低47 ;4位数地址为7FH,读出高8位数地址为3FH。采用延时等待方式的;控制程序清单ADQS单片机从AD574读取信号真有效值程序清单;40H存放数据低8位;41H存放数据高4位ADQXMOVR0,#1FH;启动MOVX@R0,AMOVR7,#10H;延时32usDJNZR7,$MOVR1,#7FH;读低4位MOVXA,@R1MOV40H,A;低4位存40HMOVR1,#3FH;读高8位MOVXA,@R1MOV41H,A;高8位存41HMOVR2,41H;高8位暂存在R2MOVA,R2SWAPA;将累加器A中的高半字节和低半字节互换ANLA,#0FOH;低半字节清零MOVR2,40HORLA,R2MOV40H,A;此时40H中存放低8位MOVA,41HSWAPAANLA,#0FH;高半字节清零MOV41H,A;此时41H中存放数据高8位RET;衰减倍数处理子程序;SJQB----衰减1000倍;SJBB----衰减100倍;SJSB----衰减10倍;BSJ----不衰减;QMUL----无符号双字节数快速成法子程序47 SJQB:LJMPQMULMOV42H,#2;42H把衰减倍数相应记录LJMPPLJX;转频率计数程序PLJXSJBB:LJMPQMULMOV42H,#3;42H把衰减倍数相应记录LJMPPLJX;转频率计数程序PLJXSJSB:LJMPQMULMOV42H,#4;42H把衰减倍数相应记录LJMPPLJX;转频率计数程序PLJXBSJ:LJMPQMULMOV42H,#5;42H把衰减倍数相应记录LJMPPLJX;转频率计数程序PLJXRET;QMUL无符号双字节数快速成法子程序;功能:(R2R3)*(R6R7)=(R4R5R6R7);入口:R2R3中存放被乘数;R6R7中存入乘数;出口:积存放在R4R5R6R7中;使用的寄存器A,B,R2-R7及标志Cy,F0;最终结果将R6,R7分别存放到44H,43H单元;说明:本程序采用MCS-51的乘法指令,分位相乘,然后相加。QUML:MOVR2,41HMOVR3,40HMOVA,R3MOVB,R7MULABXCHA,R7MOVR5,BMOVB,R2MULABADDA,R5MOVR4,ACLRA47 ADDCA,BMOVR5,AMOVA,R6MOVB,R3MULABADDA,R4XCHA,R6XCHA,BADDCA,R5MOVR5,AMOVF0,CMOVA,R2MULABADDA,R5MOVR5,ACLRAMOVA.0,CMOVC,FOADDCA,BMOVR4,AMOV44H,R6MOV43H,R7RET;PLJS频率计数程序;定时器计满0.01S读出计数频率;晶振12MHz,1个机器周期1uSPLJS:MOVTMOD,#51H;置T0,T1工作方式MOVTH1,#0D8HMOVTL1,#0F0HSETBET0SETBET1SETBEASETBTR0;启动计数器T047 SETBTR1;启动定时器T1SJMP$TO_INT:CLRTR0;停止计数CLRTR1;停止定时MOV45H,TL0;45H存放TL0MOV46H,TH0;46H存放TH0MOVTH0,#00HMOVTL0,#00HMOVTH1,#00HMOVTH0,#00HSETBEX0;外部中断0允许SETBEX1;外部中断1允许RETI;频率显示子程序;程序中有双字节二进制整数转化成5位BCD码程序PX:MOV35H,#00H;置数码显示个位为0MOVR0,#34H;把R4R5中双字节二进制整数转化成5位BCD码;放在(RO)指向的5个字节中。;调用程序NDIV采用比较发无符号双字节数除法;子程序MOVR4,46HMOVR5,45HIBTL0:MOVB,#5MOVR6,#0MOVR7,#10IBTL1:MOVR2,#0MOVR3,#0PUSHBLCALLNDIVPOPB47 MOVA,R3MOV@R0,AINCR0DJNZB,IBTL1LJMPDISP;LED数码显示RETI;电压显示子程序;程序中有双字节二进制整数转化成5位BCD码程序;44H,43H分别存放电压值的高8位,第8位;把R4R5中双字节二进制整数转化成5位BCD码;放在(RO)指向的5个字节中。;调用程序NDIV采用比较发无符号双字节数除法;子程序FX:MOV30H,#00HMOVR0,#35HMOVR4,44HMOVR5,43HIBTL0:MOVB,#5MOVR6,#0MOVR7,#10IBTL1:MOVR2,#0MOVR3,#0PUSHBLCALLNDIVPOPBMOVA,R3MOV@R0,AINCR0DJNZB,IBTL1LJMPWSXS;WSXS信号真有效值显示位数处理子程序RET1;WSXS信号真有效值显示位数处理子程序47 WSXS:MOVR0,42HCJNE@R0,#5,SUL1CLRP2.6;数码管小数点Y4=1CLRP2.5SETBP2.4MOV36H,#10HLJMPDISPLJMPSULSUL1:CJNE@R0,#4,SUL2SETBP2.6;数码管小数点Y3=1SETBP2.5CLRP2.4MOV36H,#08HLJMPDISPLJMPSULSUL2:CJNE@R0,#3,SUL3CLRP2.6;数码管小数点Y2=1SETBP2.5CLRP2.4MOVA,31HCJNEA,#00H,SL1MOV36H,#04HLJMPDISPLJMPSULSL1:MOV36H,#08H;数码显示5位LJMPDISPLJMPSULSUL3:CJNE@R0,#2,SULSETBP2.6;数码管小数点Y1=1CLRP2.5CLRP2.447 MOVA,31HCJNEA,#00H,SL2MOV36H,#04H;数码显示4位LJMPDISPLJMPSULSL2:MOV36H,#08H;数码显示5位LJMPDISPSUL:RET;8155I/O接口控制的6位共阴极LED显示器接口电路中,PB口输出段选码,PA口输出位选码,ULN2003为7位集成反向驱动芯片,程序中89C51片内RAM30H---35H单元;显示缓冲区从高到低依次存放6个要显示的数据,以非压缩的BCD码格式存放。;36H单元存放要显示的位数DISP:MOVA,#00000011B;8155初始化MOVDPTR,#7F00H;DPTR指向8155控制寄存器端口MOV@DPTR,AMOVR0,#35H;R0指向显示缓冲区首址MOVR3,36H;首位位选字送R3MOVA,R3LD0:MOVDPTR,#7E01H;DPTR指向8155的PA口MOV@DPTR,AMOVDPTR,#TAB;DPTR指向七段码表首址MOVA,@R0;取要显示的数MOVCA,@A+DPTR;查表获得七段码MOVDPTR,#7F02H;DPTR指向8155的PB口MOV@DPTR,A;从PB口输出段选码ACALLDL1;调用延时1ms子程序DECR0;指向缓冲区下一单元MOVA,R3;位选码送AJBACC.0,LD1;判6位是否显示完,显示完并返回47 RRA;未显示完,把位选码变为下一位选字MOVR3,A;修改后的位选字送R3AJMPLD0;循环实现按位依次显示LD1:RETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H;七段码表DB80H,90H,88H,83H,0C6H,0A1H,86H,8EHDL1:MOVR7,#02H;延时子程序DL2:MOVR6,#0FFHDL3:DJNZR6,DL3DJNZR7,DL2RET;NDIV采用比较发无符号双字节数除法子程序;功能(R2R3R4R5)/(R4R5)=(R4R5),余数存放在(R2R3)中,若(R2R3)≥(R6R7);则为溢出,置位F0。;入口:R2R3R4R5中存放被除数,R6R7中存放除数。;出口:商存放在R4R5中,余数存放在R2R3中。;使用寄存器:A,R1----R7及标志Cy,F0。NDIV:MOVA,R3CLRASUBBA,R7MOVA,R2SUBBA,R6JNCNDVE1MOVB,#16NDVL1:CLRCMOVA,R5RLCAMOVR5,AMOVA,R4RLCAMOVR4,AMOVA,R3RLCA47 MOVR3,AXCHA,R2RLCAXCHA,R2MOVF0,CCLRCSUBBA,R7MOVR1,AMOVA,R2SUBBA,R6JBF0,NDVM1JCNDVD1NDVM1:MOVR2,AMOVA,R1MOVR3,AINCR5NDVD1:DJNZB,NDVL1CLRF0RETNDVE1:SETBF0RETEND47'