基于单片机的数字电压表设计
课程设计
题目: 基于单片机的数字电压表设计
专 业: 电气工程及其自动化 班 级: 学 号: 学生姓名: 指导教师: 2010
年9月8日
摘
1
要
数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。本章重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原理。
关键词:数字电压表 A/D 转换器 PC 电压测量
Abstract
Digital voltage meter (Digital Voltmeter) referred to as DVM, it is the use of
2
digital measuring technology, the continuous analog (DC input voltage) into a non-continuous, discrete digital form and to display the instrument.Analog voltage meter features a traditional single, low accuracy, can not meet the digital age, using the single chip digital voltage meter, from the high precision, anti-interference ability, scalability, Ji Cheng convenience, and PC can communicate in real time.At present, by a variety of single A / D converter consisting of digital voltage meter, has been widely used in electronic and electrical measurement, industrial automation, instrumentation, automated test systems, intelligent measurement, showing strong vitality.At the same time, the DVM extension to the various general and specific digital instruments, but also the power and non-power measurement up to a new level.This chapter focuses on single-chip A / D converter, and they form by the microcontroller-based digital voltmeter works.
Keywords: digital voltmeter A / D converter voltage measurement PC
目 录
1 设计方案 ........................................................ 6 1.1 A/D转换部分 ................................................... 6 1.2 电源部分 ..................................................... 7 2 系统硬件电路设计 ................................................ 8 2.1 单片机芯片 .................................................... 8 2.2 89C51与外围电路的接口 ...................................... 10 3 详细设计 ....................................................... 14 3.1复位电路 ..................................................... 14 3.2电源电路 ..................................................... 16 3.3
程
序
框
图.......................................................17 3.4
源
3
程
序.........................................................19 4 总结 ........................................................... 28 参考文献 ......................................................... 29
1 设计方案
在电量的测量中,电压、电流和频率是最基
4
本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。本设计从各个角度分析了由单片机组成的数字电压表的设计过程及各部分电路的组成及其原理,并且分析了程序如何驱动单片机进而使系统运行起来的原理及方法。本设计主要分为两部分:硬件电路及软件程序。而硬件电路又大体可分为A/D转换电路、LED显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用汇编语言编程,利用WAVE和PROTEUS 软件对其编译和仿真,详细的设计算法将会在程序设计部分详细介绍。
1.1 A/D转换部分:
电压是模拟量,而数码管显示需要的是数字量,故需要采用A/D转换模拟信号为数字信号供
5
数码管显示出来,可供选择的芯片有ADC0809,ADC574和TLC2543等等。
由于要求测量精度在5%,因此须选用12位精度的A/D转换器,且可直接驱动LED显示器工作,0809为8位精度,故不能采用,而综合性价比,TLC2543就成为了本次设计的首选。由于TLC2543测量范围为0-+5V,故需要为其设计降压稳压电路。
被测量模拟量变为数字量之后,并不能通过数码管直接显示出来,而需要单片机加以处理形成段码才能显示出来。而且,A/D电路的时钟与输入输出都需要单片机与其对接予以控制。故选择含有内部闪存的89C51完成此工作。该芯片无论从性能还是价格上都是非常合适的。数字信号转换为段码并显示出来需要有程序和其它接口电路配合。在程序上,A/D采集程序采用多次取值并求和求平均的方法得出双字节数据,然后通过双字节转换BCD码子程序得出BCD码。硬件显示上选用动态扫描法,即数码管位选端连入单片机的某一组I/O口,片选端连入另一组I/O口,配合显示子程序实现显示。此外,主程序和其它程序用中断方式进行组合。显示所需的数码管,
6
选用7段共阳极数码管,由于精度要求为5%,故本设计显示部分由四个数码管组成。
由于单片机各个I/O口的驱动能力有限,故应设计驱动电路。本设计中的驱动电路主要与显示部分有关。数码管的片选端需要连接上拉电阻和三机管以增强驱动能力,位选端也选择连接上拉电阻以增强驱动能力。
1.2 电源部分:
本设计各芯片,数码管及单片机外围电路需要5V的直流电源,故需要一个稳定的5V直流稳压源。根据模拟电子技术基础的知识,本设计选择含有7805三端集成稳压器的电源电路。电路中选择二极管整流桥整流,电容进行滤波,并选用220V-9V变压器进行变压。
综上,本次设计选用89C51单片机作为核心,TLC2543作为A/D转换芯片,数码管作为显示器,7805稳压器为主的直流稳压电路做为电源,配合采集,转换,显示程序共同实现可测量0-10V直流电压的数字式电压表。 系统总设计框图见图1
7
数据采集端TLC2543 A/D转换芯片 单片机数码管直流稳压电源
图1-1 系统框图
2 系统硬件电路设计
2.1 单片机芯片
2.1.1 单片机芯片选择
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性
8
能CMOS8位微处理器,俗称单片机。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
1.主要特性:
与MCS-51 兼容 ,4K字节可编程闪烁存储器,寿命:1000写/擦循环, 数据保留时间:10年,全静态工作:0Hz-24Hz ,三级程序存储器锁定,128*8位内部RAM ,32可编程I/O线, 两个16位定时器/计数器, 5个中断源 ,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路 。
2.管脚说明: VCC:供电电压。 GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码
9
输入口,当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门电流。当
10
P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下所示:
口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入)
P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,
11
此频率为振荡器频率的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)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。 3.振荡器特性:
12
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 4.芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 5.结构特点:
8位CPU;片内振荡器和时钟电路;32根I/O线;外部存贮器寻址范围ROM、RAM64K;2个16位的定时器/计数器;5个中断源,两个中断优先级;全双工串行口;布尔处理器。
13
2.2本设计中89C51与外围电路的接口
本系统采用P0与P2口与显示器连接,P1口与A/D的数据及控制端连接。/EA/VP端接5V电源,X1,X2接晶振电路,RESET端接复位电路,其余INT1,INT0,T1,T0,/RD,/WR,RXD,TXD,ALE,PSEN端置空。由于P0口的驱动能力较弱,故每个引脚接4.7K的上拉电阻,以增强驱动显示器的能力
图2-1 89C51单片机引脚图
TLC2543A/D转换
1.TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近级数完成A/D转换过程。由于是串行输入结构,能够节省51系列
14
单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。
2.TLC2543的特点
12位分辩率A/D转换器在工作温度范围内10μs转换时间;11个模拟输入通道;3路内置自测试方式;采样率为66kbps;线性误差±1LSBmax;有转换结束输出EOC;具有单、双极性输出;可编程的MSB或LSB前导。
3.TLC2453接口时序
可以用四种方式使TLC2543实现全12位分辨率,每次转换和数据传递可以使用12或16个时钟周期。 一个片选()脉冲要插到每次转换的开始处,或是在转换时序的开始处变化一次后保持为低,直到时序结束。 开始时,片选 为高,I/O CLOCK、DATA INPUT被禁止,DATA OUT呈高阻状态,EOC为高。使 变低,I/O CLOCK、DATA INPUT使能,DATA OUT脱离高阻状态。12个时钟信号从I/O CLOCK端依次加入,随着时钟信号的加入,控制字从DATA INPUT一位一位地在时钟信号的上升沿时被送入TLC2543(高位先送入),同时上一周期转换的A/D数据。TLC2543收到第4个时钟信号后,通道号也已收到,因此,
15
此时TLC2543开始对选定通道的模拟量进行采样,并保持到第12个时钟的下降沿。在第12个时钟下降沿,EOC变低,开始对本次采样的模拟量进行A/D转换,转换时间约需10μs,转转完成EOC变高,转换的数据在输出数据寄存器中,待下一个工作周期输出。此后,可以进行新的工作周期。
5.TLC2543 A/D芯片与89C51单片机的接口
本设计中,TLC2543的AIN0引脚接测量降压电路,AIN1-AIN10置空,GND接地,VRF+接+5V电压,VRF—接地,/CS端接P1.4口,TDO端接P1.2口,TDI端接P1.3口,TCK端接P1.1口,EOC端接P1.0口。
16
图2-2 TLC2543 A/D转换芯片引脚图
数码管显示器
数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。数码管要正常显示,就要用驱动电路来驱动数码管的各个段
17
码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划
\"a,b,c,d,e,f,g,dp\"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将
18
需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
参数:8字高度:8字上沿与下沿的距离。比外型高度小。通常用英寸来表示。范围一般为0.25-20英寸。
长*宽*高:长——数码管正放时,水平方向的长度;宽——数码管正放时,垂直方向上的长度;高——数码管的厚度。
时钟点:四位数码管中,第二位8与第三位8字中间的二个点。一般用于显示时钟中的秒。 电流:静态时,推荐使用10-15mA;动态时,16/1动态扫描时,平均电流为4-5mA,峰值电流50-60mA。
电压:查引脚排布图,看一下每段的芯片数量是多少?当红色时,使用1.9V乘以每段的芯
19
片串联的个数;当绿色时,使用2.1V乘以每段的芯片串联的个数。由于精度要求为5%,故本设计显示部分由四个数码管组成,构成十位,个位,十分位,百分位。
图2-3 共阴极数码管及其接口电路
3 详细设计
3.1 复位电路
89C51单片机的复位是由外部的复位电路来实现的。最简单的上电自动复位电路,是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。当时钟频率选用6MHz时,C取22uF,R取1K。 除上电复位外,有时还需要按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST端经电阻和电源Vcc接通而
20
实现的,按键手动电平复位电路如图3.1。当时钟频率选用12MHz时,C选取22uF,R选择1000欧。
晶振电路
晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈
21
图3-1 单片机复位电路
电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化。晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容,请注意一般IC的引脚都有等效输入电容,这个不能忽略。
一般的晶振的负载电容为15p或12.5p ,如果再考虑元件引脚的等效输入电容,则两个22p的电容构成晶振的振荡电路就是比较好的选择。 晶体振荡器也分为无源晶振和有源晶振两种类型。无源晶振与有源晶振(谐振)的英文名称不同,无源晶振为crystal(晶体),而有源晶振则叫做oscillator(振荡器)。无源晶振需要借助于时钟电路才能产生振荡信号,自身无法振荡起来,所以“无源晶振”这个说法并不准确;有源晶振是一个完整的谐振振荡器。谐振振荡器
22
包括石英(或其晶体材料)晶体谐振器,陶瓷谐振器,LC谐振器等。晶振与谐振振荡器有其共同的交集有源晶体谐振振荡器。
石英晶片所以能做振荡电路(谐振)是基于它的压电效应,从物理学中知道,若在晶片的两个极板间加一电场,会使晶体产生机械变形;反之,若在极板间施加机械力,又会在相应的方向上产生电场,这种现象称为压电效应。如在极板间所加的是交变电压,就会产生机械变形振动,同时机械变形振动又会产生交变电场。一般来说,这种机械振动的振幅是比较小的,其振动频率则是很稳定的。但当外加交变电压的频率与晶片的固有频率(决定于晶片的尺寸)相等时,机械振动的幅度将急剧增加,这种现象称为压电谐振,因此石英晶体又称为石英晶体谐振器。 其特点是频率稳定度很高。
石英晶体振荡器与石英晶体谐振器都是提供稳定电路频率的一种电子器件。石英晶体振荡器是利用石英晶体的压电效应来起振,而石英晶体谐振器是利用石英晶体和内置IC来共同作用来工作的。振荡器直接应用于电路中,谐振器工作时一般需要提供3.3V电压来维持工作。振荡
23
器比谐振器多了一个重要技术参数为:
谐振电阻(RR),谐振器没有电阻要求。RR的大小直接影响电路的性能,也是各商家竞争的一个重要参数。本设计采用12MHz晶振,并联两个30pF电容构成晶振电路。
图3-2 单片机晶振电路
3.2 电源电路
本设计选择三端集成稳压器0875及变压器,整流桥,滤波电容构成直流稳压电路。C1,C2,C3用来实现频率补偿,防止稳压器产生高频自激振荡和意志电路引入高频干扰,C4是电解电容,以减小稳压电源输出端由输入电源引入的低频干扰。D是保护二极管,当输入端短路时,给输出电容器C4一个放电通路,防止C4两端电压作用于稳压器,造成击穿而损坏。
变压器采用220V-9V变压器,整流桥和保护二极
24
管采用IN4001。
图3-3直流稳压电源电路
3.3程序流程图
主程序开
25
初始化 采集4次AD 4次AD求和 4次AD求平均值 将双字节转换BCD码 26
取低四位BCD 码转换成对应数码管字段
图3-4 主程序流程框图
中断程序流程图
进入27
显示开第3个数码管 加1 28
|ACC压Y 显示开第1个计算Y 显示开第2个加1 Y
图3-5 中断程序流程框图
3.4 源程序
Y 显示开第4个清零 设置显示弹出退出中本程序是用来显示0-10v的测量电压的,使用的单片机是:89C51,晶振12MHz AD_EOC BIT P1.0 ;ad的接口
29
AD_TCK BIT P1.1 AD_OUT BIT P1.2 AD_IN BIT P1.3 AD_CS BIT LED EQU L1 BIT L2 BIT L3 BIT L4 BIT LED1 EQU LED2 EQU LED3 EQU LED4 EQU L_NUM EQU 34H ;led P1.4
P0 ;LED接的P0口 P2.0 P2.1 P2.2 P2.3
30H ;LED0缓存 31H ;LED1缓存 32H ;LED2缓存 33H ;LED3缓存 计数器
ORG0000H
30
LJMP MAIN ORG000BH LJMP TT0
ORG 0080H
MAIN: MOV SP, #70H ;设置堆栈 MOV TH0, #60 ;设置定时器定时时间
MOV TL0, #176
MOV TMOD, #11H ;设置定时器工作状态
SETB EA ;开总中断 SETB TR0 ;开定时器中断0
M1: LCALL ADCJ ;采集数据
LCALL AD_NUM ;将采集的数据求和
LCALL PINGJUN ;将采集的数据求平均
31
LCALL BIN_BCD ;将采集的数据求平均后转成bcd
JMP M1;AD采集程序;48H-4FH
ADCJ: MOV R0, #48H MOV R1, #49H MOV DPTR, #DZSJ25 MOV R4, #01H ;个通道
DTDZ25: MOV R3, #04H ;通道采值起始,每个4次
DCCZ25: MOV A, #01H ;集第一个通道
LCALL RD_AD INC R0 INC R1 DJNZ R3, DCCZ25 RET
一多采32
RD_AD: MOV @R0, #00H ;2543串行数据输出高位
MOV @R1, #00H CLR CLK SETB CS25 CLR CS25 MOV LOP1: MOV RLC MOV SETB CLK CLR DJNZ R2, SWAP A
XCHD A, @R0 ;LOW 4 BITS
R2, #08H
C, DO A DI, C CLK LOP1 交换 33
SWAP A MOV R2, #04H
LOP2: MOV C, DO RLC A SETB CLK CLR CLK DJNZ R2, LOP2 MOV @R1, A SETB CS25 RET
DZSJ25: DB
00H,10H,20H,30H,40H ;两字节相加;结果在41H和42H中,41H低字节,42h高字节 AD_NUM: MOV 41H, #00H MOV 42H, #00H
MOV 41H, 48H ;低字节
34
MOV 42H, 49H CLR C MOV A, 4AH ADDC A, 41H JC AD_NUM1 ADD 42H, #01
AD_NUM1:CLR C MOV A, 4CH ADDC A, 41H JC AD_NUM2 ADD 42H, #01
AD_NUM2:CLR C MOV A, 4EH ADDC A, 41H JC AD_NUM3
35
ADD 42H, #01
AD_NUM3:CLR C MOV A, 4BH ADD A, 42H MOV A, 4DH ADD A, 42H MOV A, 4FH ADDC A, 42H
RET ;PINGJUN:CLR C MOV A, 42H RRC A MOV 42H, A MOV A, 41H MOV 41H, A
求平均数36
CLR C MOV A, 42H RRC A MOV 42H, A MOV A, 41H RRC A MOV 41H, A
RET ;BIN转成BCD;程序入口:42H是高字节,41H是低字节
;程序出口:十位数放在43h; 个位数放在44h; 十分位数放在45h; 百分位数放在46h
BIN_BCD:CHANGE16_10:CLR A ;BCD码初始化
MOV R3, A MOV R4, A MOV R5, A
37
MOV R2, #10H ;转换双字节十六进制整数
CHANG_1:MOV A, R7 ;从高端移出待转换数的一位到CY中 RLC A MOV R7, A MOV A, R6 RLC A MOV R6, A
MOV A, R5 ;进位自身相加,相当于乘2 ADDC A, R5
DA A ;整
MOV R5, A MOV A, R4 ADDC A, R4
BCD码带十进制调38
DA A MOV R4, A MOV A, R3 ADDC A, R3
MOV R3, A ;双字节十六进制数的万位数不超过6,不用调整
DJNZ R2, CHANG_1 ;处理完16bit RET
BIN_BCD: MOV A, 43H ;将43h中的0-9转成
数码管对应的0-9字符MOV DPTR, TAB_LED
MOVC A, @A+DPTR MOV LED1, A MOV A, 44H
MOV DPTR, TAB_LED MOVC A, @A+DPTR
39
MOV LED2, A MOV A, 45H MOV DPTR, TAB_LED MOVC MOV MOV MOV MOVC MOV RET ; MOV PUSH MOV CJNE 数字A,@A+DPTR LED3, A A, 46H
DPTR, TAB_LED A, @A+DPTR LED4, A
定时中断0
TT0: MOV TH0, #60
TL0, #176 ACC A, L_NUM
A, #00H, TT01 ;显示第1位十位
40
MOV LED, LED1; CLR L1 SETB L2 SETB SETB INC JMP 数字 MOV CLR SETB SETB SETB INC JMP TT01: L3 L4 L_NUM TT0_END
CJNE A, #01H, TT02 ;显示第二位
个位
LED, LED2; L2 L1 L3 L4 L_NUM TT0_END
41
TT02: CJNE A, #02H, TT03 ;显示第三位
数字 十分位 MOV LED, LED3; CLR L3 SETB L2 SETB L1 SETB L4 INC L_NUM JMP TT0_END
TT03: CJNE A, #03H, TT04 ;显示第四位
数字 百分位
MOV LED, LED4; ;将要显示的第4位数据送入显示
CLR L4 ;点亮第4个数码管
SETB L2 ;关闭第2个数码管
42
SETB L3 ;关闭第3个数码管
SETB L1 ;关闭第1个数码管
TT04: MOV L_NUM, #00H ;将计数器清0 JMP TT0_END
TT0_END:POP ACC ;退出中断 RETI
TAB_LED: DB 0C0H,0F9H,0A4H,0B0H,99H ;LED查表程序
DB 92H,82H,0F8H,80H,90H
END
43
图3-6数字电压表Protel原理图
4 总结
人和我选重,当时的参考资料都是些测量5V电
这是我的综合课程设计。当时在选题时,没
44
压的,采用8位A/D转换,LED数码管显示。可能懂的人认为没什么大不了的,对于没有怎么动过手的我,太不容易了。我一心想做的完美些,加些难度,加些挑战。
设计个至少测DC1000V电压表,要误差小于0.3V,液晶显示,可换挡测量。当我把我的想法告诉我的同学时,他们没有一个相信我会做成。我个人认为学单片机学的不错,有信心啊。这个设计的难度在于编程,液晶显示,可换挡测量更增加了设计难度。为了尽量追求完美,我加了很多辅助的部分。调试程序时,我遇到了很多困难,例如:参考文献错误的误导,调试环境的错误使用,硬件改装,程序本身不可预见的错误等。经历了,写程序,调试,仿真,没有人告诉你错在那里,没有人告诉你该怎么做,我在走没人可借见的路,坎坷充满荆棘的路。那短日子真的是难熬啊,几乎每时每刻都在想办法。有空就在纸上写画着由于时间不够,很多地方还可以更加完美。最后,再历经多次调试后成功了,我高兴的大喊大叫起来,真的太难了,大家也很为我高兴,做好一件事真的不容易!在以后的学习中我会更加努力的学习理论知识,在理论的基础上加强实
45
践,达到理论与实践的更好结合。在这次的设计中也让我明白了一个道理,只有多加练习运用才会真正的吸收知识,使之成为自己的东西。
[1] [2] 北京 [3] 参考文献
新编MCS-51单片机应用设计 张毅刚编
著 哈尔滨 哈尔滨工业大学出版社2008.3
电子技术基础 模拟部分 康华光主编高等教育出版社 2006.1
电子技术基础 数字部分 康华光主编北京 高等教育出版社 2006.1
46
[4] PROTEL DXP电路设计与实例精解 黎文
模,段晓峰编著 北京 人民邮电出版社 2006
[5] 李科杰 新编传感器技术手册[M] 北京 国防工业出版社,1995
[6] PROTEL DXP电子电路设计精彩范例 林
庭双等编著 北京 机械工业出版社 2005.6
[7] 微型计算机原理及应用 郑学坚,周斌编著 北京 清华大学出版社2001
[8] 电路 邱关源编著 北京 高等教育出版社 1999
47
因篇幅问题不能全部显示,请点此查看更多更全内容