单片机课程设计直流数字电压表.docx

上传人:b****6 文档编号:5956712 上传时间:2023-01-02 格式:DOCX 页数:14 大小:503.04KB
下载 相关 举报
单片机课程设计直流数字电压表.docx_第1页
第1页 / 共14页
单片机课程设计直流数字电压表.docx_第2页
第2页 / 共14页
单片机课程设计直流数字电压表.docx_第3页
第3页 / 共14页
单片机课程设计直流数字电压表.docx_第4页
第4页 / 共14页
单片机课程设计直流数字电压表.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

单片机课程设计直流数字电压表.docx

《单片机课程设计直流数字电压表.docx》由会员分享,可在线阅读,更多相关《单片机课程设计直流数字电压表.docx(14页珍藏版)》请在冰豆网上搜索。

单片机课程设计直流数字电压表.docx

单片机课程设计直流数字电压表

 

南京信息工程大学

单片机原理课程设计报告

设计题目:

直流数字电压表设计

专业班级:

测控技术与仪器

学生姓名:

倪阳肖照飞

学生学号:

2011234190520112341910

指导老师:

葛化敏

成绩:

二○一四年六月二十日

一、设计任务、目的与要求

1.1 设计任务

利用单片机AT89S52和ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码管显示,要求使用的元器件数目尽量少。

本电路主要采用AT89S51芯片和ADC0809芯片来完成一个简易的数字电压表,能够对输入的0~5 V的模拟直流电压进行测量,并通过一个4位一体的7段LED数码管进行显示。

该电压表的测量电路主要由三个模块组成:

A/D转换模块、数据处理模块及显示控制模块。

A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。

数据处理则由芯片AT89S51来完成,其负责把ADC0809传送来的数字量经一定的数据处理,产生相应的显示码送到显示模块进行显示;另外它还控制ADC0809芯片的工作。

1.2设计目的

通过制作简易数字电压表,加深对所学专业知识的认识,提高分析、解决工程实际问题的能力,提高对单片机的应用能力,提高收集文献、资料的能力,从而达到综合运用所学的专业知识进行电子产品设计、制作与调试的能力。

 

1.3 设计要求

电路通电或按复位键时,通过改变电位器的阻值改变模拟输入电压,不断的将模拟电压转换成数字量,通过LED显示出所测得的模拟电压。

在测试中测试的电压值必须和实际的电压值不超过0.5V的电压。

在改变电压时,能够准确的侧量出电压的变化值。

 

二、系统总体方案设计

2.1 系统组成

本系统采用STC89C52单片机作为控制核心,对8路8位模数转换芯片ADC0809采集到的模拟电压信号进行分析处理,实现A/D转换,通过数码管显示其数字电压值。

电压表的测量电路主要由三个模块组成:

A/D转换模块、数据处理模块及显示控制模块。

2.2系统工作原理

简易数字电压表测量电路由A/D转换、数据处理及显示控制等组成,A/D转换由集成电路ADC0809完成。

ADC0809具有8路模拟输入端口,地址线(第23-25脚)可决定对哪一路模拟输入作A/D转换。

第22脚位地址锁存控制,当输入为高电平时,对地址信号进行锁存。

第6脚位测试控制,当输入一个2μs宽高电平脉冲时,就开始A/D转换。

第7脚为A/D转换结束标志,当A/D转换结束时,第7脚输出高电平。

第9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从端口输出。

第10脚为ADC0809的时钟输入端,利用单片机第30脚嘚分频晶振频率,再通过14024二分频得到1MHz时钟,单片机的P1、P3.0-P3.3端口作为4位LED数码管显示控制,P3.5端口用作单路显示/循环显示转换按钮。

P3.6端口用作单路显示时选择显示的通道。

P0端口用作A/D转换数据读入,P2端口用作ADC0809的A/D转换控制。

这里主要是利用ADC0809模数串口芯片,ADC0809芯片的基准电压脚外接电压为5V,则最大可以测得的电压为5V,ADC0809芯片的模拟输入脚通过电位器接5V电压,进行模拟采样,通过调整电位器的值改变模拟量。

输入的模拟量经过ADC0809芯片的内部8位开关电容逐次逼近A/D转换器,转换成8为二进制数,其最小的分辨率为0.0196(VREF=0.0196V),D为转化的数字量,再通过可以求得模拟电压,最后通过LED就可将所测得电压显示出来。

 

