基于单片机的简易数字电流表设计文档格式.docx

上传人:b****4 文档编号:8146352 上传时间:2023-05-10 格式:DOCX 页数:15 大小:191.85KB
下载 相关 举报
基于单片机的简易数字电流表设计文档格式.docx_第1页
第1页 / 共15页
基于单片机的简易数字电流表设计文档格式.docx_第2页
第2页 / 共15页
基于单片机的简易数字电流表设计文档格式.docx_第3页
第3页 / 共15页
基于单片机的简易数字电流表设计文档格式.docx_第4页
第4页 / 共15页
基于单片机的简易数字电流表设计文档格式.docx_第5页
第5页 / 共15页
基于单片机的简易数字电流表设计文档格式.docx_第6页
第6页 / 共15页
基于单片机的简易数字电流表设计文档格式.docx_第7页
第7页 / 共15页
基于单片机的简易数字电流表设计文档格式.docx_第8页
第8页 / 共15页
基于单片机的简易数字电流表设计文档格式.docx_第9页
第9页 / 共15页
基于单片机的简易数字电流表设计文档格式.docx_第10页
第10页 / 共15页
基于单片机的简易数字电流表设计文档格式.docx_第11页
第11页 / 共15页
基于单片机的简易数字电流表设计文档格式.docx_第12页
第12页 / 共15页
基于单片机的简易数字电流表设计文档格式.docx_第13页
第13页 / 共15页
基于单片机的简易数字电流表设计文档格式.docx_第14页
第14页 / 共15页
基于单片机的简易数字电流表设计文档格式.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的简易数字电流表设计文档格式.docx

《基于单片机的简易数字电流表设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的简易数字电流表设计文档格式.docx(15页珍藏版)》请在冰点文库上搜索。

基于单片机的简易数字电流表设计文档格式.docx

关键词:

数字电流表,电流采样,ADC0804,单片机

1.概述

1.1设计意义

通过课程设计,掌握电子设计的一般步骤和方法,锻炼分析问题解决问题的能力,学会如何查找所需资料,同时复习以前所学知识并加深记忆,为毕业设计打好基础,也为以后工作作准备。

通过对选题的分析设计,学习数字电流表的工作原理、组成和特性;

掌握数字电流表的校准方法和使用方法;

学会分流电路的连接和计算;

了解过压过流保护电路的功用。

1.2系统主要功能

A、利用AD转换芯片和精密电阻测量0~200mA电流

B、系统工作符合一般数字电流表要求

2.硬件电路设计方案及描述

2.1设计方案

如下图;

→→→→

←→

2.2硬件电路描述

先从题目本生分析,首先想到要求所用到的单片机,出于合理选取及实例分解,根据单片机的特点,选取了AT89S52作为设计用单片机。

主要考虑到AT89S52可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。

其次,电流测量中,电流是模拟量,而单片机只负责处理数字信号,所以要用到A/D转换芯片,通过筛选,选取了ADC0804作为设计用A/D转换芯片。

A/D转换概念:

即模数转换(AnalogtoDigitalConversion),输入模拟量(比如电压信号),输出一个与模拟量相对应的数字量(常为二进制形式)。

例如参考电压VREF为5V,采用8位的模数转换器时,当输入电压为0V时,输出的数字量为00000000,当输入的电压为5V时,输出的数字量为11111111。

当输入的电压从从0V到5V变化时,输出的数字量从00000000到11111111变化。

这样每个输入电压值对应一个输出数字量,即实现了模数转换。

ADC0804引脚功能:

CS:

芯片片选信号,低电平有效。

即=0时,该芯片才能正常工作,高电平时芯片不工作。

在外接多个ADC0804芯片时,该信号可以作为选择地址使用,通过不同的地址信号使能不同的ADC0804芯片,从而可以实现多个ADC通道的分时复用。

WR:

启动ADC0804进行ADC采样,该信号低电平有效,即信号由低电平变成高电平时,触发一次ADC转换。

RD:

低电平有效,即=0时,DAC0804把转换完成的数据加载到DB口,可以通过数据端口DB0~DB7读出本次的采样结果。

VIN(+)和VIN(-):

模拟电压输入端,单边输入时模拟电压输入接VIN(+)端,VIN(-)端接地。

双边输入时VIN(+)、VIN(-)分别接模拟电压信号的正端和负端。

当输入的模拟电压信号存在“零点漂移电压”时,可在VIN(-)接一等值的零点补偿电压,变换时将自动从VIN(+)中减去这一电压。

VREF/2:

参考电压接入引脚,本次设计运用了TL431稳压管构成的一个稳压电路,为的是给该端口提供稳定的直流电压,提高转换精度。

