大学毕设论文--基于51单片机的密码锁设计程序.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《大学毕设论文--基于51单片机的密码锁设计程序.doc》由会员分享,可在线阅读,更多相关《大学毕设论文--基于51单片机的密码锁设计程序.doc(29页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、#include 1302.hvoid write_ds1302_byte(uchar dat)uchar i;for(i=0;i1;uchar read_ds1302_byte()uchar i;for(i=0;i1;ACC7=T_IO;T_CLK=1;T_CLK=0;return (ACC);void write_ds1302_dat(uchar addr,uchar dat)T_EN=0;T_CLK=0;T_EN=1;write_ds1302_byte(addr);write_ds1302_byte(dat);T_CLK=1;T_EN=0;uchar read_ds1302_data(u
2、char addr)uchar date;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);void set_real_time(uchar *pclock)uchar i,addr=0x80; EA=0;write_ds1302_dat(0x8e,0x00);for(i=0;i7;i+)write_ds1302_dat(addr,*pclock);pclock+;addr+=2;/write_ds1302_dat(0x8e,0x80);EA=1;
3、void get_real_time(uchar Curtime)uchar j;uchar address=0x81;EA=0;for(j=0;j7;j+) Curtimej=read_ds1302_data(address);address+=2; EA=1;#ifndef _1302_H_#define _1302_H_#include #include#define uchar unsigned char#define uint unsigned intsbit T_IO=P25;sbit T_CLK=P24;sbit T_EN=P10;sbit ACC0=ACC0;sbit ACC7
4、=ACC7;void write_ds1302_byte(uchar dat);uchar read_ds1302_byte();void write_ds1302_dat(uchar addr,uchar dat);uchar read_ds1302_data(uchar addr);void set_real_time(uchar *pclock);void get_real_time(uchar Curtime);#endif #include delay.h #include 1602.h void lcd_busy_wait() /*LCD1602 忙等待*/ lcd_rs_port
5、 = 0; lcd_rw_port = 1; lcd_en_port = 1; lcd_data_port = 0xff; while (lcd_data_port&0x80); lcd_en_port = 0; void write_com(uchar command) /*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; void write_data(uc
6、har dat)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;void wtite_lcd_1602_dat(uchar x_pos,uchar y_pos,uchar dat)x_pos&=0x0f;y_pos&=0x01;if(y_pos=0)x_pos=x_pos+0x80;elsex_pos=x_pos+0x80+0x40;write_com(x_pos);lcd_busy_wait();lcd_rs_port=1;lcd_rw_port=0;l
7、cd_en_port=0;P0=dat;lcd_en_port=1;lcd_en_port=0;void lcd_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
8、_1602_H_#define _1602_H_#include #include#define uchar unsigned char#define uint unsigned intsbit lcd_rs_port=P35;sbit lcd_rw_port=P36;sbit lcd_en_port=P34;#define lcd_data_port P0void lcd_busy_wait();void write_com(uchar command);void write_data(uchar dat);void wtite_lcd_1602_dat(uchar x_pos,uchar
9、y_pos,uchar dat);void lcd_init();#endif#include 2402.h#include delay.hvoid i2c_start()scl=1;delay1();sda=1;delay1();sda=0;delay1();void i2c_stop()sda=0;delay1();scl=1;delay1();sda=1;delay1();void i2c_ack()uchar i;scl=1;delay1();while(sda=1)&(i250) i+;scl=0;delay1();void i2c_nack()scl=1;delay1();sda=
10、1;scl=0;delay1();void i2c_write_byte(uchar date)/uchar i,temp;temp=date;for(i=0;i8;i+)/ /temp=temp1;/scl=0; /delay1(); /sda=CY;/delay1();/scl=1;/ /scl=0; /delay1();/sda=1;/delay1();/uchar i2c_read_byte()uchar i,temp=0;scl=0;/delay1();/sda=1; delay1();for(i=0;i8;i+)temp=temp1;scl=1;delay1();temp=temp
11、|sda;scl=0;delay1();return (temp);void write_at2404(uchar addr,uchar dat)i2c_start();i2c_write_byte(0xa0);i2c_ack();i2c_write_byte(addr);i2c_ack();i2c_write_byte(dat);i2c_ack();i2c_stop();delay3(5000);uchar read_at2402(uchar addr)uchar temp;i2c_start();i2c_write_byte(0xa0);i2c_ack();i2c_write_byte(a
12、ddr);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#define uchar unsigned char#define uint unsigned intsbit scl=P21;sbit sda=P20;void i2c_start();void i2c_stop();void i2c_ack();void i2c_n
13、ack();void i2c_write_byte(uchar);uchar i2c_read_byte();/void write_at2404(uchar addr,uchar dat);uchar read_at2402(uchar addr);#endif#includedelay.hvoid delay(uchar x)uchar a,b;for(a=x;a0;a-) for(b=200;b0;b-);void lcd_delay(uchar ms) uchar j; while(ms-) for(j=0;j250;j+) ; void delay1() ; ;void delay3
14、(uint q)uint e; for(e=0;eq;e+);#ifndef _DELAY_H_#define _DELAY_H_#include #include#define uchar unsigned char#define uint unsigned intvoid delay(uchar x);void lcd_delay(uchar ms);void delay1();void delay3(uint m);#endif#include display.hvoid display()P0=0;dula=1;dula=0;P0=0x7f;wela=1;wela=0;#ifndef
15、_DISPLAY_H_#define _DISPLAY_H_#include #include#define uchar unsigned char#define uint unsigned intsbit dula=P26;sbit wela=P27;void display();#endif#include delay.h/一般放在最前面 这个前后由调用先后决定着#include scan.h#include 1602.h/extern void write_data(uchar dat);/extern void write_com(uchar command);uchar key;uc
16、har temp,count,aa,bb,cc; /*一般将这些变量定义在C文件中 当主函数需要时用extern引用 */bit shu_flag,modify_flag,rst;bit fun_flag; /功能键标志位 没使用bit down_flag,up_flag,open_flag;void keyscan()P1=0xfe;temp=P1;temp=temp&0xf0;if(temp!=0xf0)delay(15);if(temp!=0xf0)temp=P1;switch(temp)case 0xee: key=0;shu_flag=1;write_data(*);count+;i
17、f(count6) count=0;aa=0;bb=0;cc=0;break;case 0xde: key=1;shu_flag=1;write_data(*);count+;if(count6) count=0;aa=0;bb=0;cc=0;break;case 0xbe: key=2;shu_flag=1;write_data(*);count+;if(count6) count=0;aa=0;bb=0;cc=0;break;case 0x7e: key=3;shu_flag=1;write_data(*);count+;if(count6) count=0;aa=0;bb=0;cc=0;
18、break;while(temp!=0xf0)temp=P1;temp=temp&0xf0;/beep=0;delay(500);/beep=1;/write_data(*);count+;while(temp!=0xf0);temp=P1;temp=temp&0xf0; P1=0xfd;temp=P1;temp=temp&0xf0;if(temp!=0xf0)delay(15);if(temp!=0xf0)temp=P1;switch(temp)case 0xed: shu_flag=1;key=4;write_data(*);count+;if(count6) count=0;aa=0;b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 论文 基于 51 单片机 密码锁 设计 程序
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内