久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4391|回復: 0
收起左側

單片機原理實驗總結(word格式文檔下載)

[復制鏈接]
ID:356472 發表于 2018-8-15 12:14 | 顯示全部樓層 |閱讀模式
單片機實驗原理包含八個基礎實驗
1.LED燈循環點亮
2.外部中斷計數,BCD碼轉換
3.四位一體數碼管動態靜態顯示
4.四位秒表
5.脈沖寬度與周期測量
6.串行口和異步通信
7.外部RAM擴展
8.自主設計點陣字符
附件中包含protues仿真設計,程序流程圖,匯編代碼,以及實驗心得體會。


實驗一
  • 功能要求
本實驗要求在P1端口接8個LED,并編程依次循環點亮。要求用軟件延時程序控制LED的亮滅時間,并能精確地計算和用軟件測量延時時間。
  • 硬件原理
1.1.1  仿真原理圖
1.1.2  仿真原理圖細節
Protues中已默認添加了復位電路,其中R1-R8是限流電阻,將普通二極管的正極接到VCC,負極接到P0口,運行結果:D1-D8依次導通,導通時方點變紅。
  • 軟件程序流程
1.1.3  程序流程圖
  • 程序清單
ORG   0000H
                LJMP  MAIN
                ORG   0100H
MAIN: MOV   A,#10000000B
LOOP0:MOV   P1,A
      MOV   R0,#0FFH
LOOP1:MOV   R1,#0FFH
LOOP2:NOP
      NOP
                DJNZ  R1,LOOP2
                DJNZ  R2,LOOP1
                RR    A
                SJMP  LOOP0
                END

  • 實驗的問題及討論
(1)number1和number2的作用是什么;
R0=number1,R1=number2是設置循環次數,其中,R1為LOOP2循環的次數,R0為LOOP1循環的次數。
(2)燈相鄰兩次變化之間的延遲時間是多少,如何控制,如何計算?
R1為LOOP2循環的次數,即t1=255*2=510us,R0為LOOP1循環的次數,t2=255*2*255=130050us,所以總的延遲時間為T=t1+t2=130560us。
控制延遲時間可通過增加循環次數或者增加循環層數實現,又因為80C52中Rn寄存器最大值為255,所以在此實驗基礎上,可增加循環層數:
      MOV   R3,#07H
LOOP1:MOV   R2,#0FFH
LOOP2:MOV   R1,#0FFH
LOOP3:NOP
      NOP
                DJNZ  R1,LOOP3
                DJNZ  R2,LOOP2
考慮到單片機的晶振為11.0592MHz,及一個機器周期為1.085us,經過計算當第三層循環次數為7時,延遲約等于1s。
  • 實驗心得及建議
初次使用實驗箱和相關軟件還不甚熟練,應加強練習。
實驗前,應先在Protues軟件上進行仿真,能很大程度上增大實驗成功概率;插電路的過程中要小心導線間是否短路,導線非絕緣部分不應剪得過長,對待實驗要有耐心,按照一定的順序從源頭和細節處檢查電路,比如單片機是否和實驗箱共地,是否有導線脫落等等。
若燒入程序出現問題,可先關閉實驗箱電源再次燒錄,或者重新插入串口。
總之,實驗過程中會遇到各種意想不到的情況,一定要沉心靜氣,不然就浪費了時間,又難以發現錯誤。



實驗二
1.功能要求
本實驗要求:
(1)P0口接8個燈,INT0引腳接一下開關K0。
(2)K0用于引發外部中斷,在外部中斷子程序中,對K0按下的次數進行計數,然后以BCD碼形式,通過P0口的8個燈輸出計數結果。

2.硬件原理
1.2.1  仿真原理圖
此時按鍵16次,紅色發光二極管從左到右前四位表示十進制數的十位,后四位表示十進制數的各位,從仿真結果和試驗結果看,當按鍵99次,計數清零,重新開始計數。
3.軟件程序流程
1.2.2  程序流程圖
4.程序清單
                  ORG  0000H
                  LJMP  MAIN
                  ORG  0003H
                  LJMP INT0P
                            ORG  0013H
                            LJMP INT1P
                  ORG  0020H
MAIN:              MOV  P0,#00H
       MOV  R0,#00H
                            MOV   A,#00H
       SETB   IT0
                            SETB   IT1
                  SETB   EX0
                  SETB   EX1
                  SETB   PX0
                            CLR    PX1
                  SETB    EA
                  SJMP     $
                  ORG  0050H
INT0P:  INC   A
                            DA                 A
                            MOV   P0,A
                            RETI
                            END
