数字电压表

更新时间:2024-04-22 03:22:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

东北石油大学秦皇岛分院毕业设计

数字电流表的设计与仿真

学生姓名 院系名称 专业名称 班 级 学 号 指导教师 完成时间

隋维旭 电气信息工程 供用电技术 2013级2班

15 李红霞 2014年12月11日

简易数字电压表设计

The Design of Simple Digital Voltmeter

学生姓名:隋维旭 Student: Sui weixu 指导教师:李红霞 讲师 Advisor: Li hongxia

东北石油大学 电气信息工程系

School of Physics & Electronic Engineering

Qinhuangdao University Qinhuangdao, Hebei, China

2014年12月

December 2014

摘 要

在现代检测技术中,常用高精度数字电压表进行检测,将检测到的数据送入微型计算机系统,完成计算、存储、控制等功能。本文中数字电压表的控制系统采用AT89C51单片机,A/D转换器采用ADC0809为主要硬件,实现数字电压表的硬件电路与软件设计。该系统的数字电压表电路简单,所用的元件较少,成本低,调节工作可实现自动化/还可以方便地进行8路A/D转换的测量,远程测量结果传送等功能。数字电压表可以测量0~5V的8路输入电压值,并在四位LED数码管上轮流显示或单路显示。设计结果能实现相应的功能。

关键词

单片机;数字电压表;A/D转换器;模拟信号

东北石油大学设计(论文)

Abstract

In modern measuring technology, it is often required to conduct site measuring with a digital voltmeter. The data measured will then be input into the micro-computer system to execute such functions like calculating, storing, controlling, and displaying. The digital voltmeter control system described in this paper makes use of AT89C51 SC computer and ADC0809 A/D converter to fulfill the designing of the software as well as the electrical circuit. The voltmeter features in simple electrical circuit, lower use of elements, low cost and automatic regulation, while it can also easily carry out the duties of measuring A/D converted values from 8 routes and remote transfer of measuring data. The meter is capable of measuring voltage inputs from 8 routes ranging from 0 to 5 volt, and displaying the measurements in turn or only that from a selected route. Design to achieve the corresponding functions.

Key words

SC computer;Digital Voltmeter; A/D conversion; Analogue Signal

东北石油大学设计(论文)

目 录

1. 引言 ................................................................................................................................ 1 1.1 设计背景 ........................................................................................................................ 1 1.2 设计意义 ........................................................................................................................ 2 1.3 课题完成的功能 ............................................................................................................ 2 2. 总体设计 ........................................................................................................................ 2 2.1 设计方案思路 .............................................................................................................. 2 2.2 总体设计框图 ................................................................................................................ 3 3. 硬件设计 ........................................................................................................................ 4

3.2 采集模块设计 ........................................................................................................ 6 3.2.1 ADC0809A/D功能描述 ..................................................................................... 6 3.2.2 ADC0809A/D转换芯片的原理 ......................................................................... 7 3.2.3

ADC0809数据采集 ......................................................................................... 8

3.3 显示模块设计 ........................................................................................................ 8 4. 软件设计 ........................................................................................................................ 9

4.1 总体方案 ................................................................................................................ 9 4.2 模/数转换测量子程序 ........................................................................................ 10 5. 制作与调试 .................................................................................................................. 11

5.1 硬件电路的布线与焊接 ...................................................................................... 11 5.2 调试 ...................................................................................................................... 11 5.2.1 硬件调试 ............................................................................................................. 11 5.2.2 软件调试 ............................................................................................................. 11 6. 结论和心得 .................................................................................................................. 12 参考文献 ............................................................................................................................. 13 谢 辞 ................................................................................................. 错误!未定义书签。 附件 ..................................................................................................................................... 14

东北石油大学设计(论文)

1. 引言

随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。同时随着微电子技术的迅速发展和超大规模集成电路的出现,特别是单片机的出现,正在引起测量控制仪表领域的新的技术革命 [1]。

由于使用的是高效单片机作为核心的测量系统,以及灵敏度和精度较高的A/D转换器,使本直流电压表具有精度高、灵敏度强、性能可靠、电路简单、成本低的特点,加上经过优化的程序,使其有很高的智能化水平[2]。

数字电压表相对于指针表而言读数直观准确,电压表的数字化是将连续的模拟量转换成不连续的离散的数字形式并加以显示。这有别于传统的以指针与刻度盘进行读数的方法,避免了读数的视差和视觉疲劳[3]。

1.1 设计背景