CLKIN和CLKR:

外接RC振荡电路产生模数转换器所需的时钟信号,时钟频率CLK=1/1.1RC,一般要求频率范围100KHz~1460KHz。

AGND和DGND:

分别接模拟地和数字地。

INTR:

转换结束输出信号,低电平有效,当一次A/D转换完成后,将引起=0,实际应用时,该引脚应与微处理器的外部中断输入引脚相连(如51单片机的,脚),当产生信号有效时,还需等待=0才能正确读出A/D转换结果,若ADC0804单独使用,则可以将引脚悬空。

DB0~DB7:

输出A/D转换后的8位二进制结果。

另外ADC0804片内有时钟电路,只要在外部“CLKIN(引脚4)”和“CLKR(引脚19)”两端外接一对电阻电容即可产生A/D转换所要求的时钟,其振荡频率为fCLK≈1/1.1RC。

其典型应用参数为:

R=10KΩ,C=150PF,fCLK≈640KHz,转换速度为100μs。

另外就是采样电流信号的采样电路,参考了相关的资料,设计的电路主要由两个OP07运算放大器组成的差分放大电路,放大倍数约为一百倍,为了减少运放的失真,还专门设计了有MC34063构成的一个反向电路,用来给运放提供-5V电压,然后就是利用的一个0.1欧姆的水泥采样电阻来把电流信号转换成电压信号,输入到运放中,因为ADC0804只能输入电压信号。

最后电路显示部分采用的LCD1602液晶显示。

3.电路工作原理

整个电路正常工作时,电流信号首先流过采样电阻,转换成电压信号经过100倍差分放大电路放大后,进入ADC0804芯片,经过A/D转换后,单片机P2端口接收到0804转换出来的数字信号,经过单片机内部的处理后再将电压值在LCD上显示出来,因为前面电压信号进过了放大,所以程序中需要除以相关的值(本次为10)还原电流值,才能送到lcd显示出来。

其中须判断电流值是否超过200毫安,若超过应该亮红灯,正常时亮红灯。

由于是8位ADC,当单端输出时,数字输出D的范围是0-255,这时的公式应为:

D=V/VREF*256,参考电压VREF设置的是2.56V,假设采样的电流为bA,实际显示应该为1000b毫安经过采样电阻后转换成0.1bV,,经过100倍放大后变成10bV,再根据ADC0804的量化公式D=V/VREF*256,D的值便为1000bV,刚好与要显示的毫安级别的电流值相等,就不需要在程序中再次进行数值处理和还原了。

4.电路图

A/D转换和显示电路

反向电压产生电路

采样电路

AD转换器参考电压稳压电路

5.元器件清单

元件清单

名称

型号

封装形式

数量

单片机

AT89S52

DIP-40

1个

A/D转换器

ADC0804

DIP-20

液晶显示器

LCD1602

DIP-16

晶振

12M

XTAL-1

电阻排

10kX8

SIP-9

滑动变阻器

1K

VR-5

电阻

100K

AXIAL-0.4

2个

按键

SW

ANJIAN

1K

采样电阻

0.1欧姆

电解电容

470uf

RAD-0.2

电容

470pF

10K

4个

运算放大器

0P07CP

DIP-8

电阻

330欧姆

反向电路芯片

MC34063

DIP-20

限流电阻

0.22欧姆

电感线圈

33uh

XIAL0.3

稳压管

TL431

SIP3

发光二极管

led

SIP2

220欧姆

电容

150pf

电解电容

10uf

3个

30pf

6.程序流程图

NO

YES

7.源程序代码

主程序:

#include<

reg52.h>

intrins.h>

#include"

LCD1602.h"

sbit_RD=P3^7;

sbit_WR=P3^6;

sbit_INTR=P3^3;

sbitLED1=P1^3;

sbitLED2=P1^4;

unsignedcharADC_Datshow[16]={"

current:

000Ma"

};

unsignedcharADC_Dat=0;

unsignedcharGet_Adc0804(void)//A/D转换函数,内部自动量化

{

unsignedchardat=0;

//定义一个字符变量

_WR=0;

//拉低写端口

_nop_();

//延时两个机器周期

_WR=1;

//在拉高写端口,启动A/D转换

while(_INTR==1);

//等待A/D转换完成

_RD=0;

dat=P2;

_RD=1;

returndat;

}

voidmain(void)

LCD_Int();

LCD_WriteStr(0,1,"

DigitalAmmeter"

);

//第一行显示数字电流表

LCD_WriteStr(0,2,ADC_Datshow);

//显示初始电流值

while