5.實驗的問題及討論
關于Protues使用的一些問題:
(1)在Protues仿真時,若要用到P0口,要記得加上拉電阻,否則發光二極管不會發光,而實驗箱中已加可不考慮;
(2)排阻使用時,應注意其使用條件,及阻值的設置。
6.實驗心得及建議
單片機能實現的某種功能有多種編程方法,我覺得作為初學者,應該先嘗試自己編程,哪怕編出來程序冗長,至少在這個過程中練習了匯編語言的使用,自己編完之后,可以查閱相關資料,看看網上成熟的程序的優點;多和同學們討論思路,有時間的情況下互相看以下程序,能學到很多知識,拓寬思考問題的角度。

建議:做Protues仿真時,如果沒有系統地學習過Protues,遇到問題要努力嘗試解決,并記錄下來這些問題和解決辦法,有利于今后的學習。

實驗三
1.功能要求
本實驗要求P1口通過驅動芯片控制斷碼輸出信號線,P0口通過驅動芯片控制位選線,并實現以下功能:
   (1)當開關K0接低電平時,第一位依次顯示0~F,然后第二位、第三位、第四位,再循環回第一位。
   (2)當開關K0接高電平時,四位動態顯示“HELP”。
2.硬件原理
圖1.3.1  74LS244引腳圖及功能表
在光學元件(optoelectronics)分類里,有各種數碼管和液晶。7段對應英文是7SEG,4位一體的英文是MPX4,共陰極CC,共陽極CA,最后的英文是顏色的意思。所以7SEG-MPX4-CA-BLUE為7段4位一體共陽極藍色數碼管顯示器。

圖1.3.2  仿真原理圖
P2.2接地時,每位均依次顯示0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F
圖1.3.3  仿真原理圖
P2.2接高電平時,顯示“HELP”
3.軟件程序流程
圖1.3.4  程序流程圖
4.程序清單
       ORG 0000H
      LJMP MAIN
                ORG 0010H
MAIN: MOV P0,#10001000B
      JNB P2.2,LOOP4
      JB  P2.2,NEXT0
NEXT0:LJMP LOOP5
LOOP4:MOV P1,#0C0H
                LCALL DELAY
                JB P2.2,NEXT0
                MOV P1,#0F9H
                LCALL DELAY
                JB P2.2,NEXT0
                MOV P1,#0A4H
                LCALL DELAY
                JB P2.2,NEXT0
                MOV P1,#0B0H
                LCALL DELAY
                JB P2.2,NEXT0
                MOV P1,#99H
                LCALL DELAY
                JB P2.2,NEXT0
                MOV P1,#92H
                LCALL DELAY
                JB P2.2,NEXT0
                MOV P1,#82H
                LCALL DELAY
                JB P2.2,NEXT0
                MOV P1,#0F8H
                LCALL DELAY
                JB P2.2,NEXT0
                MOV P1,#80H
                LCALL DELAY
                JB P2.2,NEXT0
                MOV P1,#90H
                LCALL DELAY
                JB P2.2,NEXT0
                MOV P1,#88H
                LCALL DELAY
                JB P2.2,NEXT0
                MOV P1,#83H
                LCALL DELAY
                JB P2.2,NEXT0
                MOV P1,#0C6H
                LCALL DELAY
                JB P2.2,NEXT0
                MOV P1,#0A1H
                LCALL DELAY
                JB P2.2,LOOP5
                MOV P1,#86H
                LCALL DELAY
                JB P2.2,LOOP5
                MOV P1,#8EH
                LCALL DELAY
                JB P2.2,LOOP5
                MOV A,P0
                RL   A
                MOV  P0,A            
                LJMP LOOP4
                ORG 0100H
DELAY:MOV R0,#10H
LOOP1:MOV R1,#10H
LOOP2:MOV R2,#0FFH
LOOP3:NOP
      NOP     
                DJNZ R2,LOOP3
                DJNZ R1,LOOP2
                DJNZ R0,LOOP1 ;2*255+50*255*2+10*50*255*2us
                RET
LOOP5:MOV R5,P0
      MOV P0,#10001000B
      MOV P1,#89H
                LCALL DELAY1
                JNB P2.2,NEXT1
                MOV P1,#86H
                LCALL DELAY1
                JNB P2.2,NEXT1
                MOV P1,#0C7H
                LCALL DELAY1
                JNB P2.2,NEXT1
                MOV P1,#8CH
                LCALL DELAY1
                JNB P2.2,NEXT1
                LJMP LOOP5
                ORG 0150H