数字电压表在1952年由美国NLS公司首次创造,它刚开始是4位,50多年来,数字电压表有了不断的进步和提高。数字电压表是从电位差计的自动化过程中研制成功的。开始是4位数码显示,然后是5位、6位显示,而现在发展到7位、8位数码显示;从最初的一两种类型发展到原理不同的几十种类型;从最早的采用继电器、电子管发展到全晶体管、集成电路、微处理器化;从一台仪器只能测1-2种参数到能测几十种参数的多用型;显示器件也从辉光数码管发展到等离子体管、发光二极管、液晶显示器等。数字电压表的体积和功耗越来越小,重量不断变轻,价格也逐步下降,可靠性越来越高,量程范围也逐步扩大[4]。

DVM的高速发展,使它已成为实现测量自动化、提高工作效率不可缺少的仪表,数字化是当前计量仪器发展的主要方向之一,而高准度的DC-DVC的出现,又使DVM进入了精密标准测量领域。随着现代化技术的不断发展,数字电压表的功能和种类将越来越强,越来越多,其使用范围也会越来越广泛。采用智能化的数字仪器也将是必然的趋势,它们将不仅能提高测量准确度,而且能提高电测量技术的自动化程序,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表(如:温度计、

1

东北石油大学设计(论文)

湿度计、酸度计、重量、厚度仪等),几乎覆盖了电子电工测量、工业测量、自动化仪表等各个领域。从而提高计量检定人员的工作效率[5]。

1.2 设计意义

这个课题的目的和意义在于使自己掌握对数字电压表的理解,自己动手设计数字电压表与仿真,它可以广泛的应用于电压测量外,通过各种变换器还可以测量其他电量和非电量,测量是一种认识过程,就是用实验的方法将被测量和被选用的相同参量进行比较,从而确定它的大小。DVM广泛应用于测量领域每期测量的准确度和可信度取决于它的主要性能和技术指标。所示我们要学习和掌握如何设计DVM就显得十分重要[6]。

1.3 课题完成的功能

设计的基本内容是使基于单片机所设计出的数字电压表可以测量0-5V的8路输入电压值,并在四位LED数码管上轮流显示或单路显示。测量最小分辨率为0.019V,测量误差约为0.02V。系统除能确保实现要求的功能外,还可以方便地进行8路其他A/D转换量的测量、远程测量结果传送等功能。所要解决的主要问题是如何更有效地设计出符合设计要求的简易数字电压表,特别是要注意其测量电压的误差,难点是数码管需轮流显示或单路显示所测出的电压值,并且能使软硬件有效的结合起来[7]。

2. 总体设计

2.1 设计方案思路

方案一:A/D转换器采用ICL7071型三位半显示的芯片,输入信号,流经取样与电路取样后送到ICL7071型三位半A/D转换器,只需要很少的简单的外围元件,就可组成数字电流表模块,直接驱动三位半LED显示器显示,最后输入电流在现实部分显示。这块是用LED数字表,最大的确定就是数字乱跳不稳定。实用数字电路实现,

2

东北石油大学设计(论文)

采用译码芯片CD4543作为接口芯片,这种方案实现功能但是稳定性不高 结构复杂。 方案二: 用ADC0809转换芯片,其中A/D转换器用于实现模拟量数字量的转换,单电源供电。它是具有8路模拟量输入,8位数字量输出功能的A/D转换器,转换时间为100vs,模拟输入电压范围为0V~5V,不需零点和满刻度校准,功耗低,约15mW。转换速度快而且精度高 价格低廉 所以选择用ADC0809。采用AT89S51单片机作为系统的控制单元,通过A/D转换将被测值转换为数字量送入单片机中 再有单片机来送显,此方案各类功能易于实现,成本低 功耗低 显示稳定[8]。

经过以上两种方案的特点比较,方案二中的电路设计采用比较常见的元器件,对这种方案有一定的专业基础,故采用第二种方案。

2.2 总体设计框图

总体设计框图如图2-1所示,通过模数转换器ADC0809采集模拟数据并转换为数字信号,在51单片机的控制与74LS74及三极管的驱动下,将采集的数据显示在LED数码管上[8]。两个开关用作选择测量电压的路数,一个控制单路显示,另一个控制循环显示,能够同时测量8路电压值。

显示模块 接 口 模 块 A电压 采集 模块 /D转

图2-1 简易数字电压表总体设计框图

3

东北石油大学设计(论文)

3. 硬件设计

3.1 单片机AT89C51介绍

AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案[9]。

AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本[10]。 3.1.1.主要特性

AT89C51能与MCS-51 兼容 ,4K字节的可编程闪烁存储器,寿命为1000写/擦循环,数据能保留10年,全静态工作为0Hz-24Hz。三级程序存储器锁定,128*8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路[11]。 3.1.2.管脚说明

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口作为第八位地址接收。

