基于单片机的数字多用表的设计(共43页)_第1页
基于单片机的数字多用表的设计(共43页)_第2页
基于单片机的数字多用表的设计(共43页)_第3页
基于单片机的数字多用表的设计(共43页)_第4页
基于单片机的数字多用表的设计(共43页)_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上基于单片机的数字多用表的设计学院:班级:指导老师:姓名:时间:2014.6.9专心-专注-专业摘 要本设计用单片机芯片AT89C51设计一个数字万用表,能够测量交、直流电压值,交、直流电流,电阻,四位数码显示。此系统由分流电阻、分压电阻、基准电阻、51单片机最小系统、显示部分、报警部分、A/D转换和控制部分组成。本设计主要针对万用表硬件以及软件部分的实现来展开。研究内容包括两部分:硬件和软件。为使系统更加稳定,使系统整体精度得以保障,本电路使用了ADC0808数据转换芯片,单片机系统设计采用AT89C51单片机作为主控芯片,配以RC上电复位电路和11.0592MHZ振

2、荡电路,显示芯片用7SEG-XP-4M-CC,驱动8位数码管显示。程序每执行周期耗时缩到最短,这样保证了系统的实时性。关键词: 数字万用表;A/D转换和控制;AT89C51单片机;ADC0808; 7SEG目 录1、引言1.1 数字万用表研究背景、目的和意义传统的指针式万用表功能单一精度低,不能满足数字化时代的需求,数字万用表是利用模数转换原理,将被测量数据转化为数字量,并将测量结果以数字的形式显示出来的一种测量仪表。与指针式万用表相比,新一代数字万用表具有精度高、输入快、输入阻抗大、数字显示、读数准确、可扩展性强、集成方便、抗干扰能力强、测量自动化程度高等优点,因而被广泛应用,得到工程师的青

3、睐。数字万用表是当前电子、电工、仪器、仪表和测量领域大量使用的一种基本测量,已被广泛应用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,显示出强大的生命力。随着时代科技的进步,数字万用表的功能越来越强大,把电量及非电量的测量技术提高到崭新水平。1.2国内外研究现状目前电子行业具有很高的发展速度,测试测量仪器更是走在行业的尖端,便携式高精度仪器更是发挥了巨大的作用,并且显示了无比的潜力。它可以取代测量技术在传统领域内的各类仪器,它在组成和改变仪器的功能和技术性能上具有很大灵活性和经济性,因而特别适应于当代科学技术迅速发展和科学技术不断深化所提出的更高更新的测量课题和测量需求1。由

4、于科学的进步,社会的发展,电子产业也会发展到一个新的阶段,电子技术的提高代表了一个国家的整体实力,高精尖的电子产品更新换代的周期越来越短,每一款电子产品的设计生产都需要更精密的电子测量仪器与之相配合,这样更先进的测量仪器将成为电子产品开发的必备条件,那么精密的测量仪器将是电子行业发展中的重中之重2。1.3 研究内容此数字万用表由硬件和软件两部分组成,硬件主要完成信号的采集,软件主要完成对硬件的控制以及数据的处理, 所以本文主要针对万用表硬件以及软件部分的实现来展开。研究内容包括两部分:硬件和软件。(1) 整体方案的设计 按照需求制定数字万用表的功能,指标,以及软硬件的整体框架。 按照硬件需求指

5、标,研究硬件实现的框架结构,以及模块划分。 软件为嵌入式软件,按照功能需求设计自己的多线程结构。(2) 功能该万用表的功能主要包括:测量交直流电压、交直流电流、电阻。 电流的量程有50mA,500mA,5A。 电压的量程有5V,50V,500V。 电阻的量程有500,5K,50K,500K,5M。(3) 硬件模块的研究内容参考数字真有值效万用表,对万用表的测量功能和结构进行研究,完成基本硬件模块的设计。该模块可分为模拟部分和数字部分。模拟部分完成对前端信号的采集并且转化为相应电压量。数字部分完成对采集的信号进行处理还有控制的功能。(4) 软件部分的研究内容软件部分主要为该表自身软件,实现其测量

