资源简介
含有protues图和程序(全注释,连变量都注释)
要求: 1、在锁开的状态下输入密码,设置的密码共4位,用数据开关K1∼K10分别代表数字1、2、…、9、0,输入的密码用数码管显示,最后输入的密码显示在最右边的数码管上,即每输入一位数,密码在数码管上的显示左移一位。可删除输入的数字,删除的是最后输入的数字,每删除一位,密码在数码管的显示右移一位,并在左边空出的位上补充“0”。
2、用一位输出电平的状态代表锁的开闭状态,绿色发光管指示。
3、为保证密码锁主人能打开密码锁,设置一个万能密码,在主人忘记密码时使用。
代码片段和文件信息
/*******************************************************************************
================================================================================
【平 台】STC89C51_sumjess平台
【编 写】sumjess
【E-mail 】1371129880@qq.com
【软件版本】V2.0
【最后更新】2019年06月10日
【相关信息参考下列地址】
【网 站】
https://blog.csdn.net/qq_38351824
http://www.51hei.com/bbs/mcu-2-1.html
---------------------------------------------------------------------------------
【dev.env.】MDK4.02及以上版本
【Target 】STC89C51
第一次修订:2019/05/09
第二次修订:2019/05/21
第三次修订:2019/06/10
【problem 】
(1)库内补充的不全面;
(2)库内解释部分不全面;
(3)库内还存在一定的bug;
【direction】
下一步的目标就是把库继续集成!
【explain 】
为了方便使用,我也自己写了很多的库,和优化了算法和表示方式!
【warning】
目前程序中暂无错误 !
---------------------------------------------------------------------------------
没有完美的代码,只有不断的奉献,大家一起努力;
赠人玫瑰手留余香,欢迎大家反馈bug!
================================================================================
********************************************************************************/
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit beep=P2^4;//蜂鸣器接口
sbit D1=P2^2; //开锁信号
sbit k1=P3^2; //恢复初始密码按键
sbit RS=P2^7; //数据命令选择
sbit RW=P2^6; //读写控制
sbit E=P2^5; //液晶使能
sbit SDA=P2^1; //数据线接口
sbit SCL=P2^0; //时钟线接口
uchar idata table1[6]={123456}; //初始密码
uchar dd;
uchar aa;//存放密码错误的次数,够三次报警
uchar bb;
uchar cc;
//延时子函数
void delay1(uint z)
{
uint xy;
for(x=0;x for(y=0;y<110;y++);
}
void delay2()
{
;;
}
//总线初始化子函数
void i2cinit()
{
SDA=1;
delay2();
SCL=1;
delay2();
}
//启动信号子函数
void start()
{
SDA=1;
SCL=1;
delay2();
SDA=0;
delay2();
}
//停止信号子函数
void stop()
{
SDA=0;
delay2();
SCL=1;
delay2();
SDA=1;
delay2();
}
//应答信号子函数
void respons()
{
uchar i=0;
SCL=1;
delay2();
while(SDA==1&&i<255)//等待应答,过一段时间不应答退出循环
i++;
SCL=0;
delay2();
}
//写一个字节子函数
void writebyte(uchar date)
{
uchar itemp;
temp=date;
for(i=0;i<8;i++)
{
temp<<=1;//temp左移一位后高位进CY
SCL=0;
delay2();
SDA=CY;
delay2();
SCL=1;
delay2();
}
SCL=0;//应答信号中SCL = 1,所以这里要置0
delay2();
SDA=1;//用完要释放数据总线
delay2();
}
//读一个字节子函数
uchar readbyte()
{
uchar ik;
SCL=0;
delay2();
SDA=1;
for(i=0;i<8;i++)
{
SCL=1;
delay2();
k=(k<<1)|SDA; //和最低位或,一位位送到K
SCL=0;
delay2();
}
delay2();
return k;
}
//向地址写一个字节数据子函数
void write_add(uchar addressuchar date)
{
start();
writebyte(0xa0);//A0A1A2接地,AT24C02芯片地址为1010,送控制字为1010A2A1A0R/~W
respons();
writebyte(address);
respons();
writebyte(date);
respons();
stop();
}
//向地址读一个字节数据子函数
uchar read_add(uchar address)
{
uchar date;
start();
writebyte(0xa0);//A0A1A2接地,AT24C02芯片地址为1010,送控制字为1010A2A1A0R/~W
respons();
writebyte(address);
respons();
start();
writebyte(0xa1);//A0A1A2接地,AT24C02芯片地址为1010,送控制字为1010A2A1A0R/~W
respons();
date=readbyte();
stop()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-07-22 22:33 课程设计题十二:电子密码锁\
目录 0 2019-07-23 10:11 课程设计题十二:电子密码锁\Sum_Stc51\
文件 6376 2009-05-07 14:37 课程设计题十二:电子密码锁\Sum_Stc51\STARTUP.A51
文件 14049 2019-07-23 10:10 课程设计题十二:电子密码锁\Sum_Stc51\STARTUP.LST
文件 749 2019-07-23 10:10 课程设计题十二:电子密码锁\Sum_Stc51\STARTUP.OBJ
文件 32226 2019-07-23 10:10 课程设计题十二:电子密码锁\Sum_Stc51\Sum_lock
文件 42187 2019-07-23 10:10 课程设计题十二:电子密码锁\Sum_Stc51\Sum_lock.LST
文件 47206 2019-07-23 10:10 课程设计题十二:电子密码锁\Sum_Stc51\Sum_lock.M51
文件 38482 2019-07-23 10:10 课程设计题十二:电子密码锁\Sum_Stc51\Sum_lock.OBJ
文件 15990 2019-07-23 10:10 课程设计题十二:电子密码锁\Sum_Stc51\Sum_lock.c
文件 9544 2019-07-23 10:10 课程设计题十二:电子密码锁\Sum_Stc51\Sum_lock.hex
文件 49 2019-07-23 10:10 课程设计题十二:电子密码锁\Sum_Stc51\Sum_lock.lnp
文件 1581 2019-07-23 10:11 课程设计题十二:电子密码锁\Sum_Stc51\Sum_lock.plg
文件 64915 2019-07-23 10:11 课程设计题十二:电子密码锁\Sum_Stc51\Sum_lock.uvopt
文件 13408 2019-07-22 22:32 课程设计题十二:电子密码锁\Sum_Stc51\Sum_lock.uvproj
文件 64915 2019-07-22 22:32 课程设计题十二:电子密码锁\Sum_Stc51\Sum_lock_uvopt.bak
文件 0 2019-07-22 22:27 课程设计题十二:电子密码锁\Sum_Stc51\Sum_lock_uvproj.bak
目录 0 2019-07-23 10:16 课程设计题十二:电子密码锁\仿真图\
文件 26309 2019-07-23 10:16 课程设计题十二:电子密码锁\仿真图\Backup Of Sum_lock.pdsbak
文件 25541 2019-07-22 22:35 课程设计题十二:电子密码锁\仿真图\Last Loaded Sum_lock.pdsbak
文件 135024 2016-06-26 12:17 课程设计题十二:电子密码锁\仿真图\Sum_lock.DSN
文件 26309 2019-07-23 10:16 课程设计题十二:电子密码锁\仿真图\Sum_lock.pdsprj
文件 2625 2019-07-23 10:16 课程设计题十二:电子密码锁\仿真图\Sum_lock.pdsprj.DESKTOP-37880EN.别想打开!.workspace
相关资源
- mc1496模拟乘法器protues仿真文件及分析
- 超声波测距仪1602显示.zip
- 声光报警 protues仿真
- 超声波测距 1602显示,蜂鸣器报警
- 关于电子秤的实验项目包括protues仿真
- 027 简易电子秤 LCD1602显示 超重报警
- ATMEGA16 PROTUES 热水器
- 51单片机和1602显示18b20温度报警系统
- 51单片机例程1602显示秒表
- 单片机实现密码锁(1602显示)_带设置
- 基于51单片机的水箱水位检测系统.r
- 51单片机Protues,仿真PT100温度传感器,
- 多模式带转向交通灯PROTUES仿真及程序
- 篮球计分器的设计与仿真
- 按键控制1602显示
- STM32 F103R6 GPIO 闪烁源代码Keil及protue
- 电子称 51单片机 1602显示 HX710AD芯片
- ds12887+1602显示万年历proteus7.5仿真
- Protues 8.6安装包+安装教程
- 51单片机mpu6050读取六轴原始数据并L
- 基于51单片机的花样流水灯(汇编程序
- DHT11程序,用1602显示
- Protues下的8255仿真
- protues仿真+lcd显示+可调数字时钟
- 数字温度计的设计 基于protues的仿真和
- proteus仿真max7219的使用方法
- 51单片机超声波测距1602显示
- msp430f149基于DS18b20测温并1602显示
- protues仿真12864显示
- protuesADC083X补丁.zip
评论
共有 条评论