DELAY1:MOV R3,#05H
LOOP7:MOV R4,#0FFH
LOOP6:NOP
      NOP
                DJNZ R4,LOOP6
                DJNZ R3,LOOP7
                MOV A,P0
      RR A
                MOV P0,A
                RET
NEXT1:MOV P0,R5
      LJMP LOOP4
END
5.實驗的問題及討論
(1)由于程序中沒有使用DB查表命令,導致程序冗長,由高到低的變化時還不能緊接著上一字母讀數,僅能實現由低到高的自然變化。
(2)在和同學們的討論中,使用DB指令,縮短了程序長度;在不使用查表指令的條件下,若將HELP循環放入子程序中,由于子程序執行完成后返回之前的節點,可繼續讀數。
6. 實驗心得及建議
盡快熟記以及熟練使用匯編指令,寫程序前應先把思路捋順,做好程序流程圖,這樣程序寫起來就會得心應手一些。

實驗四
1.功能要求
(1) 用T0定時器實現1秒定時,控制一個LED亮1秒,滅1秒,并不斷循環。
(2) 實現一個4位秒表:
  ① 用開關K0模擬秒表的啟動、停止、清零功能,K0觸發外部中斷INT0,按一次啟動計時,按一次停止,再按一次清零,在三個狀態中循環。
  ②定時采用T0定時器中斷完成,最低位按1/10秒計數,依次計數單位為1分、10秒、1秒、1/10秒。
  ③要求外部中斷INT0的優先級高于T0的優先級。
2.硬件原理
1.4.1  硬件原理圖(仿真顯示)
3.軟件程序流程
1.4.2  程序流程

4.程序清單
;剛開始未顯示,當第一次按K0時,開始計時;
;進一次中斷是1/20秒              50MS                              問題在于用51輸入的無符號整數最大實現255然后清零,所以顯示一直為零。
       ORG   0000H
                 LJMP  MAIN
                 ORG    0003H
                 LJMP  INT0P
                 ORG   000BH
                 LJMP  T0P
                 ORG   0050H
MAIN:  MOV   P0,#00000001B
       MOV   TMOD,#00000001B
                 MOV   TL0,#0B0H            ;循環2次最佳,誤差小 ,1/10 second
                 MOV   TH0,#3CH
       SETB  ET0
                 SETB  IT0
                 SETB  EX0
                 SETB  EA
                 MOV   R1,#00H               
                 MOV   R2,#00H
                 MOV   R3,#00H               
                 MOV   R4,#00H
                 MOV   R5,#00H               
                 MOV   R6,#00H
                 MOV   R7,#00H
                 MOV   DPTR,#0400H
W:     LCALL XIANSHI
                 SJMP  W                                                                        ;在主程序中一直顯示
T0P:   INC   R3
       MOV   TL0,#0B0H      ;循環2次最佳,誤差小 ,1/10 second
                 MOV   TH0,#3CH
                 CJNE  R3,#2,BACK
                 INC   R2
                 MOV   R3,#00H
                 CJNE  R2,#10,BACK
                 INC   R4
                 MOV   R2,#00H
                 CJNE  R4,#10,BACK
                 INC   R5
                 MOV   R4,#00H
                 CJNE  R5,#06,BACK
                 INC   R7
                 MOV   R5,#00H
                 CJNE  R7,#10,BACK
                 MOV   R7,#00H
BACK:  RETI
INT0P: INC   R6
       CJNE  R6,#01H,CLR0
                 SETB  TR0
CLR0:  CJNE R6,#03H,TIMER
                   MOV   R1,#00H               
                   MOV   R2,#00H                  
                   MOV   R3,#00H               
                   MOV   R4,#00H
                   MOV   R5,#00H               
                   MOV   R6,#00H
                   MOV   R7,#00H
                   LJMP  STOP1
TIMER: CJNE R6,#02H,STOP1
                   CLR TR0
                   MOV TH1,#3CH
                   MOV TL1,#0B0H
STOP1:   RETI
         ORG   0250H
XIANSHI: MOV   A,R2
         MOVC  A,@A+DPTR
         MOV   P1,A
         LCALL DELAY
                            MOV   P0,#00000010B
                            MOV   A,R4
         MOVC  A,@A+DPTR
         MOV   P1,A
                            LCALL DELAY
                            MOV   P0,#00000100B
                            MOV   A,R5
         MOVC  A,@A+DPTR
         MOV   P1,A
                            LCALL DELAY
                            MOV   P0,#00001000B
                            MOV   A,R7
         MOVC  A,@A+DPTR
         MOV   P1,A
                            LCALL DELAY
                            MOV   P0,#00000001B
                            RET
                            ORG   0350H
