實習六              掃描四個七段顯示器

      

目的﹕了解多工掃描顯示原理及程式設計。


使用材料﹕8051微電腦一片、3kΩ電阻四個及330Ω8

                               9012電晶體四個、共陰七段顯示器四個


功能說明﹕四個七段顯示器依序顯示〝0〞,〝1〞,〝2〞,〝3〞。                      

       

電路圖:       

說明﹕

             1. J47P3.0~P3.3

             2 . J50P1.0~P1.7

             3. 四個七段顯示器(共陰極)的〝P〞連在一起,經過330Ω電阻及

                 電流放大晶體9012,再串接一個基極電阻。

             4. P1.7=0時,且P3.0=0時,圖上最右邊顯示器的〝P〞段會亮,

                  P1.7維持〝0〞,移動〝0〞電位到P3.1,則右邊第二顯示器會亮,其餘以此類推。

 

程式流程圖:

主程式流程圖:                    

程式及說明﹕

1.                           ORG  0000H                                                                                                               

2.           STARTMOV  DPTR , # TABLE                 : 將七段顯示碼之表格所在位址輸入資料指標

                                                                                        暫存器DPTR中。

3.                           ACALL  SCAN1                             : 呼叫中斷程式。                           

4.                           AJMP   START                                : 返回 START。

5.          SCAN1MOV  R5 , # 11110111B          5~7 : 設定個暫存器 R0、R4及R5之初值

6.                           MOV  R4 , # 04

7.                           MOV  R0 , # 00

8.             LOOPMOV  A , R0                           8~11 : 將堆疊中之資料分別依次送到 P1。

9.                            MOVC  A , @ A+DPTR

10.                          MOV  P1 , A

11.                          INC  R0

12.                          MOV  P3 , R5                          12~13 : 將 R5 之資料送到 P3,來選擇哪一個七段

                                                                                             顯示器顯示 P1 所送出之資料,並且延遲 。

13.                          ACALL  DELAY                                 

14.                          ORL  P3 , # 11111111B                     : 為了要避免下一個七段顯示器造成上一個

                                                                                            七段顯示器所造成之殘留資料。

15.                          MOV  A , R5                           15~17 : 設定 R5 。        

16.                          RR  A                                                   

17.                          MOV  R5 , A                                            

18.                          DJNZ  R4 , LOOP                              : 將 R4 減一,若 R4 是 0,繼續一個指

                                                                                            令,若 R4= 1,則跳到 LOOP。

19.                          RET                                                    : 返回主程式。 

20.         DELAYMOV  R6 , # 5                         20~23 : 延遲副程式。

21.               DL1MOV  R7 , #200                                 

22.              DL2DJNZ  R7 , DL2                                  

23.                          DJNZ  R6 , DL2                                  

24.         TABLE DB    0C0H                              24~27 : 設定資料。

25.                          DB     0F9H                                        

26.                          DB     0A4H                                            

27.                          DB     0B0H                                         

28.                          END                                                    : 組譯到此結束。