单片机数字万用表课程设计_单片机电子表课程设计

2020-02-27 其他范文 下载本文

单片机数字万用表课程设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“单片机电子表课程设计”。

《单片机》课程设计

目:

基于单片机的数字多用表设计

业:

电力系统及其自动化

级:

本自动化

名:

学号:

指导老师:

小组成员:

成绩:

摘要

本次设计采用单片机芯片

AT89S51与ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示,但要求使用的元器件数目最少。为使系统更加稳定,使系统的整体精度得以保障,本电路使用了ADC0809数据转换芯片,单片机系统设计采用AT89S51作1

为主控芯片,配以RC上电复位电路和震荡电路,程序每执行周期耗时缩到最短,这样保证了系统的实时性。

关键词

数字万用表

AT89S51单片机

AD转换与控制

目录

摘要„„„„„„„„„„„„„„„„„„„„„„„„„2 关键词„„„„„„„„„„„„„„„„„„„„„„„„2 绪论

1.数字万用表设计背景„„„„„„„„„„„„„„„„„4 1.1 数字万用表的设计目的和意„„„„„„„„„„„„„

41.2 数字万用表的设计依据…………………………………….4

1.3 数字万用表设计重点解决的问题„„„„„„„„„„„„4

2.数字万用表总体设计方案……………………………………5 2.1数字万用表的基本原理……………………..…….…….5 2

2.2芯片选择及功能简介………………………………………..2.3电路原理图及仿真图……………………………………..……….2.4系统板上硬件连线………………………………..………..…… 2.5程序设计内容………………………………..………..…… 2.6C语言源程序………………………………..………..……总结……………………………………….….………… 4心得体会参考文献……………………………..…….………..13

绪论

数字万用表亦称数字多用表,简称

DMM(Digtial Multimeter)。它是采用数字化测量技术,把连续的模拟量转换成不连续的,离散的数字形式并加以显示的仪表。传统的指针式万用表功能单精度低,不能满足数字化时代的需求,采用单片机的数字万用表,已被广泛用于电子及工业测量、工业自动化仪表、自动测试系统等智能测量领域,显示出强大的生命力。数字万用表具有以下几点优势:(1)显示清晰直观,计数准确

为了提高观察的清晰度,新型的手势式数字万用表已普遍采用字高为26mm的大屏幕LCD(液晶显示器)。有些数字万用表还增加了背光源,以便于夜间观察读数。(2)显示位数

数字万用表的显示位数通常为3位到8位半。

(3)准确度高

准确度是测量结果中系统误差与随机误差的综合。它表示测量结果与真值的一致程度,也反映了测量误差的大小,准确度愈高,测量误差愈小。数字万用表的准确度远优于指针万用表。

(4)

分辨力高

数字万用表在最低电压量程上末位1个字所代表的电压值,称作仪表的分辨率,宏观世界反映了仪表灵敏度的高低,分辨率随显示位数的增加而提高。(5)

测试功能强

数字万用表不止可以测量直流电压,直流电流,电阻二3

极管正向压降等等。(6)测量范围宽

数字万用表可满足常规电子测量的需要,智能数字万用表的测量范围更宽广。

(7)测量速率快

数字万用表在每秒中内对被电压的测量次数称为测量速率,单位是次/秒。它主要取决于A/D转换器的转换速率。一般数字万用表的测量速率为2到5次/秒。有的呢过达到20次/秒以上,另外有的比这个还要高得多。数字万用表可满足不同用户对测量速率的需要。

(8)

输入阻抗高

数字万用表电压档具有很高的输入阻抗,通常为10至10000M欧姆,从被测电路上吸取的电流小,不会影响被测信号源的工作状态,能减小由信号源内阻引起的测量误差。(9)保护功能完善,抗干扰能力强

数字万用表具有比价完善的保护电路,过载能力强,新型的数字万用表还增加了高压保护器件,能防止浪涌电压。

本设计就是居于这个设计理念一个基于单片机的数字万用表。该设备具有直观简单的优点。并且能深入的说明 万用表的测量原理。能直观的了解万用表各个部分的结构和测试原则。

1数字万用表的设计背景

在本章中主要介绍了系统的设计原则和总体方案及其系统概述等。

1.1数字万用表的设计目的和意义

数字万用表是当前电子、电工、仪器、仪表和测量领域大量使用的一种基本测量,已被广泛应用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。随着时代科技的进步,数字万用表的功能越来越强大,把电量及非电量的测量技术提高到崭新水平。