6、功能,采用C语言完成。(5)本设计重点要解决的问题是对不同量程的各种测量内容的转换,还有就是各部分电路组合成一个完整的数字万用表,而难点解决的问题就是程序的设计,要保正其可行性从而保证设计的正确性。1.4 章节安排本文在第二章介绍了数字万用表的基本原理,第三章介绍了系统硬件设计方案,第四章介绍了软件的实现方案。2、数字万用表基本原理数字万用表的最基本功能是能够测量交直流电压,交直流电流,还能够测量电阻 。下面我们来分析一下数字万用表测电压,测电流,测电阻的原理。总体来说,我们此次用的A/D转换芯片是ADC0809,它允许的模拟输入电压值直流05V,设想在测量电压时,如果能把电压都转换成05V的

7、直流电压,然后送A/D转换器,在显示时适当扩大相应的倍数,那么就可以测出电压了,如果测电流时,若也能将电流转换成05V的电压,最后乘以相应的比例系数,那么电流也测量出来,测量电阻的道理也是如此,可见重点研究方向是直流电压表的设计和各个转换电路,下面为我们具体分析一下各个原理。2.1 直流电压测量原理在基准数字电压表头前面加一级分压电路(衰减器),可以扩展直流电压测量的量程。如图2-1所示,U0为电压表头的量程(如5V),r为其内阻(如10M),R1、R2为分压电阻,UI0为扩展后的量程。 图2-1电压扩展量程原理 图2-2多量程分压器原理由于R>>R2,所以分压比为:扩展后的量程为

8、:多量程分压器原理电路见图2-2,三档量程的分压比分别为1、0.1、0.01,对应的量程分别为5V,50V,500V。换量程时,多刀量程转换开关可以根据档位自动调整小数点的显示,使用者可方便地直读出测量结果3。2.2 交流电压测量原理交流电压分压器交流/直流电路A/D转换器测量交流电压的原理是先将交流电压进行衰减,使其在05V之间,然后把交流电压化为直流电压,送A/D转换器。其原理框图如下图2-3:图2-3交流电压测量框图交流/直流电路如下图2-4: 图2-4直流/交流电压电路图2.3 直流电流测量原理一般来说电流测量分为直接式测量和间接式测量。直接式测量是在被测回路中串联一个检测电阻,根据I

9、=U/R,只要检测电压,知道R,就可计算出电流。间接式测量是根据霍尔效应,实现磁场,电场的转换,最终还是要根据I=U/R来计算。采用检测电阻直接测量,比较简洁,成本较低,但检测电流比较小,一般不超过10A。采用霍尔元件进行间接测量,比较复杂,成本较高,但检测电流可以很大,如几十安都可以。为了实现电流的检测,就必须将被测电流变成05V的直流电压,即实现衰减和I/U变换,一般测量电路经常使用这样一些方法来实现。其一,将被测电流通过一个由电阻构成的分流器,使之形成三个分流系数,即1/10(V/mA),1/100(V/mA),1/1000(V/mA),当被测电流分别为50 mA, 500mA,5 A时

10、,均被转换成了5V的输入电压5。其原理图如下图:图2-5 直流电流测量原理图一图2-6 直流电流测量原理图二其二,使三档输入电流50 mA, 500mA,5 A都通过一个取样电阻,比如,R=10,取样电阻将电流变成相对应的500 mV,5V,50V,然后通过一个比例放大器,若比例系数对应为10,1,0.1,则经比例放大器的输出电压均为5V,以此作为A/D转换器的输入。图2-7多量程分流器电路2.4 交流电流测量原理首先把交流电流通过一取样电阻转换成交流电压,然后将交流电压进行衰减,变成05V的交流电压,再通过交流/直流电路将其化成05V的直流电压,然后送A/D转换器。这一原理是测量直流电流和测