DELAY:   MOV  R0,#05H                  ;2*255+2*255*5=3060US
LOOP0:   MOV  R1,#0FFH
LOOP1:   NOP
         NOP
                            DJNZ R1,LOOP1
                   DJNZ R0,LOOP0
                   RET  
                            ORG   0400H
                            DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
                   DB 80H,90H                                                             ;0~9
END                           
  • 實驗的問題及討論
(1)實驗通過計時器0工作方式一實現四位秒表計時功能,使TH0、TL0初始值盡可能小,減少跳入計時器中斷的次數,以減少誤差。
(2)應注意晶振頻率,盡可能精確計時。
  • 實驗心得及建議
    實驗前捋清思路很重要,注意中斷不可寫的過長,過長可能會導致單片機運行錯誤。
實驗五
1.功能要求
① 自主設計測量方法,編程連續測量輸入脈沖寬度,并用七段LED顯示結果。
② 自主設計測量方法,編程連續測量輸入脈沖周期,并用七段LED顯示結果。
③ 自主設計測量方法,同時測量脈沖寬度和周期,由開關K0選擇顯示脈沖寬度還是顯示脈沖周期。
2.硬件原理
1.5.1  硬件原理圖
1.5.2  硬件原理圖
3.軟件程序流程
1.5.3  程序流程
4.程序清單
ORG 0000H
        LJMP MAIN
                     ORG 0003H
                     LJMP INT0P
        ORG 000BH
        LJMP T0P
        ORG 0100H
MAIN:                MOV R1,#0
        MOV R2,#0
        MOV R3,#0
        MOV R4,#0
                  MOV R5,#0
                  MOV R6,#0
        MOV R7,#0
                     MOV 30H,#0C0H
                   MOV 31H,#0C0H
        MOV 32H,#0C0H
        MOV 33H,#0C0H  
                    MOV 21H,#0   
        SETB IT0            
                     SETB EX0
                     SETB ET0
        SETB EA
XIAN0:               LCALL XIANSHI
        LJMP XIAN0
T0P:    INC R3
        CJNE R3,#10,BACK
                     MOV R3,#0
                   INC R4
        CJNE R4,#10,BACK
                  MOV R4,#0
                  INC R5
        CJNE R5,#10,BACK
                   MOV R5,#0
                  INC R6
        CJNE R6,#10,BACK
                   MOV R6,#0
                  INC R7
BACK:   RETI
INT0P:  INC 21H
        MOV A,21H
        CJNE A,#1,ER2
        JB P3.3,WIDTH
TIME:                MOV TMOD,#02H
        SJMP START
WIDTH:               JNB P3.3,TIME
                  MOV TMOD,#0AH
START:              MOV TH0,#164
        MOV TL0,#164      
        SETB TR0
ER2:    CJNE A,#2,BACK1
        CLR TR0
        MOV A,TL0
        SUBB A,TH0
        MOV B,#10
                  DIV AB
                     MOV R2,A
                   MOV R1,B
                     CJNE R7,#0,DDIAN3
        CJNE R6,#0,DDIAN2
        CJNE R5,#0,DDIAN1
                     MOV R0,#1
        LJMP CUN
DDIAN3: MOV R0,#4
        LJMP CUN
DDIAN2: MOV R0,#3
        LJMP CUN
DDIAN1: MOV R0,#2
CUN:    LCALL CHA
                     MOV 30H,A
                     INC R0
        LCALL CHA
                     MOV 31H,A
                     INC R0
                     LCALL CHA
                     MOV 32H,A
                     INC R0
                     LCALL CHA
                     MOV 33H,A
                     MOV 21H,#0
                     MOV R3,#0
       MOV R4,#0
       MOV R5,#0
                  MOV R6,#0
        MOV R7,#0
BACK1:  RETI
XIANSHI:MOV DPTR,#TAB
        MOV P0,#01H
        MOV P1,30H
                      LCALL DELAY
        MOV P0,#02H
        MOV P1,31H
                     LCALL DELAY
        MOV P0,#04H
        MOV P1,32H
        LCALL DELAY
        MOV P0,#08H
        MOV P1,33H
        LCALL DELAY
        RET
CHA:    MOV A,@R0
        MOVC A,@A+DPTR            
                     CJNE R0,#4,BACK2
        ADD A,#0AH                            ;加十,加小數點
BACK2:  RET
DELAY:  MOV 23H,#03H
LOP1:   MOV 22H,#0FFH
LOOP:   NOP
        DJNZ 22H,LOOP
                                DJNZ 23H,LOP1
        RET
TAB:    DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
        END
