標(biāo)題:
PIC18F452單片機proteus仿真 密碼鎖程序
[打印本頁]
作者:
LOULOULOU
時間:
2020-5-31 18:04
標(biāo)題:
PIC18F452單片機proteus仿真 密碼鎖程序
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei截圖20200531180309.png
(102.66 KB, 下載次數(shù): 77)
下載附件
仿真圖
2020-5-31 18:03 上傳
單片機源碼:
#include <p18F452.h> //調(diào)用頭文件
#include<string.h>
#define RB0 PORTBbits.RB0
#define RB1 PORTBbits.RB1
#define RB2 PORTBbits.RB2
#define RB3 PORTBbits.RB3
#define RB4 PORTBbits.RB4
#define RB5 PORTBbits.RB5
#define RB6 PORTBbits.RB6
#define RB7 PORTBbits.RB7
/*定義密碼*/
char password1[9]={'1','2','3','4','5','6','B','A','\0'
};
unsigned int VALUE[]=
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,16};
const unsigned char LED[17]=
{
0x80, //.
0x3f, //0
0x06, //1
0x5b, //2
0x4f, //3
0x66, //4
0x6d, //5
0x7d, //6
0x07, //7
0x7f, //8
0x6f, //9
0x77, //A
0x7c, //b
0x39, //C
0x5e, //d
0x79, //E
0x71, //F
};
int i,j,k,wei,t,m;
char x[9]={'0','0','0','0','0','0','0','0','\0'};
void key(void); //按鍵掃描
void choose(void); //按鍵確定
void delay(void); //延時
char turn(char z); //將asca值轉(zhuǎn)化為字符類型值
void reset(void); //重置
//---------------------------------------
//名稱: 主函數(shù)
//-----------------------------------------
void main(void)
{
TRISB=0B11110000; //RC高四位輸入,低四位輸出
TRISD=0B00000000; //RD設(shè)置為輸出
TRISC=0B00000000;
PORTD=0B00000000; //
PORTC=0B00000000;
j=0;
wei=0;
while(1)
{
if(wei==1){
PORTC=0B00000000;
}
if(wei==2){
PORTC=0B00000001;
}
if(wei==3){
PORTC=0B00000010;
}
if(wei==4){
PORTC=0B00000011;
}
if(wei==5){
PORTC=0B00000100;
}
if(wei==6){
PORTC=0B00000101;
}
if(wei==7){
PORTC=0B00000110;
}
if(wei==8){
PORTC=0B00000111;
}
if(k==16){ //按F 重置
reset();
}
key();
PORTD=LED[k];
x[wei-1]=turn(k-1);
//PORTCbits.RC7=1;
if(strcmp(x,password1)==0 && wei==8){
PORTCbits.RC7=1;
}
}
}
void choose()
{
if(RB4==0){
delay();
if(RB4==0){
j=VALUE[i];
wei++;
while(!RB4);
delay();
while(!RB4);
}
}
else if(RB5==0){
delay();
if(RB5==0){
j=VALUE[i+1];
wei++;
while(!RB5);
delay();
while(!RB5);
}
}
else if(RB6==0){
delay();
if(RB6==0){
j=VALUE[i+2];
wei++;
while(!RB6);
delay();
while(!RB6);
}
}
else if(RB7==0){
delay();
if(RB7==0){
j=VALUE[i+3];
wei++;
while(!RB7);
delay();
while(!RB7);
}
}
k=j;
Nop();
}
void key()
{
RB0=0,RB1=1,RB2=1,RB3=1;
i=0;
choose();
RB0=1,RB1=0,RB2=1,RB3=1;
i=4;
choose();
RB0=1,RB1=1,RB2=0,RB3=1;
i=8;
choose();
RB0=1,RB1=1,RB2=1,RB3=0;
i=12;
choose();
Nop();
}
void delay(){
for(t=2;t>0;t--)
for(m=100;m>0;m--);
}
char turn(char z)
{
if(z>=0 && z<=0x09) return z+'1'-1;
if(z>=0X0A && z<=0x0F) return z+'A'-10;
}
void reset(void)
{
PORTD=0B00000000; //
PORTC=0B00000000;
j=0;
wei=0;
x[0]='0';
x[1]='0';
x[2]='0';
x[3]='0';
x[4]='0';
x[5]='0';
x[6]='0';
x[7]='0';
x[8]='\0';
i=0;
k=0;
}
復(fù)制代碼
全部資料51hei下載地址:
password.rar
(90.39 KB, 下載次數(shù): 59)
2020-5-31 18:00 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1