11、量交流电压的综合。2.5 电阻测量原理(1) 恒流法测量电阻恒流法测量电阻是让恒流源流I过被测电阻RX,测试流过RX的电压UX,其测量原理图如下:图2-8恒流源法测电阻上图2-8中I是标准电流源,那么只需测得两端的电压UX,就可以求出被测电阻RX了:RX=UX/I,而Ux如第二章开始所讲原理相同。由于恒流源测电阻无法消除衰减放大电路中和A/D电路中的增益随温度变化所带来的误差,以及横流源精度较难控制,一般不用此法测电阻,而是选用比例法测电阻6。(2) 比例法测电阻比例测量法原理电路见图2-9:图2-9比列法测电阻原理由稳压管ZD提供测量基准电压,流过标准电阻R0和被测电阻RX的电流基本相等(A

12、/D转换器的输入阻抗很高,其取用的电流可忽略不计)。所以A/D转换器的参考电压UREF和输入电压UIN有如下关系: 即根据所用A/D转换器的特性可知,数字表显示的是UIN与UREF的比值,当UIN=UREF时显示“1000”, UIN=0.5UREF时显示“500”,以此类推。所以,当R0=RX时,表头将显示“1000”,当R0=0.5RX时显示“500”,这称为比例读数特性。因此,我们只要选取不同的标准电阻并适当地对小数点进行定位,就能得到不同的电阻测量档7。如对500档,取R01=100,小数点定在十位上。当RX=100时,表头就会显示出500.0。当RX变化时,显示值相应变化,可以从0.

13、1测到499.9。又如对5k档,取R02=1k,小数点定在千位上。当RX变化时,显示值相应变化,可以从0.001k测到4.999k。数字万用表多量程电阻档电路见图2-10:图2-10多量程测电阻原理由上分析可知:R1=R01=100R2=R02-R01=1000-100=900R3=R03R02=9K图2-10中由正温度系数(PTC)热敏电阻R0与晶体管T组成了过压保护电路,以防误用电阻档去测高电压时损坏集成电路。当误测高电压时,晶体管T发射极将击穿从而限制了输入电压的升高。同时R1随着电流的增加而发热,其阻值迅速增大,从而限制了电流的增加,使T的击穿电流不超过允许范围。即T只是处于软击穿状态

14、,不会损坏,一旦解除误操作,R0和T都能恢复正常。 3、数字万用表硬件介绍与设计如图3-1所示,本万用表由以下几部分功能组成,复位电路、震荡电路、ADC输入、被测量显示、超限报警、ADC使能控制。复位电路用来清零,进行下一次的测量;震荡电路用来消除一些外来干扰,使电路工作更加稳定;ADC输入则是将输入量进行AD转换;测量显示就是显示测量的数值;超限报警部分则是用作当测量量超出量程范围时发出警报,以便提醒用户更改大量程;ADC使能控制则用来对输入量进行控制,允许输入或者不允许输入。图3-1 硬件系统设计总体框架图3.1 硬件系统部分芯片介绍3.1.1 AT89C51芯片简介 图3-2 AT89C

15、51 芯片引脚图(1)AT89C51主要特性8:1)与MCS-51 兼容2)4K字节可编程FLASH存储器3)寿命:1000写/擦循环4)数据保留时间:10年5)全静态工作:0Hz-24MHz6)三级程序存储器锁定7)128×8位内部RAM8)32可编程I/O线9)两个16位定时器/计数器10)5个中断源11)可编程串行通道12)低功耗的闲置和掉电模式13)片内振荡器和时钟电路(2)功能特性描述9:AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位

16、微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。(3)AT89C51 提供以下标准功能:4K 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级

17、中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。(4)VCC:供电电压。GND:接地。(5)AT89C51单片机的P口特点10:l P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0

18、口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。 l P1口: P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。l P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外

19、部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号11。 l P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 3.1.2 ADC0808芯片介绍ADC0808是CMOS型的8位逐次逼近式单片A/D转换器。ADC0808是带有8位A/D

20、转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。(1) 主要特性 分辨率为8位。 转换时间100us。 单一+5V供电电,模拟压输入在0+5 V之间。 功耗为15mW。(2) ADC0808的内部逻辑结构图3-3 ADC0808的内部逻辑结构上图3-3可知,ADC0808由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

