久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
新手寫(xiě)的單片機(jī)密碼鎖程序
[打印本頁(yè)]
作者:
times_love
時(shí)間:
2019-8-23 10:30
標(biāo)題:
新手寫(xiě)的單片機(jī)密碼鎖程序
功能:1,點(diǎn)擊開(kāi)鎖后,輸入密碼,設(shè)置的初始密碼為666666,LED燈亮
2,點(diǎn)擊上鎖,密碼鎖鎖上,LED燈關(guān)閉
3,點(diǎn)擊修改密碼,先輸入原密碼,正確后輸入新密碼,屏幕顯示save over,點(diǎn)擊保存密碼,密碼保存在EEPROM中(因?yàn)椴恢涝趺丛赑ROTEUS中使用EEPROM所以這個(gè)功能實(shí)現(xiàn)不了,但是要是在單片機(jī)開(kāi)發(fā)板上就可以)
4,開(kāi)鎖10秒后自動(dòng)上鎖
5,串口可以使用虛擬串口,但由于學(xué)的不多,只能傳入單個(gè)字符選擇需要實(shí)現(xiàn)的功能,然后用鍵盤(pán)實(shí)現(xiàn)功能
6,初學(xué)以來(lái)第一次做的比學(xué)單個(gè)功能時(shí)稍大一點(diǎn)的程序,可能有些地方考慮不周,可以交流一下嘛^-^.
電路原理圖如下:
捕獲.PNG
(217.58 KB, 下載次數(shù): 90)
下載附件
2019-8-23 10:29 上傳
單片機(jī)源程序如下:
#include<reg52.h>
#include"lcd.h"
#include"eeprom.h"
#include"keyboard.h"
#include"sounder.h"
#include"led.h"
#define u8 unsigned char
#define u16 unsigned int
unsigned long pass=666666;
unsigned int Timer0=0;
unsigned char uartvalue=0;
u8 code str1[]=" Password: ";
u8 code str2[]=" Close ";
u8 code str3[]=" Old Password: ";
u8 code str4[]="0123456789";
u8 code str5[]=" OPEN ";
u8 code str6[]=" Password Lock ";
u8 code str7[]=" Wrong! ";
u8 code str8[]=" New Password: ";
u8 code str9[]="******";
u8 code str10[]=" Change Over ";
u8 code str11[]=" Save Over ";
u8 code str12[]="修改密碼";
u8 code kong[]=" ";
u8 strbuff[16];
void E2init()//EEPROM初始值
{
unsigned long num1,num2,num3,date1,date2,date3;
num1=pass/10000;
num2=pass/100%100;
num3=pass%100;
At24c02write(1,num1);
At24c02write(2,num2);
At24c02write(3,num3);
date1=At24c02read(1);
date2=At24c02read(2);
date3=At24c02read(3);
pass=(date1*10000+date2*100+date3);
}
void Lockinit()//最初屏顯
{
unsigned char i;
Write_cmd(0x80);
for(i=0;i<16;i++)
{
Write_dat(str6[i]);
}
}
void clear(unsigned char j)//清屏
{
unsigned char i;
if(j==0)
{
Write_cmd(0x80);
for(i=0;i<16;i++)
{
Write_dat(kong[i]);
}
}
if(j==1)
{
Write_cmd(0x80+0x40);
for(i=0;i<16;i++)
{
Write_dat(kong[i]);
}
}
}
void open()//開(kāi)鎖
{
unsigned char i=0,j=0;
unsigned long mima=0;
while(1)
{
Keyvalue();
if(keystate==1&&(value>=0&&value<=9||value==14))//輸入密碼
{
keystate=0;
Write_cmd(0x80+0x40+j);
Write_dat(str9[j]);
j++;
mima=mima*10+value;
if(value==14)
{
clear(1);
j=0;
mima=0;
}
}
if(j==6)//密碼輸入完畢,判斷
{
delay(50000);
if(mima==pass)//正確
{
Write_cmd(0x80);
for(i=0;i<16;i++)
{
Write_dat(str5[i]);
}
TR0=1;
clear(1);
LED=0;
}
else//錯(cuò)誤
{
Write_cmd(0x80);
for(i=0;i<16;i++)
{
Write_dat(str7[i]);
}
clear(1);
LED=1;
}
break;
}
}
}
void change()//修改密碼
{
unsigned char i,j=0;
unsigned long mima=0,changemima=0;
TR0=0;
Timer0=0;
while(1)
{
Keyvalue();
if(keystate==1&&(value>=0&&value<=9||value==14))//輸入密碼
{
keystate=0;
Write_cmd(0x80+0x40+j);
Write_dat(str4[value]);
j++;
mima=mima*10+value;
if(value==14)
{
clear(1);
j=0;
mima=0;
}
}
if(j==6)//輸入完畢,判斷
{
delay(50000);
clear(1);
if(mima==pass)//密碼正確
{
Write_cmd(0x80);
for(i=0;i<16;i++)
{
Write_dat(str8[i]);
}
i=0;
while(1)
{
Keyvalue();
if(keystate==1&&(value>=0&&value<=9||value==14))//輸入需要修改的密碼
{
keystate=0;
Write_cmd(0x80+0x40+i);
Write_dat(str4[value]);
changemima=changemima*10+value;
i++;
if(value==14)
{
clear(1);
i=0;
changemima=0;
}
}
if(i==6)//輸入完畢,保存
{
delay(50000);
pass=changemima;
Write_cmd(0x80);
for(i=0;i<16;i++)
{
Write_dat(str10[i]);
}
clear(1);
break;
}
}
}
else//舊密碼輸入錯(cuò)誤
{
Write_cmd(0x80);
for(i=0;i<16;i++)
{
Write_dat(str7[i]);
}
clear(1);
LED=1;
}
break;
}
}
}
void save()//保存密碼
{
unsigned char i;
unsigned long num1,num2,num3;
TR0=0;
Timer0=0;
num1=pass/10000;
num2=pass/100%100;
num3=pass%100;
At24c02write(1,num1);
At24c02write(2,num2);
At24c02write(3,num3);
Write_cmd(0x80);
for(i=0;i<16;i++)
{
Write_dat(str11[i]);
}
clear(1);
}
void KeyBoard()//鍵值功能
{
unsigned char i=0;
unsigned char keylock = 0;
while(1)
{
Keyvalue();
if(value==10)//開(kāi)鎖
{
keystate=0;
Write_cmd(0x80);
for(i=0;i<16;i++)
{
Write_dat(str1[i]);
}
keylock=1;
}
if(value==11)//上鎖
{
keystate=0;
Write_cmd(0x80);
for(i=0;i<16;i++)
{
Write_dat(str2[i]);
}
clear(1);
LED=1;
break;
}
if(value==12)//修改密碼
{
keystate=0;
Write_cmd(0x80);
for(i=0;i<16;i++)
{
Write_dat(str3[i]);
}
keylock=2;
}
if(value==13)//保存密碼
{
keystate=0;
keylock=3;
}
switch(keylock)
{
case 1:keylock = 0;open();value=15;break;
case 2:keylock = 0;change();value=15;break;
case 3:keylock = 0;save();value=15;break;
default:break;
}
}
}
void main()
{
TMOD=0X21; //定時(shí)器1方式2,定時(shí)器0方式1
SCON=0X50; //串口設(shè)置
PCON=0X80; //波特率加倍
TH1=0XFA; //設(shè)置波特率為9600
TL1=0XFA;
TH0=0XF8; //定時(shí)2ms
TL0=0XCC;
EA=1;
ES=1;
ET0=1;
TR1=1;
Lcdinit(); //LCD1602初始化
Lockinit();
E2init();
while(1)
{
KeyBoard();
}
}
void ledonoff() interrupt 1
{
unsigned char i;
TH0=0XF8;
TL0=0XCC;
if(LED==0)
{
Timer0++;
}
if(Timer0==5000)
{
LED=1;
Timer0=0;
Write_cmd(0x80);
for(i=0;i<16;i++)
{
Write_dat(str2[i]);
}
TR0=0;
}
}
void Uart() interrupt 4
{
unsigned char UART_buff;
if(RI)
{
UART_buff=SBUF;
if(UART_buff=='0') value=10;
if(UART_buff=='1') value=11;
if(UART_buff=='2') value=12;
if(UART_buff=='3') value=13;
SBUF=UART_buff;
}
if(TI)
{
TI=0;
}
}
復(fù)制代碼
源程序51hei下載,但是沒(méi)有仿真,求大神分享個(gè)仿真圖啊:
test_23,門(mén)禁.zip
(72.98 KB, 下載次數(shù): 50)
2019-8-23 10:28 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
a1091182805
時(shí)間:
2020-4-12 14:18
hhh附件里好像沒(méi)有仿真。
作者:
nifu9110
時(shí)間:
2020-6-4 22:41
附件里沒(méi)有仿真。。。。。。
作者:
times_love
時(shí)間:
2020-8-29 13:12
額,這是很早做的了,仿真已經(jīng)刪除了,但是上面我貼的圖就是仿真圖嘛,可以根據(jù)那個(gè)畫(huà)一個(gè)
作者:
faridzled
時(shí)間:
2020-8-31 07:36
thanks for sharing
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
羞羞视频免费在线
|
中文字幕亚洲一区二区三区
|
亚洲一区二区视频
|
久久精品国产一区二区电影
|
www.伊人.com
|
亚洲婷婷一区
|
免费黄色日本
|
日韩黄色av
|
日韩中文一区
|
亚洲成年人免费网站
|
91精品久久久久久久久久入口
|
91欧美激情一区二区三区成人
|
国产成人免费在线
|
韩日在线
|
91精品国产综合久久久久
|
精品久久久久久
|
2018中文字幕第一页
|
久久国产精品99久久久久久丝袜
|
国产精品国产成人国产三级
|
永久看片
|
一级毛片色一级
|
欧美日韩不卡合集视频
|
欧美精品久久
|
亚洲成人在线免费
|
欧美激情一区二区三级高清视频
|
欧美乱大交xxxxx另类电影
|
日本精品在线一区
|
国产精品久久久久久福利一牛影视
|
亚洲欧美激情精品一区二区
|
成人免费淫片aa视频免费
|
亚洲午夜视频
|
av网站在线免费观看
|
夜夜草
|
欧美13videosex性极品
|
国产免费又黄又爽又刺激蜜月al
|
伊人91在线
|
亚洲在线成人
|
国产精品久久久久婷婷二区次
|
欧美 日韩 国产 在线
|
性高湖久久久久久久久aaaaa
|
欧美精品一区二区三区四区五区
|