|
自行DIY電磁密碼鎖 在我的設(shè)計(jì)中沒有用密碼存儲(chǔ)器 程序在仿真中是沒有問題 我也做過實(shí)物 但是由于封裝的問題 打印的板子不合適 就不能實(shí)現(xiàn)功能 還有我的程序還有不足的地方 大家就一起討論 我也準(zhǔn)備用密碼存儲(chǔ)器來搞 等我搞出來了在分享 我會(huì)上傳我的PCB設(shè)計(jì)、仿真設(shè)計(jì)和程序!
原理圖(用AD畫的,附件里面有工程文件):
3.JPG (112.35 KB, 下載次數(shù): 136)
下載附件
原理圖
2017-4-12 19:19 上傳
仿真原理圖:
2.JPG (159.77 KB, 下載次數(shù): 113)
下載附件
仿真圖
2017-4-12 19:19 上傳
pcb文件(用AD畫的,附件里面有工程文件):
4.JPG (99.94 KB, 下載次數(shù): 129)
下載附件
PCB圖
2017-4-12 19:19 上傳
0.png (55.08 KB, 下載次數(shù): 138)
下載附件
2017-4-12 21:46 上傳
程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- uint code jianzhi[]={0xee,0xde,0xbe,0x7e,
- 0xed,0xdd,0xbd,0x7d,
- 0xeb,0xdb,0xbb,0x7b};
- uint code number[]= {0xc0,0xf9,0xa4,0xb0,
- 0x99,0x92,0x82,0xf8,
- 0x80,0x90};
- uint mima[]={0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9};
- uchar mima1[6];
- uchar table1[]="Please enter a 7";
-
- uchar table2[]=" bit password !";
-
- uchar table3[]=" Hello user !";
- uchar table4[]="*******";
- sbit rr=P1^0; //綠燈
- sbit rd=P1^1; //藍(lán)燈
- sbit re=P1^2; //紅燈
- sbit OK=P3^3; //OK按鈕
- sbit delete=P3^4;//delete按鈕
- sbit bao=P3^5; //警報(bào)器
- sbit rs=P3^5;
- sbit wr=P3^6;
- sbit e=P3^7;
- void delay(uchar del)
- {
- uint i,j;
- for(i=0;i<del;i++)
- for(j=0;j<130;j++);
- }
- void write_com(uchar com)
- {
- P0=com;
- rs=0;
- wr=0;
- e=0;
- delay(1);
- e=1;
- delay(1);
- e=0;
- }
- void write_data(uchar dat)
- {
- P0=dat;
- rs=1;
- wr=0;
- e=0;
- delay(1);
- e=1;
- delay(1);
- e=0;
- }
- void initi()
- {
- write_com(0x38);//16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)口
- write_com(0x0c);//開顯示,顯示光標(biāo),光標(biāo)不閃爍
- write_com(0x06);//地址自動(dòng)加一,不移屏
- write_com(0x01);//清屏
- }
- void cle()
- {
- write_com(0x01);//清屏
- }
- void xianshi()
- {
- uchar i=0;
- write_com(0x80+0x00);
- while(table1[i]!='\0')
- {
- write_data(table1[i++]);
- delay(1); //顯示模塊
- }
- i=0;
- write_com(0x80+0x41);
- while(table2[i]!='\0')
- {
- write_data(table2[i++]);
- delay(1); //顯示模塊
- }
- }
- void xianshi1()
- {
- uchar i=0;
- write_com(0x80+0x00);
- while(table3[i]!='\0')
- {
- write_data(table3[i++]);
- delay(1); //顯示模塊
- }
- }
- void xianshi2(int b)
- {
- uint i;
- write_com(0x80+0x41);
- for(i=0;i<b+1;i++) //顯示自定義字符
- {
- write_data(table4[i]);
- delay(5);
- }
- }
- void panduan()
- {
- uint i,flag;
- for(i=0;i<6;i++)
- if(mima1[i]==mima[i])
- flag=1;
- else
- flag=0;
- if (flag==0)
- {
- re=0;
- delay(1000);
- re=1; //判斷模塊
- }
- else if (flag==1)
- {
- rr=0;
- delay(1000);
- rr=1;
- }
- }
- void key ()
- {
- uchar zhi,lie,i,j,k=-1,shuzhi=0;
- delay(1000);
- cle();
- xianshi1();
- while(1)
- {
- P2=0xf0;
- if(P2!=0xf0)
- {
- delay(10);
- if(P2!=0xf0)
- {
- lie=P2;
- P2=0x0f;
- zhi=lie|P2;
- for(i=0;i<12;i++)
- {
- if(zhi==jianzhi[i])
- {
- shuzhi=i;
- k++; //按鍵模塊
- rd=0;
- delay(1000);
- rd=1;
- break;
- }
- }
- for(j=k;j<k+1;j++)
- mima1[j]=number[shuzhi];
- xianshi2(k);
- while(P2!=0x0f);
- delay(10);
- }
- }
-
- if(OK==0&&k==6)
- {
- panduan(); //判斷調(diào)用
- k=-1;
- cle();
- xianshi1();
- }
- if(delete==0)
- {
- for (j=-1;j<k;j++)
- mima[j]=0xc0;
- cle();
- xianshi1();
- k=-1; //清零調(diào)用
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
0.png (46.46 KB, 下載次數(shù): 154)
下載附件
2017-4-12 21:53 上傳
0.png (58.59 KB, 下載次數(shù): 145)
下載附件
2017-4-12 21:54 上傳
全部設(shè)計(jì)資料下載:
按鍵和顯示組合pcb電路板.zip
(9.92 MB, 下載次數(shù): 47)
2017-4-12 19:21 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|