21、(3) ADC0808 引脚结构图3-4 ADC0808引脚结构图地址输入和控制线:4条ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入。通道选择表如下表所示12。CBA选择的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7表3-5 地址输入线的通道选择数字量输出及控制线:11条 ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;

22、在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE1,输出转换得到的数据;OE0,输出数据线呈高阻状态。D7D0为数字量输出线。 CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ, VREF(),VREF()为参考电压输入。 (4) ADC0809应用说明: ADC0809内部带有输出锁存器,可以与AT89c51单片机直接相连。 初始化时,使ST和OE信号全为低电平。 送要转换的哪一通道的地

23、址到A,B,C端口上。 在ST端给出一个至少有100ns宽的正脉冲信号。 是否转换完毕,我们根据EOC信号来判断。 当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。3.1.3 7SEG-XP-4M-CC简述(1) 概述7SEG-XP-4M-CC共阴极8X8段LED数码管(8X8点阵)显示驱动电路是全定制专用集成电路。该电路由开机自清电路、振荡电路、位扫描驱动电路、8X8 bit移位寄存器电路、8X8 bit数据锁存器电路、段多路选择器驱动电路组成。它可与各种型号的微处理器串行口或并行口,专供驱动8位X8段共阴极LED数码管(8X8LED点阵)11。(2) 特点 工作电压:

24、+4V+6V。 位扫描驱动电流80mA(VDD=+5V)。 段扫描驱动电流10mA(VDD=+5V)。 可驱动高彩色LED管。 可通过N个TEC6122级联实行NX8位LED显示。 管脚间距2.54mm ,标准24pin窄塑封双列直插封装。(3) 位扫描共阴极LED显示原理位扫描信号接S1,S2,S8顺序依次出现,循环反复。S1显示第一位(个位),S2显示第二位(十位),依次地S8显示第八位(千万位)。要显示的段码A,B,DP是由S1S8依次分别选通送出,S1送A1,B1,DP1,显个位,其它位不显示。同样地S8送出A8,B8,DP8,显千万位,其它位不显示,这就是位扫描共阴极LED显示原理。

25、3.2 数字万用表硬件设计3.2.1 分模块详述系统各部分的实现方法一、电源部分由于高压交流电会对弱电系统产生干扰,影响系统的稳定性,而电池之类的电源又存在维护不方便和电压电流衰减等的缺点,所以本次设计采用外部稳压电源供电13。图3-8 电源电路图二、输入端图3-9万用表正表笔输入端电路被测量的输入端经过表笔流经保险丝,这样做是为了起到保护作用,防止过压过流而烧坏元器件。三、分流电阻图3-10 分流电阻电路如上图3-10,使用有一定规律的电阻组合构成精密的电阻分流器,能够实现分流大电流的目的。四、分压电阻图3-11 分压电阻电路如上图3-11,使用有一定规律的电阻组合构成精密的电阻分压器,能够

26、实现分流大电压的目的。五、基准电阻图3-12 基准电阻电路测量电阻与测量电流或者电压一样重要,俗称“三用表”,利用数字电压表做成的多量程电阻表,采用的是“比例法”测量,因此,它比起指针万用表的电阻测量来精确度更高,而且耗电很小,上图2-12中所配置的一组电阻就叫“基准电阻”,就是通过切换各个接点得到不同的基准电阻值,再由ADC0808的参考电压Vref与被测电阻上得到的电压V测进行“比例读数”。六、ADC部分图3-13 ADC0808转换电路15由图中可以看到,ADC0808的启动信号START由片选线P2.7与写信号WR的“或非”产生。这要求一条向ADC0808写操作指令来启动转换。ALE与

27、START相连,即按打入的通道地址接通模拟量并启动转换。输出允许信号OE由读信号RD与片选线P2.7“或非”产生,即一条ADC0808的读操作使数据输出。由于ADC0808的参考电压VREFVCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。七、报警部分图3-14 报警电路当检测到被测量超出预定的值,蜂鸣器发出“嘀”声。具体的实现过程是单片机P3.3脚输出高电平,使得Q2导通。使得LS1对地导通,蜂鸣器发出响声16。八、单片机最小系统图3-15 单片机最小系统电路单片机工作时,先以主震荡频率为基准发出CPU时序,对指令进行译码,然后发出各种控制信号,完成一系列定时控制的操作,用来

