導航:首頁 > 操作系統 > 51單片機作品畢業設計網站

51單片機作品畢業設計網站

發布時間:2022-11-22 19:17:43

1. 51單片機控制的電子時鍾系統 畢業設計

可以用1302做
我有現成的
LCD1602
顯示的,51做的
基本思路是用單片機讀取1302裡面的信息,處理,然後送LCD1602顯示。
有興趣可以去我博客看,裡面還上傳了之前我做的實物圖片和PCB,可以照著做。

2. 51單片機鍵盤介面電路的計算器的實現的畢業設計及開題報告

51單片機計算器的設計(開題報告實物論文)

目 錄
1.課程設計的目的………………………………………………3
2.課程設計題目描述和要求……………………………………3
3.單片機發展簡史………………………………………………4
4.MCS-51單片機系統簡介………………………………………6
5.MCS-51單片機內部定時器/計數器簡介……………………7
6.理論設計………………………………………………………8
7.主要電路分析…………………………………………………8
8.硬體設計………………………………………………………10
9.軟體設計………………………………………………………11
10.程序代碼……………………………………………………12
11.設計總結……………………………………………………18
12.參考文獻……………………………………………………20

隨著社會的發展,科學的進步,人們的生活水平在逐步的提高,尤其是微電子技術的發展,猶如雨後春筍般的變化。電子產品的更新速度快就不足驚奇了。
計算器在人們的日常中是比較的常見的電子產品之一。可是它還在發展之中,以後必將出現功能更加強大的計算器,基於這樣的理念,本次設計是用單片機來設計的四位數計算器。該設計系統是以AT89S51為單片機, P3口作為輸入端,外接4X4的鍵盤,通過鍵盤掃描來對輸入數的控制,在P1口,P2口接了驅動電路。用來保證LED的工作正常。計算器將完成的功能有加,減,乘,除等功能。

功能:

完成0~9999整數的一次加/減/乘/除運算,
減法運算結果可以實現計算結果的負數顯示,
除法運算結果為0~999並保留兩位小數,
按鍵音,
設有清零鍵,
首位零不顯示,
其它的顯示"E"

按鍵排布為:

清零/確認/除/乘

減/加/9/8

7/6/5/4

3/2/1/0

3. 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;}

}

4. 51單片機網站