(1){

ADC_Dat=Get_Adc0804();

LCD_WriteCom(0xc0+9);

LCD_WriteDat((ADC_Dat/100)+0x30);

//显示电流值第一位

LCD_WriteDat((ADC_Dat%100/10)+0x30);

//显示电流值第二位

LCD_WriteDat((ADC_Dat%10)+0x30);

//显示电流值第三位

if(ADC_Dat>

200){

LED1=0;

LED2=1;

}

else{

LED1=1;

LED2=0;

delay_ms(100);

}

LCD驱动程序:

//包含_nop_()函数定义的头文件

voiddelay_us(unsignedintz)

while(z--)

{

_nop_();

voiddelay_ms(unsignedintz)

unsignedchari=0;

while(z--){

for(i=112;

i>

0;

i--);

}

/*****************************************************

函数功能:

将模式设置指令或显示地址写入液晶模块

入口参数:

dictate

***************************************************/

voidLCD_WriteCom(unsignedchardictate)

{

Rs=0;

//根据规定,RS和R/W同时为低电平时,可以写入指令

delay_us(5);

Rw=0;

En=0;

//E置低电平(根据表8-6,写指令时,E为高脉冲,

//就是让E从0到1发生正跳变,所以应先置"

0"

LCD_Dat=dictate;

//将数据送入P0口,即写入指令或地址

delay_ms

(2);

En=1;

;

//E置高电平

//当E由高电平跳变成低电平时,液晶模块开始执行命令

指定字符显示的实际地址

x

voidLCD_WriteAdr(unsignedcharx,unsignedchary)

{

switch(y){

case1:

LCD_WriteCom(x|0x80);

break;

//显示位置的确定方法规定为"

80H+地址码x"

case2:

LCD_WriteCom(x|0xc0);

default:

break;

}

将数据(字符的标准ASCII码)写入液晶模块

y(为字符常量)

voidLCD_WriteDat(unsignedchardat)

Rs=1;

//RS为高电平,RW为低电平时,可以写入数据

//E置低电平(根据表8-6,写指令时,E为高脉冲,

LCD_Dat=dat;

//将数据送入P0口,即将数据写入液晶模块

voidLCD_WriteStr(unsignedcharx,unsignedchary,unsignedchar*s)

40H+地址码x"

while(*s!

='

\0'

LCD_WriteDat(*s);

s++;

对LCD的显示模式进行初始化设置

voidLCD_Int(void)

delay_ms(5);

//延时15ms,首次写指令时应给LCD一段较长的反应时间

LCD_WriteCom(0x38);

//显示模式设置:

16×

2显示,5×

7点阵,8位数据接口

delay_ms(5);

//延时5ms 

LCD_WriteCom(0x38);

//3次写设置模式

LCD_WriteCom(0x0c);

显示开,有光标,光标闪烁

LCD_WriteCom(0x06);

光标右移,字符不移

LCD_WriteCom(0x01);

//清屏幕指令,将以前的显示内容清除

8.调试

利用实验室的直流稳压源电压输出端和一个36欧姆的电阻以及设计的电流表连成一个回路,电流表的其它元件单独供电,调节稳压源输出电压,观察液晶显示的电流值与稳压源上的电流值相比较,并调节参考电压的滑动变阻器,这时电流显示值发生变化,调节到与稳压源上电流值一样,但是始终有一定的误差。

改变稳压源输出电压,观察液晶显示的电流值,变化基本正常。

9.总结

这次的单片机设计,是把硬件和软件结合起来的设计,这也是我们第一次做这样的硬软件结合的设计。

在这次设计中,其硬件电路是比复杂的,需要足够的耐心加细心,同时也需要一定的硬件知识基础。

只有这样才能保证电路的成功。

而且在这次设计中硬件是基础,只有把基础打好才会有更高的设计。

硬件工作完成了就是解决程序设计的问题,程序设计是一个很灵活的东西,它反映了我们解决问题的逻辑思维和创新能力,它是一个设计的灵魂所在。

要设计一个成功的电路,必须要有耐心,要有坚持的毅力。

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

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

通过这次实训,我在书本理论知识的基础上又有了更深层次的理解。

此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅。

参考文献

[1]康华光主编.数字电子技术基础(第五版).高等教育出版社,2006年

[2]万文略主编.单片机原理及应用技术.重庆大学出版社,2004年

[3]康华光主编.模拟电子技术基础(第五版).高等教育出版社,2006年

[4]实用电子电路手册(数字电路分册)

[5]XX搜索:

简易数字电压表设计

[6]纪纲主编.C程序设计实用教程.中国铁道出版社,2009年

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

当前位置:首页 > 工程科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2