28、协调单片机内部各功能部件之间的数据传输,数据运算等操作。单片机最小系统由震荡电路,复位电路及一片单片机构成,是单片机正常工作的最基本组成。其最小系统如图3-15所示17。九、显示电路图3-16 显示电路采用SPI总线LED驱动器7SEG-XP-4M-CC驱动8位数码管,使得整个系统响应时间最快,显示精度更高。采用4合1数码管,减少PCB表面走线从而提高系统稳定18。、十、开关电路图3-17 开关电路 如上3-17图,类似于常用的万用表开关,可以根据需要手动转换测量量的量程,根据所需要测量的量选择合适的量程19。3.2.2 电路工作过程描述此工作当然是要求在正确的程序都写入了各个芯片中才能完成工

29、作,当开关要测量电压、电流或者电阻时,则根据不同的量程需要分别选择不同的量程开关,于是便得到最准确的测量数据。AT89C51的P0口做为ADC0809的数据总线,P2.4、P2.5、P2.6作为显示芯片的SPI总线输出。P1.0、P1.1、P1.2、P3.2作为ADC0808的控制线。ADC0808将测量的量转换成单片机能识别的量之后由所给程序控制输出,再送到显示芯片显示。显示芯片根据显示程序显示内容。本设计的原来要求是4位数码显示,但考虑到芯片7SEG-XP-4M-CC是驱动8位数码显示的,所以数码管TYP2不接上也是满足设计要求的,接上去只是满足芯片的8位驱动20。 4 系统软件与流程图4

30、.1 电路功能模块由总体设计框图4-1,本万用表由以下几部分功能模块组成,复位电路、震荡电路、ADC输入、ADC使能控制、被测量显示、超限报警、等电路组成。程序中的子程序 功能模块主要分成3个,延时、ADC转换和显示,延时子程序在整个程序中多次被调用,ADC转换则是每次测量都会需要用到的,当进行测量时,ADC0808将被测量转换为2进制数发给单片机然后单片机根据软件协议送显示,显示子程序则包括一个8位字节的发送程序和一个TEC6122的驱动程序。图4-1 功能模块设计框图4.2系统总流程图 图4-2系统总流程图 图4-3电压测量流程图4.3 电压测量流程图电压测量流程图如上图4-34.4 电流

31、、电阻测量流程图电流的测量流程图如下图4-4;电阻的测量流程图如下图4-5。图4-4电流测量流程图 图4-5电阻测量流程图4.5软件程序:org0000h;单片机复位地址ajmp main;转移到主程序处org0100h;main被定位在0x0100处main: mov sp,#80h ;初始化堆栈指针jnbP1.0,crjnbP1.1,cvjnbP1.2,cacr:movR7,#00hlcall adcLCALL RDATlcallDISPLAY sjmp mainCV:MOVR7,#01HLCALLADCLCALL VDATLCALLDISPLAYSJMPMAINCA:MOVR7,#02H

32、LCALLADCLCALLADATLCALLDISPLAY SJMPMAINADC: MOV A,R7 ;0808 A/D转换子程序MOV DPTR,#7FFFHMOVX DPTR,AJB P3.3,$MOVX A,DPTR ;输入转换结果RET vdat:movR2,#00hmovR3,AmovR6,#01hmovR7,#0F4hcallMULD2;乘以500clrCmovA,r5addA,#60h;加96修正movr5,AmovA,r4addcA,#00hmovr4,AmovA,r3addcA,#00hmovr3,AmovA,r2addcA,#00hmovr2,Amovr0,#30hmov

33、r1,#34hmovA,R2movr1,Aincr1movA,R3movr1,Aincr1movA,R4movr1,Aincr1movA,R5movr1,Aincr1movr1,#00hincr1movr1,#00hincr1movr1,#00hincr1movr1,#0FFhcallDIVD4;除以255movr1,#38hmovr1,#00hincr1movr1,#00hincr1movr1,#00hincr1movr1,#0AhcallDIVD4mov43h,33hcallDIVD4mov42h,33hcallDIVD4mov41h,33hmovr0,#40hmovr0,#00hincr