這是我根據自己的單片機設計的程序。請根據自己的需要修改各個參數。
org 0000H
ajmp begin
org 000BH;時鍾中斷0入口
mov tl0,#00000B;每次中斷設初值
mov th0,#110B
ajmp time0;轉跳到定時器0子程序
org 0040H
begin:;初始化部分
;設置變數RAM位置
x equ 50H
y equ 51H
z equ 52H
times equ 53H;此變數是中斷次數,只有中斷250次,才能積累2M個機器周期,即1秒鍾,
rtimes equ 54H
wtimes1 equ 55H
wtimes2 equ 56H
;設置字型碼
mov 60H,#005H;0
mov 61H,#0DDH;1
mov 62H,#046H;2
mov 63H,#054H;3
mov 64H,#09CH;4
mov 65H,#034H;5
mov 66H,#024H;6
mov 67H,#05DH;7
mov 68H,#004H;8
mov 69H,#014H;9
mov 5FH,#0FEH;-
;設置各LED位數字的RAM單元
n8 equ 71H
n7 equ 72H
n6 equ 73H
n5 equ 74H
n4 equ 75H
n3 equ 76H
n2 equ 77H
n1 equ 78H
;設置數位選線的位置
l8 bit p3.0
l7 bit p3.6
l6 bit p3.5
l5 bit p3.7
l4 bit p3.1
l3 bit p3.2
l2 bit p3.3
l1 bit p3.4
;設置定時器
setb ea
setb et0
mov th0,#11111111B
mov tl0,#11111B
clr tr0
mov p3,#00H
start:;r2-小時/r3-分鍾/r4-秒/r1是按鍵的值,無按鍵時為10H
mov r2,#00
mov r3,#00
mov r4,#00
;第3、6位顯示橫線「-」
mov n6,5FH
mov n3,5FH
main:;主程序
mov r1,#10H;r1賦10H,沒按鍵
acall chcut;調用r2-r4值轉換為字型碼並存入n1-n8的子程序
acall show;掃描一遍LED
acall key;調用鍵盤掃描子程序(此程序在51dz提供的程序上略加修改,保留注釋)
jb tr0,walkstop;若在走時,不允許調時,跳到walkstop
cjne r1,#4,s2;若r1不是4則跳到下一個計時部分s2(下同)
acall hinc;調用小時加1子程序
acall chcut
acall longdelay;調用長延時子程序
ajmp main;此次設置完成,跳到主程序
s2:
cjne r1,#5,s3
acall minc;調用分鍾加1子程序
acall chcut
acall longdelay
ajmp main;此次設置完成,跳到主程序
s3:
cjne r1,#6,s4
acall sinc;調用秒加1子程序
acall chcut
acall longdelay
ajmp main;此次設置完成,跳到主程序
s4:
cjne r1,#7,s5
acall hdec;調用小時減1子程序
acall chcut
acall longdelay
ajmp main;此次設置完成,跳到主程序
s5:
cjne r1,#8,s6
acall mdec;調用分鍾減1子程序
acall chcut
acall longdelay
ajmp main;此次設置完成,跳到主程序
s6:
cjne r1,#9,s7
acall sdec;調用秒減1子程序
acall chcut
acall longdelay
ajmp main;此次設置完成,跳到主程序
s7:
cjne r1,#0,walkstop
mov r2,#0;時分秒清0
mov r3,#0H
mov r4,#0H
acall chcut
acall longdelay
ajmp main;此次設置完成,跳到主程序
walkstop:
cjne r1,#11,s0
acall stop;調用停止走時子程序
ajmp main;此次設置完成,跳到主程序
s0:
cjne r1,#12,main
acall walk;調用開始走時子程序
ajmp main;此次設置完成,跳到主程序

;以下是子程序
show:;掃描子程序
mov p1,n8;將第8位數字型碼送上P1(下同)
setb l8;使第8位LED亮
acall delay;調用掃描延時子程序
clr l8;使第8位LED滅
mov p1,n7
setb l7
acall delay
clr l7
mov p1,n6
setb l6
acall delay
clr l6
mov p1,n5
setb l5
acall delay
clr l5
mov p1,n4
setb l4
acall delay
clr l4
mov p1,n3
setb l3
acall delay
clr l3
mov p1,n2
setb l2
acall delay
clr l2
mov p1,n1
setb l1
acall delay
clr l1
ret

hdec:
cjne r2,#0,hdnext;如果小時不是0就到hdnext
jnb tr0,hskip;小時是0且tr0是0即不在計時,到hskip
acall warning;小時是0且tr0是1即在計時,就調用報警子程序
clr tr0;停止計時
ret;返回
hskip:mov r2,#100;小時是0又不在計時,就讓r2賦100,到下一些條減1後就是59
hdnext:dec r2;如果小時不是0就到這里減1
ret

mdec:;分鍾減1子程序
cjne r3,#00,mdnext;如果分鍾不是0就到minext
mov r3,#60;如果分鍾是0就到變為60,到下一些條減1後就是59
acall hdec;從小時退位
mdnext:dec r3;如果分鍾不是0就到這里減1
ret

sdec:;秒減1子程序
cjne r4,#00,sdnext;如果秒不是0就到sdnext
mov r4,#60;如果秒是0就到變為60,到下一些條減1後就是59
acall mdec;從分鍾退位
sdnext:dec r4;如果秒不是0就到這里減1
ret

hinc:;小時加1子程序
cjne r2,#99,hinext;如果小時不是99就到hinext
mov r2,#255;如果小時是23就到變為255,到下一些條加1後就是0
hinext:inc r2;如果小時不是99就到這里加1
ret

