ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:19.51KB ,
资源ID:8912373      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8912373.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(东北大学单片机课设实现一个密码锁的程序.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

东北大学单片机课设实现一个密码锁的程序.docx

1、东北大学单片机课设实现一个密码锁的程序#include #include #include #include #define w_c_add XBYTE0x2070 /* 写命令字地址 */#define w_d_add XBYTE0x2071 /* 写数据地址 */#define r_s_add XBYTE0x2072 /* 读状态字地址 */ #define r_d_add XBYTE0x2073 /* 读数据地址 */#define COM XBYTE 0x2021 /* 命令/状态口的地址 */#define DAT XBYTE 0x2020 /* 数据口地址 */#define uc

2、har unsigned char#define uint unsigned int/*设定EEPROM*/sbit SDA=P12;sbit SCL=P15;bdata char com_data; /* 可位寻址片内数据存储器 */sbit mos_bit=com_data7;sbit low_bit=com_data0;unsigned char bdata status; /* 可位寻址片内数据存储器,允许位与字节混合访问 */sbit busy=status7; /*忙线的第7位*/unsigned char key;unsigned char bdata sta_8279;sbit

3、 du=sta_82797; /* 方式设置命令字 */uchar k=8,flag=0,x=0,tflag=0;uchar add,co,count=0; /co是电机转的格数 add显示地址寄存uint times=0;/输错密码次数uchar i=0,j=0,n=0,state;unsigned char code tab16=0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 0x77,0x7C,0x39,0x5E,0x79,0x71;/* 0F的字型编码*/unsigned char code number16=0,1,2,3,4,5

4、,6,7,8,9,10,11,12,13,14,15;/* 数字015*/ unsigned xdata hz116=0xA1,0xEF,0xc7,0xeb,0xCA,0xE4,0xc8,0xeb,0xc3,0xdc,0xc2,0xeb,0xa1,0xc3,0xA1,0xEF; /* 请 输 入 密 码 : */unsigned xdata hz216=0xc7,0xeb,0xd4,0xd9,0xb4,0xce,0xca,0xe4,0xc8,0xeb,0xc3,0xdc,0xc2,0xeb,0xa1,0xc3; /* 请 再 次 输 入 密 码 : */ unsigned char hz34=

5、0;/存放首次输入密码unsigned char hz44=0;/存放再次输入密码unsigned char code hz516=0xA1,0xF9,0xA1,0xF9,0xB4,0xED,0xCE,0xF3,0xc3,0xdc,0xc2,0xeb,0xA1,0xF9,0xA1,0xF9;/ 错误密码unsigned char code hz1216=0xA1,0xF9,0xA1,0xF9,0xd5,0xFd,0xc8,0xb7,0xc3,0xdc,0xc2,0xeb,0xA1,0xF9,0xA1,0xF9;/ 正确密码unsigned xdata hz1416=0xA1,0xEF,0xc7

6、,0xeb,0xCA,0xE4,0xc8,0xeb,0xd0,0xc2,0xc3,0xdc,0xc2,0xeb,0xA1,0xEF; /输入新密码unsigned char code hz1316=0xA1,0xF9,0xA1,0xF9,0xc9,0xe8,0xd6,0xc3,0xb3,0xc9,0xb9,0xa6,0xA1,0xF9,0xA1,0xF9;/ 设置成功unsigned char code hz616=0xD4,0xA4,0xD6,0xC3,0xc3,0xdc,0xc2,0xeb,0xa1,0xc3,0x20,0x20,0x20,0x20,0x20,0x20;/预置密码unsig

7、ned char code hz716=0xA1,0xEF,0xA1,0xEF,0xD0,0xBB,0xD0,0xBB,0xCA,0xB9,0xD3,0xC3,0xA1,0xEF,0xA1,0xEF;/谢谢使用unsigned char code hz816=0x20,0x20,0xA1,0xEF,0xA1,0xEF,0xD4,0xD9,0xBC,0xFB,0xA1,0xEF,0xA1,0xEF,0x20,0x20;/ 再见unsigned char code hz916=0xA1,0xEF,0xA1,0xEF,0xd3,0xc3,0xbb,0xa7,0xc4,0xfa,0xba,0xc3,0

8、xA1,0xEF,0xA1,0xEF;/ 菜单unsigned char code hz1016=0xA2,0xB1,0xD3,0xC3,0xBB,0xA7,0xD0,0xC5,0xCF,0xA2,0x20,0x20,0x20,0x20,0x20,0x20;/ 一、用户信息unsigned char code hz1116=0xA2,0xB2,0xD0,0xDE,0xB8,0xC4,0xc3,0xdc,0xc2,0xeb,0x20,0x20,0x20,0x20,0x20,0x20;/ 二、修改密码unsigned char code hz1516=0xA1,0xEF,0x31,0x31,0xc

9、4,0xea,0x30,0x37,0xd4,0xc2,0x30,0x39,0xc8,0xd5,0xA1,0xEF;/ 二、修改密码unsigned char code name016=0xd0,0xd5,0xC3,0xfb,0xa1,0xc3,0xce,0xd7,0xb5,0xc2,0xce,0xb0,0x20,0x20,0x20,0x20;/ 姓名:巫德伟unsigned char code name116=0xd0,0xd5,0xc3,0xfb,0xa1,0xc3,0xd3,0xc9,0xb9,0xda,0xd4,0xaa,0x20,0x20,0x20,0x20;/ 姓名:由冠元unsig

10、ned char code id016=0xd1,0xa7,0xba,0xc5,0xa1,0xc3,0x32,0x30,0x30,0x38,0x32,0x37,0x33,0x38,0x20,0x20;/ 学号:20082738unsigned char code id116=0xd1,0xa7,0xba,0xc5,0xa1,0xc3,0x32,0x30,0x30,0x38,0x32,0x37,0x35,0x32,0x20,0x20;/ 学号:20082752void input_code(void);void input_again(void);void wrong_code(void);vo

11、id close_window(void);void menu(void);void yuzhimima(void);void printmessage(void);void set_success();void lcd_init(void);void lcd_busy(void);void ini_8279(void);void check_8279(void) ;void clr_lcd(void);void correct_code(void);void input_newcode();void delay();/*main*/void main() TMOD=0x15; EA=1; E

12、X0=1; /按键中断打开 lcd_init(); /*lcd初始化*/ clr_lcd(); ini_8279(); /*8279初始化*/ state=0; /先进入输入密码界面 while(1) switch(state) case 0: if(hz30&hz31&hz32&hz33)&0x0ff)=0&n=0x00&key=0x09) hz3n=key; add=0x92; lcd_busy(); w_c_add=add; for(i=0;i=0x00&key=0x09) hz4n=key; add=0x92; lcd_busy(); w_c_add=add; for(i=0;i=n;

13、i+) lcd_busy(); w_d_add=hz4i+0x30; lcd_busy(); n=n+1; if(key=15|n=5) state=3; n=0; flag=0; EX0=1; break; case 3: EX0=0; if(hz30=hz40)&(hz31=hz41)&(hz32=hz42)&(hz33=hz43) /对比密码 /显示密码正确 clr_lcd(); correct_code(); delay(); delay(); delay(); delay(); delay(); state=4; else if(times=0&k=9) hz3n=key; add=