34、0movA,41hmovDPTR,#SEGMENT7movcA,A+DPTRorlA,#80hmovr0,Aincr0movA,42hmovDPTR,#SEGMENT7movcA,A+DPTRmovr0,Aincr0movA,43hmovDPTR,#SEGMENT7movcA,A+DPTRmovr0,AretADAT:movB,AmovA,#0B6hclrC;以下根据范围设置数值以防溢出subbA,BjcLARGERAmovA,BsubbA,#16hjcLESSAajmpMIDDLEALARGERA:movA,#0B6hajmpCALCULATEALESSA:movA,#16hajmpCALC

35、ULATEAMIDDLEA:movA,BCALCULATEA:movr2,#0C3hmovr3,#50hmovr6,#00hmovr7,AcallMULD2;乘以50000clrCmovA,r5subbA,#70h;以下减去movr5,Amov37h,AmovA,r4subbA,#8Ehmovr4,Amov36h,AmovA,r3subbA,#01hmovr3,Amov35h,AmovA,r2subbA,#00hmovr2,Amov34h,Amovr0,#30hmovr1,#38hmovr1,#00hincr1movr1,#01hincr1movr1,#5Ehincr1movr1,#0A0hc

36、allDIVD4;除以89760movr1,#38hmovr1,#00hincr1movr1,#00hincr1movr1,#00hincr1movr1,#0AhmovDPTR,#SEGMENT7callDIVD4movA,33hmovcA,A+DPTRmov43h,AcallDIVD4movA,33hmovcA,A+DPTRmov42h,AcallDIVD4movA,33hmovcA,A+DPTRcjneA,#3Fh,NOTEQUmovA,#00hNOTEQU:mov41h,Amov40h,#00hRETrdat:movR2,#00hmovR3,AmovR6,#03hmovR7,#0E8hc

37、allMULD2;乘以1000movr0,#30hmovr1,#34hmovA,R2movr1,Aincr1movA,R3movr1,Aincr1movA,R4movr1,Aincr1movA,R5movr1,Aincr1movr1,#00hincr1movr1,#00hincr1movr1,#00hincr1movr1,#0FFhcallDIVD4;除以255movr1,#38hmovr1,#00hincr1movr1,#00hincr1movr1,#00hincr1movr1,#0AhmovDPTR,#SEGMENT7callDIVD4;连续进行4次除以10的操作movA,33h;取得10

38、进制值movcA,A+DPTRmov43h,AcallDIVD4movA,33hmovcA,A+DPTRmov42h,AcallDIVD4movA,33hmovcA,A+DPTRmov41h,AcallDIVD4movA,33hmovcA,A+DPTRcjneA,#3Fh,NONZEROmovA,#00hNONZERO:mov40h,AretDELAY_5ms:movR5,#01h;设置R5初始计数值DELAY_5ms1:movR6,#16h;设置R6初始计数值DELAY_5ms2:movR7,#70h;设置R7初始计数值DELAY_5ms3:djnzR7,DELAY_5ms3;延时时间为 T

39、ime=( ( (R7*2)+2+1 )*R6+2+1 )*R5+1djnzR6,DELAY_5ms2;djnzR5,DELAY_5ms1;retSEGMENT7:DB3Fh;7段数码管字符0的abcdefg的值,a在最低位,最高位始终保留为0DB06hDB5BhDB4FhDB66hDB6DhDB7DhDB07hDB7FhDB6FhDISPLAY:movDPTR,#0fEffh;写第一位数码管movr1,#40hmovA,r1movxDPTR,AsetbCmovP1.4,CclrCmovP1.4,CcallDELAY_5mssetbCmovP1.4,Cincr1movA,r1;写第二位数码管m

