用51单片机对7113初始化和控制
SAA7113的初始化就是对寄存器配置合适的参数,使其能够有符合要求的输出。寄存器配置通过I2C总线来进行,很多可以控制I2C总线的器件都可以作为主器件对7113进行初始化,这里介绍用51单片机初始化7113的例子。
51单片机和7113的硬件连接非常简单,只要把单片机的两个I/O口(如P1.0、P1.0)直接和7113的SCL、SDA管脚相连,再加上上拉电阻即可。
用单片机初始化7113的主要任务是程序的编写,首先要熟悉I2C总线协议,根据I2C总线的原理写出启动、停止、应答信号等的子程序,由子程序再写出发送、接收1个字节的程序,然后根据7113的寄存器操作格式写出读写寄存器的程序,最后根据以上的子程序写出初始化7113的程序段。
对7113的控制一般是改变色度、亮度等指标以及输出管脚的输出信号,这可以通过修改相应寄存器的值来完成,程序上写出“读写命令”即可。
下面以程序段的形式给出初始化SAA7113以及读写寄存器的具体例子,以供参考。
SDA BIT P1.0
SCL BIT P1.1
I2C_ERROR BIT 00H ;I2C总线数据传输出错标志
DeviceaddressW EQU 4AH ;7113器件地址+写
DeviceaddressR EQU 4BH ;7113器件地址+读
Subaddress EQU 4DH ;7113寄存器地址字节在单片机中的存放地址
DATA_I2C EQU 50H ;设置写入或读出数据在单片机中的存放地址
;*************启动**************
I2C_START: SETB SDA
NOP
SETB SCL
NOP
CLR SDA
NOP
CLR SCL
RET
;***************停止**************
I2C_STOP: CLR SDA
NOP
SETB SCL
NOP
SETB SDA
NOP
RET
;************送应答位************
SEND_ACK: CLR SCL
NOP
CLR SDA
NOP
SETB SCL
NOP
?NOP
CLR SCL
NOP
SETB SDA
RET
;***********送非应答位***********
SEND_NOACK: SETB SDA
NOP
SETB SCL
NOP
NOP
CLR SCL
NOP
RET
;***********检查应答位************
CHECK_ACK: NOP
CLR SCL
NOP
SETB SDA
NOP
SETB SCL
NOP
NOP
MOV C, SDA
MOV I2C_ERROR, C
CLR SCL
NOP
RET
SAA7113的初始化就是对寄存器配置合适的参数,使其能够有符合要求的输出。寄存器配置通过I2C总线来进行,很多可以控制I2C总线的器件都可以作为主器件对7113进行初始化,这里介绍用51单片机初始化7113的例子。
51单片机和7113的硬件连接非常简单,只要把单片机的两个I/O口(如P1.0、P1.0)直接和7113的SCL、SDA管脚相连,再加上上拉电阻即可。
用单片机初始化7113的主要任务是程序的编写,首先要熟悉I2C总线协议,根据I2C总线的原理写出启动、停止、应答信号等的子程序,由子程序再写出发送、接收1个字节的程序,然后根据7113的寄存器操作格式写出读写寄存器的程序,最后根据以上的子程序写出初始化7113的程序段。
对7113的控制一般是改变色度、亮度等指标以及输出管脚的输出信号,这可以通过修改相应寄存器的值来完成,程序上写出“读写命令”即可。
下面以程序段的形式给出初始化SAA7113以及读写寄存器的具体例子,以供参考。
SDA BIT P1.0
SCL BIT P1.1
I2C_ERROR BIT 00H ;I2C总线数据传输出错标志
DeviceaddressW EQU 4AH ;7113器件地址+写
DeviceaddressR EQU 4BH ;7113器件地址+读
Subaddress EQU 4DH ;7113寄存器地址字节在单片机中的存放地址
DATA_I2C EQU 50H ;设置写入或读出数据在单片机中的存放地址
;*************启动**************
I2C_START: SETB SDA
NOP
SETB SCL
NOP
CLR SDA
NOP
CLR SCL
RET
;***************停止**************
I2C_STOP: CLR SDA
NOP
SETB SCL
NOP
SETB SDA
NOP
RET
;************送应答位************
SEND_ACK: CLR SCL
NOP
CLR SDA
NOP
SETB SCL
NOP
?NOP
CLR SCL
NOP
SETB SDA
RET
;***********送非应答位***********
SEND_NOACK: SETB SDA
NOP
SETB SCL
NOP
NOP
CLR SCL
NOP
RET
;***********检查应答位************
CHECK_ACK: NOP
CLR SCL
NOP
SETB SDA
NOP
SETB SCL
NOP
NOP
MOV C, SDA
MOV I2C_ERROR, C
CLR SCL
NOP
RET
转载请标明出处:51单片机对SAA7113初始化和控制的程序代码
文章来源: 51单片机对SAA7113初始化和控制的程序代码