控制數位管的動态顯示
文章目錄
- 控制數位管的動态顯示
-
- 一、動态顯示與靜态顯示的比較
-
- 1.什麼是動态顯示
- 2.什麼是靜态顯示
- 3.優缺點對比
- 二、如何控制多隻數位管
-
- 1.電路圖
- 2.代碼
- 3.程式分析
- 三、控制多隻數位管的方法
本次實驗任務如下:
一、動态顯示與靜态顯示的比較
1.什麼是動态顯示
- 驅動電路可以使數位管正常顯示資料,數位管的驅動方式有兩種:動态顯示驅動和靜态顯示驅動。
- 動态驅動是将所有數位管的8個顯示筆劃a,b,c,d,e,f,g,dp的同名端連在一起。
- 另外為每個數位管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制。
- 當單片機輸出字形碼時,所有數位管都接收到相同的字形碼,但究竟是哪個數位管會顯示出字形,取決于單片機對位選通COM端電路的控制。
2.什麼是靜态顯示
- 靜态顯示驅動靜态驅動也稱直流驅動。
- 靜态驅動是指每個數位管的每一個段碼都由一個單片機的I/O端口進行驅動。
3.優缺點對比
驅動類型 | 優點 | 缺點 |
---|---|---|
動态顯示驅動 | 可以控制多個數位管 占用資源少 節省電能 | 程式相對複雜 |
靜态顯示驅動 | 編寫程式簡單 顯示亮度高 | 控制的數位管數量有限 占用資源過大 |
二、如何控制多隻數位管
1.電路圖
- 利用觸發器作為中間環節來控制數位管。
- U2為段位觸發器,控制數位管的顯示。
- U3為位選觸發器,控制數位管的選擇。
- P0口作為資料的輸出口。
2.代碼
ORG 0000H
LJMP MAIN
ORG 30H
;..................................................
; 數位管DS0顯示‘0’
;..................................................
MAIN: MOV P0,#0C0H ;段選資料0
CLR P1.0 ;選中U2為段選晶片,将U2的Ē寫為低電平
CLR P1.2 ;時序引腳CKL為低電平,為接受資料做準備
SETB P1.2 ;時序為上升沿,即将資料傳送給U2
SETB P1.0 ;關閉U2,使得U2不在接受資料
MOV P0,#0FEH ;位選資料由P0口給出,選擇DS0數位顯示
CLR P1.1 ;選中U3位選晶片,将U3的Ē寫為低電平
CLR P1.2 ;時序引腳CKL為低電平,為接收資料做準備
SETB P1.2 ;時序為上升沿,即将資料傳送給U3
SETB P1.1 ;關閉U3,使得U3不在接收資料
///
LCALL DELAY ;延時一段時間
MOV P0,#0FFH ;關閉數位管,為下一個數位管顯示做準備
CLR P1.0 ;選中U3位選晶片,将U3的Ē寫為低電平
CLR P1.2 ;時序引腳CKL為低電平,為接收資料做準備
SETB P1.2 ;時序為上升沿,即将資料傳送給U3
SETB P1.1 ;關閉U3,使得U3不在接收資料
///
;..................................................
; 數位管DS1顯示‘1’
;..................................................
MOV P0,#0F9H
CLR P1.0
CLR P1.2
SETB P1.2
SETB P1.0
MOV P0,#0FDH
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
///
LCALL DELAY
MOV P0,#0FFH
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
///
;..................................................
; 數位管DS1顯示‘2’
;..................................................
MOV P0,#0A4H
CLR P1.0
CLR P1.2
SETB P1.2
SETB P1.0
MOV P0,#0FBH
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
///
LCALL DELAY
MOV P0,#0FFH
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
///
;..................................................
; 數位管DS1顯示‘3’
;..................................................
MOV P0,#0B0H
CLR P1.0
CLR P1.2
SETB P1.2
SETB P1.0
MOV P0,#0F7H
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
///
LCALL DELAY
MOV P0,#0FFH
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
///
;..................................................
; 延時程式
;..................................................
DELAY: MOV R7,#200 ;延時子程式
DJNZ R7,$
RET ;傳回主程式
END
3.程式分析
- 程式分為兩個部分:主程式、子程式。
- 主程式中又分四部分,分别是控制四個數位管的顯示。
- 子程式的作用是延時。
三、控制多隻數位管的方法
- 由上面的實驗,我們得知,多隻數位管的顯示是通過段選和位選一起控制的。
- 段選程式控制數位管的顯示。
- 位選程式控制數位管的選擇。
- 段選和位選程式如下:
;*****段選程式*********
CLR P1.0
CLR P1.2
MOV P0,#0B0H
SETB P1.2
SETB P1.0
;*****位選程式*********
CLR P1.1
CLR P1.2
MOV P0,#0F7H
SETB P1.2
SETB P1.1
- 在來一個前面程式的精簡版----使用查表發實作
;**************數位管動态顯示‘0,1,2,3’*********************
ORG 0000H
LJMP MAIN
ORG 30H
;............................................................
; 初始化定義
;............................................................
MAIN: MOV R0,#0;段選資料指針
MOV R1,#0FEH ;段選資料初始化
MOV DPTR,#TAB ;“0~9”資料表
;............................................................
; 主程式
;............................................................
;****改變段碼和位碼****
LOOP: MOV A,R0 ;資料指針RO給累加器A
MOVC A,@ A+DPTR ;将資料表中指針所對應的資料傳送給A
MOV P0,A ;資料傳給數位管各段
CLR P1.0
CLR P1.2
SETB P1.2
SETB P1.0
MOV P0,R1 ;将位選資料傳送給P0口,點亮所需數位管
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
LCALL DELAY ;延時一段時間
MOV P0,#0FFH ;關閉數位管,為下一個數位管顯示做消
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
;****改變段碼和位碼****
INC R0 ;資料指針加1,指向下一個資料位址
MOV A,R1 ;位選數位管左移,準備得下一個數位管點亮
RL A
MOV R1,A
CJNE R1,#0EFH,LOOP ;判斷DS3數位管是否點亮結束
LJMP MAIN ;循環本程式
;............................................................
; 延時程式
;............................................................
DELAY: MOV R7,#200 ;延時子程式
DJNZ R7,$
RET ;傳回主程式指令
;............................................................
; 數位管資料表
;............................................................
TAB: DB 000H,0F9H,0A4H,0B0H,099H ;0-9資料表
DB 092H,082H,0F8H,080H,090H
END
時間:2018年10月19日13:28:43
-END-