51单片机对SAA7113初始化和控制的程序代码

匿名 (未验证) 提交于 2019-12-03 00:22:01
 用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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!