5.實驗的問題及討論
用查詢法發現數碼管的顯示會受測量脈沖頻率的影響,然后選用中斷法,在檢測到脈沖下降沿時開始計時,利用門控位方式二測脈沖寬度,方式二測脈沖周期。
6.實驗心得及建議
實驗中遇到測量脈沖周期為100us的倍數時,會出現較大誤差,分析發現是因為當計時達到100us時由于誤差造成跳入中斷失敗,100微秒位計數少一,為解決這一問題,適當加大微秒位誤差以減小總體誤差。

實驗六
  • 功能要求
①利用串行口方式0實現一個七段數碼管的顯示控制,輪流顯示0~9十個數碼。
②兩人一組,利用異步通信功能將一方的8個按鍵的高低電平狀態傳到另一方,并利用另一方的8個LED顯示其開關狀態,要求雙向通信,互相顯示。
2.硬件原理
1.6.1  硬件原理圖
    1.6.2  硬件原理圖
                    
1.6.3  74LS164引腳圖           表1.6.1  74LS164功能表
3.軟件程序流程
         
1.6.4  實驗1流程圖1.6.5  實驗2流程圖
4.程序清單
實驗1輪流顯示0-9     
ORG    0000H
                 LJMP   MAIN
                 ORG    0100H
MAIN: MOV    SCON,#00H                 ;SM0,SM1,SM2,REN,TB8,RB8,TI,RI
                 MOV    DPTR,#TAB
TRAM1: MOV    R3,#00H
TRAM:  MOV    A,R3
       MOVC   A,@A+DPTR
                 MOV    SBUF,A
                 CJNE   R3,#0AH,WAIT
       MOV    R3,#00H
                 LJMP                TRAM1
WAIT:  JBC    TI,NEXT
       SJMP   WAIT
NEXT:  INC    R3
       LCALL  DELAY
                 LJMP   TRAM
       ORG    0200H
DELAY: MOV    R2,#03H
LOOP2: MOV    R0,#09FH
LOOP0: MOV    R1,#0FFH
LOOP1: NOP
                 NOP
                 DJNZ   R1,LOOP1
                 DJNZ   R0,LOOP0
DJNZ   R2,LOOP2                    ;2*255+2*255*255+2*255*255*8~1S
                 RET
                 ORG    0300H
TAB:   DB     0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END               
實驗2:雙向通信,互相顯示
      ORG    0000H
                 LJMP   MAIN
                 ORG    0030H
MAIN:  MOV    SCON,#50H                              ;方式1,且接收到的數據均要保存
       MOV    TMOD,#20H                              ;T1做波特率發生器
                 MOV    PCON,#80H       ;波特率加倍
                 MOV    TH1,#0F4H                ;bps:(2^1/32)*1/(2^8-244)*12/11.0592=4800
                 MOV    TL1,#0F4H
                 SETB   TR1
                 SETB   EA
TRAN:  MOV    SBUF,P1
WAIT:  JBC    TI,NEXT
                 SJMP   WAIT
NEXT:  JNB    RI,TRAN
       MOV    P2,SBUF
                 CLR    RI
                 LJMP   TRAN
                 END
5.實驗的問題及討論
  •    實驗1的難點在于對74LS164的掌握,使用串口方式0時,單片機TXD接芯片時鐘脈沖端CLK,而CLR為低電平有效清零端,在本實驗中可直接接高電平。
  •    串口傳輸先輸出最低位,通過移位寄存器在QH端輸出。
  •    實驗2要注意單片機發送和接收的條件,當TI置1時,發送完畢;當RI置1時,開始接收。此外,在搭建硬件電路時要注意兩個單片機相互共地。
6.實驗心得及建議
做實驗不可眼高手低,即使仿真成功,在實際電路中仍會遇到各種問題,要不斷總結經驗,提高動手能力。

實驗七
1.功能要求
本實驗要求利用74LS573進行總線擴展,連接兩片62256,并用74LS138完成地址分配;將一片62256的前10個字節的內容加1后存入另一片62256中,讀出并用8個LED顯示。
2.硬件原理
給出實驗的硬件原理圖,并分析電路原理(用仿真代替硬件電路設計)
1.74LS138引腳圖
         
1.7.1  74LS138引腳圖1.7.1  74LS138功能

2.62系列SRAM引腳
1.7.2 62系列SRAM引腳

3.74LS573
      
1.7.3  74LS573引腳圖1.7.2  74LS573功能表
4.Protues仿真
1.7.4  仿真全圖
1.7.5  仿真部分細節圖
3.軟件程序流程
1.7.6  程序流程
4.程序清單
        ORG   0000H
                            LJMP  MAIN
                            ORG   0030H
