以前用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
|