求51微控制器c語言編的密碼鎖程式

2021-12-19 15:20:12 字數 5584 閱讀 6386

1樓:匿名使用者

#include

#define uint unsigned int

#define uchar unsigned char

#define bin(a,b,c,d,e,f,g,h) ((a<<7)+(b<<6)+(c<<5)+(d<<4)+(e<<3)+(f<<2)+(g<<1)+(h<<0))

//下面的code表示陣列存放在rom中,因為這個陣列的值不需要改寫

uchar code keycode[16]=;//值為m*(n+1)的乘積,用於key()

uchar dis[6];

msdelay(uint x)//延時子函式}}

//鍵盤子程式一,鍵盤值與陣列值對比得到

uchar key(void)

while(!temp);

matrix=m*(n+1);/*為避免乘積重複,n+1*/

for(k=0;k<16;k++) //keycode:見前

return(16);

} //if loop

}//j loop

}//i loop

}//key end

//用switch...case語句得到鍵盤值*/

uchar key1(void)

while(!temp);

matrix=m*(n+1);

switch(matrix) //此方法的基本思路:

//switch end

} //if loop

}//j loop

}//i loop

}//key end

//依次掃描16個按鍵

uchar key2(void)

while(!temp);

return(1);}

p1=0x1d; /*p1=0001 1101,行一為高,列二為低,掃描第二個按鍵,下面掃描其餘按鍵*/

temp=p1&0xf0;

if (!temp) while(!temp);

return(2);}

p1=0x1b;

temp=p1&0xf0;

if (!temp) while(!temp);

return(3);}

p1=0x17;

temp=p1&0xf0;

if (!temp) while(!temp);

return(4);}

p1=0x2e;

temp=p1&0xf0;

if (!temp) while(!temp);

return(5);}

p1=0x2d;

temp=p1&0xf0;

if (!temp) while(!temp);

return(6);}

p1=0x2b;

temp=p1&0xf0;

if (!temp) while(!temp);

return(7);}

p1=0x27;

temp=p1&0xf0;

if (!temp) while(!temp);

return(8);}

p1=0x4e;

temp=p1&0xf0;

if (!temp) while(!temp);

return(9);}

p1=0x4d;

temp=p1&0xf0;

if (!temp) while(!temp);

return(0);}

p1=0x4b;

temp=p1&0xf0;

if (!temp) while(!temp);

return(10);}

p1=0x47;

temp=p1&0xf0;

if (!temp) while(!temp);

return(11);}

p1=0x8e;

temp=p1&0xf0;

if (!temp) while(!temp);

return(12);}

p1=0x8d;

temp=p1&0xf0;

if (!temp) while(!temp);

return(13);}

p1=0x8b;

temp=p1&0xf0;

if (!temp) while(!temp);

return(14);}

p1=0x87;

temp=p1&0xf0;

if (!temp) while(!temp);

return(15);}

return(16); //掃描all按鍵都未按下,則輸出16

}//key2 end.

////////時鐘中斷顯示子程式

void t0_int() interrupt 1

p0=5-i;

p0=p0|(dis[i]<<4);

i++;

tl0=0;

th0=252;}

void distri(uint disnum)

main()

while(1);}

2樓:酒璞伊新語

首先得說明我這個可是自己原創手打的,但是沒去**了,程式可能有錯誤,你自己修改下吧

#include

typedef

unsigned

char

uchar;

typedef

unsigned

intuint;

sbit

key1=p0^0;

sbit

key2=p0^1;

sbit

key3=p0^2;

sbit

key4=p0^3;

sbit

wela=p2^0;//位鎖存端

#define

smgp1

sbit

led=p3^0;//低電平亮

uchar

code

table=;//共陽數碼管

p,euchar

chushi_mima=;

uchar

shuru_mima[3];

uchar

index;//控制輸入密碼的位數

uchar

flag_3s=0;//3s標誌位

uchar

keydown;//確定按鍵變數

#define

times

15//去抖時間15ms

uchar

key1_count,key2_count,key3_count,key4_count;

void

init()

void

main()

flag_3s=0;

for(i=0;i<3;i++)

}else}}

}}void

timer0()

interrupt

1/*********1ms中斷掃描按鍵(包含去抖程式)********/

