单片机多功能人体秤设计 第8页

单片机多功能人体秤设计 第8页
4  软件系统设计
4.1  主控模块软件设计的功能要求
1.通过A/D转换采集体重数据并送缓冲区,等待单片机的处理。
2.通过控制步进电机的走动,计算出被测者的身高并送缓冲区等待单片机的处理。
3.通过程序将时钟芯片的年、月、日、时、分、秒的数据放入缓冲区,等待单片机的处理。
4.通过程序将主控部分与语音模块达成通信协议,并将缓冲区的身高体重时间等数据完成发送。
5.能将身高体重等数据通过串行接口传送给打印机打印结果。
其流程图如图4-2-1所示。
4.2  程序设计
4.2.1  秤重子程序设计
ICL7135有自己的外部端口,单片机可通过对ICL7135进行一次写指令来启动ICL7135,且其只进行一次A/D转换,并不断的输出数据。将/STB与中断口INT0相连接,可实现中断,当进行A/D转换时/STB为高电平。在A/D转换结束后,/STB出现5个负脉冲。可利用/STB的下降沿来请求中断。每个/STB负脉冲出现之时正是相对应的位驱动信号(D5~D1)的中间,同时B8~B1是相应位的BCD码。所以软件设计是采用连续响应5次中断,读出5个BCD码。其流程图如图4-2-2所示。
4.2.2  测量身高子程序
    因为采用L297+L298对步进电机进行驱动和控制,所以在软件设计方面只需考虑脉冲计数、控制电机正反转和L297的使能端的控制。可分别用单片机P1口的三个管脚分别对其进行控制。
    因为步进电机所带动的齿轮周长为25厘米,而380个脉冲才能带动齿轮走动一周,脉冲频率为1MS/步,压头板的高度为2米。由可得公式
2000毫米-脉冲数*25厘米/380=被测者的身高,测量身高的软件设计围绕此公式来进行编写。其流程图如图4-2-3所示。
4.2.3  读取时间子程序
DS1302中存放秒,分,时的单元(地址分别为00H,02H,04H)的内容始终表明现时时间。存放时、星期几、日、月份和年的单元(04H,06H,07H,08H,09H)始终表明现时的日期。这存放时间的三个单元和存放日期的四个单元组成全部存放实时时钟的存放单元。为了使这七个单元始终表明准确的实时时钟,就需要根据现时时间不断的对他们进行数据更新。DS1302每秒对实时时钟更新一次。
4.2.4  串行通信子程序
主控模块与语音部分的通信采用串行通信模式3,采用定时器T1工作在模式2做波特率发生器。发送方是把片内50H~5FH单元中的数据从串行口输出。甲乙双方使用偶校验,发送方通过对TB8置1和置零来保证发送偶数个1,若为偶数1,表示接收正确,否则,接收出错。甲乙双方都可以接收和发送,并且采用查询方式接收和发送数据。
在使用串行口前,应对串行口进行初始化编程,主要是设置定时器T1的工作模式、装载初值,以满足波特率的要求,确定串行口的工作模式及控制设置。
对于主控模块与微型打印机的通信也可以看作是两个单片机之间的串行通信,因为微型打印机部分有自己的单片机控制。所以其通信与主控部分与语音部分的通信是一样的原理。其流程图如图4-2-5所示。
5   系统调试
5.1软件调试
软件用伟福6000进行调试,调试通过后就可以连接硬件仿真了。
开始软件调试时,我遇到了一些问题。比如输入的语句明明正确,可是在伟福汇编器上编译总是无法通过。后来经过陈旭老师的指导才明白了伟福汇编器与Intel汇编器在书写格式上除了大部分相同外有一些不同,例如包含头文件伪指令include指令,伟福格式为:incude“文件名”, Intel格式为:$inlcude(文件名)。还有就是我在伟福环境下调试程序时系统提醒JB语句跳转出范围,经过查书是因为JB的跳转范围是上下128字节,超出这个范围就是跳转出范围。而且因马虎引起的错误也很多。
5.2  硬件调试
1. 首先是焊接的顺序问题。焊接的顺序很重要,应该是应该按功能划分的器件进行焊接,顺序是功能部件的焊接--调试(OK)--另一功能部件的焊接,这样容易找到问题的所在。
2. 如果在调试按功能划分的器件上出现问题,可以按以下步骤进行:
1)检查原理图连接是否正确。
2)检查原理图与PCB图是否一致。
4)用万用表检查是否有虚焊,引脚短路现象。
5)查询器件的DATASHEET,分析一下时序是否一致,同时分析一下命令字是否正确。
6)通过示波器对SRAM各个引脚进行检查,发现地址线都是有信号的,而数据线无信号出现,才找到问题所在。
7)用别的的口线进行控制,看看能不能对其进行正常操作,多试验,才能找到问题出现在什么地方。
3. 有可能的情况下,最好焊两块板子以上,这样才好有个比较,硬件上很小的问题有很多时候是很难发现的。
5.3 1302调试
DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5~D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入), D0=1,指定读操作(输出)。
     要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F以上)。虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的3.6V充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。100 μF就可以保证1小时的正常走时。DS1302在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。
     DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。
 6  结论
经过几个月的学习和设计,基本上完成了多功能人体秤主控模板的设计工作。通过前期的课题调研,查阅了大量的资料,大致了解了人体秤的发展现状,基于需求分析和性价比,提出了多功能人体秤的设计方案。文中提出利用PIC16F877单片机为主控,根据人体秤测量身高和体重的基本工作原理完成了系统硬件部分的电路设计。在设计的过程中,从高精度智能型的角度考虑,使用了转换精度比较高的10A/D转换器ICL7135,并使用了准确度高、稳定性好的CLZ-68传感器及仪表放大器INA126预处理电路组成采样电路完成实时体重数据采集的目的。采用脉冲分配芯片L297和功率驱动芯片L298的组合控制四相八拍的步进电机的走动测量人体的身高,用硬件的方法代替大量的软件设计,缩短了设计周期。
在完成了身高体重的测量后将数据送缓冲区,接下来要做的是和键盘显示、语音、打印机通过RS232串口通信将所测数据分别送给他们进行报语音、显示和打印。实验表明,本论文所提出的智能型的设计方案是可行的。
    本系统方案设计合理,使用性强,可靠性高,并具有很强的抗干扰能力。随着电子技术的广泛应用,多功能人体秤的智能化必将成为一种发展趋势,智能型多功能人体秤可靠性高、使用方便, 应用前景将更为广阔。
本次设计内容涉及了很多方面,包括了单片机、自动化控制、模拟电路、数字电路、电子技术、传感器等多领域的知识,这次设计是对大学知识系统化、深层次化。
以前所学的知识有很多都忘记了,也有很多不会的,通过这次设计学会了很多东西,更学会了独自分析问题、处理问题的方法,可以说达到了举一反三的目的。为以后工作、学习都打下了比较坚实的基础。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有