本 科 毕 业 设 计
第 31 页 共 48 页
流的采样是以每秒钟36.41次的速度对流入或者流出电流进行自动采集,而电压与温度不会自动采集,必须通过单片机发出电压、温度转换命令(采集命令)之后,才能对电压、温度的寄存器读取数据操作。
2)剩余电量检测
为了能够功能更加准确和科学的表征蓄电池的剩余电量,通常用荷电状态来表征蓄电池的剩余容量,即SOC(State Of Charge),它是对蓄电池剩余容量状态的重要参数,SOC不能直接通过测量获得,它可用电流积分累加(ICA)寄存器的值求得。DS2438对电池剩余电量的测量是借助其内部的电流积分累加器(ICA)实现的。ICA寄存器的值是由DS2438定时自动测量电池电流后更改的,存放的是流入、流出电池总电流的净累加值, 无需对其进行控制,只需单片机读出ICA寄存器的值,然后将读出的值代入公式,剩余电量=ICA/(2048*RSENS)(式中RSENS的单位为Ω),便可得到电池的剩余电量。剩余电量检测的流程图见图4.6。
结束数据修正及显示 发送读ICA寄存器命令 N 总线应答 Y 发送ROM命令 开始初始化命令 读取总线数据 图4.6 剩余电量检测流程图
在读取寄存器的值时,为防止读取错误,先要检查DS2438是否正在修改寄存器的内容,这可通过对状态/标志寄存器中的NVB位加以判断。
本 科 毕 业 设 计
4.4 显示电路子程序模块
4.4.1 1602液晶显示基本操作时序
第 32 页 共 48 页
1602有四种基本操作时序,主要有读状态:输入为RS=L, R/W=H,E=H,输出为D0-D7=状态字;写指令:输入为RS=L,R/W=L,E=高脉冲,D0-D7=指令码,输出无;读数据:输入为RS=H,R/W=H,E=H,输出为D0-D7=数据;写数据:输入为RS=H,R/W=L,E=高脉冲,D0-D7=数据,输出无。 4.4.2 1602指令说明
1602液晶模块内部的控制器共有11条控制指令,见表4.2。
表4.2 1602液晶屏指令说明
序号 1 2 3 4 5 6 7 8 9 10 11 指令 清显示 光标返回 置输入模式 显示开/关控制 光标或字符移 置功能 RS R/W D7 D6 D5 D4 D3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 D2 0 0 1 D D1 0 1 D0 1 I/D S C B S/C R/L F DL N 置字符发生存储器地址 0 置数据存储器地址 读忙标志或地址 0 0 字符发生存储器地址 显示数据存储器地址 BF 计数器地址 要写的数据内容 读出的数据内容 写数到CGRAM或DDRAM 1 从CGRAM或DDRAM读数 1 1602液晶显示器的读写操作、屏幕和光标的操作都是通过指令编程来实现的。 4.4.3 1602标准字库
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一个固定的代码,比如大写字母“A”的代码是01000001B(41H),显示模块把地址41H中的点阵字符图形显示出来,就能看到字母“A”。
本 科 毕 业 设 计
4.4.4 显示子程序功能及流程
显示程序流程图如图4.8所示:
第 33 页 共 48 页
开始Y 显示初始化标志位为1? N 液晶模块初始化设置 置显示初始化标志位 状态显示标志位为1? N
结束Y 显示标志位为1? N 将静态显示内容写到显示缓冲区 Y 置显示标志位 显示动态数据 判断各显示画面标志位,进行相应的显示 图4.7 显示子程序流程框图
该系统的液晶显示屏上要求显示蓄电池的电压,电流,温度,剩余电量信息。这些项目是固定显示的,而所显示的数字信息则是按一定周期刷新的。当系统进入设定状态时,屏幕的下方会出现相应的设置信息画面。系统使用时若不进行任何操作,默认显示第一路的状态;要观察其他路电池的状态可通过键盘操作完成。显示哪一路状态是通过判断一个标志位确定的。若是出现报警时,在屏幕右上角显示报警。
4.5 串行通讯程序模块
该蓄电池自动监测系统可以与上位机实现通讯。单片机有4种串行通讯方式。在蓄
本 科 毕 业 设 计
第 34 页 共 48 页
电池监测系统中选择使用方式3,串行口控制器SCON来设置。方式3是11位异步收发,波特率由定时器l控制,在使用前要设置波特率,而且方式3适用于多机通讯。在方式3下,通讯时的串行帧格式为:l位起始位,8位数据位,l位可编程的低9位,1个停止位。
在单片机与上位机通讯时,要遵循一定的通讯协议。通讯协议中要规定帧格式、波特率、数据差错检查、联络信号等。当通讯协议选择好后,通讯双方都要遵守协议。
蓄电池自动监测系统的通讯主要是由中断引发,但是由于系统的重点在于对蓄电池的状态监测,因而不能在中断程序中完成所有的事情,通讯程序则设计为当上位机发数据时,单片机响应中断并在中断程序中接收数据,但不马上进行处理,在主程序中判断是否接受了数据,若接收到数据,再进行相应的处理。通讯程序流程图及中断服务程序如图4.8所示:
清除接受标志位 结束图4.8 通讯程序流程图及中断服务程序流程图
是否接受了数据 Y 判断命令内容 完成相应操作 接受字符,并送缓冲区,置通讯标志位 N 主程序流程开始N 接受地址符合本机地址? Y 回送本机地址 N 开始保护现场 中断服务程序流程
接受完数据? Y 置接收标志位,清通讯标志位 恢复现场 4.6 键盘输入子程序模块
本设计采用行列式按键接口电路。由于机械原因,按键的断开和闭合均伴随着一定
本 科 毕 业 设 计
第 35 页 共 48 页
的抖动,为了确保CPU对一次按键动作的确认,必须消除抖动的影响。通常消抖有硬件和软件两种方法,为了避免增加电路的复杂性,这里选用软件消抖的方法。具体方法是在第一次检测到有键按下时,执行一个延时12 ms的子程序后,再次检测该键是否仍然保持闭合状态,如仍然保持,则确认该键真正被按下,否则,无键按下,从而消除了抖动的影响。其流程图如图4.9所示。
图4.9 键盘子程序流程框图 N 闭合键释放否 Y 键码送累加器 N 有键按下? Y 判断闭合键,键码入栈保存 调用12ms延时子程序 有键按下? N 调用6ms延时子程序 Y 开始 返回 4.7 报警电路子程序模块
报警电路采用声光方式,当参数数据超限时,产生声音报警,同时对应的发光二极管以一定的频率闪烁。软件编程比较简单,只需将与蜂鸣器连接的I/O口置为高电平,即可产生警报声音;至于二极管的闪烁效果,只需经过一段时间,使对应的I/O端口电平取反即可。其程序模块融合在参数信号的采集模块中。此处不在赘述。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机的蓄电池监测系统设计(7)在线全文阅读。
相关推荐: