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