MAIN:   MOV   R0,#00H
                            MOV   DPTR,#0000H                              
WRITE:  MOV   A,R0
                            MOVX  @DPTR,A
                  MOV   @R0,A
                            INC   R0
                            INC   DPTR
                            CJNE  R0,#0AH,WRITE                            ;第一片62256,寫入0~9
                            MOV   DPTR,#8000H        ;62256  32K*8,第二片622556
READ:   MOV   P2,#00H
        MOV   R0,#00H
LOOP0:  MOV   A,@R0
                            INC    A
                            MOVX   @DPTR,A
                            INC    R0
                            INC    DPTR
                            CJNE   R0,#0AH,LOOP0                ;將第一片的前10個字節加一存入第二片
                            MOV    DPTR,#8000H       ;顯示1 2 3 4 5 6 7 8 9 10
                   MOV    R0,#00H
LOOP3:  MOVX    A,@DPTR
                            MOV    P1,A
                            LCALL  DELAY
                            INC    DPTR
                            INC    R0
                            CJNE   R0,#0AH,LOOP3
                            LJMP   MAIN
                            ORG    0200H
DELAY:  MOV   50H,#06H
LOOP1:  MOV   51H,#0FFH
LOOP2:  MOV   52H,#0FFH
                            DJNZ  52H,$
                            DJNZ  51H,LOOP2
                            DJNZ  50H,LOOP1
        RET
                            END
5.實驗的問題及討論
實驗室沒有622569(32K*8)芯片,選用了6264(8K*8)芯片,只需將程序中的第二片6264外部擴展地址改為2000H,將A13(P2.5)接譯碼器的1腳且譯碼器2、3腳接地,A14(P2.6)、A15(P2.7)也接地即可。
6.實驗心得及建議
本實驗程序的編寫并不困難,難點在于線路的搭建,搭線時一定要細心,反復檢查,搭線前應先規劃好器件的擺放,有利于實驗的快速進行。

實驗八
1.功能要求
本實驗控制LED點陣模塊動態地顯示自設字符或圖形,設計循環顯示數字0-9。
2.硬件原理
1.8.1  硬件原理圖(用軟件仿真顯示)
1.8.2  硬件原理細節(用軟件仿真顯示)
   
圖1.8.3  SD411988內部結構       圖1.8.4  CD4049引腳圖及內部結構  
3.軟件程序流程圖
1.8.5  程序流程
4.程序清單
      ORG    0000H
                LJMP   MAIN
      ORG  0030H
MAIN: MOV  P0,#0FFH
      MOV  P2,#0FFH
      MOV  R0,#00H      ;顯示的幕次(即每一幕顯示的數)值0-9
      MOV  R1,#00H      ;列碼序列號置0
      MOV  R2,#00H      ;行碼序列號置初值
                MOV  R3,#00H
LOOP3:MOV  52H,#0FH
XIANS:MOV  DPTR,#ROW    ;取行碼表 首地址
      MOV  A,R2
      MOVC A,@A+DPTR
      MOV  P2,A          ;輸出行號
                MOV  DPTR,#COL    ;取列碼表 首地址
      MOV  A,R1
      MOVC A,@A+DPTR
      MOV  P0,A
                LCALL DL0
                INC  R1
                INC  R2
                CJNE R1,#08H,XIANS
                MOV  R1,#00H
                MOV  A,R3
                MOV  R2,A
                DJNZ 52H,XIANS
                INC  R0                                            ;第R0個數
                MOV  A,R0
                MOV  B,#08H
                MUL  AB
                MOV  R3,A
                MOV  R2,A
                CJNE R0,#10,LOOP3
                LJMP MAIN        
                ORG  0650H
DL0:  MOV  50H,#03H
LOOP0:MOV  51H,#0FFH
LOOP1:NOP
                NOP
                DJNZ 51H,LOOP1
                DJNZ 50H,LOOP0                               ;2*255+2*255*3=2040US
                RET
              ORG  0800H                                                      
COL: DB 01H,02H,04H,08H,10H,20H,40H,80H        ;列值
     ORG  0850H
ROW: DB 00H,00H,3EH,41H,41H,41H,3EH,00H        ;0
     DB 00H,00H,00H,00H,21H,7FH,01H,00H        ;1
     DB 00H,00H,27H,45H,45H,45H,39H,00H        ;2
     DB 00H,00H,22H,49H,49H,49H,36H,00H        ;3
     DB 00H,00H,0CH,14H,24H,7FH,04H,00H        ;4
     DB 00H,00H,72H,51H,51H,51H,4EH,00H        ;5
     DB 00H,00H,3EH,49H,49H,49H,26H,00H        ;6
     DB 00H,00H,40H,40H,40H,4FH,70H,00H        ;7
     DB 00H,00H,36H,49H,49H,49H,36H,00H        ;8
     DB 00H,00H,32H,49H,49H,49H,3EH,00H        ;9
     END