三、系统硬件设计

3.1 电源部分

电路主要是要求能提供稳定可靠的电压,使整个系统能正常的工作。

采用220V的工频交流电压,而单片机的工作电压是直流+5V,为此,先通过一个普通的变压器降低电压,再通过桥式整流,然后再通过7805芯片的进一步稳压,确保+5V电源的稳定、可靠。

而且7805集成稳压器是常用的固定输出+5V电压的集成稳压器。

它的内部含有限流保护、过热保护和过压保护电路,采用了噪声低、温度漂移小的基准电压源,工作稳定可靠。

1脚为输入端,2脚为接地端,3脚为输出端,使用十分方便,可以在任何有交流电压的地方使用,不需另带电池。

通过整流滤波以后输出直流电压,为了确保整个电路能正常工作,考虑到不接负载或电源电压有波动时电容能承受的耐压,必须加电容。

发光二极管D2点亮表示电源电路正常工作,其电源电路如图所示:

3.2A/D转换电路

A/D转换器是模拟量输入通道中的一个环节,单片机通过A/D转换器把输入模拟量变成数字量再处理。

随着大规模集成电路的发展,目前不同厂家已经生产出了多种型号的A/D转换器,以满足不同应用场合的需要。

如果按照工作原理划分,ADC主要有4种类型,即双积分式A/D转换器、逐次逼近式A/D转换器和并行式A/D转换器和计数比较式A/D转换器。

目前最常用的是双积分和逐次逼近式。

双积分式A/D转换器具有抗干扰能力强、转换精度高、价格便宜等优点,比如ICL71XX系列等,它们通常带有自动较零、七段码输出等功能。

与双积分相比,逐次逼近式A/D转换的转换速度更快,而且精度更高,比如ADC0808、ADC0809等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送单片机进行分析和显示。

本设计中采用具有逐次逼近式A/D转换器的ADC0809芯片。

ADC0809是典型的8位8通道逐次逼近式A/D转换器。

它可以和微型计算机直接接口。

ADC0809转换器的系列芯片是ADC0808,可以相互替换。

ADC0809的内部结构包括8路模拟选通开关、通道地址锁存器与译码器、8位A/D转换器和三态输出锁存器。

多路开关接8路模拟量输入,可对8路0~5V的输入模拟电压信号分时进行转换,输出具有TTL三态锁存器,可直接连到单片机数据总线上。

多路模拟开关可选通8路模拟通道,允许8路模拟量分时输入,并共用一个A/D转换器进行转换。

地址锁存与译码电路完成对A、B、C三个地址位进行锁存与译码,如表3.2所示。

表3.2ADC0809通道选择表

C(ADDC)

B(ADDB)

A(ADDA)

选择的通道

0

0

0

IN0

0

0

1

IN1

0

1

0

IN2

0

1

1

IN3

1

0

0

IN4

1

0

1

IN5

1

1

0

IN6

1

1

1

IN7

各引脚功能如下:

1)IN7~IN0——模拟量输入通道。

ADC0809对输入模拟量的要求主要有:

信号单极性,电压范围0~5V,若信号过小,还需进行放大。

另外,模拟量输入在A/D转换的过程中,其值应保持不变,因此,对变化速度快的模拟输入量,在输入前应增加采样保持电路。

2)A、B、C——地址线。

A为低位地址,C为高位地址,用于对8路模拟通道进行选择。

3)ALE——地址锁存允许信号。

由低至高电平正跳变将通道地址锁存至地址锁存器中。

4)START——启动转换信号。

START上跳沿时所有内部寄存器清0;START下跳沿时,开始进行A/D转换。

在A/D转换期间,START应保持低电平。

5)D7~D0——数据输出线。

为三态缓冲输出形式,可以和单片机的数据线直接相连。

6)OE——输出允许信号。

用于控制三态输出锁存器向单片机上输出转换得到的数据。

OE=0,输出数据线呈高电阻态;OE=1,输出转换得到的数据。

7)CLOCK——时钟信号。

ADC0809内部没有时钟电路,所需时钟信号由外界提供,要求频率范围10kHz~1.2MHz。

通常使用频率为500kHz的时钟信号。

8)EOC——转换结束状态信号。

EOC=0,正在进行转换;EOC=1,转换结束。

该状态信号既可作为查询的状态标志,又可以作为中断请求信号使用。

