kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 设计应用> 基于单片机的LCD数字电流表的设计与实现
基于单片机的LCD数字电流表的设计与实现
张玲丽
(武汉职业技术学院 电子信息工程学院,湖北 武汉 430074)
摘要:本文中数字电流表的控制系统采用AT89S51单片机,A/D转换器采用ADC0809为主要硬件,实现数字电流表的硬件电路与软件设计。该系统的数字电流表电路简单,所用的元件较少,成本低,调节工作可实现自动化。数字电流表可以测量0~200 mA的8路输入电流值,并在LCD液晶显示屏上显示出来。
Abstract:
Key words :

摘 要: 本文中数字电流表的控制系统采用AT89S51单片机A/D转换器采用ADC0809为主要硬件,实现数字电流表的硬件电路与软件设计。该系统的数字电流表电路简单,所用的元件较少,成本低,调节工作可实现自动化。数字电流表可以测量0~200 mA的8路输入电流值,并在LCD液晶显示屏上显示出来。

关键词: 单片机;数字电流表;A/D转换器;液晶显示屏

0 引言

  在现实中,根据测试系统的要求,往往需要采集被测对象的各种参数,如电压、电流等,这些参数的采集是至关重要的,它们直接影响到整个测试系统的测试精度。在有些应用中,需要对电流进行检测,必须先将其电流信号转换为电压信号,然后才能实现A/D转换。常用的转换方法是在电路中加入精密电阻,由此将电流信号转换为电压信号[1]。这种方法的优点是测量简单方便,但是这种方法当电流很小时,从电阻上取得的电压值可能很小,影响测量精度,因而很难选择一个合适的阻值;其次,所得到的电流检测信号只有通过放大以后才能进入电路中的比较器,从而增加了电路设计调试时的复杂度。因此,需要采用电流/电压转换芯片,并结合单片机以实现对电流信号的检测。本文中采用精密电阻,克服了常规测量电流方法存在的测量范围小、测量误差大等缺点,可提高测量精度,同时采用单片机可实现自动检测。

1 硬件电路设计

  本设计旨在设计一款测量范围在0~200 mA、显示精度在小数点前一位的基于AT89S51单片机带液晶显示功能的电流表,经查阅多种相关资料,确定本设计的总体框图如图1所示。

001.jpg

  图1所示电路工作过程:将需要检测的电流信号经过I/V变换变为电压信号,将其输出的电压信号连接到ADC0809进行A/D转换,电压信号经过采样后,输出到单片机,单片机控制中断的过程以及数据的读取过程,最后通过控制液晶显示所读取的数据。

 1.1 I/V变换电路部分

  对本设计来说,由于精度要求并不高,故用有源I/V即可满足要求,有源I/V变换是利用有源器件——运算放大器和电阻电容组成的,如图2所示。

002.jpg

  该有源I/V变换电路利用同相放大电路,把电阻R1上的输入电压变成标准输出电压。该同相放大电路的放大倍数为:

