基于AT89C51单片机的智能电流检测系统设计.docx
- 文档编号:28871907
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:39
- 大小:826.42KB
基于AT89C51单片机的智能电流检测系统设计.docx
《基于AT89C51单片机的智能电流检测系统设计.docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的智能电流检测系统设计.docx(39页珍藏版)》请在冰豆网上搜索。
基于AT89C51单片机的智能电流检测系统设计
基于单片机的智能电流检测系统的设计
[摘要]:
电流检测系统是一种比较成熟的技术,但是基于单片机的电流检测系统是近来新兴的一种技术,主要优点是可以一次将多个电流信号测量并显示出来。
本文阐述了基于单片机的智能电流系统设计的组成及设计方法。
它的设计是为了检测比如直流、交流以及脉冲电流信号的有效值或者平均值。
它是在AT89C51单片机的基础上搭建硬件,配合c语言编程,通过keil软件和proteus软件将仿真结果显示出来。
最后与准确电流的对比,精确程度能达到98%。
本文只是进行了理论仿真,未进行实物搭建,对后续工作还有待于进一步研究。
[关键字]:
电流检测系统;单片机硬件;编程;仿真
DesignofIntelligentCurrentDetectionSystemBasedon
MCU
Abstract:
Thecurrentdetectionsystemisarelativelymaturetechnology,butthemicrocontroller-basedcurrentdetectionsystemisarecentlyemergingtechnology.Itsmainadvantageisthatmorethancurrentsignalscanbemeasuredanddisplayed.
ThisarticledescribesthecompositionanddesignmethodologyofdesignofintelligentcurrentdetectionsystembasedonMCU.ItisinordertodetectsuchasDC,ACandpulsecurrentsignalRMSoraverage.ItistobuildthehardwareonthebasisofAT89C51microcontrollerwithClanguageprogramming,KeilsoftwareandProteussoftwaresimulationresultsdisplayed.Finally,comparedwithaccurateandcurrent,theprecisionofthedetectionsystemcanreach98%.
Thisarticlerunatheoreticalsimulation,withoutbuildingphysicalstructures.Thefollow-upalsoneedsfurtherstudy.
Keyword:
Currentdetectionsystem;single-chip;hardware;programming;
simulation
绪论1
1电流测量系统的整体设计2
2电流检测系统的硬件设计3
2.1电流供给电路设计3
2.2数据采集及转换电路设计3
2.2.1.ADC0808简介3
2.2.2单片机与ADC0808接口设计6
2.3单片机显示电路设计7
2.3.1液晶显示器LM016L简介7
2.3.2LM016L与单片机接口设计11
2.4电流系统的转化电路12
2.4.1单片机I/O端口介绍12
3电流检测系统软件设计15
3.1AD转换和数据采集程序设计15
3.2电流检测系统的显示子程序15
3.3单片机内部数据传输程序和外部中断程序15
4数据转换计算16
4.1数据标定16
4.2数据采集16
4.3数据转换计算16
4.4数据验算16
5子程序流程图17
5.1ad模数转换和数据采集流程图及程序附录17
5.2LM016L显示流程图及程序附录19
5.3单片机内部数据传输程序和外部中断流程图及程序附录22
5.4单片机总流程图及程序附录23
5.5电流测量系统硬件电路图附录29
结论30
致谢31
参考文献32
绪论
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
基于单片机的电流智能检测系统的设计是利用单片机的多处理性能,来完成电流测量系统的智能控制。
这样可以很方便的实现快速的对多个电流信号进行实时检测。
国外对基于单片机的智能电流测量系统的技术研究较早,始于20世纪70年代。
显示采用模拟式的组合仪表,采集现场信息进行指示、记录和控制。
80年代末出现了分布式控制系统。
目前正开发和研制计算机数据采集控制系统的多音字综合控制系统。
现在世界各国的电流检测技术发展的很快,一些国家在实现自动化的基础上正向着完全自动化、无人化的方向发展。
我国对于电流测量技术的研究比较晚。
我国工程技术人员在吸收发达国家电流测控技术的基础上,才掌握了基于单片机的电流测量的技术。
从总体上正从消化吸收,检点应用阶段向实用化、综合性应用阶段过度和发展。
在技术上,我国的单片机智能测量电流的技术趋于成熟,但是在微电流测量这方面,由于单片机本身材料的缺陷使得我国与国外还有一定差距,还有待于发展。
国内许多厂商已经开始研究基于单片机的测量电流的系统,并且获得了一定的研究成果,在精度方面达到了一定的水平。
本课题可应用于测量,以及为科研领域提供精确的可供参考的数据。
在研究方法上,要将理论与实践结合起来,以严谨的工作态度来实现系统的仿真运行。
本次的毕业设计是应用单片机技术来实现电流的只能测量,重在掌握单片机技术,并且能从单片机的电流智能检测系统的设计中了解一些测量领域的知识。
1电流测量系统的整体设计
电流测量系统的总体设计如下(图1.1):
先由外部电路给ADC0808输入数据,然后ADC0808由单片机(AT89C51)编程控制实现自动转换,然后经过转换的数据传回单片机内,经过单片机处理,然后再经过LM016L液晶显示器显示出来。
其间需要通过其他的外围设备支持。
图1.1总体设计此次设计的电流测量系统采集的是平均电流和有效电流,限于技术水平和硬件条件,不能测量动态电流。
2电流检测系统的硬件设计
2.1电流供给电路设计
外部电流型号需要通过霍尔传感器将电流转换成为电压,然后由滑动变阻器和电
源共同组成电流供给电路,如图2.1所示:
图2.1电流供给电路
2.2数据采集及转换电路设计
2.2.1ADC0808简介
数据采集电路中需要用到A/D转换器ADC0808,先对其进行简单介绍:
ADC0808是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入
信号中的一个进行A/D转换。
1.主要特性
1)8路8位A/D转换器,即分辨率8位
2)具有转换起停控制端
3)转换时间为100μs
4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW
2.内部结构
ADC0808是CMOS单片型逐次逼近式A/D转换器,内部结构如图2.2.1所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近。
图2.2.1ADC0808
3.外部特性(引脚功能)
ADC0808芯片有28条引脚,采用双列直插式封装,如图2.2.2所示。
下面说明各引脚功能:
IN0~IN7:
8路模拟量输入端
2-1~2-8:
8位数字量输出端
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效
START:
A/D转换启动信号,输入,高电平有效
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZREF(+)、REF(-):
基准电压
Vcc:
电源,单一+5V
GND:
地
图2.2.2ADC0808外部引脚图
当电流通过IN0通道进入ADC0808时,通过单片机给其指令使其开始转换。
ADC0808的工作过程是:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的
极限参数:
电源电压(Vcc):
6.5V
控制端输入电压:
-0.3V~15V其它输入和输出端电压:
-0.3V~Vcc+0.3V贮存温度:
-65℃~+150℃功耗(T=+25℃):
875mW引线焊接温度:
①气相焊接(60s):
215℃;②红外焊接(15s):
220℃抗静电强度:
400V输出端注意:
out7为最低位-out0为最高位,out7-out0分别接单片机的P0.0到P0.7端
2.2.2单片机与ADC0808接口设计
根据ADC0808的功能及其工作过程,可将其与单片机的接口设计如图2.2.4所示:
图2.2.4单片机与ADC0808硬件接线图
2.3单片机显示电路设计
2.3.1液晶显示器LM016L简介
单片机处理过的数据要通过LM016L液晶显示器将结果显示出来。
所以这里有必要对LM016L进行简单的介绍:
LM016L液晶模块采用HD44780控制器,HD44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。
IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系,可以查看下面的ASCII码表。
CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM但愿,LM016L液晶模块的引脚如图2.3.1所示:
LCD1
LM016L
WRSREEDDSS
1234567891011213141
图2.3.1LM016L引脚图
引脚说明:
LM016L字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是
背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,
表2.3.1是LM016L的引脚功能
表2.3.1LM016L引脚功能
引脚
符号
功能说明
1
VSS
一般接地
2
VDD
接电源(+5V)
3
V0
液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)
4
RS
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器
5
R/W
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
6
E
E(或EN)端为使能(enable)端,下降沿使能。
7
DB0
底4位三态、双向数据总线0位(最低位)
8
DB1
底4位三态、双向数据总线1位
9
DB2
底4位三态、双向数据总线2位
10
DB3
底4位三态、双向数据总线3位
11
DB4
高4位三态、双向数据总线4位
12
DB5
高4位三态、双向数据总线5位
13
DB6
高4位三态、双向数据总线6位
14
DB7
高4位三态、双向数据总线7位(最高位)(也是busyflang)
15
BLA
背光电源正极
16
BLK
背光电源负极
寄存器选择控制表如下表2.3.2:
表2.3.2寄存器选择控制表
RS
R/W
操作说明
0
0
写入指令寄存器(清除屏等)
0
1
都busyflag(DB7),以及读取位址计数器(DB0~DB6)值
1
0
写入数据寄存器(显示各字型等)
1
1
从数据寄存器读取数据
注:
1.关于E=H脉冲——开始时初始化E为0,然后置E为1,再清0。
2.busyflag(DB7):
在此位为被清除为0时,LCD将无法再处理其他的指令要求。
工作时序:
读写操作时序如图2.3.2和2.3.3所示:
字符集:
LM016L液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
因为LM016L识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如‘A。
'图2.3.4是LM016L的16进制ASCII码表。
读的时候,先读上面那列,再读左边那行,如:
感叹号!
的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。
显示地址:
12345678910111213141516
00H01H02H03H04H05H06H07H08H09H0AH0BH0CH0DH0EH0FH
40H41H42H43H44H45H46H47H48H49H4AH4BH4CH4DH4EH4FH
LM016L通过D0~D7的8位数据端传输数据和指令。
显示模式设置:
(初始化)
00110000[0x38]设置16×2显示,5×7点阵,8位数据接口;显示开关及光标设置:
(初始化)
00001DCBD光标显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)
000001NSN=1(读或写一个字符后地址指针加1&光标加1),N=0(读或写一个字符后地址指针减1&光标减1)
S=1且N=1(当写一个字符后,整屏显示左移)
s=0当写一个字符后,整屏显示不移动
数据指针设置:
数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)其他设置:
01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。
通常推荐的初始化过程:
延时15ms
写指令38H
延时5ms
写指令38H
延时5ms
写指令38H
延时5ms
(以上都不检测忙信号)
(以下都要检测忙信号)
写指令38H
写指令08H关闭显示
写指令01H显示清屏
写指令06H光标移动设置
写指令0cH显示开及光标设置单片机通过以上指令集和相应的ASCII码表显示数据
图2.3.5LM016L与单片机的接口
2.4电流系统的转化电路
2.4.1单片机I/O端口介绍
转换电路的主要部分是单片机AT89C51,它也属于51单片机中的一类。
AT89C51能处理各类信号,在信号送达后单片机内的各个存储器和寄存器开始相应的动作来完成所要求的结果。
AT89C51有四个端口,P0,P1,P2,P3四个口,每个端口内部结构相同,但是所属职能有所不同。
图2.4.1为单片机的引脚图:
图2.4.1单片机引脚图
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能以吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“l时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节。
而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸
收或输出电流)4个TTL逻辑门电路。
对端口写“l,”通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与AT89C5l不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。
Flash编程和程序校验期间,Pl接收低8位地址。
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“l,”通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。
Flash编程或校验时,P2亦接收高位地址和一些控制信号。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“l时”,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表2.3.3所示:
表2.3.3P3口引脚的第二功能
端口引脚
第二功能
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口还接收一些用于Flash闪速存储器编程和程序校验的控制信号
单片机除了4个端口外,还有其他引脚,在这里简单介绍一下:
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的l/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
XTAL1:
振荡器反相放大器的及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
3电流检测系统软件设计
3.1AD转换和数据采集程序设计
数据采集是由ADC0808实现的,ADC0808是以逐次逼近原理进行模/数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换为了使ADC0808据采集和转换工作,需要给ADC0808引脚发入触发信号:
为了使ADC0808工作起来,需要有时钟信号clk,为了使AD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C51 单片机 智能 电流 检测 系统 设计