4

东北石油大学设计(论文)

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出[12] 。 VCC:供电电压。 GND:接地。

5

东北石油大学设计(论文)

3-1 AT89C51引脚图

3.1.3.振荡器特性

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度[10]。 3.1.4.芯片擦除

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,

保存RAM的内容并冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止 [10]。

3.2 采集模块设计

3.2.1 ADC0809A/D功能描述

ADC0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。下面3-2是ADC0809管脚图介绍,其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8个单断模拟输入信号中的一个进行A/D转换。

图3-2 ADC0809管脚图

6

东北石油大学设计(论文)

A/D转换器是连接模拟世界与数字世界的桥梁,它担负着将模拟信号变换成适合数字处理的二进制代码的任务。目前,8位A/D转换器的转换速度已经达到1.5GHz;并且,有些A/D转换器还可以工作在欠采样状态。对于高速A/D转换器动态性能的测试,目前常用的方法主要是相干采样测试法和加窗测试法 [12]。 3.2.2 ADC0809A/D转换芯片的原理

ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。

由图3-3可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据[11]。。

图3-3 ADC0809的内部逻辑结构

7

东北石油大学设计(论文)

3.2.3 ADC0809数据采集

ADC0809采集电压时,首先单片机执行一条传送指令,在指令执行过程中,单片机在控制总线的同时产生CS1、WR1低电平信号,启动A/D转换器工作,ADC0809经100us后将输入模拟信号转换为数字信号存于输出锁存器,并在INTR端产生低电平表示转换结束,并通知单片机可来取数。当单片机通过总线查询到INTR为低电平时,立即执行输入指令,以产生CS、RD2低电平信号到ADC0809相应引脚,将数据取出并存入存储器中。整个数据采集过程中,由单片机有序地执行若干指令完成[11]

将8位A/D转换芯片ADC0809与单片机进行如此连接,其目的有二:一是为了利用单片机的信息处理能力,在总线上或由总线经过功能芯片,设置满足ADC0809芯片启动过程的时序信号,将启动A/D转换置于单片机的控制之下,这时ADC0809芯片的地址锁存器可以视为I/O接口中的只写寄存器;二是将A/D转换结果数据读入CPU,这时ADC0809芯片中的输出数据寄存器可以作为普通I/O接口中的只读寄存器对待。

3.3 显示模块设计

用单片机驱动LED数码管有很多方法,按显示方式分,有静态显示和动态显示。此次设计用的是动态扫描显示,显示电路如图3-4。

动态扫描方法是用其接口电路把所有显示器的8个笔画段a-h同名端连在一起,而每一个显示器的公共极COM各自独立的受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM段,而这一段是由I/O控制的,由单片机决定何时显示哪一位了[12]

动态扫描用分时的方法轮流控制各个显示器的COM端,使各个显示器轮流点亮。在轮流点亮扫描过程中,每位显示器的点亮时间极为短暂,但由于人的视觉暂留现象及发光二极管的余晖效应,看上去就是一组稳定的显示数据。

8

东北石油大学设计(论文)

图3-4 显示电路

数据在传送过程中,对输出端来说是透明的,这样,数据在传送过程中,数码管上有闪动现象,驱动的位数越多,闪动现象越明显。为了消除这种现象,在显示模块中加了四个三极管作为位驱动,在数据传送过程中,关闭三极管使数码管没电不显示,数据传送完后立刻使三极管导通,这样就可以实现锁存功能。

LED动态显示都是一位一位显示的,比如第一个数码管是显示通道的,当单片机输出显示通道信号时,只导通第一个三极管,这样第一个数码管就显示出通道,其他三个暂时不显示。当单片机输出电压整数信号时,此时再导通第二个三极管,这样就能在第二个数码管上显示电压的整数,以此类推,就可以把所测的电压精确值显示在数码管上,虽然这些数码管是一位一位显示,但因为人眼的惰性,给人的感觉就是4位数码管同时点亮的,在任意的时刻只有一个数码管在亮,只是人的眼睛无法分辨。

4. 软件设计

4.1 总体方案

电路主流程如4-1所示,设计,包括主程序,显示控制程序,显示数据转为三位BCD码子程序,显示子程序,延时程序,电压测量子程序,按键检测子程序等子程序。

9

东北石油大学设计(论文)

开始 初始化 调用A/D转换程序 调用数据处理程序 调用显示程序 图4-1 主程流程图

4.2 模/数转换测量子程序

图4-2 A/D转换测量程序流程图

