M35055是日本三菱公司推出的OSD芯片,它可以显示24*10或32*7个字符,字库中包含了常用的大部分字符。这只芯片的外围电路比较简单,但需要外部振荡电路。51单片机驱动M35055的程序如下:
;------------------------------------------------
;在电视屏幕上显示"0123456789"
;------------------------------------------------
M35055_CS EQU P1.0
M35055_SCK EQU P1.1
M35055_SIN EQU P1.2
M35055_NUMEQU 44H
M35055_DATA EQU 45H
ORG 0000H
AJMP START
START:
LCALL M35055
SJMP $
M35055:
LCALL M35055_INIT
CLR M35055_CS
MOV M35055_DATA,#0F8H ;先清屏
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00H
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00H
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00H
LCALL SEND_DATA_M35055
SETB M35055_CS
CLR M35055_CS
MOV M35055_DATA,#20H ;0
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000010B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#21H ;1
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000010B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#22H ;2
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000010B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#23H ;3
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000010B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#24H ;4
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000010B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#25H ;5
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000010B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#26H ;6
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000010B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#27H ;7
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000010B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#28H ;8
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000010B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#29H ;9
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000010B
LCALL SEND_DATA_M35055
SETB M35055_CS
CLR M35055_CS
MOV M35055_DATA,#0F0H
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00H
LCALL SEND_DATA_M35055
MOV M35055_DATA,#10001010B ;F0
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000100B
LCALL SEND_DATA_M35055
SETB M35055_CS
CLR M35055_CS
MOV M35055_DATA,#0F1H ;F1 水平区域设置
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00H
LCALL SEND_DATA_M35055
MOV M35055_DATA,#01011111B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00011111B
LCALL SEND_DATA_M35055
SETB M35055_CS
CLR M35055_CS
MOV M35055_DATA,#0F2H ;F2 垂直区域设置
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00H
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00100011B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00011111B
LCALL SEND_DATA_M35055
SETB M35055_CS
CLR M35055_CS
MOV M35055_DATA,#0F3H ;F3 设置字符大小
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00H
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000000B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000000B
LCALL SEND_DATA_M35055
SETB M35055_CS
CLR M35055_CS
MOV M35055_DATA,#0F4H ;F4 各行显示模式设置
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00H
LCALL SEND_DATA_M35055
MOV M35055_DATA,#11110111B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000011B
LCALL SEND_DATA_M35055
SETB M35055_CS
CLR M35055_CS
MOV M35055_DATA,#0F5H ;F5 制式设置
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00H
LCALL SEND_DATA_M35055
MOV M35055_DATA,#01110000B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00000000B
LCALL SEND_DATA_M35055
SETB M35055_CS
CLR M35055_CS
MOV M35055_DATA,#0F6H ;F6 颜色设置
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00H
LCALL SEND_DATA_M35055
MOV M35055_DATA,#10101100B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00100000B
LCALL SEND_DATA_M35055
SETB M35055_CS
CLR M35055_CS
MOV M35055_DATA,#0F7H ;F7 光标设置
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00H
LCALL SEND_DATA_M35055
MOV M35055_DATA,#11110000B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00101000B
LCALL SEND_DATA_M35055
SETB M35055_CS
CLR M35055_CS
MOV M35055_DATA,#0F8H ;F8 显示模式设置
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00H
LCALL SEND_DATA_M35055
MOV M35055_DATA,#01001111B
LCALL SEND_DATA_M35055
MOV M35055_DATA,#00111111B
LCALL SEND_DATA_M35055
SETB M35055_CS
SETB M35055_SIN
SETB M35055_SCK
RET
;----------------------------
;M35055初始化
;----------------------------
M35055_INIT:
SETB M35055_CS
SETB M35055_SIN
SETB M35055_SCK
RET
;-----------------------------
;发送数据给M35055
;-----------------------------
SEND_DATA_M35055:
MOV A,M35055_DATA
MOV M35055_NUM,#8
CLR C
SEND_DATA_LOOP:
RRC A
MOV M35055_SIN,C
NOP
NOP
CLR M35055_SCK
NOP
NOP
SETB M35055_SCK
NOP
DJNZ M35055_NUM,SEND_DATA_LOOP
RET
END