5.實驗的問題及討論
(1)實驗室使用的SD411988LED點陣是行高列低,即編寫程序過程中應先給每一行賦值,當行為高對應列為低時,對應的發光二極管被點亮。
(2)實驗時遇到點陣最后一列不會被點亮的情況,經檢查后發現,在連接時,器件引腳被折進端口下方并未插入端口。
(3)在仿真時,點陣亮度很暗,在加入了驅動74LS244后,情況得到明顯改善。
6. 實驗心得及建議
事實證明,實驗過程中不能局限于實驗講義列寫的器件,應根據實際情況調整電路以達到預期效果。


第二部分   單片機接口實驗
實驗一  基于8255的并口擴展實驗
1.功能要求
①了解8255芯片結構、工作方式。
②學習使用8255芯片實現單片機與外部設備傳輸。
2.硬件原理
2.1.1  硬件原理圖
3.軟件程序流程
2.1.2  程序流程
4.程序清單
        ORG   0000H
                            LJMP  MAIN
                            ORG   0030H
MAIN:              MOV   A,#90H       ;1 0010 000   A方式0輸入,B方式0輸出
        MOV   DPTR,#7FFFH ;A0 A1均置1選擇控制口
                            MOVX  @DPTR,A               
                            MOV   DPTR,#7CFFH
                            MOVX  A,@DPTR                  ;A輸入
                            MOV   DPTR,#7DFFH  ;指向端口B
                            MOVX  @DPTR,A
                            LCALL DELAY
        LJMP  MAIN
                            ORG   0200H
DELAY:  MOV   R0,#05FH
LOOP0:  MOV   R1,#0FFH
LOOP1:  NOP
                            NOP
                            DJNZ  R1,LOOP1
                            DJNZ  R0,LOOP0
                            RET
                            END
5.實驗的問題及討論
注意應先選擇控制口,規定輸入輸出端口和輸入輸出方式。DPTR為I/O尋址16位寄存器,沒有用到的引腳賦1。
6.實驗心得及建議
在做接口實驗時,應充分學習和理解外部芯片作用以及連接方式。
嘗試盡量記憶芯片類型功能以及各引腳功能。



實驗十一  LCM控制實驗
1.功能要求
完成與LCM1602的接口,并嘗試各種顯示控制功能。
2.硬件原理
2.11.1  硬件原理圖
3.軟件程序流程
2.11.2  程序流程
4.程序清單
ORG 0000H
    LJMP MAIN
                ORG   0030H
MAIN: LCALL CSH
      MOV   R2,#00H
                MOV   R3,#00H
                MOV   R0,#80H
                LCALL WRI            
      MOV   DPTR,#TAB
FIRST:MOV   A,R2
                MOVC              A,@A+DPTR
                MOV   R1,A
                LCALL WRD
                MOV   50H,#0FFH
                LCALL DELAY
                INC   R2
                CJNE  R2,#14,FIRST
                MOV   R0,#0C0H
      LCALL WRI
                MOV   DPTR,#TAB1
SEC:  MOV   A,R3
                MOVC              A,@A+DPTR
                MOV   R1,A
                LCALL WRD
                MOV   50H,#0FFH
                LCALL DELAY
                INC   R3
                CJNE  R3,#16,SEC
                LJMP  MAIN
;********延時子程序******
      ORG   0200H
DELAY:MOV   51H,#0FFH
      DJNZ  51H,$
                DJNZ  50H,DELAY
      RET
;********寫指令代碼子程序******               
                ORG   0250H
WRI:  CLR   P2.0                  ;RS=0  指令
      SETB  P2.1        ;RW=1,忙標志和地址計數器讀出,
LOP0: SETB  P2.2                   ;E=1,讀寫使能,高電平有效
      MOV   P0,#0FFH                  ;讀P0口狀態
                MOV   A,P0                  ;讀P0口狀態,讀IR
                CLR   P2.2
                ANL   A,#80H
                CJNE              A,#0,LOP0   ;D7腳為高時,忙于內部操作,一直檢測
                CLR              P2.0
                CLR   P2.1
                SETB  P2.2
                MOV   P0,R0
                MOV   50H,#2                ;延時約510Us
                LCALL DELAY
                CLR   P2.2        ;RS=0,RW=0,E下降沿,寫指令代碼
                RET
