既有動態顯示又有靜態顯示,沒有電原理圖,但是很簡單,行掃描,上下滾動,單片機型號STC15F2K60S2(打開文件后就可以看到)
單片機源程序如下:
- /* 靜態
- DL BIT P1.0;串行輸入列信號(數據信號)(低有效)并行輸出
- DH BIT P1.1;串行輸入行信號(行掃描信號)(高有效)并行輸出
- STR BIT P1.2;RCLK 三態輸出鎖存器的時鐘輸入
- CLK BIT P1.3;SRCLK 移位寄存器的時鐘輸入
- FOE BIT P1.4;/OE 輸出允許控制
- ROWH EQU 40H;字模信號,高位在前
- ROWL EQU 41H;
- SELH EQU 42H;行掃描信號
- SELL EQU 43H;
- ORG 0000H;
- LJMP MAIN;
- ORG 0100H
- MAIN:
- MOV SP,#6FH;
- MOV R1,#01H;配合字模信號
- MOV R2,#01H;高字節在后,從01開始
- MOV R3,#10H;循環16次
- LOAD:
- MOV DPTR,#DATAH;存儲行掃描信號;
- MOV A,R1;
- MOVC A,@A+DPTR;
- MOV SELH,A;存儲高字節
- DEC R1; 指向低字節
- MOV A,R1;
- MOVC A,@A+DPTR;
- MOV SELL,A; 存儲低字節
- INC R1;
- INC R1;
- INC R1;指向下一個高字節
- MOV DPTR,#DATAL; ;存儲字模數據,過程同上
- MOV A, R2
- MOVC A, @A+DPTR
- MOV ROWH, A
- DEC R2
- MOV A, R2
- MOVC A, @A+DPTR
- MOV ROWL, A
- INC R2
- INC R2
- INC R2
- LCALL LATCH;運行鎖存自程序
- LCALL DELAY;延時
- DJNZ R3, LOAD;重復執行16次,顯示所有行
- LJMP MAIN;靜態顯示
- LATCH:
- CLR FOE ;允許輸出
- CLR STR ;為上升沿將移位寄存器數據鎖存入數據寄存器
- MOV R4, SELH ; 做準備
- MOV R5, ROWH ;高位行掃描型號和字模信號
- MOV R6, #08H ;高低位分開讀,每次讀8位
- LATCH1:
- CLR CLK ;為上升沿讀入移位寄存器做準備
- MOV A, R4
- RRC A ;移出最高位
- MOV R4, A
- MOV DH, C ;由P1.0輸出準備進入移位寄存器
- MOV A, R5
- RRC A
- MOV R5, A
- MOV DL, C ;由P1.1輸出準備進入移位寄存器
- SETB CLK ;CLK上升沿,P1.0和P1.1數據進入移位寄存器
- DJNZ R6, LATCH1
- MOV R4, SELL
- MOV R5, ROWL
- MOV R6, #08H
- LATCH2: ;同上
- CLR CLK
- MOV A, R4
- RRC A
- MOV R4, A
- MOV DH, C
- MOV A, R5
- RRC A
- MOV R5, A
- MOV DL, C
- SETB CLK
- DJNZ R6, LATCH2
- SETB STR ;STR上升沿移位寄存器數據所存入數據寄存器
- RET ;顯示
- DELAY: ;延遲程序
- MOV R6, #02H
- LOOP1:
- MOV R7, #0F8H ;;估算:1us*2*(1+2*248+2) = 998us ≈ 1ms
- LOOP2:
- DJNZ R7, LOOP2
- DJNZ R6, LOOP1
- RET
- DATAH: ;SELECT ROW
- DB 80H, 00H
- DB 40H, 00H
- DB 20H, 00H
- DB 10H, 00H
- DB 08H, 00H
- DB 04H, 00H
- DB 02H, 00H
- DB 01H, 00H
- DB 00H, 80H
- DB 00H, 40H
- DB 00H, 20H
- DB 00H, 10H
- DB 00H, 08H
- DB 00H, 04H
- DB 00H, 02H
- DB 00H, 01H
- DATAL:
- /*
- DB; 0B..................,01H;
- DB; 0DDH,6DH,0C1H,6DH,0BFH,6DH,7FH,7DH,00H,01H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;;第一個字
- END;
- */
- /*每一列共陰極顯示器
- /*每一行七段顯示器的筆畫
- /*動態顯示電路,筆畫鎖存器控制行信號,位鎖存器控制列信號
- */
- ; /*滾動
- DH BIT P1.0;
- DL BIT P1.1
- STR BIT P1.2
- CLK BIT P1.3
- FOE BIT P1.4
- ROWH EQU 40H
- ROWL EQU 41H
- SELH EQU 42H
- SELL EQU 43H
- WAIT EQU 44H ;負責控制滾動速度
- ORG 0000H
- LJMP MAIN
- ORG 0100H
- MAIN:
- MOV R0, #01H ;每次重新滾動時初始化
- NEXT:
- MOV WAIT, #0AH ;滾動速度設置,數字越大滾動越慢
- ROLL:
- MOV A, R0 ;變換顯示的第一行以完成滾動
- MOV R1, #01H ;行掃描信號不變
- MOV R2, A
- MOV R3, #10H
- LOAD:
- MOV DPTR, #SEL_DATA ;
- MOV A, R1
- MOVC A, @A+DPTR
- MOV SELH, A ;
- DEC R1 ;
- MOV A, R1
- MOVC A, @A+DPTR
- MOV SELL, A ;
- INC R1 ;
- INC R1
- INC R1
- MOV DPTR, #ROW_DATA
- MOV A, R2
- MOVC A, @A+DPTR
- MOV ROWH, A
- DEC R2
- MOV A, R2
- MOVC A, @A+DPTR
- MOV ROWL, A
- INC R2
- INC R2
- INC R2
- LCALL LATCH
- LCALL DELAY
- DJNZ R3, LOAD
- ; 以上與第一部分相同
- DJNZ WAIT, ROLL ;循環以延時
- INC R0
- INC R0 ;R0指向下一行,以實現滾動
- CJNE R0, #41H, NEXT ;所有字符顯示完畢后開始新的一輪 ;根據字符的個數不同而改變
- ; 以下與第一部分相同
- LJMP MAIN
- LATCH:
- CLR FOE
- CLR STR
- MOV R4, SELH
- MOV R5, ROWH
- MOV R6, #08H
- LATCH1:
- CLR CLK
- MOV A, R4
- RRC A
- MOV R4, A
- MOV DH, C
- MOV A, R5
- RRC A
- MOV R5, A
- MOV DL, C
- SETB CLK
- DJNZ R6, LATCH1
- ;
- MOV R4, SELL
- MOV R5, ROWL
- MOV R6, #08H
- LATCH2:
- CLR CLK
- MOV A, R4
- RRC A
- MOV R4, A
- MOV DH, C
- MOV A, R5
- RRC A
- MOV R5, A
- MOV DL, C
- SETB CLK
- DJNZ R6, LATCH2;
- SETB STR
- RET
- DELAY:
- MOV R6, #02H
- LOOP1:
- MOV R7, #0F8H
- LOOP2:
- DJNZ R7, LOOP2
- DJNZ R6, LOOP1
- RET
- SEL_DATA: ;SELECT ROW
- DB 80H, 00H
- DB 40H, 00H
- DB 20H, 00H
- DB 10H, 00H
- DB 08H, 00H
- DB 04H, 00H
- DB 02H, 00H
- DB 01H, 00H
- DB 00H, 80H
- DB 00H, 40H
- DB 00H, 20H
- DB 00H, 10H
- DB 00H, 08H
- DB 00H, 04H
- DB 00H, 02H
- DB 00H, 01H
- ROW_DATA:
- DB; 0B..................,01H;
- DB; 0DDH,6DH,0C1H,6DH,0BFH,6DH,7FH,7DH,00H,01H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;;第一個字
- DB; 7FH,0FFH,01H,81H,0BFH,0BDH,0C0H,3DH,0EDH,0BDH,0F5H,81H,0FEH,0EFH,80H,0F7H;
- DB ;0BDH,73H,0BDH,0A8H;...................,73H,80H,0FBH,0FDH,0FFH,0FBH,0FFH;第二個字
- DB ;16個;
- DB ;0DDH,6DH,0C1H,6DH,0BFH,6DH,7FH,7DH,00H,01H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;;;第一個字
- END
復制代碼
所有資料51hei提供下載:
dianzhen.zip
(33.69 KB, 下載次數: 14)
2018-7-13 16:49 上傳
點擊文件名下載附件
點陣的項目文件 下載積分: 黑幣 -5
|