实 用 电 子 称
摘要
本设计由五个模块电路构成:L-PS型称重传感器、前置放大器、AD574模数转换器、单片机键盘处理模块、液晶显示模块。L-PS型称重传感器能够将0到10公斤的重量转换为0到10毫伏的电压信号,感应灵敏。前置放大器将压力传感器的输出通过放大,将0到10毫伏的电压放大到0到5伏,具有较高的共模抑制比。AD574是单片高速12位逐次比较型A/D转换器,内置双极性电路构成的混合集成转换芯片,具有外接元件少,功耗低,精度高等特点,并且具有自动校零和自动极性转换功能,只需外接少量的阻容件即可构成一个完整的A/D转换
器。单片机键盘处理模块除可以对7289实行实时控制外,还可以进行采集数据的处理及液晶的显示。
一、 方案论证与比较 1、
方案一:
微弱电压信号放大器件
欲采用典型的OP07应用电路-- 两极跟随器,之后是两个负反馈的放大
器。但根据实际测量发现,其输出不稳,偏置电压大,且要不断进行手动调零,,所以不采用OP07。 方案二:
其中MAXIUM公司生产的icl7650是一个斩波稳零运放,具有高精度,低漂移,输出稳定的特点。而且使用时不需要低通和高通滤波器,通过CMOS电路的巧妙设计基本上消除了由于斩波开关而造成的尖峰泄露。其输入电压介于3和8负之间使用安全,且容易提供。由于ICL7650具有相当好的性能,本设计采用它。
2、模数转换器
方案一:
AD0809是CMOS集成电路,属于逐次逼近比较型8位模数转换器,转换时间为100 us,数据输出端内部具有三态输出锁存器,可与单片机数据总线直接相连;而且有8路模拟开关,可直接连接8个模拟量,并可程控选择对其中一个模拟量进行转换。但由于其转换慢,精度更是达不到要求。输入电压最大是5伏电压,因此,其精度为5/256= 0.019,超出了题目要求误差±0.005。 方案二:
AD574A是单片高速12位逐次比较型A/D转换器,内置双极性电路构成的混合集成转换显片,具有外接元件少,功耗低,精度高等特点,并且具有自动校零和自动极性转换功能,只需外接少量的阻容件即可构成一个完整的A/D转换器。其性能指标为:
非线性误差:小于±1/2LBS或±1LBS 转换速率:25us
模拟电压输入范围:0—10V和0—20V,0—±5V和0—±10V两档四种
电源电压:±15V和5V 数据输出格式:12位/8位
芯片工作模式:全速工作模式和单一工作模式
其精度为5/2048=0.002,远远小于题目要求误差±0.005。且其价格明显低于其他同类产品(如MAX197),因此,我们选用了此芯片,作为模数转换器。
3、键盘处理模块
方案一:
根据题目要求,要用16个按键。用电路直接扫描一个4*4键盘,其中P1口的高四位作为行驱动线,P1口的低四位作为列读入线。每隔40msP1口高四位的行驱动线被逐次拉低,以免键盘的颤动干扰,对用户的输入进行正确的识别。考虑到要用到整个P1口,要不断通过软件扫描来读取按键,且要对按键是否对扰动进行判断,使系统的实时性和稳定性有一定的限制。 方案二:
ZLG7289B具有SPI串行接口功能可同时驱动8位共阴式数码管(或64只独立LED)的智能显示芯片,该芯片同时可连接多达64键的键盘矩阵,单片即可完成LED显示﹑键盘接口的全部功能。ZLG7289B内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式,此外,还具有多种控制指令,如消隐﹑闪烁﹑(循环)左移﹑(循环)右移﹑段寻址等。ZLG7289B具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口且内含去抖动电路。
串行接口(防止引起寻址时内存管理出错),无需外围元件可直接驱动LED; 各位独立控制译码/不译码及消隐和闪烁属性;
(循环)左移/(循环)右移指令; 具有段寻址指令,方便控制独立LED; 64键键盘控制器,内含去抖动电路; 工作电压2.7V~6.0V。
采用7289芯片,减少了口的使用量,并具有自动去抖功能,解决了上述方案的缺点。
4、显示界面方案
这是决定系统使用是否具有可视性、动态性、实用性的关键。 方案一:
采用LED显示。尽管本设计中采用了ZLG7289B芯片来控制键盘扫描及LED显示,但显然这只能显示非常有限的符号和数字。对于本设计复杂的汉化功能是不相适应的。 方案二:
采用LCD显示。本设计为方便显示中文及各种字符选用金鹏公司的带中文字库的128*64点阵式LCD。
权衡之后,我们采用方案二,用以完成商品名称单价等设定的显示以及
清单和其他功能的处理
二、 系统设计 1、总体系统图
传感器采集数据 放大器放大信号 A/D转换 键盘输入 单片机处理控制 LCD显示
2、原理分析和说明
(1) 压力传感器说明
本系统采用济南金钟公司生产的L-PS型系列称重传感器。其为悬臂梁式结构,进行了四角调整,具有线性度好,灵敏度高,滞后,蠕变小,使用可靠等优点。主要用于电子计价称,案称及其他专用电子称。 主要技术参数: 技术参数 额定载荷 灵敏度 非线性 滞后 重复性 蠕变 蠕变恢复 零点输出 零点温度系数 额定输出温度系数 输入电阻 输出电阻 绝缘电阻 供桥电压 单位 kg mV/V %FS ±0.02 %FS/30min %FS %FS/10℃ %FS/10℃ Ω Ω MΩ V ±1 ±0.02 425±25 350 +5 /-3 ≧5000 12(AC/DC) 技术指标 10 1.8±0.08 温度补偿范围 允许温度范围 允许过负荷 四角误差 接线方式
(2)测量放大器基本原理
℃ -10±50 ℃ -20±60 %FS 120 %FS ±0.02 输入:红(+)白(-) 屏蔽:黄 输出:绿(+)蓝(-) 传感器输出的微弱信号必须经过放大才能被AD转换器接收处理,所以放大器是电路中必不可少的部分。本设计采用1片ICL7650放大器组成放大倍数为1000的负反馈电路。采用负反馈的连接方式,因为负反馈的性能稳定,能有效地防止产生自激振荡,从而防止出现正负饱和状态。ICL7650是典型的斩波稳零放大器,经实践证明具有非常好及其稳定的放大性能,所以已构成的放大电路输出稳定且能充分满足系统所需的放大要求。具体放大电路已如下图所示。 放大倍数的计算:
V0=(Vi2-Vi1)*R4/R1 其中R1=R2=0.5K,R4=100K
(3)模数转换模块AD574基本原理
前述方案论证中已经介绍过该芯片的特性及使用参数。在这个电子秤的设计中通过8052单片机与AD574A进行数据指令的传输,其中还使用了74LS00与非门电路,逻辑控制信号由(、
和A0)由8052的P1发出,用于控制AD574A
的工作过程。A/D转换器的数据输出通过P0数据总线连至8052,由于我们只使用了8位数据口,12位数据分两次读进8051。当8051的p3.0查询到STS端转换结束信号后,先将转换后的12位A/D数据的高8位读进8051,然后再将低4位读进8051。这里不管AD574A是处在启动、转换和输出结果,使能端CE都必须为1,因此将8051的写控制线和读控制线通过与非门74LS00与AD574A的使能端CE相连。我们将AD模块通过一个扩展板与单片机相连,实际连线图已用Protel软件绘出,示于下面。
+51234567891011121314GND+15R?GND-15POT2+15U3+V12/8CSA0R/CCEV+REFOUTAGNDREFINV-BIPOFF10V IN20V INAD574STSDB11DB10DB9DB8DB7DB6DB5DB4DB3DB2DB1DB0DGND2827262524232221201918171615GND123456789101112131415161718192021P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RSTRXDTXD/IN0/IN1T0T1/WR/RDXTAL1XTAL2VSSVCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7/EAALE/PSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.04039383736353433323130292827262524232221RES2POT2-15RES23A74ALS00GND
(4)键盘控制模块基本原理
如前述,设计中应用周立功公司所开发生产的芯片ZLG7289来控制键盘。该芯片应用简单,具有非常强大的功能。不仅给软件编程带来许多方便,给各个用户的使用也带来了很大的便利。因为该芯片已自带了按键去抖动功能,和各位独立控制译码的便利功能。
OUTDS7OUTDS6OUTDS5OUTDS4OUTDS3OUTDS2OUTDS1OUTDS0cmcmcmcmcmcmcmcmcmcmcmcmcmcmcmA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpA1B2C3D4E5F6G7DP8DPYaabcfbgdeecdfdpgdpcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmDS7DS6DS5DS4DS3DS2DS1DS0C4R13VCCDPPR5NUMFNUM7SAC5R6NUMEAAANUM612MHZU11C6SBR7NUMDBBBNUM5SCVCCU4C71234567891011121314RTCCVCCNCGNDNC/CSCLKDIO/KEYSGSFSESDSC/RSTRCCLKODIG7DIG6DIG5DIG4DIG3DIG2DIG1DIG0DPSASB2827262524232221201918171615SDOUTDS7OUTDS6OUTDS5OUTDS4OUTDS3OUTDS2OUTDS1OUTDS0DPPSASBR8NUMCCCCNUM4R9NUMBDDDNUM3P1.3P1.4P1.5keySGSFSESDSCSER10NUMAEEENUM2SFR11NUM9FFFNUM1U?RES2SGR12NUM8GGGNUM0U?SGSFSESDSCDPPRES2Rp2
三、系统测试与数据分析 1、测试仪器
FLUKE175数字式万用表 伟福仿真器 256MPC机 2、测试方法
先分别调试各单元模块,调通后再进行整机调试,以提高效率。具体步骤可用下图表示:
前置放大 123456789SASB键处理 键盘显示 数据采集 液晶显示 cmcm+
3、测试数据
称重测试:将砝码一次加重测试,测试次数:6次 如下所示:
次数 重量(g) 显示(kg) 1 5 0.006 2 25 0.028 3 50 0.048 4 100 0.102 5 200 0.200 6 1000 1.003
电压测试:从传感器输入电压(u1)再由放大器输出的电压(u2),测试次数:6 次数 U1 v U2 v 1 0.000 0.000 2 0.002 2.010 3 0.003 3.130 4 0.005 5.100 5 0.006 6.200 6 0.007 7.210 放大倍数约为:1000,能达到实验要求。
四、 软件设计
整个系统软件共分三部分:
(1)、主控程序,主要来控制键扫描程序;
(2)、键处理程序,利用16键控制单价设定、金额、重量和清单显示等功
能;
(3)、 T0中断子程序,用52内部自带的定时器0来控制液晶的显示,每
100ms显示一次。
在软件编程中对于AD转换器输出的电压信号执行以下操作
V=VOUT/0x7ff*5 其中 V为实际电压值,VOUT为AD转换输出的12位数字电压,值得特别一提的是,软件中编制了一个程序对输入信号进行了滤波。
整个程序的流程图如下页所示:
五、 小结
整个电路本着简单可靠,选用低价格通用元器件的原则完成了本设计任务。但是,系统还有很多需要改进的地方,例如:AD574电路设计时没考虑端口连接可能会对液晶造成影响,导致显示不稳定,设计中考虑较少,放大电路的精度和稳定性也有待提高。 此外,也可扩展打印机和更强大功能的键盘以增加实用性。
Abstract
Our design is composed of five departments,which are L-PS pressure sensor,amplifier,A/D574 converter,keybord and LCD.
As the design is based on the theory of measuring with high accuracy ,the experiment result shows that our theory is correct.
Sensitive sensor L-PS can produce 0-10mV electric signal and amplifier ICL7650 can amplify it to 0-10V .AD574 has many fine features so that it can be easily used to made a convert circuit. The microcontroller can control 7289, LCD and deal with the sampling data simultaneously.
Key words: microcontroller system, amplifier ,convert circuit ,sampling data
参考书目:
1、高海生 杨文焕 《单片机应用技术大全》 西南交通大学出版社 1996 2、余载全 李玉和 《PROTEL实战演习》 人民邮电出版社 2000 3、《单片机典型模块设计实例导航》 人民邮电出版社 2004 4、《全国大学生电子设计竞赛作品金选》 北京理工大学出版社 2003 5、马忠梅 刘滨 《单片机C语言WINDOWS环境编程宝典》 北京航空航天大学 2003
2004-9-13
源程序列表:
#include #define ADCOM XBYTE[0xf8ff] // 使A0=0, R/C=0, CS=0 #define ADLO XBYTE[0xfeff] // 使R/C=1, A0=1, CS=0 #define ADHI XBYTE[0xfcff] // 使R/C=1, A0=0, CS=0 #define uint unsigned int #define uchar unsigned char sbit ZLG7289_CS = P1^3; sbit ZLG7289_CLK = P1^4; sbit ZLG7289_DIO = P1^5; sbit KEY = P1^6; bit aa=0x3f; sbit r=P3^7; sbit w=P3^6; sbit DI=P1^7; //数据命令信号 sbit RW=P3^4; //读写信号 sbit CS=P3^5; sbit A0=P3^1; sbit RC=P1^2; sbit E=P1^0; //液晶使能端 float data zonge; float data weight,weight1; float data danjia; float data chip; float data moneynew; uint data get=0; uchar data danjia1[6]; uint xdata receive[100]; float xdata paper0[10]; //单价缓冲区 float xdata paper1[10]; //重量 float xdata paper2[10]; //金额 uchar data paper3[10]; //商品名称序号 char code name[10][40]={\" 孝心公司: 西瓜\娃哈哈公司: 牛奶\浪潮公司: 打印纸\水之星公司: 玩 具\小丸子食品: 薯条\小王子食品: 麦烧\营运系列: 锅巴\上好佳公司: 果糖\天堂系列: 面具 \集味村: 蛋黄派\自拟的十种商品名称 uchar data x=0,m=0,set_name,set_waiter,k,key1; sbit adbusy=P3^0; /* STS */ /*延时子程序*/ void delay(uint time) { uint i; for(i=0;i