模/数转换子程序用来控制对0809八路模拟输入电压的A/D转换,并将对应的数值移入70H---77H内存单元。

10

东北石油大学设计(论文)

5. 制作与调试

5.1 硬件电路的布线与焊接

设计布线图时走线尽量少拐弯,力求线条简单明了。布线条宽窄和线条间距要适中,电容器两焊盘间距应尽可能与电容引线脚的间距相符。通过protel99软件绘制出原理图,将打印出来的原理图在铜板上转印好并用盐酸溶液和双氧水溶液腐蚀,这样就得到了一块电路板。把上面的元器件焊接在板上便完成了硬件的安装。

在焊接时元器件的放置上尽量要贴近电路板,要注意烙铁头与被焊件的接触方式,(1)接触位置:烙铁头应同时接触要相互连接的2个被焊件(如焊脚与焊盘),烙铁一般倾斜45度,应避免只与其中一个被焊件接触。当两个被焊件热容量悬殊时,应适当调整烙铁倾斜角度,烙铁与焊接面的倾斜角越小,使热容量较大的被焊件与烙铁的接触面积增大,热传导能力加强。 (2)接触压力:烙铁头与被焊件接触时应略施压力,热传导强弱与施加压力大小成正比,但以对被焊件表面不造成损伤为原则。在焊接前还要注意观察各个焊点(铜皮)是否光洁、氧化等。在焊接物品时,要看准焊接点,以免线路焊接不良引起的短路。

5.2 调试

5.2.1 硬件调试

硬件电路的调试主要是对硬件电路进行检查,使用万用表、示波器等常规工具检查电路制作是否正确,并核对元器件规格、型号,检查芯片间连线是否正确,是否有短路、虚焊、极性接错等故障,尤其应该注意芯片放置方向是否有误,各个芯片的接地线与电源线的连接是否有误。除此之外,硬件电路运行是否正常,还可通过测定一些重要的波形来确定。 5.2.2 软件调试

单片机系统的软件采用 C51 来编写,节省了时间。所有代码在 Keil7.06 下编译调试,软件调试比较复杂。先用软仿真排除语法差错和逻辑差错,然后通过 JTAG 下载到单片机来调试。可采取自下到上的调试方法,即单独调试好每一个模块,然后再连接成一个完整的系统调试。调试中主要精力放在防真和程序优化。

11

东北石油大学设计(论文)

在一开始调试时,数码管的显示较不稳定,感觉较闪烁,数据变化不连贯,好像在跳变。经过反复思考发现,一开始程序是使用静态显示方法。查了很多资料发现,一般数码管显示采用动态扫描的方法,于是将程序的显示部分改成动态扫描程序,经再次调试可以显示比较稳定的数字串了。

6. 结论和心得

毕业设计培养了严肃认真和实事求是的科学态度。而且培养了吃苦耐劳的精神以及相对应的工程意识,同学之间的友谊互助也充分的在毕业设计当中体现出来了,不论是在之前的 查找资料,身旁的同学都给予了不少的帮助与支持。

在毕业设计过程中,巩固了在大学3年内学过的知识,尤其是单片机和模拟电子方面的知识,同时通过这次毕设提高了单片机编程的能力,尤其是获得的软件调试经验,同时加强了我的实际编程能力,同时也让自己更加的知道了自己知识领域里的不足和缺陷。

由于时间太仓促,经验不足,理论方面也相应的存在不足,加上条件有限,仍存在着一些设计方面的问题,个人技能也有待提高,理论知识还要巩固加强。

12

东北石油大学设计(论文)

参考文献

[1] 徐爱钧.智能化测量控制仪表原理与设计[M].北京:北京航空航天大学出版社,

2004,56-123.

[2] 天津市计算机学会单片机分会,2003年全国单片机及嵌如入式系统学术年会论文

集(下册)[C]. 北京:北京航空航天大学出版社,2003,790-794. [3] 李光飞,楼然苗.单片机课程设计实例指导[M] .北京:北京航空航天大学出版

社,2004,1-12.

[4] 余永权.ATMEL89系列单片机应用技术[M].北京:北京航空航天大学出版社,

2002,103-110.

[5] 杨文龙.单片机原理及应用[M].西安:西安电子科技大学出版社,1998,62-80. [6] 黄继昌.电子元器件应用手册[M].北京:人民邮电出版社,2004,165-204. [7] 刘文涛.单片机应用开发实例[M].北京:清华大学出版社,2005,16-31. [8] 孙涵芳,徐爱卿.MCS-51系列单片机原理及应用[M].北京:北京航空航天大学

出版社,1998,54-69.

