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

发布者:SereneDreams最新更新时间:2010-09-25 关键字:SAA7113  初始化  寄存器 手机看文章 扫描二维码
随时随地手机看文章

  用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

  ;*******发送1字节数据,待送数据在A中******

  I2C_SEND_1BYTE:

  MOV R0, #8

  SEND100: RLC A

  MOV SDA, C

  NOP

  SETB SCL

  NOP

  NOP

  CLR SCL

  DJNZ R0, SEND100

  RET

  ;*******接收1字节数据,接收数据放在A中*****

  I2C_RECEIVE_1BYTE:

  MOV R0, #8

  RECV100: SETB SDA

  NOP

  SETB SCL

  NOP

  NOP

  NOP

  MOV C, SDA

  CLR SCL

  RLC A

  DJNZ R0, RECV100

  RET

  ;*******通过I2C总线向某一寄存器写入一个字节数据*********

  I2C_WRITE: ACALL I2C_START ;发启动信号

  MOV A, # DeviceaddressW ;调7113地址+写

  ACALL I2C_SEND_1BYTE ;发送7113地址及“写”命令

  ACALL CHECK_ACK ;检查7113的应答信号

  JNB I2C_ERROR, WR200 ;应答正确,继续

  WR100: ACALL I2C_STOP ;应答不对,返回

  RET

  WR200: MOV A, Subaddress ;调寄存器地址

  ACALL I2C_SEND_1BYTE ;发送寄存器地址

  ACALL CHECK_ACK ;检查7113的应答信号

  JB I2C_ERROR, WR100 ;应答不对,返回

  MOV A, DATA_I2C ;调准备写入的数据

  ACALL I2C_SEND_1BYTE ;发送数据字节

  ACALL CHECK_ACK

  JB I2C_ERROR, WR100

  ACALL I2C_STOP ;发停止信号

  RET

  ;*******通过I2C总线读出某一寄存器的数据*********

  I2C_READ: ACALL I2C_START

  MOV A, # DeviceaddressW ;调7113地址,写入

  ACALL I2C_SEND_1BYTE

  ACALL CHECK_ACK

  JNB I2C_ERROR, RD200

  RD100: ACALL I2C_STOP

  RET

  RD200: MOV A, Subaddress ;调要读的寄存器地址

  ACALL I2C_SEND_1BYTE ; 发送寄存器地址字节

  ACALL CHECK_ACK

  JB I2C_ERROR, RD100

  ACALL I2C_START ;重发起动信号

  MOV A, # DeviceaddressR ;调7113地址,读

  ACALL I2C_SEND_1BYTE

  ACALL CHECK_ACK

  JB I2C_ERROR, RD100

  ACALL I2C_RECEIVE_1BYTE ;接收读出的数据

  MOV DATA_I2C,A ;读出数据转存

  ACALL SEND_NOACK ;发送非应答位

  ACALL I2C_STOP ;停止

  RET

  ;***************初始化7113,配置各寄存器************************

  INIT_SAA7113: MOV DPTR, #SAA7113_Subaddress

  MOV R7, #28

  INIT100: MOV A, #0

  MOV C A, @A+DPTR

  MOV Subaddress, A ;调寄存器地址

  MOV A,#28

  MOVC A, @A+DPTR

  MOV DATA_I2C, A ;调寄存器配置数据

  INC DPTR

  ACALL I2C_WRITE ;配置1个寄存器

  JB I2C_ERROR, INIT200

  DJNZ R7,INIT100

  INIT200: RET

  ;***************SAA7113寄存器初始化配置数据**********************

  SAA7113_Subaddress:

  DB 01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH

  DB 0FH,10H,11H,12H,13H,15H,16H,17H,40H,58H,59H,5AH,5BH,5EH

  ;共28个

  I2C_REG_VALUE_AI11:

  DB 08H,0C0H,33H,00H,00H,0EBH,0E0H,0B8H,01H,7EH,46H,43H,01H,01H

  DB 0FH,00H,0CH,0A7H,00H,00H,00H,00H,02H,00H,54H,07H,80H,00H

  ;*************对SAA7113某一寄存器的改写与读出*******************

  WRITE_READ: MOV Subaddress, #0AH ; 设寄存器地址为0AH

  MOV DATA_I2C, #88H ;改寄存器的值为88H

  ACALL I2C_WRITE ;改写

  ACALL I2C_READ ;读出

关键字:SAA7113  初始化  寄存器 引用地址:51单片机对SAA7113初始化和控制的程序

上一篇:基于AT89C52单片机的晶闸管触发器的设计
下一篇:一种基于单片机的超声波传感器的研究与设计

推荐阅读最新更新时间:2024-03-16 12:30