1.2 数字万用表的设计依据

根据数字万用表的原理,结合以下的设计要求:“设计一个数字万用表,能够测量直流电压值,直流电流、直流电阻。实现多级量程的直流电压测量,其量程范围是200mv、2v ,20v,200v和500v.实现多级量程的直流电流测量,其量程范围是2mA,20mA,200mA、2A和20A.实现多级量程的电阻测量,其量程范围是200、2k ,20k,200k和2M。由此设想出以下的解决方法,即数字万用表的系统由分流电阻、分压电阻、基准电阻、电容测试芯片电路、51单片机最小系统、显示部分、报警部分、AD转换和控制部分组成。为使系统更加稳定,使系统整体精度得以保障。

1.3数字万用表设计重点解决的问题

本设计重点要解决的问题是对不同量程的各种测量内容的转换,还有就是各部分电路组合成一个完整的数字万用表,而难点解决的问题就是程序的设计,要保正其可行性从而保证设计的正确性。数字万用表总体设计方案 2.1数字万用表的基本原理

数字万用表的最基本功能是能够测量直流电压,直流电流,还有能够测电量阻。

下面我们分别介绍各个部分的组成:(1)、模数(A/D)转换与数字显示电路

常见的物理量都是幅值(大小)连续变化的所谓模拟量(模拟信号)。指针式仪表可以直接对模拟电压、电流进行显示。而对数字式仪表,需要把模拟电信号(通常是电压信号)转换成数字信号,再进行显示和处理(如存储、传输、打印、运算等)。数字信号与模拟信号不同,其幅值(大小)是不连续的。这种情况被称为是”量化的“。若最小量化单位(量化台阶)为,则数字信号的大小一定是的整数倍,该整数可以用二进制数码表示。但为了能直观地读出信号大小的数值,需经过数码变换(译码)后由数码管或液晶屏显示出来。(2)、多量程数字电压表原理

在基准数字电压表头前面加一级分压电路(分压器),可以扩展直流电压测量的量程。

(3)多量程数字电流表原理 测量电流的原理是:根据欧姆定律,用合适的取样电阻把待测电流转换为相应的电压,再进行测量。

(4)电阻测量原理

数字万用表中的电阻档采用的是比例测量法。

由稳压管ZD提供测量基准电压,流过标准电阻和被测电阻的电流基本相等

2.2芯片选择及功能简介

这次的课程设计中,我们这一种选择了芯片AT89S51和ADC0809。

AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51有PDIP、PLCC、TQFP三种封装方式,其中最常见的就是采用40Pin封装的双列直接PDIP封装,芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口左边那列引脚逆时针数起,依次为

1、2、3、4、„、40,其中芯片的1脚5

顶上有个凹点。在单片机的40个引脚中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8位可编程I/O引脚32根。

1、主电源引脚(2根)VCC(Pin40):电源输入,接+5V电源GND(Pin20):接地线

2、外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路输入端XTAL2(Pin20):片内振荡电路输出端

3、控制引脚(4根)RST/VPP(Pin9):复位引脚,出现2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。

4、可编程输入/输出引脚(32根)AT89S51单片机有4组8位的可编程I/O口,分别位P0、P

1、P

2、P3口,每个口有8位(8根引脚),共32根。PO口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7。AT89S51的主要性能参数:与MCS-51产品指令系统完全兼容

4k字节在系统编程(ISP)Flash闪速存储器

1000次擦写周期

4.0-5.5V的工作电压范围 全静态工作模式:0Hz-33MHz 三级程序加密锁

128×8字节内部RAM

32个可编程I/O口线 2个16位定时/计数器 6个中断源 全双工串行UART通道

低功耗空闲和掉电模式

中断可从空闲模唤醒系统 看门狗(WDT)及双数据指针 掉电标识和快速编程特性 灵活的在系统编程(ISP字节或页写模式)ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。是目前国内应用最广泛的8位通用A/D芯片 1.主要特性

1)8路输入通道,8位A/D转换器,即分辨率为8位。

2)具有转换起停控制端。

3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)

4)单个+5V电源供电

5)模拟输入电压范围0~+5V,不需零点和满刻度校准。

6)工作温度范围为-40~+85摄氏度

