基于STC89C52单片机毕业设计完整版附原理图pcb图源程序仿真图 下载本文

case 1:row=0x80;break; }

流程图5-3如下:

开始 初始化LCD 清除LCD 写LCD 结束

图5-3 显示模块流程图

5.4修改密码流程图

修改密码模块主要是在输入密码正确之后,按下14键即是修改密码键就能进入修改密码界面,其流程分为四个步骤,分别为按下14键并启动定时、输入修改的密码、按下确认键11键、LCD的显示。修改密码的部分程序如下: //改密码

void ch_word(void) {

unsigned char recieve=0xff,b[10],j=0; LCD_CLR();

printf_char(1,1,\ while(recieve!=11) {

recieve=keypad(); delay(10000);

if(recieve<=9&&recieve>=0) {

b[j]=recieve;

printf_data(2,j+1,1,recieve); j++; }

else if(recieve==12) {

if(j!=0) {

a[j]='\\0';

printf_char(2,j,\ j--; }

}

流程图如图5-4所示:

按下14键 启动定时 输入密码 存入缓冲 按下确认 比较密码 调用LED 调用显示 图5-4 修改密码流程图

5.5开锁和报警模块流程图

开锁和报警模块主要任务是把从键盘输入到单片机的密码和本身保存在单片机中的密码进行对比,如果正确就开锁,如果错误的话就进行计数并显示在LCD液晶显示屏上,当输入密码的错误次数达到3次就进入报警模式,启动蜂鸣器报警。其流程图如图5-5所示。

图5-5 报警流程图

6 电子密码锁的系统调试及仿真

6.1硬件电路调试及结果分析

硬件调试首先检查电路板焊接是否有误,检查有是否出现虚焊、漏焊、线路短接、元器件引脚是否错误焊接等等问题,然后检查电路中某些元器件是否起作用,最后利用一些小程序测试LCD1602是否完好无损。

检测单片机是否工作可通过观察示波器显示的波形是否衰减,或者利用万用表测一下18,19脚的电压,应该有个2-3V就说明起振了,另外,ALE如果有信号或者有电压也说明单片机工作了。我采用利用万用表侧18、19脚的电压,其结果显示为2.3V。

检测电路有无虚焊可用万用表的二极管档来检测,当把万用表的红黑两表笔接触在焊接线路的两端后,万用表发出声音,则说明没有虚焊。检查电路是否短路也是利用同一原理。

6.2软件调试及功能分析

软件调试即是把已经写好的C语言程序载入到软件调试工具,检查软件是否有设法错误,再根据软件提示对本程序进行修改,直到没有错误再生成单片机能运行的机器码,再用51开发板或其它单片机写入工具把机器码写入单片机进行实际的程序调试,根据实际情况再对程序的不足加以修改,直到满足设计要求。本设计采用Proteus和KEIL软件进行仿真、调试,首先在在Proteus软件上进行硬件电路的描绘,其次在KEIL软件编写电子密码锁的源程序,源程序经过汇编后产生Hex文件,最后将生成的目标文件添加到单片机中仿真调试。

6.2.1调试过程

首先打开KEIL C51主程序,新建工程,新建文本框写入程序,保存,检查是否有语法错误,经反复检查无误后汇编,生成51单片机可执行的HEX文件。然后用与51开发板相匹配的写入软件把HEX文件写入单片机。

图6-1 KEIL c51调试介面

图6-2 程序写入界面

6.2.2仿真结果分析

当系统通电进入初始化状态后,LCD显示屏会显示Welcome,结果如图6-3所示。