看到段式低功耗LCD驱动芯片TM1726的参数(正常LCD显示时的工作电流才10uA),决定弄个程序试一下,看是不是这么低功耗,可是就搞不出来,就想问一下网上高手.
主要出现在没有ack信号,它一直保持高电平(通过仿真器查看到),就是到下面的第6条指令不走了:
TM1726_man:
call
i2c_start
;start信号
mov
a,8
mov
data_8,a
;要写入的位数为8(1字节内容)
mov
a,11000000b
;设置首地址00H
call
TM1726_shiftdat
;调用子程序,写入
call
read_ack
;读ack信号
下面我依据规格书来写的整段子程序:
;********LCD驱动芯片管理******
;*****************************
TM1726_man:
call
i2c_start
;start信号
mov
a,8
mov
data_8,a
;要写入的位数为8(1字节内容)
mov
a,11000000b
;设置首地址00H
call
TM1726_shiftdat
;调用子程序,写入
call
read_ack
;读ack信号
mov
a,14
mov
disp_ram,a
;共14单元
mov
a,76h
;MCU内存地址(即变量disp_ram0~disp_ram13)
mov
mp0,a
TM1726_drive_loop:
mov
a,8
mov
data_8,a
mov
a,iar0
call
TM1726_shiftdat
;调用子程序,写入
call
read_ack
;读ack信号
inc
mp0
sdz
disp_ram
;写完了14字节内容了吗?
jmp
TM1726_drive_loop
;没有,则继续写
call
read_stop
;是的,则写入stop信号
call
i2c_start
;start信号
mov
a,8
mov
data_8,a
mov
a,00010111b
;设置显示控制命令
call
TM1726_shiftdat
ret
read_stop:
nop
;stop信号
nop
clr
datac ;dat脚设为输出状态
clr
dat
set
clk
nop
nop
nop
set
dat
nop
nop
ret
read_ack:
set
datac
;设数据线为输入
nop
waiting_ack:
;等待ack信号
sz
dat
jmp
waiting_ack
clr
clk
set
clk
clr
clk
clr
datac
;设数据线为输出
ret
i2c_start:
clr
datac
;设数据线为输入
set
clk
;拉高时钟线
nop
set
dat
;拉高数据线
nop
clr
dat
nop
clr
clk
ret
TM1726_shiftdat:
;送数据
clr
dat
sz
acc.0
set
dat
clr clk
set
clk
clr
clk
rr
acc
sdz
data_8
jmp
TM1726_shiftdat
ret
|