9)VCC——+5V电源。

10)REF(+)、REF(-)——参考电压。

参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。

其典型值为REF(+)=+5V,REF(-)=0V。

ADC0809的工作原理:

首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。

此地址经译码选通8路模拟输入之一到比较器。

START上升沿将逐次逼近寄存器复位。

下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。

直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。

当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。

3.3接口电路的设计

接口电路是ADC0809输出的BCD码转换为七段译码输出,主要有时钟电路、复位电路和单片机芯片组成。

图3.3单片机控制部分原理图

3.3.1时钟电路

单片机内部每个部件要想协调一致地工作,必须在统一口令——时钟信号的控制下工作。

单片机工作所需要的时钟信号有两种产生方式,即内部时钟方式和外部时钟方式。

图3.5是内部时钟方式:

单片机内部有一个构成振荡器的增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输入端,这个放大器与作为反馈元件的片外晶振一起构成自激振荡器。

在该图中,电容C1和C2取20PF,晶体的振荡频率取12MHz,晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。

实际连接如图所示:

3.3.2复位电路部分

AT89S51的复位电路如图所示。

当单片机一上电,立即复位。

电容C和电阻R1实现上电自动复位。

复位也是使单片机退出低功耗工作方式而进入正常状态的一种操作。

3.4显示电路的设计

本次设计中有显示模块,而常用的显示器件比较多,有数码管,LED点阵,1602液晶,12864液晶等。

数码管是最常用的一种显示器件,它是由几个发光二极管组成的8字段显示器件,其特点是价格非常的便宜,使用也非常的方便,显示效果非常的清楚。

小电流下可以驱动每光,发光响应时间极短,体积小,重量轻,抗冲击性能好,寿命长。

但数码管只能是显示0——9的数据。

不能够显示字符。

这也是数码管的不足之处。

LED点阵显示器件是由好多个发光二极管组成的。

具有高亮度,功耗低,视角大,寿命长,耐湿,冷,热等特点,LED点阵显示器件可以显示数字,英文字符,中文字符等。

1602液晶是工业字符型液晶,能够同时显示16*2即32个字符。

1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字这些字符有:

阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。

使用时直接编写软件程序按一定的时序驱动即可。

它的特点是显示字迹清楚,价格相对便宜。

12864液晶也是一种工业字符型液晶,它不仅能够显示1602液晶所可以显示的字符,数字等信息,而且还可以显示8*4个中文汉字和一些简单的图片,显示信息也非常的清楚。

使用时也直接编写软件程序按一定的时序驱动即可。

不过它的价格比1602液晶贵了很多。

综合上述,根据本设计的要求和价格的考虑,选择数码管显示器。

 

3.5STC89C52RC结构与控制原理

在本次课题设计中我们选择了STC89C52芯片。

STC89C52是一种带8K字节闪烁可编程可檫除只读存储器的低电压,高性能COMOS8的微处理器,俗称单片机。

该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

 

主要功能特性

兼容MCS51指令系统

8K可反复擦写FlashROM

32个双向I/O口

256x8bit内部RAM

3个16位可编程定时/计数器中断

时钟频率0-24MHz

2个串行中断

可编程UART串行通道

2个外部中断源

共6个中断源

2个读写中断口线

3级加密位

低功耗空闲和掉电模式

软件设置睡眠和唤醒功能

P0-P3口结构

P0口功能:

P0口具有两种功能:

第一,P0口可以作为通用I/O接口使用,P0.7—P0.0用于传送CPU的输入/输出数据。

输出数据时可以得到锁存,不需外接专用锁存器,输入数据可以得到缓冲。

第二,P0.7—P0.0在CPU访问片外存储器时用于传送片外存储器de低8位地址,然后传送CPU对片外存储器的读写

P1口功能 :

P1口的功能和P0口de第一功能相同,仅用于传递I/O输入/输出数据。

P2口的功能:

P2口的第一功能和上述两组引脚的第一功能相同,即它可以作为通用I/O使用。

它的第二功能和P0口引脚的第二功能相配合,作为地址总线用于输出片外存储器的高8位地址。

P3口功能:

P3口有两个功能:

第一功能与其余三个端口的第一功能相同;第二功能作控制用,每个引脚都不同。

 

表3.5P3口第二功能

引脚

名称

功能

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

外部RAM写选通信号

P3.7

RD

外部RAM读选通信号

 

