U6456U8L13876512131415161718194CLKRL7RL6RL5RL4DB0DB1DB2DB3DB4DB5DB6DB7IRQCSRDWRRESETCNTLSHIFTOUTB0OUTB1OUTB2OUTB3OUTA0OUTA1OUTA2OUTA3RL0RL1RL2RL3213938E1E2E3A0A1A2VCCY0Y1Y2Y3Y4Y5Y6Y716键盘列线151413121110971234MHDR1X4键盘行线1234MHDR1X4SL0SL1SL2SL3BD323334352312381片选22写10读11+5V937362KA0200UFGNDVCC31302928272625241S0S1中断1S2S3S4SN74LS07DU1AS5S6S7GNDSN74LS138NU7VCCY0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y10Y11Y12Y13Y14Y15242LED位选1234567891011131415161712345678910111213141516MHDR1X16LED段选码12345678MHDR1X823222120ABCD21819OE1OE2GND402021LED段选码128279DM54LS154J
图2-7 键盘显示电路
2.5 过量程报警模块
由于压力传感器L-PSIII 型的最大承受压力为20KG,本文的称重范围是10KG,若重物的重量超过了限定值,会影响测量结果。文中采用报警电路如图2-8所示,用于及时告知是否超量程使用,当单片机检测到超重信号时,从P0.3发出一个40KHz的方波进行报警提示。
图2-8过量程报警模块
9
3. 数字电子秤软件设计
3.1 系统软件设计
软件主程序包括显示程序、键盘处理程序、A/D转换程序、数据转换处理程序。控制器中AT89C52的P1.5为A/D中断请求输入线,INT1为键盘中断服务程序。A/D中断服务程序完成采样数据的存储;键盘中断服务程序完成扫描,判断数字键或功能键,若为数字将其数据送入数据缓冲区和显示缓冲区。若是功能键进入相应功能键处理程序。
主程序流程图如图3-1所示
系统初始化 A/D转换模块 数据处理 键盘中断 显示
图3-1 主程序流程
3.2 键盘软件设计
我们知道键盘和显示是人与微机系统打交道的主要设备。在本系统中我们采用8279可编程键盘/显示管理接口。利用8279可实现对键盘/显示器的自动扫描,以减轻CPU负担,并具有显示稳定、程序简单、不会出现误动作等特点。程序原理如下: 1. 键扫描子程序:主要判断有无键按下,利用8279的RL0~RL3和SL0~SL3端口判断键入数据的个数或没有输入字符。当RL0~RL3四位全为0时,便可判断无键按下, 2. 当判断有键按下后,就转向取键值子程序。首先取出行、列号进行拼装,得到所需的键号。然后与数OAH相比较,从而判断出是功能键还是数字键。若是功能键就转到功能键处理子程序;若是数字键就调用显示子程序进行显示。
3. 显示子程序。首先置显示缓冲区首址和计数长度,然后取显示数据转换为段选码,送到LED上显示。
10
3.2.1 键盘扫描
本系统中键盘控制采用中断方式实现,利用外部中断1端口来实现。微处理器平时周而复始扫描键盘,当发现有键按下时,首先判断是命令键还是数字键。若是数字键,则把按键读数存入存储器,并显示;若是命令键,则根据按键读数查阅转移表;以获得处理子程序的入口,子程序执行完后继续扫描键盘。图3-2为键盘扫描流程图
开始 扫描P2口 Y 去皮键 当前重量送入皮 Y 清单价 Y 累计键 单价清零 将金额累加 并清单价 Y 小数点? 建标志F=1 数字键? N 返回 Y F不为1 N Y 存入单价整数部分 存入单价小数部分
图3-2 键盘扫描流程图
3.2.2 数字显示
单片机确定哪个键按下时,通过SL0~SL3输出控制信号经74LS154译码器选择相应的LED位,在8279芯片 OUT0~OUT7输出 8位段数据,LED显示内容。如要换位显示则单片机检测BD是否输出低电平,若是74LS1547译码输出高电平,74LS138译码循环产生低电平,8位段数据输出端口也依次把公共阴极为低电平位的显示位中的内容显示出来,当这一过程很快显示时,人们就会在几个LED中看到了显示出来的不同内容。
11
3.3 A/D转换程序
在智能电子秤控制系统中,除了控制单元和执行单元外,还必须有反馈环节。在反馈环节中,最重要的就是对数据的采集。本文以AT89C52单片机为核心,设计一个基于单片机的数据采集系统,通过模拟电压形式输入系统,经AD 7705可以采集2路模拟量,精度为16位,并经多次采样,通过滤波,取得更精确的重量值。
启动A/D 设采样次数 中断 建立采样标志 N 采样F0是否建立? Y 读A/D数字量 存入片内RAM N 采样次数是否到? Y 采样值滤波取平均值 结束
图 3-3 AD7705 A/D流程框图
12
3.4 数据处理程序 3.4.1 重量转化
本课题中,A/D转换采用AD7705芯片,它是16位输出,重量计算要求精确到克,其输出值范围为0000000000000000B ~1111111111111111B转换为十进制数0~65535,而系统所要求输出重量范围0~10000g,所以我们进行线性参数的标度变换,
Wx=(Ws/Ns)Nx。Wx为实际重量值Ws,满量程重量10000g,Ns为16位二进制值,Nx为AD装换读取值,其量化单位为10000/65535=0.15。如下:为使技术方便我们将0.15=15/100,即化为定点数来算。
3.4.2 价格计算
价格计算公式S=U*Wx, S为价格 U为单价,Wx为实际测得重量值。
13