简易数字电流表课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计
题目______ 简易数字电流表_____________
二级学院电子信息与自动化
专业自动化
班级71-1
学生姓名—学号—
指导教师
2.4电路图和各元器件之间实际连接关系
3.1系统模块层次结构图
3.2程序流程图........
3.3源程序代码........
4测试
4.1测试方法及设备
4.2实测数据
4.3系统指标
5总结
5.1硬件电路设计总结
5.2软件程序设计总结
基于单片机的简易数字电流表设计
摘要
所谓数字电流表就是能将测得的模拟电流量经过A/D 转换转变为数字量,并在液晶显示屏上直接显示电流读数的电流表,相比针式电流表有着测量数据准确明了,读数精度高的特点,类似数字式万用表,有着相当的实用性。
随着微电子技术的迅速发展和超大规模集成电路的出现,特别是单片机的出现,正在引起测量、控制仪表领域新的技术革命。
采用单片机作为测量仪器的主控制器就是这场革命的产物之一。
基于单片机的智能综合仪表是融合智能化、数字化、网络化等时代特性的新一代智能仪表,兼具指示仪表、调节仪表、积算仪表与记录仪表功能.具有高测量控制精度、高可靠性稳定性的特点。
这种以单片机为主体的新型智能仪表将计算机技术与测量控制技术结合在一起,在测量过程自动化,测量结果数据处理以及功能的多样化方面都取得了巨大的进步。
作为电流直接测量和显示的必要常规仪器仪表,在注重性价比同时,必须具备精度高、稳定性好、抗干扰性强等优点。
而实时响应电流变化并连续实时显示,能够真正实现动态测量的数字电流表将成为特定使用领域的标准配置。
随着电子科技的快速发展,数字电流表的使用将愈发广泛。
关键词
数字电流表,电流采样,A/D 转换,单片机
1概述
1.1设计意义
通过课程设计,掌握电子设计的一般步骤和方法,锻炼分析问题解决问题的能力,学会如何查找所需资料,同时复习以前所学知识并加深记忆,为毕业设计打好基础,也为以后工作作准备。
通过对选题的分析设计,学习数字电流表的工作原理、组成和特性;掌握数字电流表的校准方法和使用方法;学会分流电路的连接和计算;了解过压过流保护电路的功用。
1.2我的工作
我小组经过严密协商,在保证课程设计所要求的“即合作,又分工”基础上进行了明确分工,我主要负责设计初期通过图书馆,网络查找关于简易数字电流表设计相关资料。
和本组成员一同诊定思路,解析实例,各自提出一些创新设计思路,共同确定大体方案。
协同对初期方案进行电路分析,选择合适的元器件,最终确定出一个我们觉得可行的方案。
仿真过程和,实物制作阶段,我深入学习实验方法和步骤,总结实验流程。
1.3系统主要功能
A ;可准确测量一定量程(0~200mA )电流大小值。
B ;通过按键选取不同量程。
2硬件电路设计及描述
2.1设计思想与方案选取
拿到题目,先从题目本生分析,首先想到要求所用到的单片机,出于合理选取及实例分解,根据单片机的特点,选取了AT89S51作为设计用单片机。
主要考虑到AT89C52 可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结
合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
而AT89S52有40个引脚,8k Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM,32个外部双向(I/O )口,5个中断优先级,2层中断嵌套中断,2个
16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT电路,片内时钟振荡器, 这些特性符合其用在设计中分级处理采样信息,准确测量数据,有效控制成本的要求。
其次,电流测量中,电流是模拟量,而单片机只负责处理数字信号,所以要用到A/D 转换芯片,通过筛选,选取了ADC0809乍为设计用A/D转换芯片。
ADC0809为8位分辨率A/D转换芯片,以逐次逼近原理进行模一数转换,其最高分辨可达256级,可以适应一般的模拟量转换要求。
其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。
芯片转换时间仅为32卩S,具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。
内部还有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换,转换时间为100卩s。
由于ADC0809芯片的转换时间短,并且性能比较高,所以采用ADC0809作为数模转换芯片。
2.2设计原理及方框图
接晶体引脚XTAL1和XTAL2。
XTAL2 (18脚):接外部晶体和微调电容的一端。
在89C51片
内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体的固有频率。
若须采用外部时钟电路,则该引脚悬空。
XTAL1(19脚):接外部晶体和微调电容的另一端。
在片内,它是振荡电路反相放大器的输入端。
在采用外部时钟时,该引脚输入外部时钟脉冲。
控制信号引脚RST、ALE、PSEN、EA。
RST (9脚)脚:RST是复位信号输入端,高电平有效。
当此时输入端保持两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。
ALE (30管脚):地址锁存允许信号端。
当89C51上电正常工作后,ALE输出信号作为锁存低
8位地址的控制信号。
平时不访问片外存储器时,ALE端也以振荡频率的六分之一固定输出正脉冲,因而ALE信号可
以用作对外输出时钟或定时信号。
如果想确认89S51芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出。
若有脉冲信号输出,则89S51基本上是好的。
ALE端的负载驱动能力为8个LS型TTL负载。
此引脚的第2功能PROG在对片内带有4KBFIashROM的89C51编程写入时,作为编程脉冲输入端。
PSEN (29脚):程序存储允许输出信号端。
当89C51由片外程序存储器指令时,每个机器周
期两次PSEN有效。
但在此期间内,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。
PSEN端同样可驱动8个LS型TTL负载。
要检查一个89C51小系统上电后CPU能否正常工作,也可用示波器PSEN端有无脉冲输出。
如有,则说明基本上工作正常。
EA (31脚):外部程序存储器地址允许输入端固化编程电压输入端。
当EA引脚接高电平时,CPU只访问片内Flash ROM并执行片外程序存储器中的指令:但当PC
的值超过0FFFH,将自动转去执行片外程序存储器内的程序。
当输入信号EA引脚接低电平时,CPU只访问片外ROM并执行片外程序存储器中的指令,而不管是否有片内程序存储器。
然而需要注意的是,如果保密位LB1被编程,则复位时在内部会锁存
EA端的状态。
当EA端保持高电平时CPU则执行内部程序存储器中的程序。
接晶体引脚XTAL1和XTAL2。
XTAL2 (18脚):接外部晶体和微调电容的一端。
在89C51片内它是振荡电路反相放大器的输出端,
振荡电路的频率就是晶体的固有频率。
若须采用外部时钟电路,则该引脚悬空。
要检查89C51的振荡电路是够正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。
XTAL1(19脚):接外部晶体和微调电容的另一端。
在片内,它是振荡电路反相放大器的输入端。
在采用外部时钟时,该引脚输入外部时钟脉冲。
控制信号引脚RST、ALE、PSEN、EA。
RST(9脚)脚:RST是复位信号输入端,高电平有效。
当此时输入端保持两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。
ALE (30管脚):地址锁存允许信号端。
当89C51上电正常工作后,ALE输出信号作为锁存低
8位地址的控制信号。
平时不访问片外存储器时,ALE端也以振荡频率的六分之一固定输出正脉冲,因而ALE信号可
以用作对外输出时钟或定时信号。
如果想确认89C51芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出。
若
有脉冲信号输出,则89C51基本上是好的。
ALE端的负载驱动能力为8个LS型TTL负载。
此引脚的第2功能PROG在对片内带有4KBFIashROM的89C51编程写入时,作为编程脉冲输入端。
PSEN(29脚):程序存储允许输出信号端。
当89C51由片外程序存储器指令时,每个机器周
期两次PSEN有效。
但在此期间内,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。
PSEN端同样可驱动8个LS型TTL负载。
要检查一个89C51小系统上电后CPU能否正常工作,也可用示波器PSEN端有无脉冲输出。
如有,则说明基本上工作正常。
EA(31脚):外部程序存储器地址允许输入端固化编程电压输入端。
当EA引脚接高电平时,CPU只访问片内Flash ROM并执行片外程序存储器中的指令:但当PC
的值超过0FFFH,将自动转去执行片外程序存储器内的程序。
当输入信号EA引脚接低电平时,CPU只访问片外ROM并执行片外程序存储器中的指令,而
不管是否有片内程序存储器。
然而需要注意的是,如果保密位LB1被编程,则复位时在内部会锁存
EA端的状态。
当EA引脚接高电平时,CPU只访问片内Flash ROM并执行片外程序存储器中的指令:但当PC 的值超过0FFFH,将自动转去执行片外程序存储器内的程序。
当输入信号EA引脚接低电平时,CPU只访问片外ROM并执行片外程序存储器中的指令,而不管是否有片内程序存储器。
然而需要注意的是,如果保密位LB1被编程,则复位时在内部会锁存
EA端的状态。
当EA端保持高电平时CPU则执行内部程序存储器中的程序。
2.3工作原理
电流信号的转换实现及采样要点
用单片机及其扩展的外部电路先做成一个理想电压表⑶,图1中用G表示。
由于通常所说的电流表
是指灵敏电流计其量程太小,不能直接测量电流,仅用于检测有无电流和电流的方向,所以要想得到一个有多量程或量程较大的电流表需要将一个理想电压表改装而成。
本设计是用一个内阻视为无
穷大的电压表并联分流电阻而成的数字电流表。
待测电流I随搬动开关K的位置而流过R1或R2,
因而本电流表的两个量程就取决于G的满量程电压和R1、R2的阻值,记G的满量程电压为Ug,根据欧姆定律Ug=RgIg,若Ug和Rg已知则lg就是电流表的满量程电流。
由于负反馈放大器的输入电阻已达到10M欧以上,所以有单片机构成的测量系统,可以看作一
个理想电压表。
通常所说的偏转式电流表是根据线圈的偏转程度线性刻画未测电流的大小,仿照此
原理给待测电流加一个线性电阻,然后再用一个理想电压表测电流在电阻上的压降,然后适当选择放大器的放大倍数就可以做成多量程的电流表。
LED动态显示器接口及显示方式
单片机中通常使用7段LED构成字型“ 8”,另外,还有一个小数点发光二极管,以显示数字、符号及小数点。
这种显示器有共阴极和共阳极两种,如图。
发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起称为共阴极显示器。
一位显示器由8个发光二极管组成,其中,7个发光二极管构成字型8的各个笔画,另一个小数点为dp 发光二极管。
当在某段发光二极管上施加一定的正向电压时,该段笔划即亮;不加电压则暗。
为了保护各段LED不被破坏,需外加限流电阻。
以共阴极LED为例,如图,各LED公共阴极K0接地。
若向各控制端a b……g、dp顺次送入11100001信号,则该显示7字型。
在多位LED显示时,为了简化电路,降低成本,将所有位的段选线并联在一起,由一个8位I/O 口控制。
而共阴(共阳)极公共端K分别由相应的I/O线控制,实现各位的分时选通。
89C51单片机
1)89C51行输出操作时,CPU通过内部总线把数据写入锁存器⑴。
而89C51执行输入操作却有
两种方式;当执行的是读锁存器指令时,CPU发出读锁存器信号,此时锁存器状态由触发器的Q端
经锁存器上面的三态输入缓冲器1送入内部总线;如果执行的是读端口引脚,则CPU发出的是读引
脚控制信号,直接读取端口引脚上的外部输入信息,此时引脚状态经锁存器下面的三态输入缓冲器2送入内部总线。
在89C51无片外的扩展存储器的系统中,这四个端口都可以作为准双向通用10 口使用。
P0 口的输出级与P1-P3 口的输出级在结构上是不同的,因此,它们的负载能力和接口要求也各不相同。
P0 口与其他口不同,它的输出级无上拉电阻。
用作输入时,应先向口锁存器80H写1。
把
它当作地址/数据总线时,则无须外接上拉电阻。
P0 口的每一位输出可驱动8个LS型TTL负载。
P1-P3 口的输出级接有内部上拉电阻,它们的每一位输出可驱动4个LS型TTL负载。
作为输
入口时,任何TTL或NMOS电路都能以正常的方式驱动89C51单片机的P1-P3 口。
由于它们的输出级具有上拉电阻,所以也可以被集电极开路所驱动,而无须外接上拉电阻。
对于89C51单片机,端口只能提供几毫安的输出电流,故当作输出口去驱动一个普通晶体管的集极时,应在端口与晶体管基极间串联一个电阻,以限制高电平输出时的电流。
P1-P3 口也都是准双向口。
电源引脚Vcc和Vss。
Vcc (40脚):电源端,为+5V。
Vss (20脚):接地端。
CPU
内中詬
KSKtt 和 时序
g?
粗序存估!S 4 KB Flash ROM
丼部*杵计雜檣入
-^B' ■■■ MM ^Bl
^Bl ■
¥
if
H3占宇节 RAMZSFJt
2X
吋At 丿计戴器
Jj
DBUS
li
旷
可*程1/0
控制
PO E>2 Pl P3
串行運倩
2.4电路图及各元器件之间实际连接关系
■
工
CRVKTIkL
□ 1
■■ •」
5F .
r
I SIT “
r in
9H
r :
RP1
ftBBPAC K-E
-1 PUEV^D Q 他伽” POJfAtfZ ■ HHADH MW
0U71 OUT? GUTS OUTS GUT* tuiTS OUT! MT1 ■2.
ALB
离皿B|—
負DU 虑 ---- -------
EDC-
,KBT
*LE
总体电路图
1
PDLS*ADS F —
FWA^S \-—
^HFMDT
F3J3*W |------- P3.WH3 PZZ*A1D
^J J UAIZ
P?.^AU PZ7i*AlS
5rr**T
—_bc UK K
MT
■2 mi HlDk
工. -ZL F3nrn:<b pjimcp pjjyiTD P3iiKn
M.E F3JBT1 pjmxii
Pl.TiflT
2.5元器件清单元件清单
3软件设计流程及描述3.1系统模块层次结构图
3.2程序流程图
A/10000得万位BC
码
3.3源程序代码
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit OE = P3A 0;
sbit EOC =卩3人1;
sbit START = P3A2;
sbit clk = P3A3; sbit dot=P1A7;
uint digtial[4],getdataend,key;
uchar code dis[] = {0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
uchar getdata;
//*************************************************
//函数名称: void delay1ms( unsigned char t) //函数功能:延时函数
//返回类型:无
//使用说明:
// 1 :产生需要的延时时间
〃*************************************************
void delay1ms( unsigned char t)
{
unsigned char i,j;
for( ; t; t--)
for(i=4; i>0; i--)
for(j=123; j>0; j--);
}
void time_time_clk() interrupt 1 using 0
{
TH0 = (65536-20)/256;// 给高 8 位赋值
TL0 = (65536-20)%256;// 给低 8 位赋值 clk=~clk; }
//********************
//函数名称: void inint()
// 函数功能:初始化定时器 .ADC0809
〃********************
void inint()
{
*********** 赋值 ***********************
TMOD = 0x01;// 选择工作模式16 位
TH0 = (65536-20)/256;// 给高8 位赋值
TL0 = (65536-20)%256;// 给低8 位赋值EA = 1;// 开总中断ET0 = 1;// 启动定时器0;
TR0 = 1;// 开定时器0
START = 0;// 给ADC0809 赋初值OE = 0;
} //****************************
// 函数名称:void display()
//函数功能:动态扫描,数码管显示电压值
***************************
//*
void display() //由高位到低位四位输出
P2 = 0X0E;
P1 = dis[digtial[3]];
dot = 1; // 小数点输出delay1ms(10);
P1 = 0X00;
P2 = 0X0d;
P1 = dis[digtial[2]]; delay1ms(10);
P1 = 0X00;
P2 = 0X0b;
P1 = dis[digtial[1]]; delay1ms(10);
P1 = 0X00;
P2 = 0X07;
P1 = dis[digtial[0]]; delay1ms(10);
P1 = 0X00;
}
//*****************************
//函数名称:void AD() //函数功能:将模拟电压转换为数字
〃*****************************
void AD()
START = 0;
OE = 0;
START = 1;
START = 0;// 启动AD 转换
while(EOC == 0)
{
}// 判断转换是否结束
OE = 1;// 允许输出
getdata = P0;// 将转换得到的数据赋给getdata
OE = 0;// 关闭输出
getdataend = getdata*(5000/255); // 将输出地数字量转化为模拟量输出、
getdataend=getdataend/9;
digtial[3]
= digtial[2] = digtial[1] getdataend/1000; // 最高位数值getdataend%1000/100; getdataend%100/10; getdataend%10;// 最低位数值
}
void main() {
inint();// 定时器和ADC0809 的初始化
while(1)
{
AD();//AD 转换
display();// 数码管显示
}
}
4 测试
4.1 测试方法及设备
方法:设计目的是为了电流的简单测量,通过电压与电流关系分析,要测量电流值,只需改变外加电阻大小,就产生不同的电流值。
当换到另一级别电阻,就可实现量程的转换。
设备:单片机数字试验箱,万用表,导线
4.2 实测数据
4.3 系统指标
本设计基于51 单片机利用AD 转换芯片和精密电阻组合成可测量0~200mA 电流的简易数字电流表,增加互换模块,可通过按键选取不同量程,主要参数基于所选电阻。
5 总结
这次的单片机设计,是把硬件和软件结合起来的设计,这也是我们第一次做这样的硬软件结合的设计。
在这次设计中,其硬件电路是比较简单的,但也需要足够的耐心加细心,同时也需要一定的硬件知识基础。
只有这样才能保证电路的成功。
而且在这次设计中硬件是基础,只有把基础打好才会有更高的设计。
硬件工作完成了就是解决程序设计的问题,程序设计是一个很灵活的东西,它反映了我们解决问题的逻辑思维和创新能力,它是一个设计的灵魂所在。
要设计一个成功的电路,必须要有耐心,要有坚持的毅力。
在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。
这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。
通过这次实训,我在书本理论知识的基础上又有了更深层次的理解。
此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,
参考文献
[1] 数字电子技术基础(第五版)
[2] 百度搜索“简易数字电压表设计”
[3] 实用电子电路手册(数字电路分册)
[4] 《单片机原理及应用技术》。