以前用TM1637很順利,以為用TM1650也是一樣簡單,畢竟都是一個公司的產品,前者共陽數碼管,后者是共陰數碼管。
誰知道區別還是很大的,TM1650不能連續寫4字節,每字節都要:”地址+字節“的方式寫,
現在程序通過了測試,發出來共同學習。
CLK EQU P0.2 ;TM1650的CLK
DIO EQU P0.1 ;TM1650的DIO
ORG 00H
AJMP MAIN ORG 100H
;===========================================
MAIN:
MOV SP, #60h
LCALL Srt
MOV A,#48H ;設置48H
LCALL Writebyte
MOV A,#00110001B;設置亮度
LCALL Writebyte
LCALL Stop
MOV 30H,#0
MOV 31H,#1
MOV 32H,#2
MOV 33H,#3
WAIT:
LCALL DISP ;顯示程序
JMP WAIT
;=================TM1650顯示======================
DISP:
MOV DPTR,#TAB
LCALL Srt
MOV A,#68H
LCALL Writebyte
MOV A,33H
LCALL QUBIAO
LCALL Stop
LCALL Srt
MOV A,#6AH
LCALL Writebyte
MOV A,32H
LCALL QUBIAO
LCALL Stop
LCALL Srt
MOV A,#6CH ;地址
LCALL Writebyte
MOV A,31H
LCALL QUBIAO
LCALL Stop
LCALL Srt
MOV A,#6EH
LCALL Writebyte
MOV A,30H
LCALL QUBIAO
LCALL Stop
RET
QUBIAO:
MOVC A,@A+DPTR
LCALL Writebyte
RET
;--------發送一字節數據-------------
Writebyte:
MOV R6,#8
WB1:CLR CLK
RLC A
MOV DIO,C
SETB CLK
DJNZ R6,WB1;
CLR CLK
MOV R6,#03
ACK:DEC R6 ;
MOV A,R6
JZ WB2 ;如果A為0就轉移,說明無ACK
JB DIO,ACK ;位為1轉移
WB2:SETB CLK
RET
;--------開始信號------------
Srt:SETB DIO
SETB CLK
CLR DIO
CLR CLK
RET
;--------結束信號------------
Stop:CLR CLK
CLR DIO
SETB CLK
SETB DIO
RET
;================TM1650字形表=================
TAB:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
DB 00H,40H,41H,42H ;不顯示,負號
;=============================================
;=============================================
END
|