四、系统软件设计

4.1 系统程序设计

初始化中主要对STC89C52,ADC0809的管脚和数码管的位选及所用到的内存单元进行初始化设置。

准备工作做好后便启动ADC0809对IN0脚输入进的0~5V电压模拟信号进行数据采集并转换成相对应的0~255十进制数字量。

在数据处理子程序中,运用标度变换知识,编写算法将0~255十进制数字量转换成0.0~5.0V的数据,输出到显示子程序进行显示。

整个主程序就是在A/D转换,数据处理及显示程序循环执行。

整个程序流程框图如图4.1所示:

4.2 系统源程序

#include

#defineucharunsignedchar

#defineuintunsignedint

doubledist,speed,len,temp,cha;

sbitrs=P1^7;

sbitrw=P1^6;

sbite=P1^5;

sbitst=P1^4;

sbitoe=P1^3;

doublevolt2;

uintnum;

inta,b,c,volt1;

ucharvolt0;

uchartable[]="thevoltageisV";

uchartable1[]="0123456789.";

voiddelay(uintz)//延时子程?

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidwrite_com(ucharcom)

{

rs=0;

P2=com;

e=1;

delay(5);

e=0;

}

voidwrite_dat(uchardat)

{

rs=1;

P2=dat;

e=1;

delay(5);

e=0;

}

voidinit()

{

rw=0;

e=0;

write_com(0x38);

write_com(0x0f);

write_com(0x06);

write_com(0x01);

}

voidmain()

{

EA=1;

EX0=1;

IT0=1;

init();

write_com(0x80);

for(num=0;num<14;num++)

write_dat(table[num]);

write_com(0x80+0x46);

write_dat(table[15]);

while

(1)

{

st=0;

st=1;

st=0;

volt1=(int)volt0;

volt2=volt1/255.0*435;

volt1=(int)volt2;

write_com(0x80+0x40);

a=volt1/100;

b=volt1/10-a*10;

c=volt1%10;

write_dat(table1[a]);

write_dat(table1[10]);

write_dat(table1[b]);

write_dat(table1[c]);

}

}

voidinte()interrupt0

{

oe=1;

volt0=P0;

oe=0;

}

五、设计实物图片展示

 

六、课程设计总结(心得体会)

经过近2周的单片机课程设计,终于完成了我的数字电压表的设计,基本达到设计要求。

对于此次课程设计,有许多的感触与体会,遇到的难题多,学习到的知识也就更多。

第一,硬件电路遇到了ADC0809无内部时钟,需外接外部时钟,如何解决这个问题,我们小组进行了多次讨论,最终确定了在程序中提供时钟信号,大大降低了硬件电路的复杂度。

第二,则是解决程序设计的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。

因此在整个设计过程中大部分时间是用在程序上面的。

其中,我遇到了很多的问题,虽然以前还做过这样的设计,但是以前的都是用C语言进行编程。

而此次运用汇编语言编程,着实让我当头一棒,因为除了微机原理实验进行过相关编程,汇编语言的编程能力还停留在理论阶段。

在此次编程中,首先,我是先用C语言编程,进行调试后,成功的达到了课程设计的要求。

其次,查找汇编语言的相关资料,经过不懈的努力与调试,终于将汇编语言版的成功编程出来。

第三,在一个课题中,要设计一个成功的电路,必须要有耐心,要有坚持的毅力。

在整个电路的设计过程中,重要的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。

这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。

完成这次设计后,我在书本理论知识的基础上又有了更深层次的理解。

第四,在本次设计的过程中,我还学会了高效率的查阅资料、运用工具书、利用网络查找资料。

我发现,在我们所使用的书籍上有一些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整,这就要求我们应更加注重实践环节。

最后,还要在此感谢课程设计的指导老师们和我的组员们,他们在整个过程中都给予了我充分的帮助与支持。

参考文献

[1]李华.MCS-51系列单片机实用接口技术[M].1989.

[2]周立功.单片机实验与实践.北京:

北京航空航天大学出版社.

[3]吴国经.单片机应用技术.北京:

中国电力出版社,2003.

[4]徐惠民安德宁丁玉珍.单片微型计算机原理、接口及应用.北京:

北京邮电大学出版社,2007年.

[5]徐爱钧.《智能化测量控制仪表原理与设计》(第二版)[M].北京:

北京航空航天大学出版社,2004.

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1