东北大学单片机课设实现一个密码锁的程序Word文档格式.docx
- 文档编号:22048517
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:22
- 大小:19.51KB
东北大学单片机课设实现一个密码锁的程序Word文档格式.docx
《东北大学单片机课设实现一个密码锁的程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《东北大学单片机课设实现一个密码锁的程序Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
//输错密码次数
uchari=0,j=0,n=0,state;
unsignedcharcodetab[16]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,
0x77,0x7C,0x39,0x5E,0x79,0x71};
/*0~F的字型编码*/
unsignedcharcodenumber[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
/*数字0~15*/
unsignedxdatahz1[16]={0xA1,0xEF,0xc7,0xeb,0xCA,0xE4,0xc8,0xeb,0xc3,0xdc,0xc2,0xeb,0xa1,0xc3,0xA1,0xEF};
/*请输入密码:
*/
unsignedxdatahz2[16]={0xc7,0xeb,0xd4,0xd9,0xb4,0xce,0xca,0xe4,0xc8,0xeb,0xc3,0xdc,0xc2,0xeb,0xa1,0xc3};
/*请再次输入密码:
*/
unsignedcharhz3[4]={0};
//存放首次输入密码
unsignedcharhz4[4]={0};
//存放再次输入密码
unsignedcharcodehz5[16]={0xA1,0xF9,0xA1,0xF9,0xB4,0xED,0xCE,0xF3,0xc3,0xdc,0xc2,0xeb,0xA1,0xF9,0xA1,0xF9};
//错误密码
unsignedcharcodehz12[16]={0xA1,0xF9,0xA1,0xF9,0xd5,0xFd,0xc8,0xb7,0xc3,0xdc,0xc2,0xeb,0xA1,0xF9,0xA1,0xF9};
//正确密码
unsignedxdatahz14[16]={0xA1,0xEF,0xc7,0xeb,0xCA,0xE4,0xc8,0xeb,0xd0,0xc2,0xc3,0xdc,0xc2,0xeb,0xA1,0xEF};
//输入新密码
unsignedcharcodehz13[16]={0xA1,0xF9,0xA1,0xF9,0xc9,0xe8,0xd6,0xc3,0xb3,0xc9,0xb9,0xa6,0xA1,0xF9,0xA1,0xF9};
//设置成功
unsignedcharcodehz6[16]={0xD4,0xA4,0xD6,0xC3,0xc3,0xdc,0xc2,0xeb,0xa1,0xc3,0x20,0x20,0x20,0x20,0x20,0x20};
//预置密码
unsignedcharcodehz7[16]={0xA1,0xEF,0xA1,0xEF,0xD0,0xBB,0xD0,0xBB,0xCA,0xB9,0xD3,0xC3,0xA1,0xEF,0xA1,0xEF};
//谢谢使用
unsignedcharcodehz8[16]={0x20,0x20,0xA1,0xEF,0xA1,0xEF,0xD4,0xD9,0xBC,0xFB,0xA1,0xEF,0xA1,0xEF,0x20,0x20};
//再见
unsignedcharcodehz9[16]={0xA1,0xEF,0xA1,0xEF,0xd3,0xc3,0xbb,0xa7,0xc4,0xfa,0xba,0xc3,0xA1,0xEF,0xA1,0xEF};
//菜单
unsignedcharcodehz10[16]={0xA2,0xB1,0xD3,0xC3,0xBB,0xA7,0xD0,0xC5,0xCF,0xA2,0x20,0x20,0x20,0x20,0x20,0x20};
//一、用户信息
unsignedcharcodehz11[16]={0xA2,0xB2,0xD0,0xDE,0xB8,0xC4,0xc3,0xdc,0xc2,0xeb,0x20,0x20,0x20,0x20,0x20,0x20};
//二、修改密码
unsignedcharcodehz15[16]={0xA1,0xEF,0x31,0x31,0xc4,0xea,0x30,0x37,0xd4,0xc2,0x30,0x39,0xc8,0xd5,0xA1,0xEF};
unsignedcharcodename0[16]={0xd0,0xd5,0xC3,0xfb,0xa1,0xc3,0xce,0xd7,0xb5,0xc2,0xce,0xb0,0x20,0x20,0x20,0x20};
//姓名:
巫德伟
unsignedcharcodename1[16]={0xd0,0xd5,0xc3,0xfb,0xa1,0xc3,0xd3,0xc9,0xb9,0xda,0xd4,0xaa,0x20,0x20,0x20,0x20};
由冠元
unsignedcharcodeid0[16]={0xd1,0xa7,0xba,0xc5,0xa1,0xc3,0x32,0x30,0x30,0x38,0x32,0x37,0x33,0x38,0x20,0x20};
//学号:
20082738
unsignedcharcodeid1[16]={0xd1,0xa7,0xba,0xc5,0xa1,0xc3,0x32,0x30,0x30,0x38,0x32,0x37,0x35,0x32,0x20,0x20};
20082752
voidinput_code(void);
voidinput_again(void);
voidwrong_code(void);
voidclose_window(void);
voidmenu(void);
voidyuzhimima(void);
voidprintmessage(void);
voidset_success();
voidlcd_init(void);
voidlcd_busy(void);
voidini_8279(void);
voidcheck_8279(void);
voidclr_lcd(void);
voidcorrect_code(void);
voidinput_newcode();
voiddelay();
/***********************main*********************************/
voidmain()
{TMOD=0x15;
EA=1;
EX0=1;
//按键中断打开
lcd_init();
/*lcd初始化*/
clr_lcd();
ini_8279();
/*8279初始化*/
state=0;
//先进入输入密码界面
while
(1)
{
switch(state)
case0:
if(((hz3[0]&
hz3[1]&
hz3[2]&
hz3[3])&
0x0ff)==0&
&
n<
5)//存储器中数据为空//输入初始密码
{
yuzhimima();
if(flag==1)
{
EX0=0;
if(key>
=0x00&
key<
=0x09)
{
hz3[n]=key;
add=0x92;
lcd_busy();
w_c_add=add;
for(i=0;
i<
=n;
i++)
lcd_busy();
w_d_add=hz3[i]+0x30;
lcd_busy();
}
n++;
}
if(key==15||n==5)
n=0;
state=1;
set_success();
flag=0;
EX0=1;
}
}
else
state=1;
break;
case1:
input_code();
state=2;
break;
case2:
if(flag==1)/*取键盘密码值*/
{
EX0=1;
if(key>
hz4[n]=key;
add=0x92;
lcd_busy();
w_c_add=add;
for(i=0;
{
w_d_add=hz4[i]+0x30;
n=n+1;
}
if(key==15||n==5)
state=3;
n=0;
flag=0;
EX0=1;
}
break;
case3:
EX0=0;
if((hz3[0]==hz4[0])&
(hz3[1]==hz4[1])&
(hz3[2]==hz4[2])&
(hz3[3]==hz4[3]))//对比密码
//显示密码正确
clr_lcd();
correct_code();
delay();
state=4;
else
{
if(times<
2)
wrong_code();
delay();
state=11;
case4:
EX0=1;
clr_lcd();
menu();
state=5;
flag=0;
case5:
if(flag==1)
if(key==1)
{state=6;
}
elseif(key==2)
{state=8;
}//进入系统界面1用户信息2修改密码3返回
elseif(key==3)
{state=1;
}
else
{state=5;
}
case6:
clr_lcd();
printmessage();
state=7;
//用户信息打印
break;
case7:
if(flag==1)
if(key==15)
{state=4;
case8:
input_newcode();
//修改密码写入hz3[]
state=9;
case9:
=0&
k<
=9)
{
hz3[n]=key;
add=0x92;
lcd_busy();
w_c_add=add;
for(i=0;
lcd_busy();
w_d_add=hz3[i]+0x30;
n++;
state=10;
n=0;
case10:
EX0=0;
//关按键中断
input_again();
//再次用电机输入密码
TH0=0;
TL0=0;
TH1=-(50000/256);
TL1=-(50000%256);
TR0=1;
TR1=1;
ET1=1;
while(x<
4);
x=0;
TR1=0;
TR0=0;
ET1=0;
state=12;
case11:
close_window();
delay();
//对比密码不正确跳到state10正确显示成功返回state4
case12:
if((hz3[0]==hz4[0])&
(hz3[3]==hz4[3]))
set_success();
if(times<
4;
hz4[i]=0;
state=10;
flag=1;
default:
/***************子程序*******************************/
/***************输入密码*****************************/
voidinput_code()
{
add=0x80;
/*设置显示坐标,80H对应字符的第一行第一列*/
lcd_busy();
w_c_add=add;
/*写数据*/
for(i=0;
8;
w_d_add=hz1[2*i];
/*写数据,上半字节*///hz1[]请输入密码:
w_d_add=hz1[2*i+1];
/*写数据,下半字节*/
//delay();
/******************newcode****************************/
voidinput_newcode()
w_d_add=hz14[2*i];
w_d_add=hz14[2*i+1];
}
/***************再次输入密码***************************/
voidinput_again(void)
w_d_add=hz2[2*i];
/*写数据,上半字节*///hz1[]再次输入密码:
w_d_add=hz2[2*i+1];
/*写数据,下半字节*/
/******************密码错误****************************/
voidwrong_code(void)
add=0x88;
w_d_add=hz5[2*i];
/*写数据,上半字节*///hz5[]错误密码
w_d_add=hz5[2*i+1];
times++;
/******************密码正确****************************/
voidcorrect_code(void)
w_d_add=hz12[2*i];
w_d_add=hz12[2*i+1];
/********************设置成功********************************/
voidset_success()
add=0x98;
lcd_busy();
w_c_add=add;
for(i=0;
w_d_add=hz13[2*i];
/*写数据,上半字节*/
w_d_add=hz13[2*i+1];
/*****************关闭显示****************************/
voidclose_window(void)
times=0;
w_d_add=hz7[2*i];
/*写数据,上半字节*///谢谢使用
w_d_add=hz7[2*i+1];
add=0x90;
w_d_add=hz8[2*i];
/*写数据,上半字节*///byebye
w_d_add=hz8[2*i+1];
/*****************界面显示****************************/
voidmenu(void)/*界面*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东北大学 单片机 实现 一个 密码锁 程序