第四章 系统软件设计
第四章 系统软件设计
因设计主要是作用汇编语言来开发的51单片机项目程序,所以首先必须有一个可以在Windows XP或Windows vista操作系统下执行的汇编语言编译器,本设计采用Keil编译器进行编程,因为它可以支持一系列的51单片机。
开始 旧密码输入 初始化 A 模式选择 B 新密码输入 存入缓存区 N 再次输入密码 重新输入 识别按键 手动清除 N 密码输入 Y 密码比较 设置完毕返回 开门
图4-1 主程序的流程图
4.1主程序模块
主程序主要是完成系统初始化、设置中断向量、检查有无键按下、以及调用显示等等。主程序部分如下所示: en bit p3.5 rw bit p3.4 rs bit p3.3
;将lcd的en管脚连接到单片机的p3.5口 ;将lcd的rw管脚连接到单片机的p3.4口 ;将lcd的rs管脚连接到单片机的p3.3口 ;将lcd的显示端口连接到p0口上 ;蜂鸣器连接到p2.6口
;与蜂鸣器共同作用的led灯连到p2.7口 ;开锁电路的控制端连接到p2.0口 ;程序开始地址
display equ p0 speaker bit p2.6 led bit p2.7 open bit p2.0 ORG 0000h LJMP start; ORG 000bh;
returnbit bit 20h.1;
15
淮安信息职业技术学院毕业设计论文
LJMP intermit_t0; ORG 001bh;
LJMP intermit_t1; ORG 0030h; start:
MOV sp,#60h; lcall sys_initialization
;调用子程序sys_initialization
4.2键盘扫描及识别子程序
键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。其程序流程如图4-2所示
键盘部分程序如下: key:
;键盘程序名称 ;调用子程序ks ;判断是否有键按下 ;跳回键盘程序
call ks jnz k1 jmp key
ks:mov p1,#0f0h; mov a,p1; xrl a,#0f0h; ret;
16
第四章 系统软件设计
图4-2 键盘扫描程序流程图
4.3系统模块密码设置子程序
由于设计是分模块化进行,所以子程序是整体软件系统的组成部分,子程序不但可以使程序化整为零,使其复杂简单化,同时也方便阅读,修改等,每个功能模块都有它自己的子程序,在本设计中是用LCD显示数据,所以就要用到显示子程序,设计中用的是矩阵键盘,所以就用到键盘扫描子程序,例如还有显示初始化子程序、LCD忙检测子程序、关闭状态显示子程序、开锁状态显示子程序、密码输入及修改状态显示子程序、密码输入错误后的提示子程序等。如下图为密码修改子程序流程图
17
淮安信息职业技术学院毕业设计论文
选择模式 旧密码输入 新密码输入 存入缓存 重新输入 再次输入密码 N 是否大于3次 Y 锁定 N 比较密码 Y 返回
图4-3 设置密码子程序
4.4程序调试
在硬件支持的环境下,用proteus设计好的电路,Keil编好的程序编译成芯片可识别的S51文件,利用PC机写进proteus程序图芯片内进行仿真测试,并对其出现的错误进行修改,由图4-4~图4-7可看出最终调试成功。
图4-4 keil编译程序成功
18
第四章 系统软件设计
图4-5 keil生成hex文件
图4-6 proteus调用keil的hex文件进行仿真
19