您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页单片机课程设计报告 数字电压表

单片机课程设计报告 数字电压表

来源:爱够旅游网
目录

一、 课程设计目的: ................................... 2 二、 课程设计题目描述和要求: ......................... 2 (1)数字电压表简介: ................................... 2 (2)模数转换器ADC0809简介„„„„„„„„„„„„„„„3 (3)单片机C51简介„„„„„„„„„„„„„„„„„„5 三、 课程设计报告内容„„„„„„„„„„„„„„„„„„8 3.1、设计原理、方案论证 ................................ 8 3.2、设计过程 ......................................... 9

3.2.1、系统框图„„„„„„„„„„„„„„„„„„„9 3.2.2、设计总程序„„„„„„„„„„„„„„„„„„„9 3.2.3、C语言源程序„„„„„„„„„„„„„„„„„10 四、设计总结和心得体会„„„„„„„„„„„„„„„„„„13 参考文献„„„„„„„„„„„„„„„„„„„„„„„„13

1

一、 课程设计目的:

利用单片机ATS51与ADC0809设计一个数字电压表,将模拟信号0~5 V之间的电压值转换成数字量信号,以四位数码管显示,并通过虚拟电压表观察ADC0809模拟量输入信号的电压值,LED数码管实时显示相应的数值量。 二、 课程设计题目描述和要求: (1)数字电压表简介:

数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。 数字电压表的特点

1.显示清晰直观,读数准确

传统的模拟式仪表必须借助于指针和刻度盘进行读数,在读数过程中不可避免的会引入人为的测量误差。数字电压表则采用先进的数显技术,使测量结果一目了然,只要仪表不发生跳读现象,测量结果就是唯一的。 2.准确度高

准确度是测量结果中系统误差与随机误差的综合。 3.分辨率高

数字电压表在最低电压量程上末位1个字所代表的电压值,称为仪表的分辨力,它反映仪表灵敏度的高低。分辨力随显示位数的增加而提高。分辨率是指所能显示的最小数字(零除外)与最大数字的百分比。例如31/2位DVM的分辨率为1/1999≈0.05%。需要指出,分辨力与准确度属于两个不同的观念。从测量角度看,分辨力是\"虚\"指标(与测量误差无关),准确度才是\"实\"指标(代表测量误差的大小)。 4.扩展能力强

在数字电压表的基础上,还可扩展成各种通用及专用数字仪表、数字多用表(DMM)和智能仪表,以满足不同的需要。 5.抗干扰能力强

51/2位以下的DVM大多采用积分式A/D转换器,其串模抑制比、共模抑

2

制比各别可达100dB、80~120dB。高档DVM还采用数字滤波、浮地保护等先进技术,进一步提高了抗干扰能力,共模抑制比可达180dB。 (2)、模数转换器ADC0809简介:

ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。是目前国内应用最广泛的8位通用A/D芯片 ①、主要特性

1)8路输入通道,8位A/D转换器,即分辨率为8位。 2)具有转换起停控制端。

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

4)单个+5V电源供电

5)模拟输入电压范围0~+5V,不需零点和满刻度校准。 6)工作温度范围为-40~+85摄氏度 7)低功耗,约15mW。 ②、内部结构

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

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

IN0~IN7:8路模拟量输入端。 2-1~2-8:8位数字量输出端。

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

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

3

START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 CLK:时钟脉冲输入端。要求时钟频率不高于0KHZ。 REF(+)、REF(-):基准电压。 Vcc:电源,单一+5V。

GND:地。

④、工作过程?

首先输入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单片机共个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。 (2)查询方式

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

4

(3)中断方式

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

不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。

(3)、单片机C51简介:

ATC51是一种带4K字节闪烁可编程可擦除只读存储器

