導航:首頁 > 操作系統 > 51單片機簡易密碼鎖

51單片機簡易密碼鎖

發布時間:2025-07-03 22:42:41

A. 51單片機關於密碼鎖的畢業設計,論文

程序設計內容

(1). 密碼的設定,在此程序中密碼是固定在程序存儲器ROM中,假設預設的密碼為「12345」共5位密碼。

(2). 密碼的輸入問題:由於採用兩個按鍵來完成密碼的輸入,那麼其中一個按鍵為功能鍵,另一個按鍵為數字鍵。在輸入過程中,首先輸入密碼的長度,接著根據密碼的長度輸入密碼的位數,直到所有長度的密碼都已經輸入完畢;或者輸入確認功能鍵之後,才能完成密碼的輸入過程。進入密碼的判斷比較處理狀態並給出相應的處理過程。

(3).按鍵禁止功能:初始化時,是允許按鍵輸入密碼,當有按鍵按下並開始進入按鍵識別狀態時,按鍵禁止功能被激活,但啟動的狀態在3次密碼輸入不正確的情況下發生的。

C語言源程序

#includeunsignedcharcodeps[]={1,2,3,4,5};

unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,                              

0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};

unsignedcharpslen=9;unsignedchartemplen;

unsignedchardigit;unsignedcharfuncount;

unsignedchardigitcount;

unsignedcharpsbuf[9];

bitcmpflag;

bithibitflag;

biterrorflag;

bitrightflag;

unsignedintsecond3;

unsignedintaa;

unsignedintbb;

bitalarmflag;

bitexchangeflag;

unsignedintcc;

unsignedintdd;

bitokflag;

unsignedcharoka;

unsignedcharokb;

voidmain(void)

