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(); //串口初始化 LCD12864_SetWindow(0,2,"欢迎光临"); //第一行显示信息 LCD12864_SetWindow(1,1,"华北科技学院"); //第二行显示信息 LCD12864_SetWindow(2,1,"单片机实验室"); //第三行显示信息 LCD12864_SetWindow(3,1,"输入八位密码"); //第四行显示信息 Delay3000ms(); LCD12864_SetWindow(0,0," ");
上一篇:51单片机智能时钟设计
下一篇:CH375_CH376 U盘读写模块在51单片机上的应用
推荐阅读最新更新时间:2024-11-16 21:07
设计资源 培训 开发板 精华推荐
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况