minc:
cjne r3,#59,minext;如果分鍾不是23就到minext
mov r3,#255;如果分鍾是59就到變為255,到下一些條加1後就是0
acall hinc;分鍾滿,向小時進位
minext:inc r3;如果分鍾不是59就到這里加1
ret

sinc:
cjne r4,#59,sinext;如果秒不是23就到sinext
mov r4,#255;如果是秒是59就到變為255,到下一些條加1後就是0
acall minc;秒滿,向分鍾進位
sinext:inc r4;如果秒不是59就到這里加1
ret

chcut:;將r2-r4值轉換為字型碼並存入n1-n8的子程序
mov a,r2;小時值送Acc(下同)
mov b,#10;B賦10
div ab;AB相除,此時A是小時的十位,B是小時的個位
mov n7,b;小時的個位B送第七位數
mov n8,a;小時的十位A送第八位數
mov a,r3;分解分鍾到第四、五位數
mov b,#10
div ab
mov n4,b
mov n5,a
mov a,r4;分解秒到第一、二位數
mov b,#10
div ab
mov n1,b
mov n2,a
;以下開始轉換各數位的二進制數到字型碼(第6、3位是橫線,由定時器控制有無)
mov a,n8;第8位數送Acc(下同)
add a,#60H;Acc加60H,此時Acc中值所指的RAM地址中為第8位數的字型碼
mov r0,a;Acc送r0
mov n8,@r0;r0間接地址送回n8
mov a,n7;轉換第7位數
add a,#60H
mov r0,a
mov n7,@r0
mov a,n5;轉換第5位數
add a,#60H
mov r0,a
mov n5,@r0
mov a,n4;轉換第4位數
add a,#60H
mov r0,a
mov n4,@r0
mov a,n2;轉換第2位數
add a,#60H
mov r0,a
mov n2,@r0
mov a,n1;轉換第1位數
add a,#60H
mov r0,a
mov n1,@r0
ret

longdelay:;長延時子程序
mov r6,#0FFH
reshow1:acall show
djnz r6,reshow1
mov r6,#0FFH
reshow2:acall show
djnz r6,reshow2
ret

delay:;掃描延時子程序
mov r5,#40H
djnz r5,$
ret
ringdelay:mov r5,#0FFH
djnz r5,$
ret

time0:;定時器0子程序
push Acc;Acc壓棧
mov a,times;已中斷次數送Acc
inc a;次數加1
mov times,a;加1後送回次數變數
cjne a,#250,gotoend;如果Acc不是250說明不到1秒,跳過加秒操作
mov times,#0;是250說明到1秒了,次數變數清0
mov n6,#0FFH;第3、6位清除橫線「-」
mov n3,#0FFH
acall sdec;調用秒減1子程序
ajmp next;退出
gotoend:cjne a,#125,next;若Acc不是125就退出
mov n6,5FH;若是125就給第3、6位顯示5FH中的字型碼橫線「-」
mov n3,5FH
next:pop Acc;退出時,從棧中彈出Acc
reti;此程序中次數在0-124就不顯示橫線,在125-250就顯示橫線

walk:;開始走時子程序
setb tr0
ret
stop:;停止走時子程序
clr tr0
ret