{ 

unsignedchari,j; 

P2=dispcode[digitcount]; 

TMOD=0x01; 

TH0=(65536-500)/256; 

TL0=(65536-500)%6; 

TR0=1; 

ET0=1; 

EA=1; 

while(1)  

 {     

if(cmpflag==0)       

{         

if(P3_6==0)//functionkey          

 {             

for(i=10;i>0;i--)             

for(j=248;j>0;j--);     

        if(P3_6==0)               

{               

  if(hibitflag==0)      

             {    

                 funcount++; 

                    if(funcount==pslen+2)

                       { 

                        funcount=0;

                         cmpflag=1;

                        }

                      P1=dispcode[funcount];

                   }

                   else

                     {

                        second3=0;

                     } 

                while(P3_6==0);

               }

           }

         if(P3_7==0)//digitkey

           {

             for(i=10;i>0;i--)

             for(j=248;j>0;j--);

             if(P3_7==0)

               {

                 if(hibitflag==0)

                   {

                     digitcount++; 

                 if(digitcount==10)

                       {

                         digitcount=0;

                       }

                     P2=dispcode[digitcount];

                     if(funcount==1)

                       {

                         pslen=digitcount;                         

templen=pslen;

                       }

                       elseif(funcount>1)

                         { 

                          psbuf[funcount-2]=digitcount;

                         }

                   }

                   else

                     {

                       second3=0;

                     }

                 while(P3_7==0);

               }

           }

       } 

      else

         {

           cmpflag=0;

           for(i=0;i

             { 

              if(ps[i]!=psbuf[i])

                 {

                   hibitflag=1;

                   i=pslen;

                   errorflag=1;

                   rightflag=0;

                   cmpflag=0;

                   second3=0;

                   gotoa; 

                }

             }  

         cc=0; 

          errorflag=0; 

          rightflag=1;

           hibitflag=0;

a:   cmpflag=0;

         }

}

}

voidt0(void)

interrupt1using0{ TH0=(65536-500)/256; 

TL0=(65536-500)%6; 

if((errorflag==1)&&(rightflag==0)) 

{

     bb++;

     if(bb==800)

       {

         bb=0;

         alarmflag=~alarmflag;

       }

     if(alarmflag==1)

       {

         P0_0=~P0_0;

       }

     aa++;

     if(aa==800)

       {

         aa=0;

         P0_1=~P0_1;

       }

     second3++;

     if(second3==6400)

       {

         second3=0;

         hibitflag=0;

         errorflag=0;

         rightflag=0;

         cmpflag=0;

         P0_1=1; 

        alarmflag=0;

         bb=0; 

        aa=0; 

      }

   }

 if((errorflag==0)&&(rightflag==1))

   {

     P0_1=0;

     cc++;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(cc<1000)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;okflag=1;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif(cc<2000)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;okflag=0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errorflag=0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rightflag=0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hibitflag=0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmpflag=0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P0_1=1;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cc=0;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oka=0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;okb=0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;okflag=0;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P0_0=1;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(okflag==1)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oka++;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(oka==2)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oka=0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P0_0=~P0_0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;okb++;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(okb==3)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;okb=0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P0_0=~P0_0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;}

}

B. 課題任務是應用單片機實現一個簡單的電子密碼鎖,要求用4*4矩陣鍵盤組成0-9數字鍵及確認、取消功能鍵等

一個簡單的電子密碼鎖,要求用4*4矩陣鍵盤組成0-9數字鍵及確認、取消功能鍵等。這樣功能的密碼鎖,我在「谷歌」上找到一款「51單片機電子密碼鎖密碼掉電不丟失」,功能與你的要求差不多,可去看看。

C. 51單片機的電子密碼鎖程序,用KEIL C寫的

以前幫別人做過一個類似的

#include<reg52.h>

#include <def.h>

#include"lcd.c"

uchar key;

uchar num;

sbit alarm=P2^4;

sbit open=P2^1;

uchar code table[]={' ','1','2','3',

'4','5','6','7',

'8','9','0'};

void keyscan();

uchar hptable[10];

uchar password[6];

uchar wordbuf[6];

uchar fom[]="input password:";

uchar change[]="set mask:";

uchar state1[]="right";

uchar state2[]="error";

uchar sflag;

uchar dflag,cnt;

uchar setf,fset;

uchar flag;

void main ()

{

uchar hp;

alarm=0;

flag=0;

setf=0;

fset=0;

dflag=0;

lcden=0;

lcdrw=1;

lcdrs=1;

P3=0x0f;

for(hp=0;hp<6;hp++)

{

password[hp]='8';

}

write(0x38,0); //0為寫命令

delay(9);

write(0x08,0);

write(0x01,0);

write(0x06,0);

write(0x0c,0);

write(0x80,0);

for(hp=0;hp<15;hp++)

{

write(fom[hp],1);

}



while(1)

{

// alarm=!alarm;

keyscan();

if(setf==0)

{

if(num>=1&&num<=10)

{

write(0x80+0x40+cnt,0);

write('*',1);

wordbuf[cnt]=table[num];

cnt++;

num=0;


}

}

else

{

write(0x01,0);

write(0x80,0);

for(hp=0;hp<9;hp++)

{

write(change[hp],1);

}

fset=1;

cnt=0;

while(fset)

{

keyscan();

if(num>=1&&num<=10)

{

write(0x80+0x40+cnt,0);

write('*',1);

password[cnt]=table[num];

cnt++;

num=0;


}

if(num==11)

{

write(0x80+0x40+cnt-1,0);

write('',1);

cnt--;

num=0;

}

if(num==13)

{



flag=1;

num=0;

fset=0;

setf=0;

// goto chuz;

}


}

cnt=0;

}

if(flag==1)

{

write(0x01,0);

write(0x80,0);

for(hp=0;hp<15;hp++)

{

write(fom[hp],1);

}

flag=0;

}

if(num==11)

{

write(0x80+0x40+cnt-1,0);

write('',1);

cnt--;

num=0;

}

if(num==12)

{

if(dflag==1)

setf=1;

num=0;

}

if(num==13)

{

num=0;

write(0x80+0x40+10,0);

if(wordbuf[0]==password[0]&&wordbuf[1]==password[1]&&wordbuf[2]==password[2]&&wordbuf[3]==password[3]&&wordbuf[4]==password[4]&&wordbuf[5]==password[5])

{


for(hp=0;hp<5;hp++)

{

write(state1[hp],1);

}

sflag=0;

dflag=1;

}

else

{

for(hp=0;hp<5;hp++)

{

write(state2[hp],1);

}

sflag++;


}

}

if(sflag==3)

{

alarm=!alarm;

//delay(9);

}

if(num==14)

{

num=0;

cnt=0;

write(0x01,0);

write(0x80,0);

for(hp=0;hp<15;hp++)

{

write(fom[hp],1);

}

}

if(num==15)

{

if(dflag==1)

{

open=0;

dflag=0;

}

}

}

}


void keyscan ()


{

uchar tem,temp;

P3=0xfe;

temp=P3;

tem=temp&0xf0;

if (tem!=0xf0) //沒有鍵按下時它的值是不變的,即仍為0XF0,而有鍵接下時要變

{

delay(5); //延時消抖

temp=P3;

tem=temp&0xf0;

if (tem!=0xf0) //確認有鍵按下

{

temp=P3;

tem=temp&0xf0; //這里也可以不要這一步,但下面的case里的值也要變

switch (tem)

{

case 0xe0: num=0; break;

case 0xd0: num=1; break;

case 0xb0: num=2; break;

case 0x70: num=3; break;

default : ; break ;



}

while(tem!=0xf0) //等待鬆手

{

temp=P3;

tem=temp&0xf0;


}

}


}

P3=0xfd;

temp=P3;

tem=temp&0xf0;

if (tem!=0xf0)

{

delay(5);

temp=P3;

tem=temp&0xf0;

if (tem!=0xf0)

{

temp=P3;

tem=temp&0xf0;

switch (tem)

{

case 0xe0: num=4; break;

case 0xd0: num=5; break;

case 0xb0: num=6; break;

case 0x70: num=7; break;

default : ; break ;



}

while(tem!=0xf0)

{

temp=P3;

tem=temp&0xf0;


}

}


}

P3=0xfb;

temp=P3;

tem=temp&0xf0;

if (tem!=0xf0)

{

delay(5);

temp=P3;

tem=temp&0xf0;

if (tem!=0xf0)

{

temp=P3;

tem=temp&0xf0;

switch (tem)

{

case 0xe0: num=8; break;

case 0xd0: num=9; break;

case 0xb0: num=10; break;

case 0x70: num=11; break;

default : ; break ;



}

while(tem!=0xf0)

{

temp=P3;

tem=temp&0xf0;


}

}


}

P3=0xf7;

temp=P3;

tem=temp&0xf0;

if (tem!=0xf0)

{

delay(5);

temp=P3;

tem=temp&0xf0;

if (tem!=0xf0)

{

temp=P3;

tem=temp&0xf0;

switch (tem)

{

case 0xe0: num=12; break;

case 0xd0: num=13; break;

case 0xb0: num=14; break;

case 0x70: num=15; break;

default : ; break ;



}

while(tem!=0xf0)

{

temp=P3;

tem=temp&0xf0;


}

}


}

}

D. q求個51單片機的程序,最簡單的密碼鎖就行4位的 密碼是固定在程序里的就行。 當輸入的四位數正確並

密碼位數可以自定義,先提示用戶初始化密碼,然後提示用戶輸入密碼,正確則開鎖,驅動繼電器打開電磁鎖,液晶顯示門打開,然後用一路信號模擬門關閉,顯示又返回提示輸入密碼,輸入錯誤就提示輸入錯誤,然後繼續返回提示輸入密碼。
但是我用pic單片機做的,你需要我可以給你,自己修改些寄存器和參數就可以了。

E. 51單片機密碼鎖有什麼不足之處和改進的方案

保密性差、矩陣按鍵輸入方式。根據查詢51單片機密碼鎖使用說明得知,51單片機密碼鎖的不足為保密性差,51單片機保密性與網路信息技術有關,因此如果存在密碼泄露或被人為侵入密碼鎖系統,則密碼鎖容易被破壞,針對這個不足之處,改進方案可以採用矩陣安全輸入或外接電鎖增加保密性。電子密碼鎖是一種通過密碼輸入來控制電路或是晶元工作,從而控制機械開關的閉合,完成開鎖、閉鎖任務。

F. 單片機密碼鎖怎麼判斷密碼正確

假設你用的是最基礎的51單片機,
首先你要知道你的密碼是不是可以修改的,如果想設計成密碼能修改的,要加上非易失存儲器,就是掉電以後也能存儲數據的,類似於24系列的存儲器。如果只是4位密碼的話,24C02完全足夠了,也可以用一個18B20,用裡面的兩個非易失高低溫存儲位元組保存,不過四位密碼你要保存成BCD格式了。這個你自己斟酌了。
如果設計成不用修改密碼的,那就在程序初始化的時候,用一個數組保存密碼,然後依次判斷輸入的密碼和你保存的密碼就行了。給你寫個大概的框框,你參考吧
不能修改密碼的程序
code
uchar
password[4]={2,3,6,8};
//保存密碼的數組
密碼
2,3,6,8,
uchar
Getinput(void);//讀取一次有效輸入的值,按照你的實際硬體自己編寫
main()
{
uchar
i;
uchar
input[4]={0,0,0,0};
for(i=0;i<4;i++)
{
input[i]=Getinput();//讀取輸入的密碼
if(input[i]!=password[i])//如果密碼輸入錯誤
{
i=0;
break;//退出循環
}
}
if(3==i)
//判斷是否4為密碼都輸入正確
{
i=0;
open();//這里是你的開鎖函數
}
}
這只是簡單的實現,你還要考慮很多細節問題,比如輸入錯誤密碼的次數,還有開鎖與關鎖的相關提示等。

G. 求用51單片機控制的簡單密碼鎖原理

還是原來學匯編的時候的程序了

今天整理看到了

送給有用的人

code_seg segment code
data_seg segment data
stack_seg segment idata
spk bit p1.3
rseg data_seg
frq:ds 1
tmp:ds 1
rseg stack_seg
stack:ds 20
cseg at 00000h
ljmp main
cseg at 0003h
ljmp zd
rseg code_seg
jmp main
PORTA EQU 8FFFH ;8255A口地址
PORTB EQU 9FFFH ;8255B口地址
PORTC EQU 0AFFFH ;8255C口地址
CADDR EQU 0BFFFH ;8255控制字地址
main: MOV A,#88H ;方式0
MOV DPTR,#CADDR
MOVX @DPTR,A
CLR P1.2
mov r0,#50h ;初始密碼首地址
mov r1,#08h
szmm: mov @r0,#00h ;設置密碼
inc r0
djnz r1,szmm
mov r2,#03h ;設置輸入密碼的次數
K:mov ie,#81h ;中斷方式設置
mov tcon,#01h
k1:mov a,p1
clr p1.2 ;判斷開關位置
mov r1,a
anl a,#03h
jz dmm
dec a
jz xianshi
dec a
jz xianshi
dec a
jz dmm
dmm: mov r3,#08h ;讀密碼 八位
mov r6,#80h ;閃動位控制
mov r0,#60h ;讀入值的首地址
ll:acall display
acall KSI
jz ll
ACALL DISPLAY
acall KEYI
mov @r0,30h
inc r0
mov a,r6
rr a
mov r6,a
djnz r3,ll
pdmm:mov r1,#50h ;判斷密碼
mov r0,#60h
mov r3,#08h
cxpd:mov a,@r0
mov r4,a
mov a,@r1
subb a,r4
jnz baojin
inc r0
inc r1
djnz r3,cxpd
mov r0,#0ffh
god: mov r1,#0fh ;密碼正確顯示good
good: acall display1

djnz r1,good
djnz r0,god
mov a,p1
clr p1.2 ;判斷是否改密碼
anl a,#03h
jz gmm
dec a
jz xianshi
dec a
jz xianshi
dec a
jz dmm
jmp k1
baojin: mov ie,#00h ;報警
djnz r2,k3
mov r7,#0ffh
acall sg
jmp k
k3:mov r7,#0fh
acall sg
mov r5,#03h
jmp k
xianshi:mov r0,#0fh ;待機顯示
as: mov r6,#00h
acall display
djnz r0, as
jmp k1
gmm:mov r3,#08h ;改密碼
mov r6,#80h
mov r0,#50h
lty: acall display
acall KSI
jz lty
acall KEYI
MOV @R0,30H
inc r0
mov a,r6
rr a
mov r6,a
djnz r3,lty
jmp k1

sg:nop ;bao警子程序
ls:mov r6,#0ffh
lm: mov r5,#0ffh
djnz r5,$
cpl p1.3
djnz r6,lm
djnz r7,ls
mov p1,#0ffh
ret

zd: mov 30h,a ;復位程序
mov a,r6
rl a
mov r6,a
mov a,30h
inc r3
acall d1ms
acall d1ms
acall d1ms
acall d1ms
acall d1ms
acall d1ms
mov tcon,#01h
reti

KEYI: MOV 30h,#00H
MOV R4,#00H

ACALL DISPLAY
ACALL KSI
JNZ LK2

AJMP KEYI
LK2: MOV R1,#04H
MOV R2,#0FEH
MOV R4,#00H
LK4:MOV DPTR,#PORTC
MOV A,R2
MOVX @DPTR,A
NOP
NOP
MOVX A,@DPTR
JB ACC.4,LONE
MOV A,#00H
AJMP LKP
LONE:JB ACC.5,LTWO
MOV A,#04H
AJMP LKP
LTWO:JB ACC.6,LTHR
MOV A,#08H
AJMP LKP
LTHR:JB ACC.7,NEXT
MOV A,#0CH
LKP:
ADD A,R4
PUSH ACC
LK3:ACALL DISPLAY
ACALL KSI
JNZ LK3
POP ACC
MOV 30H,A
ret
NEXT:INC R4
MOV A,R2
JNB ACC.3,KND
RL A
MOV R2,A
DJNZ R1,LK4
KND:ret
KSI:MOV DPTR,#PORTC
MOV A,#00H
MOVX @DPTR,A
NOP
NOP
MOVX A,@DPTR
CPL A
ANL A,#0F0H
RET

display:mov r5,#02h ;顯示
lool:mov r4,#0FFh
dplop: mov a,#0ffh ;取個位數
MOV A,#7fh;查個位數的7段代
MOV DPTR,#PORTA
MOVX @DPTR,A ;送出個位的7段代碼
MOV DPTR,#PORTB
MOV A,r6
MOVX @DPTR ,A;開個位顯示
acall d1ms ;顯示162微秒

djnz r4,dplop ;循環執行250次
djnz r5,lool
mov r5,#02h
poop:mov r4,#0FFh
ppdd: mov a,#07fh ;取個位數
;查個位數的7段代
MOV DPTR,#PORTA
MOVX @DPTR,A ;送出個位的7段代碼
MOV DPTR,#PORTB
MOV A,#00h
MOVX @DPTR ,A;開個位顯示
acall d1ms ;顯示162微秒
MOV DPTR,#PORTB
MOV A,#0FFH
MOVX @DPTR ,A;關閉個位顯示,防止鬼影
djnz r4,ppdd ;循環執行250次
djnz r5,poop
ret
display1: mov r5,#08h
mov r4,#7fh
ww:mov a,r5
dec a
mov dptr,#sttab
MOVC A,@A+DPTR ;查個位數的7段代
MOV DPTR,#PORTA
MOVX @DPTR,A ;取個位數
;查個位數的7段代
MOV DPTR,#PORTB
MOV A,r4
MOVX @DPTR ,A;開個位顯示
acall d1ms ;顯示162微秒
MOV DPTR,#PORTB
MOV A,#0ffH
MOVX @DPTR ,A;關閉個位顯示,防止鬼影
mov a,r4
rr a
mov r4,a
djnz r5,ww
ret
;2+2X80=162微秒,延時按12MHZ計算
D1MS: MOV R7,#150
DJNZ R7,$
ret
sttab: db 3dh,5ch,5ch,3fh,40h,40h,40h,40h
end

閱讀全文

與51單片機簡易密碼鎖相關的資料

熱點內容
停車場規劃演算法 瀏覽:921
深蹲PDF 瀏覽:907
數據科學包python 瀏覽:847
程序員學習視頻網站 瀏覽:124
吃雞游戲如何安卓轉蘋果 瀏覽:187
python編程輸入5個數 瀏覽:93
python反復猜數實驗報告 瀏覽:772
交易社區源碼 瀏覽:519
手機app推廣怎麼做 瀏覽:941
androidbitmap壓縮大小 瀏覽:640
安卓手機怎麼調配老人模式 瀏覽:81
被迫變胖的程序員們 瀏覽:987
卑微的程序員表情包 瀏覽:913
python入門教程數據分析 瀏覽:778
那些年pdf 瀏覽:223
手游的聚合app都有什麼 瀏覽:776
pdf軟體編輯器 瀏覽:579
抖音所有作品加密 瀏覽:841
北京程序員價位 瀏覽:920
撥號伺服器和雲伺服器 瀏覽:395