大学毕设论文基于51单片机的密码锁设计程序.docx
- 文档编号:2877191
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:36
- 大小:25.87KB
大学毕设论文基于51单片机的密码锁设计程序.docx
《大学毕设论文基于51单片机的密码锁设计程序.docx》由会员分享,可在线阅读,更多相关《大学毕设论文基于51单片机的密码锁设计程序.docx(36页珍藏版)》请在冰豆网上搜索。
大学毕设论文基于51单片机的密码锁设计程序
#include"1302.h"
voidwrite_ds1302_byte(uchardat)
{
uchari;
for(i=0;i<8;i++)
{
T_IO=dat&0x01;
T_CLK=1;
T_CLK=0;
dat=dat>>1;
}
}
ucharread_ds1302_byte()
{
uchari;
for(i=0;i<8;i++)
{
ACC=ACC>>1;
ACC7=T_IO;
T_CLK=1;
T_CLK=0;
}
return(ACC);
}
voidwrite_ds1302_dat(ucharaddr,uchardat)
{
T_EN=0;
T_CLK=0;
T_EN=1;
write_ds1302_byte(addr);
write_ds1302_byte(dat);
T_CLK=1;
T_EN=0;
}
ucharread_ds1302_data(ucharaddr)
{
uchardate;
T_EN=0;
T_CLK=0;
T_EN=1;
write_ds1302_byte(addr);
date=read_ds1302_byte();
T_EN=0;
T_CLK=0;
return(date);
}
voidset_real_time(uchar*pclock)
{
uchari,addr=0x80;
EA=0;
write_ds1302_dat(0x8e,0x00);
for(i=0;i<7;i++)
{
write_ds1302_dat(addr,*pclock);
pclock++;
addr+=2;
}
//write_ds1302_dat(0x8e,0x80);
EA=1;
}
voidget_real_time(ucharCurtime[])
{
ucharj;
ucharaddress=0x81;
EA=0;
for(j=0;j<7;j++)
{
Curtime[j]=read_ds1302_data(address);
address+=2;
}
EA=1;
}
#ifndef__1302_H__
#define__1302_H__
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitT_IO=P2^5;
sbitT_CLK=P2^4;
sbitT_EN=P1^0;
sbitACC0=ACC^0;
sbitACC7=ACC^7;
voidwrite_ds1302_byte(uchardat);
ucharread_ds1302_byte();
voidwrite_ds1302_dat(ucharaddr,uchardat);
ucharread_ds1302_data(ucharaddr);
voidset_real_time(uchar*pclock);
voidget_real_time(ucharCurtime[]);
#endif
#include"delay.h"
#include"1602.h"
voidlcd_busy_wait()/*LCD1602忙等待*/
{
lcd_rs_port=0;
lcd_rw_port=1;
lcd_en_port=1;
lcd_data_port=0xff;
while(lcd_data_port&0x80);
lcd_en_port=0;
}
voidwrite_com(ucharcommand)/*LCD1602命令字写入*/
{
lcd_busy_wait();
lcd_rs_port=0;
lcd_rw_port=0;
lcd_en_port=0;
lcd_data_port=command;
lcd_en_port=1;
lcd_en_port=0;
}
voidwrite_data(uchardat)
{
lcd_busy_wait();
lcd_rs_port=1;
lcd_rw_port=0;
lcd_en_port=0;
P0=dat;
lcd_en_port=1;
lcd_en_port=0;
}
voidwtite_lcd_1602_dat(ucharx_pos,uchary_pos,uchardat)
{
x_pos&=0x0f;
y_pos&=0x01;
if(y_pos==0)
{
x_pos=x_pos+0x80;
}
else
{
x_pos=x_pos+0x80+0x40;
}
write_com(x_pos);
lcd_busy_wait();
lcd_rs_port=1;
lcd_rw_port=0;
lcd_en_port=0;
P0=dat;
lcd_en_port=1;
lcd_en_port=0;
}
voidlcd_init()/*LCD1602初始化*/
{
lcd_delay(20);
write_com(0x38);
lcd_delay(100);
write_com(0x38);
lcd_delay(50);
write_com(0x38);
lcd_delay(10);
write_com(0x08);
write_com(0x01);
write_com(0x06);
write_com(0x0c);
lcd_data_port=0xff;/*释放数据端口*/
}
#ifndef__1602_H__
#define__1602_H__
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitlcd_rs_port=P3^5;
sbitlcd_rw_port=P3^6;
sbitlcd_en_port=P3^4;
#definelcd_data_portP0
voidlcd_busy_wait();
voidwrite_com(ucharcommand);
voidwrite_data(uchardat);
voidwtite_lcd_1602_dat(ucharx_pos,uchary_pos,uchardat);
voidlcd_init();
#endif
#include"2402.h"
#include"delay.h"
voidi2c_start()
{
scl=1;
delay1();
sda=1;
delay1();
sda=0;
delay1();
}
voidi2c_stop()
{
sda=0;
delay1();
scl=1;
delay1();
sda=1;
delay1();
}
voidi2c_ack()
{
uchari;
scl=1;
delay1();
while((sda==1)&&(i<250))i++;
scl=0;
delay1();
}
voidi2c_nack()
{
scl=1;
delay1();
sda=1;
scl=0;
delay1();
}
voidi2c_write_byte(uchardate)//
{//
uchari,temp;
temp=date;
for(i=0;i<8;i++)//
{//
temp=temp<<1;//
scl=0;//
delay1();;//
sda=CY;//
delay1();//
scl=1;//
}//
scl=0;//
delay1();//
sda=1;//
delay1();//
}//
uchari2c_read_byte()
{
uchari,temp=0;
scl=0;
//delay1();;
//sda=1;
delay1();
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=1;
delay1();
temp=temp|sda;
scl=0;
delay1();
}
return(temp);
}
voidwrite_at2404(ucharaddr,uchardat)
{
i2c_start();
i2c_write_byte(0xa0);
i2c_ack();
i2c_write_byte(addr);
i2c_ack();
i2c_write_byte(dat);
i2c_ack();
i2c_stop();
delay3(5000);
}
ucharread_at2402(ucharaddr)
{
uchartemp;
i2c_start();
i2c_write_byte(0xa0);
i2c_ack();
i2c_write_byte(addr);
i2c_ack();
i2c_start();
i2c_write_byte(0xa1);
i2c_ack();
temp=i2c_read_byte();
i2c_nack();
i2c_stop();
return(temp);
}
#ifndef__2402_H__
#define__2402_H__
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitscl=P2^1;
sbitsda=P2^0;
voidi2c_start();
voidi2c_stop();
voidi2c_ack();
voidi2c_nack();
voidi2c_write_byte(uchar);
uchari2c_read_byte();//
voidwrite_at2404(ucharaddr,uchardat);
ucharread_at2402(ucharaddr);
#endif
#include"delay.h"
voiddelay(ucharx)
{
uchara,b;
for(a=x;a>0;a--)
for(b=200;b>0;b--);
}
voidlcd_delay(ucharms)
{
ucharj;
while(ms--){
for(j=0;j<250;j++)
{;}
}
}
v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 论文 基于 51 单片机 密码锁 设计 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)