(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。ATC2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的ATC51是一种高效微控制器,ATC2051是它的一种精简版本。ATC单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 ①、ATC51主要性能: 1.与MCS-51 兼容

2.4K字节可编程闪烁存储器 3.寿命:1000写/擦循环 4.数据保留时间:10年 5.全静态工作:0Hz-24MHz 6.三级程序存储器锁定 7.128×8位内部RAM 8.32可编程I/O线

9.两个16位定时器/计数器 10.5个中断源 11.可编程串行通道

12.低功耗的闲置和掉电模式

5

13.片内振荡器和时钟电路

②、 ATC51外部管脚分布及功能介绍

ATC51外部管脚分布图:

管脚功能介绍: 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”时,它利用内部上拉优势,当对外部八位地址数据存储器

6

进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为ATC51的一些特殊功能口,如下表所示: 口管脚 备选功能 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端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

7

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

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 振荡器特性:

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

3.1、设计原理、方案论证

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

AD0809的数据输出公式为:Dout=Vin*255/5=Vin*51,其中Vin 为输入模拟电压,Vout。当得到转换后的数据后要经过计算得到显示的数据:

temp=getdata*1.0/255*500; dispbuf[0]=temp%10; dispbuf[1]=temp/10%10;

8

dispbuf[2]=temp/100%10; dispbuf[3]=temp/1000; 3.2、设计过程

3.2.1、系统框图:

直流数字电压表的电路组成图:

图4-1 直流电压表设计框图

数字电压表主要由模/数转换电路、单片机控制电路、显示电路等三部分组成。其中ADC0809等器件组成的转换电路,将输入的模拟量信号进行取样、转换、然后将转换的数字信号送进单片机。单片机控制电路主要实现对数据进行程序处理;显示电路主要用于将单片机的信号数据转换后显示测量结果。

主要模块:延时模块(为了数码管显示稳定)、显示模块、单片机控制模块以及A/D转换模块。

模数转换模块组成部分:ADC0809芯片 程序处理的单片机控制模块:ATS51芯片 电压结果显示部分:七段LED显示管 3.2.2、设计总程序:

9

3.2.3、C语言源程序: #include

unsigned char code

dispbitcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsigned char dispbuf[4]; unsigned char getdata; unsigned int temp;

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

10

void Delay(unsigned int i);

void Delay(unsigned int i) {

unsigned int j; for(;i>0;i--) {

for(j=0;j<100;j++) {;} } }

void Display() {

P1=dispbitcode[dispbuf[3]]; P2=0xef;

Delay(10);//避免闪烁

P1=0x00; //关闭一下,否则显示不全 P1=dispbitcode[dispbuf[2]]; P17=1; P2=0xdf; Delay(10); P1=0x00;

P1=dispbitcode[dispbuf[1]]; P2=0xbf; Delay(10); P1=0x00;

P1=dispbitcode[dispbuf[0]]; P2=0x7f;

11

Delay(10); P1=0x00; }

void main() {

TMOD=0x01;

TH0=(65536-200)/256; TL0=(65536-200)%256; EA=1; ET0=1; TR0=1; while(1) { ST=1; ST=0;

while(EOC==1); { OE=1; getdata=P0; OE=0;

temp=getdata*1.0/255*500; dispbuf[0]=temp%10; dispbuf[1]=temp/10%10; dispbuf[2]=temp/100%10; dispbuf[3]=temp/1000; Display(); } }

12

}

void t0(void) interrupt 1 using 0 {

TH0=(65536-200)/256;

TL0=(65536-200)%256; CLK=~CLK; }

四、设计总结和心得体会

这份关于数字电压表的设计论文通过ATC51的控制指令,将模数转换模块,单片机转换模块和显示模块充分的结合起来。将连续不断,比较抽象的模拟直流电压能够更直观的用数码管显示出来。其中要处理的数据转换有:模拟量和十六进制的转换,十六进制代码向十进制代码的转换等。对于AD转换模块的ADC0809芯片而言,我通过设计详细了解了该芯片的内部工作原理及管脚的功能,该芯片所需要的工作环境。对于系统控制的核心—ATC51来说,弄懂各管脚的功能和汇编语言的使用方法是至关重要的,不然整个系统的功能就会实现不了。

在实验中,我也遇到了很多挫折,不过我都和同伴一一克服了,大家齐心协力解决了问题,使我明白了和他人共同合作的重要性。在以后的道路上我们也必须深刻认识到团队合作的精神,投入今后的发展之中。

成功就是在不断摸索着前进中实现的,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步步向自己的目标靠近,才会取得自己所要追求的成功。

参考文献:

[1]徐安等编著.单片机原理与应用.北京:希望电子出版社.2003.2 .43-62

[2] 李秉操等著.单片机接口技术及其在工业控制中的应用.陕西电编部.1991.03 .45-52 [3] 陈中洪.数字电压表.水利电力出版社.19.6-74 [4] 阎石.数字电子技术. 高等教育出版社.1984.09.456-493

13

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务