40、ovxDPTR,AsetbCmovP1.5,CclrCmovP1.5,CcallDELAY_5mssetbCmovP1.5,Cincr1movA,r1;写第三位数码管movxDPTR,AsetbCmovP1.6,CclrCmovP1.6,CcallDELAY_5mssetbCmovP1.6,Cincr1movA,r1;写第四位数码管movxDPTR,AsetbCmovP1.7,CclrCmovP1.7,CcallDELAY_5mssetbCmovP1.7,Cret;双字节二进制无符号数乘法;被乘数在R2(高位)、R3(低位)中,乘数在R6(高位)、R7(低位)中。;乘积在R2(高位)、R3、R

41、4、R5(低位)中。;用到累加器A,B,PSW,R2R7。;永远不会产生进位。;在出口时总是清除C。;若结果超出2个字节范围则OV=1。MULD2: MOV A,R3MOV B,R7MUL ABMOV R4,BMOV R5,AMOV A,R3MOV B,R6MUL ABADD A,R4MOV R4,ACLR AADDC A,BMOV R3,AMOV A,R2MOV B,R7MUL ABADD A,R4MOV R4,AMOV A,R3ADDCA,BMOV R3,ACLR ARLC AXCH A,R2MOVB,R6MULABADD A,R3MOV R3,AMOV A,R2ADDCA,BMOV R2

42、,AORLA,R3JZMULD21SETBOVRETMULD21:CLROVRET;四字节无符号数除法;R0存放被除数,除数,商数的地址。;从R0开始的连续四个字节为结果的余数,入口时可以为任意,但在出口时发生变化。;其后的连续4个字节在入口时是被除数,出口时是商数。;再其后的连续四个字节在入口时是除数,出口时保持不变。;用到累加器A,B,PSW,R0R7。;如果除数为零,则置OV=1标志,否则清零。;在出口时总是清除C。DIVD4:MOVA,R0MOVB,AADDA,#08hMOVR1,AMOVA,#00hORLA,R1INCR1ORLA,R1INCR1ORLA,R1INCR1ORLA,R1

43、JZDIVD45MOVR1,BMOVR2,#04hDIVD41:MOVR1,#00hINCR1DJNZR2,DIVD41MOVR3,#20hDIVD42:MOVR2,#08hMOVA,BMOVR0,AADDA,#07hMOVR1,ACLRCDIVD43:MOVA,R1RLCAMOVR1,ADECR1DJNZR2,DIVD43MOVA,R0ADDA,#03hMOVR1,AMOVA,R0ADDA,#0BhMOVR0,AMOVA,R1SUBBA,R0MOVR4,ADECR1DECR0MOVA,R1SUBBA,R0MOVR5,ADECR1DECR0MOVA,R1SUBBA,R0MOVR6,ADECR1

44、DECR0MOVA,R1SUBBA,R0MOVR7,AJCDIVD44MOVA,BMOVR0,AADDA,#03hMOVR1,AMOVA,R4MOVR1,ADECR1MOVA,R5MOVR1,ADECR1MOVA,R6MOVR1,ADECR1MOVA,R7MOVR1,AMOVA,R0ADDA,#07hMOVR1,AINCR1DIVD44:DJNZR3,DIVD42MOVR0,BCLROVCLRCRETDIVD45:SETBOVCLRCRETend5.仿真结果:5.1整体仿真Protues图:图5-1总体Protues仿真图5.2待测电压仿真结果图:图5-2 待测电压仿真结果图5.3待测电流仿真结果图:图5-3 待测电流仿真结果图5.4待测电阻仿真结果图5-4待测电阻仿真结果图6、结 论数字式万用表内部采用了多种振荡,放大,分频,保护等电路。所以功能较多,比如可以测量温度,频率(在一个较低的范围),电容,电感.或做信号发生器等等。由于内部结构多用集成电路,所以过载能力较差.(不过现在有些已能自动换档,自动保护等,但使用较复杂)损坏后一般也不易修复。数字式万用表输出电压较低(通常不超过1伏).对于一些电压特性特殊的元件的测试不便(如:可控硅,发光二极管等),由于数字万用表的测量范围很大,广泛应用于工业领域。本次设计

温馨提示

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

评论

0/150

提交评论