7)低功耗,约15mW。2.内部结构

ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。3.外部特性(引脚功能)

ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。下面说明各引脚功能。

IN0~IN7:8路模拟量输入端。

2-1~2-8:8位数字量输出端。

ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路

ALE:地址锁存允许信号,输入,高电平有效。

START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。

EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。

REF(+)、REF(-):基准电压。

Vcc:电源,单一+5V。

GND:地。ADC0809的工作过程

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

转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。

(1)定时传送方式

对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。

(2)查询方式

A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。

(3)中断方式

把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。

不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行

数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。

2.3电路原理图

2.4系统板上硬件连接

a)把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。

b)把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。

c)把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。

d)把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。

e)把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。

f)把“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导线相连接。

g)把“模数转换模块”区域中的A2A1A0端子用导线连接到“电源模块”区域中的GND端子上。

h)把“模数转换模块”区域中的IN0端子用导线连接到“三路可调电压模块”区域中的VR1端子上。

i)把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端子上。

2.5程序设计内容

1.由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在AT89S51单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使用。因此产生CLK信号的方法就得用软件来产生了。

2.由于ADC0809的参考电压VREF=VCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。实际显示的电压值(D/256*VREF)

2.6C语言源程序

#include

unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f};

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00};unsigned char dispbuf[8]={10,10,10,10,10,0,0,0};unsigned char dispcount;unsigned char getdata;unsigned int temp;

long int i;

代替原来的unsigned char i;

sbit ST=P3^0;sbit OE=P3^1;sbit EOC=P3^2;sbit CLK=P3^3;

void main(void){

ST=0;

OE=0;

ET0=1;

ET1=1;

EA=1;

TMOD=0x12;

TH0=216;

TL0=216;

TH1=(65536-5000)/256;

TL1=(65536-5000)%256;

TR1=1;

TR0=1;

ST=1;

ST=0;

while(1)

{

if(EOC==1)

{

OE=1;

getdata=P0;

OE=0;

i=getdata*196;

dispbuf[5]=i/10000;

i=i%10000;

dispbuf[6]=i/1000;

i=i%1000;

dispbuf[7]=i/100;

ST=1;

ST=0;

}

} }

void t0(void)interrupt 1 using 0

{

CLK=~CLK;}

void t1(void)interrupt 3 using 0

{

TH1=(65536-6000)/256;

TL1=(65536-6000)%256;

P1=dispcode[dispbuf[dispcount]];

P2=dispbitcode[dispcount];

if(dispcount==5)

/*原来的:

temp = getdata * 235;

temp=temp/128;

i=5;

dispbuf[0]=10;dispbuf[1]=10;dispbuf[2]=10;dispbuf[3]=10;dispbuf[4]=10;dispbuf[5]=0;dispbuf[6]=0;dispbuf[7]=0;while(temp/10)

{

dispbuf[i]=temp%10;

temp=temp/10;

i++;

} dispbuf[i]=temp;*/

//定时器0 中断服务

//定时器1 中断服务

{

P1=P1 | 0x80;

}

dispcount++;

if(dispcount==8)

{

dispcount=0;

}

}

3.总结

设计结果综述:

(1)、数字万用表完成的功能主要是对电压、电流、电阻的测量,它主要由分流电阻、分压电阻、基准电阻、51单片机最小系统、显示部分、报警部分、AD转换和控制部分组成。(2)、数字万用表属于一种测量工具,其本身的好坏直接影响到测量结果,因此上面的设计在实物上只可以测直流电压,在仿真上可以测出直流电压电流和电阻。(3)、单片机部分跟AD转换部分是整个设计的核心,ADC0809的参考电压VREF=VCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。实际显示的电压值(D/256*VREF);AT89S51单片机作为主控芯片,配以RC上电复位电路和震荡电路,使系统稳定运行。(4)、在本次软件设计过程中,采用的是C语言程序。

4心得体会

两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。通过此次课程设计,使我更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的仿真环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所12

在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!通过这次的课程设计,使我更加透彻的了解到我在单片机这方面的知识的浅薄,从而促进了握要更加了解单片机知识的决心。

5参考文献

C语言程序设计第三版

51单片机开发与应用基础教程13

C语言版)

《单片机数字万用表课程设计.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
单片机数字万用表课程设计
点击下载文档
相关专题 单片机电子表课程设计 单片机 课程设计 数字万用表 单片机电子表课程设计 单片机 课程设计 数字万用表
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文