[9] 范立南,李雪飞,尹授远.单片微型计算机控制系统设计[M].北京:人民邮电

出版社,2004,213-241.

[10] 李刚,林凌.与8051兼容的高性能、高速单片机[M].北京:北京航空航天大学

出版,2002.

[11] 周航慈,周立功.PHILIPS51PC系列单片机原理及应用设计[M].北京:北京航

空航天大学出版社,2002,97-198.

[12] 阎石.数字电子技术基础[M].北京:高等教育出版社,1998,475-490. [13] J. Frank. Instrumentation for Process Measurement and Control[M]. BEIJING:

Science Publishing House.2000, 60-79.

[14] He Jian-jun, Yu Shou-yi. Temperature Intelligent Control System of Large-Scale

Standing Quench Furnace[J].Journal of Electronic Science and Technology of China, 2005,(1),72-88.

13

东北石油大学设计(论文)

附件1

附 件

实物图

14

东北石油大学设计(论文)

附件2 系统原理图

15

东北石油大学设计(论文)

附件3 系统PCB图

16

东北石油大学设计(论文)

附件4 元器件清单表

器件类别 元件序号 型号参数 数量 参考封装形式 价 单片机 晶振 四联体数码管 开关 普通电容 电解电容 普通电阻 可变电阻 三极管 A/D转换器 分频器

89C51 6MHz 共阳 拨动开关 30pF 10uF 200Ω 10K 4.7K 10K PNP ADC0809 74HC74 1 1 1 2 2 1 8 2 4 1 4 1 1

17

东北石油大学设计(论文)

附件5 简易数字电压表的源程序

#include #include #include

number[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; number1[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; sbit four=P2^0; sbit three=P2^1; sbit two=P2^2; sbit one=P2^3; sbit ST=P3^0; sbit OE=P3^1; sbit EOC=P3^2;

unsigned int adcdata, adcdata3; unsigned int i; unsigned int adc0[8]; unsigned int k; unsigned int avedata(); void show(); void delay_2ms(); void main() {

P2=0xff; P3=0xff; OE=0; ST=0; ST=1; while(1) {

18

东北石油大学设计(论文)

ST=0; while(!EOC); OE=1;

adcdata=avedata(); show(); ST=1; } }

//---------------------------------- void show() {

unsigned int adcdata1; adcdata1=adcdata*19; four=0;

P1=number1[adcdata1/1000]; adcdata1%=1000; delay_2ms(); four=1; three=0;

P1=number[adcdata1/100]; adcdata1%=100; delay_2ms(); three=1; two=0;

P1=number[adcdata1/10]; delay_2ms(); two=1; one=0 ;

P1=number[adcdata1];

19

东北石油大学设计(论文)

delay_2ms(); one=1; }

//------------------------------------------ void delay_2ms() { unsigned int i; for(i=0;i<111;i++); }

//------------------------------------------

unsigned int avedata() //求平均 {

unsigned int i,j,max,min,sum=0,a,b,c,d,e,f,g,h; for(i=0;i<8;i++) { k=P0;

a=(k&0x01)*128; b=(k&0x02)*32; c=(k&0x04)*8; d=(k&0x08)*2; e=(k&0x10)/2; f=(k&0x20)/8; g=(k&0x40)/32; h=(k&0x80)/128;

adc0[i]=a+b+c+d+e+f+g+h;

//adc0[i]=(k&0x01)*128+(k&0x02)*32+(k&0x04)*8+(k&0x08)*2+(k&0x10)/2+(k&0x20

)/8+(k&0x40)/32+(k&0x80)/128; //{ adc0[i]=P0; delay_2ms(); } ? //放数据 }

for(i=0;i<7;i++) {

20

东北石油大学设计(论文)

if(adc0[i+1]>adc0[i]) max=adc0[i+1]; else max=adc0[i]; }

for(j=0;j<7;j++) {

if(adc0[j+1]>adc0[j]) min=adc0[j]; else min=adc0[j+1]; }

for(i=0;i<8;i++) sum=sum+adc0[i]; adcdata3=(sum-max-min)/6; return(adcdata3) ; }

21

东北石油大学设计(论文)

if(adc0[i+1]>adc0[i]) max=adc0[i+1]; else max=adc0[i]; }

for(j=0;j<7;j++) {

if(adc0[j+1]>adc0[j]) min=adc0[j]; else min=adc0[j+1]; }

for(i=0;i<8;i++) sum=sum+adc0[i]; adcdata3=(sum-max-min)/6; return(adcdata3) ; }

21

本文来源:https://www.bwwdw.com/article/c6op.html

Top