if(!key1&&key1_count!=0)}else

if(!key1)

key1_count=times;

//key2,key3,key4你自己寫吧}

3樓:旗淼狄採夢

假設晶振為12m,數碼管共陰,且由p1口控制器;led高電平點亮。

#include

void

delay(int);

/*延時程式*/

sbit

p3_0=p3^0;

intmain()

p1=0x73;

/*密碼正確,數碼管顯示為p*/

delay(3);

/*延時大約3秒*/

p3_0=1;

/*led點亮,密碼鎖解開*/

.../*解鎖後的其他任務*/

return0;}

void

delay(intt)

求51微控制器控制的電子密碼鎖c語言程式

4樓:我在哪我是誰

給你個參考資料吧,沒有程式,希望對你能有一點點幫助!我給你發郵箱裡吧。

求基於51微控制器的電子密碼鎖的c語言程式。急!!!!

5樓:不會飛

//例項80:矩陣式鍵盤實現的電子密碼鎖

#include//包含51微控制器暫存器定義的標頭檔案

sbit p14=p1^4; //將p14位定義為p1.4引腳

sbit p15=p1^5; //將p15位定義為p1.5引腳

sbit p16=p1^6; //將p16位定義為p1.6引腳

sbit p17=p1^7; //將p17位定義為p1.7引腳

sbit sound=p3^7; //將sound位定義為p3.7

unsigned char keyval; //儲存按鍵值

函式功能:延時輸出音訊

void delay(void)

函式功能:軟體延時子程式

void delay20ms(void)

函式功能:主函式

void main(void)

; //設定密碼

ea=1; //開總中斷

et0=1; //定時器t0中斷允許

tmod=0x01; //使用定時器t0的模式1

th0=(65536-500)/256; //定時器t0的高8位賦初值

tl0=(65536-500)%256; //定時器t0的高8位賦初值

tr0=1; //啟動定時器t0

keyval=0xff; //按鍵值初始化

while(keyval!=d[0]) //第一位密碼輸入不正確,等待

;while(keyval!=d[1]) //第二位密碼輸入不正確,等待

;while(keyval!=d[2]) //第三位密碼輸入不正確,等待

; while(keyval!=d[3]) //第四位密碼輸入不正確,等待

;while(keyval!=d[4]) //第五位密碼輸入不正確,等待

;while(keyval!=d[5]) //第六位密碼輸入不正確,等待

;while(keyval!=d[6]) //沒有輸入「ok」,等待

;p3=0xfe; //p3.0引腳輸出低電平,點亮led

函式功能:定時器0的中斷服務子程式,進行鍵盤掃描,判斷鍵位

void time0_interserve(void) interrupt 1 using 1 //定時器t0的中斷編號為1,使用第一組暫存器

}tr0=1; //開啟定時器t0

th0=(65536-500)/256; //定時器t0的高8位賦初值

tl0=(65536-500)%256; //定時器t0的高8位賦初值}

51微控制器資料搬運c語言程式,51微控制器訪問片內資料儲存器某單元的內容用c語言怎麼寫???

aa i bb i 51微控制器訪問片內資料儲存器某單元的內容用c語言怎麼寫?方法1 char data p 定義一個指向片內ram地址的指標 p 0x30 片內ram地址為0x30 p 0x12 向0x30內寫入立即數0x12 方法2 include char x x dbyte 0x30 將片內...

微控制器程式設計中什麼意思,51微控制器C語言中和的意思是什麼

在微控制器c語言程式設計中,是先加再賦值的意思。例如 test 5 相當於test test 5 51微控制器c語言中 和 的意思是什麼?u8 data 1 相當於 u8 data u8 data 1,u8 data u8temp 相當於 u8 data u8 data u8temp。類似的還有 這...

51微控制器的分時複用,80c51微控制器p0口地址資料分時複用如何實現的

51微控制器的分時來複用51微控制器的分源 時複用功能,最直接的就bai是movx指令du,用這個指令就是在分時復zhi用p0口,執dao行 movx a,dptr,那麼首先要送地址a0 a7給p0口,ale有效,鎖存在373上,再將這個地址的資料從p0口讀入傳給a。下面是p0口既送數碼管段訊號,又...