;********寫數據子程序******
      ORG   0450H
WRD:  CLR   P2.0                   ;RS=0  指令
      SETB  P2.1        ;RW=1,忙標志和地址計數器讀出,
LOP1: SETB  P2.2                     ;E=1,讀寫使能,高電平有效
      MOV   P0,#0FFH    ;讀P0口狀態
                MOV   A,P0                    ;讀P0口狀態,讀IR
                CLR   P2.2
                ANL   A,#10000000B
                CJNE              A,#0,LOP1     ;D7腳為高時,忙于內部操作,一直檢測
                SETB  P2.0
                CLR   P2.1
                MOV   P0,R1
                MOV   50H,#2
                LCALL DELAY
                SETB  P2.2
                MOV   50H,#2
                LCALL DELAY
                CLR   P2.2
      RET
;********初始命令子程序******
      ORG   0600H
CSH:  MOV   R0,#38H
                LCALL WR           ;L L    L L H H(DL 8位數據接口模式) H(雙N) L(F) L L 雙列顯示,字形5*7
                MOV   R0,#0FH
                LCALL WRI                                ;LL   L L L L H H H H 開顯示,光標閃爍            
                MOV   R0,#01H
                LCALL WRI                                ;清除LCD顯示屏
      RET
                ORG   0800H
TAB: DB 57H,78H,79H,20H,69H,73H,20H,61H,20H,67H,69H,72H,6CH,2EH
;Wxy is a girl.
      ORG   0850H
TAB1:
DB  57H,61H,6EH,67H,78H,79H,32H,30H,31H,36H,30H,31H,32H,33H,31H,32H  
;Wangxy2016012312
END
5.實驗的問題及討論
(1)考慮到使程序方便用戶設置顯示功能,方便程序員執行寫指令、寫數據操作;將初始化顯示設置和寫指令數據程序編寫為子程序,在主程序中直接調用即可。
(2)注意在每次執行寫操作過程時,應先檢測部件是否正忙,若不忙執行相關指令,若忙循環檢測直至不忙。
(3)每次讀寫引腳前,應先置位E讀寫使能端。
6.實驗心得及建議
外部設備功能較多,指令也較復雜,實驗前要先捋清思路,仔細讀外部設備的相關功能介紹。
建議更新實驗中部分硬件以方便仿真,而且更有利于實驗的進行。



課程心得及建議
整個學期下來很難忘的一堂課就是《微機原理及接口技術》,自己上課很少跑神,一方面是知識點比較細碎,需要集中精神學習,另一方面在王老師的帶動下,課堂氛圍積極活躍,感覺每個同學都在很認真的思考,自己想不到或者剛想到的問題,也總會有同學及時提出來,下課更是有很多同學圍著老師問東問西,很感謝王老師一年來的認真授課,我們真的學到很多東西,當實驗做完后,成就感是難以言表的。
建議實驗室和實驗指導書能更新一些器件,淘汰一些老化不常用的芯片,擴展一些趣味實驗,可以是對基礎實驗知識的進一步運用,以增強同學們的學習興趣,激發同學們的實驗熱情。


完整的Word格式文檔51黑下載地址:
單片機原理實驗總結.doc (1.24 MB, 下載次數: 10)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国精产品一区二区三区 | 免费簧片视频 | 最近免费日本视频在线 | 在线观看免费av网 | 亚洲精品专区 | 国产精品区一区二区三 | 男人天堂久久 | 国产欧美日韩一区二区三区在线观看 | 在线91| 精品久久久久久亚洲综合网 | 免费精品| 日本一区二区电影 | 成人夜晚看av | 欧美久久一区二区 | 亚洲视频免费 | 亚洲精品成人 | 国产乱一区二区三区视频 | 久久99精品久久久 | 国产日韩欧美一区二区 | www亚洲免费国内精品 | 日韩一区二区免费视频 | 日韩天堂av | 久久久精品高清 | 亚洲视频在线观看免费 | 91久久久久久久久久久久久 | h视频在线免费 | 日日操网站 | 久久69精品久久久久久国产越南 | 亚洲狠狠爱一区二区三区 | 伊人伊成久久人综合网站 | 久久精品国产精品青草 | 国产精品一区二区三区在线 | 午夜小电影 | 国产精品久久国产愉拍 | 天天躁日日躁狠狠很躁 | 男女av| 97国产精品| 国产在线视频一区 | 国产精品日韩在线观看一区二区 | 国产精品久久久久久久久久免费看 | 亚洲人精品 |