F(A}U6II44TMA`R%E9A((CC.png

  若取R1=20 Ω,R2=100 kΩ,R3=100 kΩ,R4=25 kΩ,R5=10 kΩ,则当输入电流为0~200 mA时,对应于0~5 V的电压输出。

 1.2 A/D转换模块

  基于成本、功耗、分辨率、模拟电压转换范围等因素,此处选择ADC0809芯片。ADC0809与8051单片机的硬件接口有3种形式,分别是查询方式、中断方式和延时等待方式。A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。在本设计中,选择中断方式,即把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。

1.3 单片机模块

  该电流表可测量0~200 mA的直流电压,通过电位器调节产生,显示位数3位[2],工作电压5 V。通过A/D转换芯片ADC0809把模拟信号转换为数字量传送到单片机的P3口,并在P2口把转换的结果显示出来。在仿真软件Protesus[3]里选择元器件后连接电流表总图,如图3所示。

003.jpg

  本设计选用的AT89S51是ATMEL公司推出的高性能8位微控制器,由于ADC0809无片内时钟,时钟信号可由AT89S51的ALE信号经D触发器二分频后获得。ALE引脚的脉冲频率是8051时钟频率的1/6。本设计中单片机时钟频率采用6 MHz,则ALE输出的频率是1 MHz,二分频后为500 kHz,符合ADC0809对频率的要求。

  1.4 显示部分

  本电流表的显示[4]选择LCDl602型LCD,它具有电流小、功耗低、体积小、字迹清晰、美观、方便、使用寿命长、无电磁辐射等优点。从图3中可看出其与AT89S51的P0口相连,其DO~D7为8位双向数据线,VSS为地电源,VDD接5 V正向电源,VEE为液晶显示器对比度调整端,接正向电源时对比度最弱,而接地电源时对比度最高。该引脚通过一只1 kΩ的电位器来调整其对比度。RS为寄存器选择引脚,RS为高电平时选用数据寄存器;RS为低电平时选用指令寄存器。RW为可读写信号引脚,RW高电平时为读操作;RW低电平时为写操作。当RS和RW共同为低电平时则写入指令或者显示地址;当RS为低电平、RW为高电平时为读忙信号;当RS为高电平、RW为低电平时为写人数据。E为使能端,当E由高电平跳变为低电平时,LCD液晶模块开始执行命令。

2 电流表软件设计

  本电流表的主程序流程包括:系统初始化、中断处理程序、数值转换程序、显示处理程序。较关键的是数据采集部分和显示部分。

  2.1 数据采集部分

  本部分程序设计的思想如下:首先由ADC0809采集数据,采集完成后单片机通过中断将数据读入,然后将所得十六进制数转换成十进制数,将此十进制数的百、十、个位分别取出,在预先设置好的表中查出其所对应的显示指令并显示出来。以下为数值转换的主代码[5]。

  codes=PORT;//将中断值赋予codes

  codes1=(codes&0xf0)>>4;//取出codes的高4位

  codes0=codes&0x0f;//取出codes的低4位

  code_d=codes1*16+codes0;//将codes转化为十进制数

  bai=code_d/100;//将code_d的百位取出

  shi=code_d/10%10;//将code_d的十位取出

  ge=code_d%10;//将code_d的个位取出

2.2 数值显示程序

  这部分程序首先要将单位mA显示出来,因为这单位是不变的。要把测得的数值在液晶屏上显示出来时,此处调用一个getchar函数。在这个函数中,用了一个do{}while语句。在此语句的一开头首先测试液晶模块是否空闲,若不空闲则等待其空闲,当液晶空闲时,执行嵌套switch/case语句。由于要显示三个数字,所以设定了一个变量i,当i=0时显示百位,当i=1时显示十位,当i=2时显示个位。显示数字时可选择查表法。先建立三个表,每一位对应一个表。以下为显示十位的例子。

  case 1:

  {

  PA=TABLE2[shi*2+t];

  t++;

  }break;

  显示完成后,进行适当的延时以保证显示的稳定性。

3 结论

  在本次设计中,通过使用Proteus绘制电路图,用C语言编写程序,程序运行完毕后,电压表的显示屏上就可以显示出电流数值来。调节电位器,显示数值就会发生变化。电压表的最小显示值是0 mA,最大显示值是200 mA,这与设计目的一致,1 s内大约可以测量2次电压值。

参考文献

  [1] 柳金龙.浅谈数字电压表的特点[J].中国计量,2004(8):43-44.

  [2] 王韬.3位半积分式A/D转换DC电压表[J].电子设计工程:电子世界,2002(2):44-45.

  [3] 周润景,张丽娜.刘映群.PROTEUS入门使用教程[M].北京:机械工业出版社,2007.

  [4] 马俊,刘晓林.智能键盘字符输入及LCD显示系统设计[J].电子设计工程,2009,17(1):66-68.

  [5] 马忠梅,籍顺心,张凯,等.单片机的C语言应用程序设计(第3版)[M].北京:北京航空航天大学出版社,2003.


此内容为AET网站原创,未经授权禁止转载。
Baidu
map