14、0x92; lcd_busy(); w_c_add=add; for(i=0;i=n;i+) lcd_busy(); w_d_add=hz3i+0x30; lcd_busy(); n+; if(key=15|n=5) state=10; n=0; flag=0; break; case 10: EX0=0; /关按键中断 clr_lcd(); input_again(); /再次用电机输入密码 TH0=0; TL0=0; TH1=-(50000/256); TL1=-(50000%256); TR0=1; TR1=1; ET1=1; while(x4); x=0; TR1=0;TR0=0;ET

15、1=0; state=12; flag=0; break; case 11: close_window(); delay(); delay(); delay(); delay(); delay(); clr_lcd(); state=1; flag=0; break; /对比密码 不正确跳到state10 正确显示成功返回state4 case 12: if(hz30=hz40)&(hz31=hz41)&(hz32=hz42)&(hz33=hz43) set_success(); delay(); delay(); delay(); delay(); state=4; else if(time

16、s2) clr_lcd(); wrong_code(); delay(); delay(); delay(); delay(); for(i=0;i4;i+) hz4i=0; state=10; else state=11; flag=1; break; default: break; /*子程序*/*输入密码*/void input_code() add=0x80; /* 设置显示坐标,80H对应字符的第一行第一列 */ lcd_busy(); w_c_add=add; /* 写数据 */ for(i=0;i8;i+) lcd_busy(); w_d_add=hz12*i; /* 写数据 ,

17、上半字节*/ /hz1请输入密码: lcd_busy(); w_d_add=hz12*i+1; /* 写数据 ,下半字节*/ / delay(); /*newcode*/void input_newcode() add=0x80; /* 设置显示坐标,80H对应字符的第一行第一列 */ lcd_busy(); w_c_add=add; /* 写数据 */ for(i=0;i8;i+) lcd_busy(); w_d_add=hz142*i; /* 写数据 ,上半字节*/ /hz1请输入密码: lcd_busy(); w_d_add=hz142*i+1; /* 写数据 ,下半字节*/ / del