warning:;報警子程序
;放入-FINISH-字型碼
mov n8,#0FEH;-
mov n7,#02EH;F
mov n6,#0DDH;I
mov n5,#00DH;N
mov n4,#0DDH;I
mov n3,#034H;S
mov n2,#08CH;H
mov n1,#0FEH;-
mov wtimes1,#50;設置蜂鳴次數50次
res1:mov wtimes2,#08FH;一次蜂鳴開始
res2:clr p2.0;從此句開始蜂鳴器發聲
mov p3,#0H;LED熄滅
mov r6,#5;掃描延時子程序延時太短,要重復5次
redelay:acall delay;此2句重復5次
djnz r6,redelay
setb p2.0
djnz wtimes2,res2;轉到RES2讓蜂鳴器發聲,轉wtimes2次,即8FH次
mov p3,#0H;從此句開始蜂鳴器不發聲
mov r7,#08FH;LED掃描次數
reshow:acall show
djnz r7,reshow;LED掃描08FH次,即不發聲延時
djnz wtimes1,res1;到RES1開始一次蜂鳴
finish:acall show;這兩句使LED顯示,並進入死循環
ajmp finish
key:mov p0,#00001111b;上四位和下四位分別為行和列,所以送出高低電壓檢查有沒有按鍵按下
jmp k10;跳到K10處開始掃描,這里可以改成其它條件轉移指令來決定本次掃描是否要繼續,例如減1為0轉移或者位為1或0才轉移,這主要用來增加功能,確認上一按鍵功能是否完成?是否相當於經過了延時?是否要封鎖鍵盤?
goend:jmp kend;如果上面判斷本次不執行鍵盤掃描程序,則立即轉到程序尾部,不要浪費CPU的時間
k10:jb p0.0,k20;掃描正式開始,先檢查列1四個鍵是否有鍵按下,如果沒有,則跳到K20檢查列2
k11:mov p0,#11101111b;列1有鍵按下時,P0.0變低,到底是那一個鍵按下?現在分別輸出各行低電平
jb p0.0,k12;該行的鍵不按下時,p0.0為高電平,跳到到K12,檢查其它的行
mov r1,#13;如果正好是這行的鍵按下,將寄存器R0寫下1,表示1號鍵按下了
k12:mov p0,#11011111b
jb p0.0,k13
mov r1,#15;如果正好是這行的鍵按下,將寄存器R0寫下2,表示2號鍵按下了
k13:mov p0,#10111111b
jb p0.0,k14
mov r1,#0;如果正好是這行的鍵按下,將寄存器R0寫下3,表示3號鍵按下了
k14:mov p0,#01111111b
jb p0.0,kend;如果現在四個鍵都沒有按下,可能按鍵松開或干擾,退出掃描(以後相同)
mov r1,#14;如果正好是這行的鍵按下,將寄存器R0寫下4,表示4號鍵按下了
jmp kend;已經找到按下的鍵,跳到結尾吧

k20:jb p0.1,k30;列2檢查為高電平再檢查列3、4
k21:mov p0,#11101111b;列2有健按下時,P0.0會變低,到底是那一行的鍵按下呢?分別輸出行的低電平
jb p0.1,k22;該行的鍵不按下時p0.0為高電平,跳到到K22,檢查另外三行
mov r1,#12;如果正好是這行的鍵按下,將寄存器R0寫下5,表示5號鍵按下了(以後相同,不再重復了)
k22:mov p0,#11011111b
jb p0.1,k23
mov r1,#9
k23:mov p0,#10111111b
jb p0.1,k24
mov r1,#8
k24:mov p0,#01111111b
jb p0.1,kend
mov r1,#7
jmp kend;已經找到按下的鍵,跳到結尾吧(以後相同,不要重復了)

k30:jb p0.2,k40
k31:mov p0,#11101111b
jb p0.2,k32
mov r1,#11
k32:mov p0,#11011111b
jb p0.2,k33
mov r1,#6
k33:mov p0,#10111111b
jb p0.2,k34
mov r1,#5
k34:mov p0,#01111111b
jb p0.2,kend
mov r1,#4
jmp kend

k40:jb p0.3,kend
k41:mov p0,#11101111b
jb p0.3,k42
mov r1,#10
k42:mov p0,#11011111b
jb p0.3,k43
mov r1,#3
k43:mov p0,#10111111b
jb p0.3,k44
mov r1,#2
k44:mov p0,#01111111b
jb p0.3,kend
mov r1,#1
kend: ret
end

5. 高分求關於英文版51單片機網站。急急急啊!!!!

www.mcudiy.com/
www.mcs51.cn/

閱讀全文

與51單片機作品畢業設計網站相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163