历史上的今天
今天是:2025年08月07日(星期四)
2020年08月07日 | 电子密码锁设计24c01+12864
2020-08-07 来源:51hei

单片机源程序如下:
#include #include #include<12864.h> #include<24C01.h> #define uchar unsigned char #define uint unsigned int sbit LED1=P1^5; sbit LED2=P1^6; sbit INIT=P2^2; sbit SOUND=P1^7; uchar idata key[6]={0,0,0,0,0,0}; uchar idata iic[6]={0,1,2,3,4,5}; /************************ 密码校验函数 **************************/ void press(uchar *s) { uchar dat; P3=0xf0; //第一位密码 while(P3==0xf0); dat=key_scan(); if((dat!=0x0a)&&(dat!=0x0b)) { *s=dat; Left(); star_12864(star,0x05,16); } s++; P3=0xf0; //第二位密码 while(P3==0xf0); dat=key_scan(); if((dat!=0x0a)&&(dat!=0x0b)) { *s=dat; Left(); star_12864(star,0x05,24); } s++; P3=0xf0; //第三位密码 while(P3==0xf0); dat=key_scan(); if((dat!=0x0a)&&(dat!=0x0b)) { *s=dat; Left(); star_12864(star,0x05,32); } s++; P3=0xf0; //第四位密码 while(P3==0xf0); dat=key_scan(); if((dat!=0x0a)&&(dat!=0x0b)) { *s=dat; Left(); star_12864(star,0x05,40); } s++; P3=0xf0; //第五位密码 while(P3==0xf0); dat=key_scan(); if((dat!=0x0a)&&(dat!=0x0b)) { *s=dat; Left(); star_12864(star,0x05,48); } s++; P3=0xf0; //第六位密码 while(P3==0xf0); dat=key_scan(); if((dat!=0x0a)&&(dat!=0x0b)) { *s=dat; Left(); star_12864(star,0x05,56); } do{P3=0xf0; //键入Enter键盘继续执行下面语句,否则等待 while(P3==0xf0); dat=key_scan(); }while(dat!=0x0b); } /****************************** 延时10ms函数 *******************************/ void Delay10ms(void) { uint i,j,k; for(i=5;i>0;i--) for(j=4;j>0;j--) for(k=248;k>0;k--); } /****************************** 主函数 *******************************/ void main() { uchar dat; uchar i=0,j=0,k; uchar x; LED1=1; LED2=1; SOUND=0; INIT=1; if(INIT==0){ //密码初始化,先从IIC器件中读出密码以供下面输入密码进行比较 x=SendB(iic,0x50,6); Delay10ms(); } x=ReadB(iic,0x50,6); Init_12864(); for(i=0;i<50;i++){Delay10ms();} do{ //若密码不正确,循环执行do{}while() LED1=1; System(); //显示:请输入密码 press(key); if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(key[5]==iic[5])) //密码比较,若密码正确责进入系统,若密码不正确则显示密码错误,重新输入密码 { true(); do { P3=0xf0; //键入1或2继续执行下面语句,否则等待 while(P3==0xf0); dat=key_scan(); }while(dat!=0x01&&dat!=0x02); if(dat==1) { //开锁 LED1=0; j=0; unlock();
史海拾趣
|
很早之前,买了一块DIY的 fpga cylone ep1c6q240c8的板子还完后 下了一个程序可以,放那儿一直没整。 直到今天,上电之后电源正常。写了个程序。program100%完程序电源就降为零了 稳压芯片的前级压敏就发烫。断电再上电,电源恢复正常~~   ...… 查看全部问答> |
|
有谁在WINCE5.0下使用PPPOE时,遇到访问集中器无响应 这个问题的? 我初步判定是PPPOE.LIB实现的不够灵活,SERVICE-NAME的顺序以及AC-NAME的长度等等,都会导致WINCE 的PPPOE协议栈无响应。 我看了一下PPPOE.LIB是2004-7-1,不知道有没有补丁更新?我的都打到2009年2月份了。… 查看全部问答> |
|
我在线调试C51的外部中断时,外部中断1怎么就是跳不出去呢?当INT1发生时,就一直循环着INT1,不再回到主程序了。下面是整个儿程序的代码(谢谢啦) #include #define LED P0 void delay(int); main() { unsigned char i; ...… 查看全部问答> |
|
首先,诚挚的向大家道歉,由于设计上的疏漏,影响了大家开发的兴趣,抱歉 目前情况是这样的: USB的引脚连接是正确的,感谢古道热肠 存在错误: 2,U2稳压芯片最上方的大焊脚不改接地。。。大焊脚输出VOUT电压,接地就 ...… 查看全部问答> |
|
c语言和线性汇编混合编程时, 主函数(c语言)和线性汇编语言编写的子函数是连个文件吧 为什么连接时发生了很多错误呢? 是不是需要设置什么东西? 请高手指教 … 查看全部问答> |




