霍尔电流表课程设计
摘要 本文介绍了一种基于单片机的霍尔电流表的设计。该设计主要由四个模块组成:霍尔电流感器模块,A/D转换模块,数据处理模块及显示模块。传感器模块ACS712采集信号,A/D转换主要由芯片ADC0808来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。数据处理则由芯片ATC52来完成,其负责把ADC0808传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外,它还控制着ADC0808芯片工作。
该系统的霍尔电流表比较简单,所用的元件较少,成本低,且测量精度和可靠性较高。此霍尔电流表可以测量+20A的1路模拟电流值,并通过一个四位一体的7段数码管显示出来。
目 录
1引言„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„错误!未定义书签。
2 系统设计总体方案„„„„„„„„„„„„„„„„„„„„„„„„1 3 硬件电路设计„„„„„„„„„„„„„„„„„„„„„„„„„„1
3.1 霍尔传感器模块„„„„„„„„„„„„„„„„„„„„„„1 3.2 A/D转换模块„„„„„„„„„„„„„„„„„„„„„„„4 3.3 单片机部分„„„„„„„„„„„„„„„„„„„„„„„„11 3.4 复位电路和时钟电路„„„„„„„„„„„„„„„„„„„„13 3.5 LED模块„„„„„„„„„„„„„„„„„„„„„„„„„错误!未定义书签。
3.6 总电路„„„„„„„„„„„„„„„„„„„„„„„„„„16 4 程序设计„„„„„„„„„„„„„„„„„„„„„„„„„„„„错误!未定义书签。
4.1 程序设计总方案„„„„„„„„„„„„„„„„„„„„„„17 4.2 系统子程序设计„„„„„„„„„„„„„„„„„„„„„„17 5 仿真„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„错误!未定义书签。
5.1 软件调试„„„„„„„„„„„„„„„„„„„„„„„„„错误!未定义书签。
5.2 显示结果及误差分析„„„„„„„„„„„„„„„„„„„„20 结 论„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„错误!未定义书签。
参考文献„„„„„„„„„„„„„„„„„„„„„„„„„„„„„22 附录 程序代码„„„„„„„„„„„„„„„„„„„„„„„„„„„23
1.引言
传感器作为自动化仪器的触角担负着采集信息的重要任务,其中霍尔传感器以它的体积小、结构简单等优点在自动化生产中得到了广泛的应用。从原理上讲霍尔传感器能够测量与磁场、电场相关的物理量或能转换成这些参数的物理量,比如电流。在工业、汽车、商业和通信系统中,为了确保设备安全和人身安全,经常需要对设备的某些关键节点进行电流检测。新型线性电流传感器ACS712能有效克服传统检测方法存在的缺点,为工业、汽车、商业和通 信系统中的交流或直流电流感测提供经济 实惠的精密解决方案。
2.系统设计框图
系统主要有数据采集,数据处理,数据显示部分。
霍尔传感器 ACS712采集信号 ADC0808模数模块 ATC52单片机处理数据 四位数码管显示
3.硬件电路设计
3.1 霍尔传感器部分
霍尔传感器属于整个系统的数据采集部分,它将待测的电流量或者磁场场强转化为电压量。
3.1.1霍尔传感器的检测原理
3.1.1.1 霍尔效应
1
一个N型半导体薄片,长度为L,宽度为a,厚度为d,在垂直于该半导体薄片平面的方向上施加磁感应强度为B的磁场,若在其长度方向上通以电流I,根据N型半导体的导电原理,自由电子沿着与电流I相反的方向运动。在磁场中自由电子由于受洛伦兹力FL的作用,正负电荷将分别沿垂直于磁场和电流的方向向导体两端移动,并聚集在导体两端形成一个稳定的电动势UH ,这就是霍尔电动势,或称之为霍尔电压。这种现象称为霍尔效应。 霍尔电压的大小 : UH = KHIB 式中:KH 为霍尔元件的霍尔常数 I为流经霍尔元件的电流 B 为施加的磁感应强度
3.1.1.2霍尔传感器的工作原理
由霍尔电压的公式可知:对于一个成型的霍尔传感器来说,霍尔常数KH是一个固定的常数,因而UH与BI成正比例关系,只要通过测量电路测出霍尔电动势的大小,在B和I两个参数中,如果一个参数已知,就可以求出另一个参数,因而任何可以转换成电流或磁场强度的未知量均可利用霍尔元件来测量。转换成B和I的乘积的未知量也可以进行测量。
3.1.2 ACS712型集成霍尔传感器
ACS712内置有精确的低偏置的线性霍尔传感器电路,能输出与检测的交流或直流电流成比例的电压。具有低噪声,响应时间快(对应步进输入电流,输出上升时间为5us),50KHz的带宽,总输出误差最大为4%,高输出灵敏度(100 mV/A~185 mV/A),使用方便、性价比高、绝缘电压高等特点,主要应用于电动机控制、载荷检测和管理、开关式电源和 过电流故障保护等,特别是那些要求电气绝缘却未使用光电绝缘器或其它昂贵绝缘技术的应用中。
ACS712采用小型的SOIC 8封装,其引脚分布如图1所示,采用单电源5V供 电。各引脚的功能介绍如图2所示。其中,引脚1和2、3和4均内置有保险,为待
2
测 电流的两个输入端,当检测直流电流时,l 和2、3和4分别为待测电流的输入端和输出端。
引脚功能图
该器件主要由靠近芯片表面的铜制的电流通路和精确的低偏置线性霍尔传感器电路等组成。被测电流流经的通路(引脚l 和2,3和4之间的电路)的内电阻通常 是1.2mΩ,具有较低的功耗。被测电流通路与传感器引脚(引脚5~8)的绝缘电压>2.1kVRMS,几乎是绝缘的。流经铜制电流通路的电流所产生的磁场,能够被片内的霍尔IC感应并将其转化为成比例的电压。通过将磁性信号尽量靠近霍尔传感器来实现器件精确度的最优化。精确的成比例的输出电压由稳定斩波型低偏置 BiCMOS霍尔集成电路提供,该集成电路在出厂时已进行了精确的编程。稳定斩波技术是一种新技术,它给片内的霍尔元器件和放大器提供最小的偏置电压,该技术几乎可以消除芯片由于温度所产生的输出漂移。
ACS712内含一个电阻RF(INT)和一个缓冲放大器,用户可以通过FITER引 脚(第6脚)外接一个容CF与RF(INT) 组成一个简单的外接RC低通滤波器,由于内部缓冲放大器能消除因芯片内部电阻和接口负载分压所造成的输出衰减,所以外接的RC低通滤波器不会影响信号的衰减,且可进一步降低输出噪音并改善低电流精确度。此外,ACS712的响应时间比一般的器件缩短了两倍以上,非常适合保
3
护及高速应用。 3.1.3电路原理图
霍尔传感器
将Ip+和Ip-用排针引出用以接待测电流,在FILTER引脚与GND之间接一电容与其片内电阻构成低通滤波器。在芯片的线性范围内,Ip+与Ip-间加直流或交流电流时,VIOUT输出正比于输入电流的霍尔电压。将得到的霍尔电压接到单片机的AD口,由单片机进行数据的处理。
3.2 A/D转换模块
现实世界的物理量都是模拟量,能把模拟量转化成数字量的器件称为模/数转换器(A/D转换器),A/D转换器是单片机数据采集系统的关键接口电路,按照各种A/D芯片的转化原理可分为逐次逼近型,双重积分型等等。双积分式A/D转换器具有抗干扰能力强、转换精度高、价格便宜等优点。与双积分相比,逐次逼近式A/D转换的转换速度更快,而且精度更高,比如ADC0809、ADC0808等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送到单片机进行分析和显示。一个n位的逐次逼近型A/D转换器只需要
4
比较n次,转换时间只取决于位数和时钟周期,逐次逼近型A/D转换器转换速度快,因而在实际中广泛使用[1]。
3.2.1 逐次逼近型A/D转换器原理
逐次逼近型A/D转换器是由一个比较器、A/D转换器、存储器及控制电路组成。它利用内部的寄存器从高位到低位一次开始逐位试探比较。 转换过程如下:
开始时,寄存器各位清零,转换时,先将最高位置1,把数据送入A/D转换器转换,转换结果与输入的模拟量比较,如果转换的模拟量比输入的模拟量小,则1保留,如果转换的模拟量比输入的模拟量大,则1不保留,然后从第二位依次重复上述过程直至最低位,最后寄存器中的内容就是输入模拟量对应的二进制数字量[5]。其原理框图如图2所示:
输入电压 输入数字量 顺序脉冲发生器 逐次逼近寄存器 电压 比较器 ADC
图2 逐次逼近式A/D转换器原理图
3.2.2 ADC0808 主要特性
ADC0808是CMOS单片型逐次逼近式A/D转换器,带有使能控制端,与微机直接接口,片内带有锁存功能的8路模拟多路开关,可以对8路0-5V输入模拟电压信号分时进行转换,由于ADC0808设计时考虑到若干种模/数变换技术的长处,所以该芯片非常适应于过程控制,微控制器输入通道的接口电路,智能仪器和机床控制等领域[5]。
ADC0808主要特性:8路8位A/D转换器,即分辨率8位;具有锁存控制的8路模拟开关;易与各种微控制器接口;可锁存三态输出,输出与TTL兼容;转换时间:
5
128μs;转换精度:0.2%;单个+5V电源供电;模拟输入电压范围0- +5V,无需外部零点和满度调整;低功耗,约15mW[6]。 ADC0808的外部引脚特征
ADC0808芯片有2引脚,采用双列直插式封装,其引脚图如图3所示。
图3 ADC0808引脚图 下面说明各个引脚功能:
IN0-IN7():8路模拟量输入线,用于输入和控制被转换的模拟电压。 地址输入控制(4条):
ALE:地址锁存允许输入线,高电平有效,当ALE为高电平时,为地址输入线,用于选择IN0-IN7上那一条模拟电压送给比较器进行A/D转换。
ADDA,ADDB,ADDC:3位地址输入线,用于选择8路模拟输入中的一路,其对应关
系如表1所示: 表1 ADC0808通道选择表
地址码 对应的输入通道 C B A 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 6
1 1 1 IN7 START:START为“启动脉冲”输入法,该线上正脉冲由CPU送来,宽度应大于100ns,上升沿清零SAR,下降沿启动ADC工作。
EOC: EOC为转换结束输出线,该线上高电平表示A/D转换已结束,数字量已锁入三态输出锁存器。
D1-D8:数字量输出端,D1为高位。
OE:OE为输出允许端,高电平能使D1-D8引脚上输出转换后的数字量。 REF+、REF-:参考电压输入量,给电阻阶梯网络供给标准电压。
Vcc、GND: Vcc为主电源输入端,GND为接地端,一般REF+与Vcc连接在一起,REF-与GND连接在一起. CLK:时钟输入端。
3.2.3 ADC0808的内部结构及工作流程
ADC0808由8路模拟通道选择开关,地址锁存与译码器,比较器,8位开关树型A/D转换器,逐次逼近型寄存器,定时和控制电路和三态输出锁存器等组成,其内部结构如图4所示。
7
图4 ADC0808的内部结构 其中:
(1)8路模拟通道选择开关实现从8路输入模拟量中选择一路送给后面的比较器进行比较。
(2)地址锁存与译码器用于当ALE信号有效时,锁存从ADDA、ADDB、ADDC 3根地址线上送来的3位地址,译码后产生通道选择信号,从8路模拟通道中选择当前模拟通道。
(3)比较器,8位开关树型A/D转换器,逐次逼近型寄存器,定时和控制电路组成8位A/D转换器,当START信号有效时,就开始对当前通道的模拟信号进行转换,转换完成后,把转换得到的数字量送到8位三态锁存器,同时通过引脚送出转换结束信号。
(4)三态输出锁存器保存当前模拟通道转换得到的数字量,当OE信号有效时,把转换的结果送出。 ADC0808的工作流程为:
(1)输入3位地址,并使ALE=1,将地址存入地址锁存器中,经地址译码器从8路模拟通道中选通1路模拟量送给比较器。
(2)送START一高脉冲,START的上升沿使逐次寄存器复位,下降沿启动A/D转换,并使EOC信号为低电平。
(3)当转换结束时,转换的结果送入到输出三态锁存器中,并使EOC信号回到
8
高电平,通知CPU已转换结束。
(4)当CPU执行一读数据指令时,使OE为高电平,则从输出端D0-D7读出数据。
3.3 单片机部分 3.3.1 ATC51性能
ATC51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的只读程序存储器和128字节的随机存储器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的ATC51是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
ATC51功能性能:与MCS-51成品指令系统完全兼容;4KB可编程闪速存储器;寿命:1000次写/擦循环;数据保留时间:10年;全静态工作:0-24MHz;三级程序存储器锁定;128*8B内部RAM;32个可编程I/O口线;2个16位定时/计数器;5个中断源;可编程串行UART通道;片内震荡器和掉电模式[6]。
3.3.2 ATC51各引脚功能
ATC51提供以下标准功能:4KB的Flash闪速存储器,128B内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路,同时,ATC51可降至0Hz静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作,掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有工作直到下一个硬件复位。ATC51采用PDIP封装形式,引脚配置如图5所示[7]。
9
图5 ATC51的引脚图 ATC51芯片的各引脚功能为:
P0口:这组引脚共有,P0.0为最低位。这8个引脚有两种不同的功能,分别适用于不同的情况,第一种情况是C51不带外存储器,P0口可以为通用I/O口使用,P0.0-P0.7用于传送CPU的输入/输出数据,这时输出数据可以得到锁存,不需要外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;第二种情况是C51带片外存储器,P0.0-P0.7在CPU访问片外存储器时先传送片外存储器的低8位地址,然后传送CPU对片外存储器的读/写数据。P0口为开漏输出,在作为通用I/O使用时,需要在外部用电阻上拉。
P1口:这8个引脚和P0口的8个引脚类似,P1.7为最高位,P1.0为最低位,当P1口作为通用I/O口使用时,P1.0-P1.7的功能和P0口的第一功能相同,也用于传送用户的输入和输出数据。
P2口:这组引脚的第一功能与上述两组引脚的第一功能相同即它可以作为通用I/O口使用,它的第一功能和P0口引脚的第二功能相配合,用于输出片外存储器的高8位地址,共同选中片外存储器单元,但并不是像P0口那样传送存储器的读/写数据。
P3口:这组引脚的第一功能和其余三个端口的第一功能相同,第二功能为控制功能,每个引脚并不完全相同,如下表2所示: 表2 P3口各位的第二功能
10
P3口各位 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 Vcc为+5V电源线,Vss接地。
第二功能 RXT(串行口输入) TXD(串行口输出) /INT0(外部中断0输入) /INT1(外部中断1输入) T0(定时器/计数器0的外部输入) T1(定时器/计数器1的外部输入) /WR(片外数据存储器写允许) /RD(片外数据存储器读允许) ALE:地址锁存允许线,配合P0口的第二功能使用,在访问外部存储器时,C51的CPU在P0.0-P0.7引脚线去传送随后而来的片外存储器读/写数据。在不访问片外存储器时,C51自动在ALE线上输出频率为1/6震荡器频率的脉冲序列。该脉冲序列可以作为外部时钟源或定时脉冲使用。
/EA:片外存储器访问选择线,可以控制C51使用片内ROM或使用片外ROM, 若/EA=1,则允许使用片内ROM, 若/EA=0,则只使用片外ROM。
/PSEN:片外ROM的选通线,在访问片外ROM时,C51自动在/PSEN线上产生一个负脉冲,作为片外ROM芯片的读选通信号。
RST:复位线,可以使C51处于复位(即初始化)工作状态。通常C51复位有自动上电复位和人工按键复位两种。
XTAL1和XTAL2:片内震荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接C51片内OSC(震荡器)的定时反馈回路。
3.4 复位电路和时钟电路 3.4.1 复位电路设计
单片机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-51单片机有一个复位引脚RST,采用施密特触发输入。当震荡器起振后,只要该引脚上出现2个机器周期以上的高电平
11
即可确保时器件复位[1]。复位完成后,如果RST端继续保持高电平,MCS-51就一直处于复位状态,只要RST恢复低电平后,单片机才能进入其他工作状态。单片机的复位方式有上电自动复位和手动复位两种,图6是51系列单片机统常用的上电复位和手动复位组合电路,只要Vcc上升时间不超过1ms,它们都能很好的工作[1]。
图6 复位电路 3.4.2 时钟电路设计
单片机中CPU每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。CPU执行一条指令的各个微操作所对应时间顺序称为单片机的时序。MCS-51单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1为该放大器的输入端,XTAL2为该放大器输出端,但形成时钟电路还需附加其他电路[1]。
本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简,只需要一个晶振和 2个电容即可,如图7所示。
图7 时钟电路
电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是30±10pF,在这个系统中选择了33pF;石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是12MHz,因而时钟信号的震荡频率为12MHz。
12
3.5 LED显示系统设计 3.5.1 LED基本结构
LED是发光二极管显示器的缩写。LED由于结构简单、价格便宜、与单片机接口方便等优点而得到广泛应用。LED显示器是由若干个发光二极管组成显示字段的显示器件[6]。在单片机中使用最多的是七段数码显示器。LED七段数码显示器由8个发光二极管组成显示字段,其中7个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,其通过不同的组合可用来显示各种数字。LED引脚排列如下图8所示:
图8 LED引脚排列
3.5.2 LED显示器的选择
在应用系统中,设计要求不同,使用的LED显示器的位数也不同,因此就生产了位数,尺寸,型号不同的LED显示器供选择,在本设计中,选择4位一体的数码型LED显示器,简称“4-LED”。本系统中前一位显示电压的整数位,即个位,后两位显示电压的小数位。
4-LED显示器引脚如图9所示,是一个共阴极接法的4位LED数码显示管,其中a,b,c,e,f,g为4位LED各段的公共输出端,1、2、3、4分别是每一位的位数选端,dp是小数点引出端,4位一体LED数码显示管的内部结构是由4个单独的LED组成,每个LED的段输出引脚在内部都并联后,引出到器件的外部。
13
图9 4位LED引脚
对于这种结构的LED显示器,它的体积和结构都符合设计要求,由于4位LED阴极的各段已经在内部连接在一起,所以必须使用动态扫描方式(将所有数码管的段选线并联在一起,用一个I/O接口控制)显示。
3.5.3 LED译码方式
译码方式是指由显示字符转换得到对应的字段码的方式,对于LED数码管显示器,通常的译码方式有硬件译码和软件译码方式两种。硬件译码是指利用专门的硬件电路来实现显示字符码的转换。软件译码就是编写软件译码程序,通过译码程序来得到要显示的字符的字段码,译码程序通常为查表程序[3]。
本设计系统中为了简化硬件线路设计,LED译码采用软件编程来实现。由于本设计采用的是共阴极LED,其对应的字符和字段码如下表3.3所示。 表3.3 共阴极字段码表
显示字符 0 1 2 3 4 5 6 7 8 9
14
共阴极字段码 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH
3.5.4 LED显示器与单片机接口设计
由于单片机的并行口不能直接驱动LED显示器,所以,在一般情况下,必须采用专用的驱动电路芯片,使之产生足够大的电流,显示器才能正常工作[7]。如果驱动电路能力差,即负载能力不够时,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏,因此,LED显示器的驱动电路设计是一个非常重要的问题。 为了简化数字式直流电压表的电路设计,在LED驱动电路的设计上,可以利用单片机P0口上外接的上拉电阻来实现,即将LED的A-G段显示引脚和DP小数点显示引脚并联到P0口与上拉电阻之间,这样,就可以加大P0口作为输出口德驱动能力,使得LED能按照正常的亮度显示出数字,如图10所示。
15
3.6 总体设计电路
此电路的工作原理是:霍尔电流传感器ACS712采集电流信号,并转换成电压信号输出
(Vout=2.5+0.1I).模拟电压信号由ADC08008的IN0通道进入(由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低电平),经过模/数转换后,产生相应的数字量经过其输出通道D0-D7传送给ATC51芯片的P1口,ATC51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码传送给四位LED,同时它还通过其四位I/O口P2.0、P2.1、P2.2、P2.3产生位选信号控制数码管的亮灭。此外,ATC51还控制ADC0808的工作。其中,单片机ATC51通过定时器中断从P2.4输出方波,接到ADC0808的CLOCK,P2.6发正脉冲启动A/D转换,P2.5检测A/D转换是否完成,转换完成后,P2.7置高从P1口读取转换结果送给LED显示出来。
16
4:程序设计
4.1 程序设计总方案
根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图12所示。
开始
初始化
调用A/D转换子程序 调用显示程序
4.2 系统子程序设计 4.2.1 初始化程序
所谓初始化,是对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等[9]。 4.2.2 A/D转换子程序
A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图13所示。
17
结束
开始
启动转换 A/D转换结束? 输出转换结果 数值转换 显示 结束
图13 A/D转换流程图
4.2.3 显示子程序
显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示
18
方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms[10]。
在本设计中,为了简化硬件设计,主要采用软件定时的方式,即用定时器0溢出中断功能实现11μs定时,通过软件延时程序来实现5ms的延时。
五:仿真
5.1显示结果
1)当电流I为0时,输出数值为2.5
2)电流为1A,输出为2.61
19
5.2 误差分析
通过以上仿真测量结果可得到霍尔电流表与“标准”数字电流表对比测试表,如下表4所示:
表4 简易霍尔电流表与“标准”数字电流表对比测试表
标准值/v 测量值/V 0.00 0.50 1.00 1.50 2.00 2.50 0.00 0.51 1.00 1.51 2.00 2.50 绝对误差/V 0.00 0.01 0.00 0.01 0.00 0.00 20
3.00 3.50 4.00 4.99
3.00 3.50 4.00 5.00 0.00 0.00 0.00 0.01 由于单片机ATC51为8位处理器,当输入电压为5.00V时,ADC0808输出数据值为255(FFH),因此单片机最高的数值分辨率为0.0196V(5/255)。这就决定了电流表的最高分辨率只能到0.0196V,从上表可看到,测试电压一般以0.01V的幅度变化。
从上表可以看出,简易数字电流表测得的值基本上比标准电压值偏大0-0.01V,这可以通过校正ADC0808的基准电压来解决。因为该电压表设计时直接用5V的供电电源作为电压,所以电压可能有偏差。
21
参考文献
[1]胡健.单片机原理及接口技术.北京:机械工业出版社,2004年10月 [2]王毓银.数字电路逻辑设计.高等教育出版社,2005年12月
[3]于殿泓、王新年.单片机原理与程序设计实验教程.西安电子科技大学出版社,2007年5月
[4]谢维成、杨加国.单片机原理与应用及C51程序设计实例.电子工业出版社,2006年3月
[5]李广弟.单片机基础.北京航空航天大学出版社,2007年5月
[6]姜志海,黄玉清等著.单片机原理及应用[M] .北京:电子工业出版社.2005年7月
[7]魏立峰.单片机原理及应用技术.北京大学出版社,2005年
[8]周润景.Protues在MCS-51&ARM7系统中的应用百例.第一版.北京:电子工业出版社,2006年
[9]边春远等著.MCS-51单片机应用开发实用子程序[M] .北京:人民邮电出版社.2005年9月.
[10]苗红霞.单片机实现数字电压表的软硬件设计[J] .河海大学常州分校学报,2002,(03).
[11]宋凤娟,孙军,李国忠.基于C51单片机的数字电压表设计[J] .工业控制计算机,2007,(04).
22
代码:
LED_0 EQU 30H LED_1 EQU 31H LED_2 EQU 32H ADC EQU 35H CLOCK BIT P2.4 ST BIT P2.5 EOC BIT P2.6 OE BIT P2.7 ORG 00H SJMP START ORG 0BH LJMP INT_T0
START: MOV LED_0, #00H MOV P2, #0FFH MOV LED_1, #00H MOV LED_2, #00H MOV DPTR, #TABLE MOV TMOD, #02H MOV TH0, #245H MOV TL0, #00H MOV IE, #82H SETB TR0 WAIT: CLR ST SETB ST CLR ST JNB EOC, $ SETB OE MOV ADC, P1 CLR OE
23
MOV A, ADC MOV B, #51 DIV AB MOV LED_2, A MOV A, B MOV B, #5 DIV AB MOV LED_1, A MOV LED_0, B LCALL DISP SJMP WAIT INT_T0: CPL CLOCK RETI
DISP: MOV A, LED_0 MOVC A, @A+DPTR CLR P2.3 MOV P0, A LCALL DELAY SETB P2.3 MOV A, LED_1 MOVC A,@A+DPTR CLR P2.2 MOV P0, A LCALL DELAY SETB P2.2 MOV A, LED_2 MOVC A, @A+DPTR CLR P2.1 ORL A, #80H MOV P0, A
24
;显示子程序
LCALL DELAY SETB P2.1 RET
DELAY: MOV R6, #10 ;延时程序 D1: MOV R7, #250 DJNZ R7, $ DJNZ R6, D1 RET
TABLE: DB 3FH, 06H, 5BH, 4FH, 66H DB 6DH, 7DH, 07H, 7FH, 6FH END
25
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 99spj.com 版权所有 湘ICP备2022005869号-5
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务