单片机 > 单片机程序设计 > 详情

51单片机12864显示的电子密码锁源码

发布时间:2020-08-27 发布时间:
|

1.当要想从标志位中退出来就一定要知道程序当前在哪个标志位中读取,然后就是在这个里面设定退出方可,否则是不能使用的,相当于是没有一样。


单片机源程序如下:

/*************************************************************************************

密码锁,可以改个人密码和管理员密码的一个基于单片机的锁。

按键值码:1  2  3  set        

输入密码只能按0~9,10位确定键,11位取消键(输入密码小                  

                                                4  5  6  ↑                于8时取消输入的密码),12是时钟功能键,13是时钟“+”,

                                                7  8  9  ↓                14是时钟“-”,15改密码的时候的确定键

                                                ok 0  c  fun

**************************************************************************************/

/******************************头文件****************************************/

#include

#include

#include

#include"lcd.h"

#include"ds1302.h"

#include"keyboard.h"

#include"delay.h"

#include"deal.h"

#include "i2c.h"

#include "uart.h"

/*************************宏定义*************************************/

#define uchar unsigned char

#define uint unsigned int


//========================IO口定义==================================//

sbit s = P2^2;                           //控制背光

sbit k2 = P3^2;              //

sbit JDQ_key = P3^7;   //继电器控制


unsigned char flag4,flag5=0,flag8=1,flag1=0,flag_time=0,

                                flag_time2=0;flag3=0;

unsigned char wrongtimes=0,k,p=1,miao=59,t=0,snum=0,

                                c=0,up=0,down=0,a=0;

//===========================密码的初始值==========================//

unsigned char MIMAword[8]={1,2,3,4,5,6,7,8};                //密码的初始值

unsigned char G_MIMA[8]={8,8,8,8,8,8,8,8};                         //管理员密码,可以更改


void MIMA_input();     //EEPROM写

void MIMA_output();    //EEPROM读


//===========================配置定时器============================//

void init_conf()

{

        TH0=(65536-50000)/256;                                          //

        TL0=(65536-50000)%256;


        EA=1;

        ET0=1;

        IT0=1;                                                                                                    //跳变沿出发方式(下降沿)

        EX0=1;                                                                                                    //打开INT0的中断允许。


        TR1 = 1;

        ET1 = 1;

}

//===============================主函数===========================//

void main()

{        

        unsigned char num,i = 0,j;                  

        unsigned char temp[8];

        

        unsigned char Ztemp[8]={'1','2','3','4','5','6','7','8'};

        unsigned char Zresponsuccess[4]={0x55,0x11,0x01,0x00};

        unsigned char Zresponfail[]="your command is wrong";

        unsigned char ch[8]={0},z1=0,        Znum[8]={0};

        bit Flag;

/***********************以下是断电后重启的读出EEPROM的数据*******************************/

//第一次上电先隐去 88888888修改管理员密码 然后取隐用修改后的管理员进入修改个人密码

        G_MIMA[0] =  EEPROMread_add(11,19);

        delay(20);

        G_MIMA[1] =  EEPROMread_add(12,20);

        delay(20);

        G_MIMA[2] =  EEPROMread_add(13,21);

        delay(20);

        G_MIMA[3] =  EEPROMread_add(14,22);

        delay(20);

        G_MIMA[4] =  EEPROMread_add(15,23);

        delay(20);

        G_MIMA[5] =  EEPROMread_add(16,24);

        delay(20);

        G_MIMA[6] =  EEPROMread_add(17,25);

        delay(20);

        G_MIMA[7] =  EEPROMread_add(18,26);

        delay(20);

/***********************以上是断电重启后读出EEPROM里面的数据*********************************/

        s=0;                                                                                                                                        //背光控制,上电时低电平将三极管导通

        JDQ_key=1;                                                                                                                                  //继电器驱动装置,低电平(三极管不导通,则继电器工作,则锁关

                                                                                                                                                                                //换为J3Y后更改电平

        init_conf();                                                                                                                  //配置定时器

        LCD12864_Init();                                                                                                        //12864初始化

        Ds1302Init();                                                                                                                        //1302初始化

UartInit(); //串口初始化


关键字:51单片机  12864显示  电子密码锁 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
PIC单片机基础知识之二