和弦芯片C520的结构与典型应用
1 和弦铃声概述   和弦原来是乐理上的一个概念,指的是按照三度关系叠置起来的三个或三个以上的音的结合;而在音频器材的工业设计领域中,和弦指的是多个音源同时发音,也叫复音、多音(polyphony)。和弦铃声在手机中得到了广泛的应用,它的音色饱满圆润,立体感强,已经全面取代了以往的单音铃声。目前和弦铃声文件格式有多种,如MIDI、MMF、AMR、MP3、IMY等,其中MIDI是目前支持度最高的铃音文件格式,它的文件占用空间小,表现力强,几乎已经成为目前和弦铃声手机的标准配置。   手机中的MIDI和弦音乐是通过内置高集成度的和弦芯片播放MIDI音乐文件来实现的。和弦芯片使用的声音合成和音色调用方式决定了铃声的播放效果。早期的FM
[手机便携]
使用寄存器点亮LED—STM32的寄存器映射代码讲解
本篇文章中,我们以实例讲解如何通过控制寄存器来点亮LED 灯。 建立一个新工程,见图1,可看到一共有三个文件,分别startup_stm32f10x_hd.s 、stm32f10x.h 以及main.c,下面我们对这三个文件进行讲解。 图 1 工程文件结构 硬件连接 在本教程中STM32 芯片与LED 灯的连接见图2,这是一个RGB 灯,里面由红蓝绿三个小灯构成,使用PWM控制时可以混合成256 不同的颜色。 图2 LED 灯电路连接图 图中从3 个LED 灯的阳极引出连接到3.3V 电源,阴极各经过1 个限流电阻引入至STM32 的3 个GPIO 引脚中,所以我们只要控制这三个引脚输出高低电平,即可控制其所连接
[单片机]
使用<font color='red'>寄存器</font>点亮LED—STM32的<font color='red'>寄存器</font>映射代码讲解
MSP430Ware使用笔记 初始化DCO至8MHz
1.平台说明MSP430F5438。 2.ACLK选择XT1,频率为32.768K,MCLK和SMCLK选择DCOCLKDIV,频率为8000K。 // 辅助时钟 ACLK 32.768K // 系统时钟 子系统时钟 8000K #include inc/hw_memmap.h #include ucs.h #include wdt_a.h #include gpio.h #include sfr.h void main (void) { // 停止看门狗 WDT_A_hold(WDT_A_BASE); // P4.0保持输出状态 G
[单片机]
stm32 中空编码器tim4初始化
#include stm32f10x.h #include encode.h #include misc.h #include nvic.h #include sys.h #include delay.h void TIM4_Mode_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_ICInitTypeDef TIM_ICInitStructure; //PB6 ch1 A,PB7 ch2 RCC_APB1PeriphClockCmd(RCC_APB1Periph_
[单片机]
stm32 BKP寄存器操作[操作寄存器+库函数]
BKP是“BACKUP”的缩写,stm32f103RCTE的内部配备了10个16位宽度的BKP寄存器。在主电源切断或系统产生复位时间时,BKP寄存器仍然可以在备用电源的支持下保持其内容。 BKP在实际应用中可以存入重要数据,防止被恶意查看,或用于断电回复等。 本例实现对BKP寄存器的读写操作,和入侵检测和处理。主程序中写入寄存器后,依次打印出10个BKP寄存器数据,然后触发GPIOC13的入侵中断(输入低电平),在中断中打印出入侵事件发生后的寄存器内容(复位为0 )。 直接操作寄存器 用到的寄存器描述如下: 备份数据寄存器x(BKP_DRx) (x = 1 … 10):低16位 有效,用来写入或读出备份数据。 备
[单片机]
stm32 BKP<font color='red'>寄存器</font>操作[操作<font color='red'>寄存器</font>+库函数]
eCAN总线模块的初始化步骤
  在CAN模块正常操作及初始化之前,必须使能模块的时钟。可以通过寄存器PCLKCR的14位使能/屏蔽CAN模块的时钟。在不使用CAN模块时,通过该位屏蔽CAN的时钟可以降低功耗。该位不能控制CAN模块的低功耗模式,同其他外设一样,复位后CAN模块的时钟被屏蔽。模块时钟的配置一般在处理器初始化中完成,eCAN模块的初始化步骤如下。 (1)使能CAN模块的时钟。 (2)设置CANTX和CANRX作为CAN通信引脚:    ◇写CANTIOC.3:0=0x08;    ◇写CANRIOC.3:0=Ox08。 (3)复位后,OCR(CANMC.12)位和CCE(CANES.4)位置1,允许用户配置位时间配置寄存器(
[嵌入式]
STM8 存储器和寄存器映射
要了解关于STM8存储器映射、I/O端口硬件寄存器映射以及CPU/SWIM/调试模块/中断控制寄存器的详细内容请参考产品数据手册。 寄存器描述缩写 在本参考手册每一章的寄存器描述中,使用下列缩写:
[单片机]
STM8 存储器和<font color='red'>寄存器</font>映射
基于MSP430F5438A的SPI通信来进行SD卡初始化
最近需要做一个数据存储,发现SD卡这一块还不太好弄 现在的单片机有相当一部分还不支持SDIO,比如MSP430(据我所知,如果有支持的型号了还请及时告诉我~),所以只好用SPI通信来进行SD卡的操作,虽然后续涉及到更为复杂的FAT等等,但是首先需要解决的仍然是建立通信的问题。 采用的单片机型号为MSP430F5438A,用了一个开发板。 SPI通信基本例程 例程及解释如下: 鉴于CSDN的Markdown代码高亮做的实在是……唉,这里贴一个容易看的吧: SPI通信代码 SD卡通信方式 以上是给出的例程,SD卡有自己的一套通信方法: 这里引述了: http://elm-chan.org/docs/mmc/mmc_
[单片机]
基于MSP430F5438A的SPI通信来进行SD卡<font color='red'>初始化</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved