main.rar

  • 其实。
    了解作者
  • C/C++
    开发工具
  • 3KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2021-04-27 13:35
    上传日期
主函数void main()是程序的入口函数,单片机上电后先进行初始化,重置变量数值,然后对外围器件进行初始化,完后进入死循环不断的检测处理。如果没有进入死循环的话,那么程序就只执行一遍就退出了,而达不到实时检测的效果。
main.rar
  • main.c
    12.9KB
内容介绍
/************************************************************* 指纹密码锁 补充说明: ***************************************************************/ #include<reg52.h> //头文件 #include<LCD12864.h> #include<aT24C02.h rel='nofollow' onclick='return false;'> #include<KEY.h> #include<aS608.h rel='nofollow' onclick='return false;'> #include<T2.h> #define uchar unsigned char //宏定义 #define uint unsigned int #define ulong unsigned long /************************引脚定义************************/ sbit buzz=P3^7; //蜂鸣器 sbit led=P0^0; //LED灯 /************************变量定义************************/ #define MAX 5 //指纹最大数量 #define ID_MAX 3//输入ID最大位数 uchar mode=0; //0正常解锁,1管理界面,2注册模式,3删除模式,4修改密码 uchar mode_num=0;//管理界面选择项 uint ID=0; //存储输入编号ID uchar n=0; //输入的位数 bit zhiwen_f=0; //1=标记进入指纹采集 uchar a; //存储按键值 uchar num; //记录输入的密码位数 bit in_f; //输入密码的标志 bit reset_f; //重设密码的标志 bit input_f; //六位密码输完的标志 uchar reset_num; //标记修改密码阶段,=1输入旧密码,=2输入新密码,=3再次输入新密码 ulong low_mima=0;//系统密码 ulong in_mima=0; //暂存输入的密码 ulong new_mima=0;//暂存输入新密码 uchar temp[5]=" \0";//存储显示内容 /******************************************************** 函数名称:void delayms(uint ms) 函数作用:毫秒延时函数 参数说明: ********************************************************/ void delayms(uint ms) { unsigned char i=100,j; for(;ms;ms--) { while(--i) { j=10; while(--j); } } } /******************************************************** 函数名称:void didi(uchar i) 函数作用:蜂鸣器鸣叫 参数说明:i为鸣叫次数 ********************************************************/ void didi(uchar i) { uchar j; for(j=0;j<i;j++)//循环i次,LED、蜂鸣器鸣叫几次 { led=0; //开启LED、蜂鸣器 buzz=0; delayms(20); led=1; //关闭LED、蜂鸣器 buzz=1; delayms(15); } } /******************************************************** 函数名称:void diaplay_mode0() 函数作用:显示打卡主界面 参数说明: ********************************************************/ void diaplay_mode0() { LCD12864_display_string(1,1,"指纹密码锁"); LCD12864_display_string(0,2,"编号: "); LCD12864_display_string(0,3,"状态: "); } /******************************************************** 函数名称:void xunzhiwen() 函数作用:查找指纹 参数说明: ********************************************************/ void xunzhiwen() { searchnum=search(); //搜索指纹 if((searchnum>=1&&searchnum<=MAX)||searchnum==255)//最多MAX个指纹 { if(searchnum>=1&&searchnum<=MAX) //指纹识别成功 { temp[0]=searchnum%1000/100+0x30; temp[1]=searchnum%100/10+0x30; temp[2]=searchnum%10+0x30; temp[3]=' '; LCD12864_display_string(3,2,temp);//显示卡号 LCD12864_display_string(3,3,"指纹解锁"); LCD12864_display_string(1,4," "); in_mima=0; //清除以输入的密码 num=0; //清除以输入的密码位数 input_f=0; //清除输入密码标志 jdq=0; //打开电磁锁 T2_num=0; //开启重新开始计时 TR2=1; } else //不正确的指纹 { LCD12864_display_string(3,3,"无效指纹"); didi(3); //报警三次 } delay1ms(500); //延时后自动清除显示内容 LCD12864_display_string(3,2," "); LCD12864_display_string(3,3," "); } } /******************************************************** 函数名称:void cunchu() 函数作用:存储指纹 参数说明: ********************************************************/ void cunchu() { LCD12864_display_string(0,3,"状态: "); if(ID>0&&ID<=MAX) //输入的存储指纹位置正确 { if(enroll()==1)//采集两次,生成1个指纹模板成功 { if(savefingure(ID)==1)//保存指纹成功 { LCD12864_display_string(3,3,"录入成功"); } else //保存指纹失败 LCD12864_display_string(3,3,"存储失败"); } else //采集指纹失败 LCD12864_display_string(3,3,"采集失败"); } else //输入指纹编号错误 LCD12864_display_string(3,3,"编号错误"); n=0; //清除输入编号位数 ID=0; //清除输入编号 zhiwen_f=0;//关闭指纹采集 } /******************************************************** 函数名称:void shanchu() 函数作用:删除指纹 参数说明: ********************************************************/ void shanchu() { LCD12864_display_string(0,3,"状态: "); if(ID>0&&ID<=MAX) //输入的存储指纹位置正确 { if(dellfingure(ID)==1)//删除指纹成功 { LCD12864_display_string(3,3,"删除成功"); } else //删除指纹失败 LCD12864_display_string(3,3,"删除失败"); } else { if(ID==999) //如果输入的是999表示清空指纹 { if(Clear_All()==1)//清空指纹成功 LCD12864_display_string(3,3,"清空指纹"); else //清空指纹失败 LCD12864_display_string(3,3,"清空失败"); } else //输入的是其它错误编号 LCD12864_display_string(3,3,"编号错误"); } n=0; //清除输入编号位数 ID=0; //清除输入编号 zhiwen_f=0;//关闭指纹采集 } /******************************************************** 函数名称:void display_guanli() 函数作用:显示管理界面 参数说明: ********************************************************/ void display_guanli() { LCD12864_display_string(0,1," 管理系统界面 "); LCD12864_display_string(0,2," 录入指纹 "); LCD12864_display_string(0,3," 删除指纹 "); LCD12864_display_string(0,4," 修改密码 "); switch(mode_num) { case 0: LCD12864_display_string(0,2," >> "); break; case 1: LCD12864_display_string(0,3," >> "); break; case 2: LCD12864_display_string(0,4," >> "); break; default: break; } } /********************************************************* 函数名称:void chuli() 函数作用:对所按下的按键进行处理 参数说明: *********************************************************/ void chuli() { if(key_f==1) //先判断是否有按键按下 { if((mode==2||mode==3)&&a<10)//如果输入ID状态,并且按下的是数字键 { if(n<ID_MAX)//判断是否为输入状态,并且输入未满最大整数位数,才可以继续输入 { if(n==0)//判断为编号第1位 { LCD12864_display_string(3,2," "); LCD12864_display_string(0,3," "); } LCD12864_display_char(3+n,2,a+0x30);//显示出输入的数字 ASCII[a] ID=ID*10+a;//编号计算 n++; //编号输入位数+1 } } if((mode==0||mode==4)&&input_f==0&&a<10)//如果在in_f=1(输入密码状态),并且按下的是数字键 { if(in_f==1||mode==4) { if(num==0) //清除显示后、显示输入新密码 LCD12864_display_string(1,3," "); if(reset_f==1&&reset_num>1) //在重置密码时候输入新密码阶段 LCD12864_display_char(num+1,2,a+0x30);//显示输入的数字 else //其它情况下输入密码显示* LCD12864_display_char(num+1,2,'*'); //显示“*” } else LCD12864_display_char(num+1,4,'*');//显示“*” in_mima=in_mima*10+a;//读入密码 num++; //密码输入次数加一 if(num==6) //六位密码输入完成 input_f=1; //标记六位密码输入完成 } if(a==10) //进入管理界面 { if(mode==0&&in_f==0) //输入密码 { num=0; //重置输入密码 in_f=1; in_mima=0; input_f=0; //清除密码输入完成标志 write_com(0x01); //清除显示 LCD12864_display_string(0,1,"请输入管理密码: ");//显示输入密码 } } if(a==15) //返回上一级菜单 { if(mode>1) //在管理操作中 { reset_f=0; reset_num=0; write_com(0x01); //清除显示 LCD12864_clear12864(); mode=1; //回到管理选择界面 } else //非管理界面 { if(mode!=0||in_f==1)//如果在输入密码阶段 { write_com(0x01);//清除显示 mode=0; diaplay_mode0();//显示主界面 in_f=0; num=0; input_f=0; //清除密码输入完成标志 } } if(jdq==0) /
评论
    相关推荐
    • 主程序.zip
      控制变频器的labview程序,可以检测电压电流和转速
    • 主程序.rar
      labview多列表框的复制粘贴删除的一个小程序
    • 主程序.zip
      污水处理过程控制 处理,全自动运行。实时监控程序
    • 890628204DDS485单相表主程序分解.rar
      单相表主程序分 rt解单相表主程序 rtrt分解单相表主程序分解
    • C#项目_网吧收费系统主程序源代码
      摘要:C#源码,数据库应用,收费系统 C#项目_网吧收费系统主程序源代码,奉上我自己写的网吧收费系统项目,带数据库文件,只是学校要求的项目,所以没做的跟网吧收费系统一样的功能强大,只有主程序,支持源码爱好者!...
    • 跑马灯主程序
      单片机跑马灯小程序,可以直接导入到程序里运行
    • DSA支持英文系统主程序.rar
      善领DSA 支持英文系统主程序 模拟端口 自动修改导航端口 解压后放到导航仪内置内存或者外置存储卡的根目录下 导航路径设置为 文件夹里面的DSA.EXE
    • 实用单片机电子钟主程序
      实用单片机电子钟的制作 主程序(MAIN),如下: ORG 0000H AJMP MAIN ORG 000BH AJMP TIME ORG 0300H MAIN: MOV 20H,#00H ;计时的0.1秒、秒、时和分单元清0 MOV 21H,#00H MOV 22H,#00H
    • SHE皮肤主程序
      皮肤主程序 skinsharp 主页http://www.skinsharp.com/htdocs/index.htm 不错的皮肤制作软件
    • 圣安地列斯CLEO主程序4
      通用所有cleo上纳斯达克能产生的数据库的