严正长:电子秤设计
图3-5译码器74LS154N与8279的连接
本设计系统除了前面所述的四个结构外,还需要用到人机联系部件以便接收各种命令和数据,即价格,重量的数据,计算显示总价。集成芯片8279就是如上所述的一种功能较完善的键盘接口电路,它还具备显示接口的功能。8279芯片作为通用接口电路,一方面接受来自键盘的输入数据并进行预处理,另一方面实现对显示数据的管理和对数码显示器的控制。
本系统中有14位LED显示器,4×4键盘和8279的接口电路。图中键盘的行线接8279的RL0—RL3,8279选用外部译码方式,SL0—SL3经74LS138译码输出,连接键盘的列线,因显示位数比较多,所以要用到4线-16线译码器74LS154,SL0—SL3又由74LS154译码输出,经7407驱动后到显示器LED的各个位的公共阴极。输出线OUTB0—OUTB3、OUTA0—OUTA3作为一个8位段选码数据输出端口,控制LED显示器每一位数码管显示的内容,当从一位LED数码管向下一位切换时,由消隐输出线BD输出低电平,74LS154译码产生低电平,使74LS138输出全为高电平。此时,在8位段数据输出端口输出下一个LED显示位的显示内容。74LS138译码循环产生低电平,8位段数据输出端口也依次把公共阴极为低电平位的显示位中的显示内容分别显示出来,当这一过程很快显示时,人们就会在几个LED中看到了显示出来的不同内容。在连接32键以内的简单键盘时,CNTL、SHIFT输入端可接地。7407芯片是8279作为LED数码管显示器的段选码输出端口的同相驱动芯片。
12
华东交通大学毕业设计
4 智能电子秤的软件设计
智能电子秤软件系统设计的基本思想是充分利用微机丰富的软件功能,实现称重过程一系列要求,提高系统可靠性,使得系统性能价格比达到最优。智能电子秤作为一种实时性要求不是很高系统,用软件代替部分硬件功能很合算。
首先,我们通过对软件进行分析,确定那些任务是由软件来完成的。在本系统中,从软件功能来看,其包括执行软件和监控软件两类。执行软件,完成各种实质性的功能,如采集数据,进行滤波处理,价格计算,中断处理,重量、价格的显示都利用软件来完成,不仅使得电子秤的性能提高,以达最高性能价格比;监控软件,用来协调各模块和操作者之间的关系,如本系统中A/D转换、键盘与显示、数据处理各模块的工作。
其次,智能电子秤系统中有着大量的数据计算,各个模块之间进行信息传递,我们必须数据类型和结构进行规划,对系统内程序存储器、RAM、定时器/计数器和中断源的分配。
最后,完成以上工作后我们就可以进行编程了。在编程时,画出各功能模块的程序流程图,用合适的语言进行编写。 4.1主程序设计
软件程序的主要任务有:重量、单价、总价等参数的显示;数据管理;数据处理;数据运算等功能。
4.1.1主程序设计思路
电子秤软件设计的总体思想是:根据预先编制的程序对测量进行控制,完成自动诊断、自动清零、自动逻辑判断、自动存取数据完成重量的测试;搜集和处理测得数据,并通过对重量的测试,按各种参数之间关系,经计算后自动求出一系列有关未知参数,如重量、单价和总价。
监控软件采用模块技术设计,根据系统功能,将软件分为若干个功能相对独立的模块,为每一个模块设计程序流程图。该秤功能程序模块包括:系统初始化、A/D转换数据处理、键盘中断处理、显示模块,数据处理模块。 系统初始化 A/D转换模块
13
严正长:电子秤设计
数据处理 显示 图 4—1 主程序监控流程图
键盘中断 4.1.2 主程序工作原理
软件程序包括主程序、显示程序、键盘处理程序、A/D转换程序、数据转换处理程序。控制器中AT89C52的INT1为A/D中断请求输入线,INT0为键盘中断服务程序。A/D中断服务程序完成采样数据的存储;键盘中断服务程序完成扫描,判断数字键或功能键,若为数字将其数据送入数据缓冲区和显示缓冲区。若是功能键进入相应功能键处理程序。键盘上有数字键0~9和五个功能键,数字键用于输入商品单价、物体重量,功能键有清零、单价/总价转换显示、删除、小数点、加、乘。 (1) AT89C52输入输出端口定义如下: P0口——A/D转换数据采集 P1口——芯片8279与单片机的接口 P2.0、P2.1——采样值高低字节的读取 P2.7 ——8279的片选端
P3口——8279与ICL7109的控制端
(2) 外部中断INT0用于A/D转换服务程序
外部中断INT0完成A/D转换中断请求,包括数据采集及处理,当采集完一次申请中断,总共采集8次。
(3) 外部中断INT1用于键盘中断服务程
单片机外部中断INT1完成对键盘显示接口功能芯片8279的按键和数据状态显示的控制,并可输入单价,各种命令处理,显示价格、重量等参数。 (4) 定时中断T0用于A/D转换中断延时
电子秤作为一种称重仪器,对所称精确度要求颇高,所以必须通过数值滤波求的有效采样值,通过定时来完成这一系列的操作。我们定时0.5S,即定时为50ms,分10次来累计结果。
(5) 定时中断T2用于键盘中断延时
T2设为定时器状态,定时时间为13ms。在中断服务中首先扫描键盘,判断有无键按下。若有,则执行键识别程序。然后返回主程序进行其他操作。 (6) 初始化程序完成所有系统设置
系统初始化程序完成对键盘接口功能芯片8279初始化设置,完成片内RAM 划分,堆栈指针的设置。完成对各种功能程序段运行开关的设置,中断优先级的确定。
14
华东交通大学毕业设计
4.1.3 主程序流程框图
开机后,机器自检,检查称重显示是否为零。若称重显示不为零,则显示为错误
标志,并进行微调,使之显示为零;若称重显示为零,进行整机初始化,然后启动0.5S延时程序,并判断标志位是否到0.5S;如果到了,则进行称重及数据运算处理,否则直接将显示数据送显示缓冲区,接下来判别有无键按下,若有则进入键功能处理程序,若没有键按下,则返回主程序。
上电启动 自诊断有 显示错误标识 整机初始化 到0.5秒? 数据计算处理
清零 调清零子程序 清0.5到标志 数据处理,显示,输出 有按键否 键功能处理程序 数字键 清零
15 严正长:电子秤设计
图4—2 主程序流程框图
4.2系统初始化
系统上电后,对系统进行初始化。初始化程序[7]主要完成对单片机内专用寄存器的设定,单片机工作方式及端口的工作状态的规定、RAM自检、各标志位的设置、设置栈指针、分配内存空间、设定计数器/定时器的工作方式。
4.2.1 AT89C52的初始化
1. AT89C52作为系统中央控制单元,是系统[8]程序中断,数据处理中心,也是其它各模块纽带,对其初始化意义非常大。 (1)程序存储器的初始化
程序存储器用于存放程序、常数和表格,在执行程序时,从程序存储器中按地址依次取指令执行。AT89C52片内含有8K字节闪速可编程/擦除只读存储器。编址范围0000H~1FFFH; (2)数据存储器的初始化
AT89C52的数据存储器有256字节,编址为00H~FFH,内部分工作寄存器区(00H~1FH)、位寻址区(20H~2FH)、数据缓冲器区(30H~FFH)。
表2 RAM地址分布
30H~4FH 60H~6FH 采样值存储单元 价格存储单元 50H~5FH 70H~7FH 重量存储单元 显示缓冲单元 (3)堆栈指针在系统初始化时指向07H单元,我们根据需要让其在RAM区开辟堆栈区MOV SP,#2FH;从30H开始 堆栈,拟议存放数据采样值与各中间参数。 2. 定时器/计数器初始化
(1) 定时器/计数器T0初始化
在程序的开始处,我们设置0.5S定时来处理采样值。所以根据实际情况,我们设T0为定时器并且定时为50ms。因定时时间够大,所以采用16位定时/计数方式工作。所以T0设定为工作方式1,非门控方式,TMOD.2=0,M1=0,M0=1,GATE=0; 方式寄存器TM TH0、TL0初值计算 由于T=(65536-X)×1=50000
得 X=15536=3CB0H 即 TH0=3CH, TL=0B0H
(2)定时器/计数器T1初始化
我们设T1为计数器,也用16位定时/计数方式工作。所以TMOD.6=1, TMOD.5=0, TMOD.4=1,非门控制方式。
16