18、ay(); /*再次输入密码*/void input_again(void) add=0x80; /* 设置显示坐标,80H对应字符的第一行第一列 */ lcd_busy(); w_c_add=add; /* 写数据 */ for(i=0;i8;i+) lcd_busy(); w_d_add=hz22*i; lcd_busy(); /* 写数据 ,上半字节*/ /hz1再次输入密码: w_d_add=hz22*i+1; /* 写数据 ,下半字节*/ /*密码错误*/void wrong_code(void) add=0x88; /* 设置显示坐标,80H对应字符的第一行第一列 */ lcd_b

19、usy(); w_c_add=add; /* 写数据 */ for(i=0;i8;i+) lcd_busy(); w_d_add=hz52*i; lcd_busy(); /* 写数据 ,上半字节*/ /hz5错误密码 w_d_add=hz52*i+1; /* 写数据 ,下半字节*/ times+;/*密码正确*/void correct_code(void) add=0x88; /* 设置显示坐标,80H对应字符的第一行第一列 */ lcd_busy(); w_c_add=add; /* 写数据 */ for(i=0;i8;i+) lcd_busy(); w_d_add=hz122*i; lc

20、d_busy(); /* 写数据 ,上半字节*/ /hz5错误密码 w_d_add=hz122*i+1; /* 写数据 ,下半字节*/ /*设置成功*/void set_success() add=0x98; /* 设置显示坐标,80H对应字符的第一行第一列 */ lcd_busy(); w_c_add=add; /* 写数据 */ for(i=0;i8;i+) lcd_busy(); w_d_add=hz132*i; lcd_busy(); /* 写数据 ,上半字节*/ w_d_add=hz132*i+1; /* 写数据 ,下半字节*/ /*关闭显示*/void close_window(v

21、oid) times=0; add=0x80; lcd_busy(); w_c_add=add; for(i=0;i8;i+) lcd_busy(); w_d_add=hz72*i; lcd_busy(); /* 写数据 ,上半字节*/ /谢谢使用 w_d_add=hz72*i+1; /* 写数据 ,下半字节*/ add=0x90; lcd_busy(); w_c_add=add; for(i=0;i8;i+) lcd_busy(); w_d_add=hz82*i; lcd_busy(); /* 写数据 ,上半字节*/ /byebye w_d_add=hz82*i+1; /* 写数据 ,下半字节*/ /*界面显示*/void menu(void)/*界面*/ add=0x90; lcd_busy(); w_c_add=add; /* 写数据 */ for(i=0;i

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1