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

发布者:世界因你而精彩最新更新时间:2014-02-08 来源: dqjsw关键字:51单片机  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[page]

  ;*******发送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个寄存器

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

上一篇:单片机与eView触摸屏Modbus协议通信方法
下一篇:MCS-51单片机串行通讯口IP核的实现

推荐阅读最新更新时间:2024-03-16 13:34

51单片机程序转AVR的方法
将 C51 向 ICCAVR的转换进行一次总结 1、头文件 对C51中定义寄存器的头文件如 reg51.h at89x51.h等替换成相应的 AVR头文件 如 io8515.h io2313.h等 2、中断处理函数 在 C51 中以 interrupt 关键字来说明某一个函数为中断处理函数 在 ICCVAR 中可采用#pragma interrupt_handler预处理命令在程序开始处声明 具体用法如下: #pragma interrupt_handler 中断处理函数名 中断向量号 注意 对原 C51 源程序中的 interrupt 和 using关键字应当删除 3 、对 C51 中的 bit 和 sbit 数据类型
[单片机]
基于采用AT89S51单片机和LM35温度传感器的温度采集显示系统设计
随着电子和传感技术的快速发展,温度的测量和控制在民用、工业以及航空航天技术等领域,等到了广泛应用。小型的、低功耗的、廉价的、可靠性高的温度传感器引起了人们的广泛关注。在实际生产、生活等领域中,温度是环境因素不可或缺的一部分,对温度进行及时精确的控制和检测显得尤为重要。本文基于AT89S51单片机,采用 LM35温度传感器,设计了一种灵敏度较高,抗干扰能力强,工作稳定可靠的温度采集显示系统。 1、系统结构及工作原理 温度采集显示系统电路由温度采集模块、A/D转换模块、单片机控制模块、数码管显示模块和下载模块组成。电路工作原理是:首先由LM35温度传感器采集外界环境的温度,经LM358放大10倍后以电压形式输入到A/D采样电路,由
[单片机]
基于采用AT89S<font color='red'>51单片机</font>和LM35温度传感器的温度采集显示系统设计
51单片机(二十七)—— 蜂鸣器播放音乐
1、实验原理介绍 蜂鸣器是电路中经常使用的发声器件,我们一般使用蜂鸣器发出“嘀嘀”的声音,用它作为提示音。有没有想过用蜂鸣器还可以播放音乐呢?这显然是件很有意思的事情。 本文使用蜂鸣器来播放音乐。为了深入了解此实验的原理,先介绍一下音乐的基础知识,音乐中的每个音调都有其固定的音高,简谱记谱法由7个基本唱名组成,它们分别用1、2、3、4、5、6、7表示。每个唱名对应固定的音高。由声学角度看,音高不同,发声物体振动的频率就不一样。 下图为钢琴键盘的一部分,图中的C4键对应的就是简谱唱名的中音1,左侧为这个唱名对应的声波的振动频率。由此可以向上和向下推出其它唱名的频率。 要想使蜂鸣器发出不同的声音就必须通过PWM波来驱动蜂鸣
[单片机]
<font color='red'>51单片机</font>(二十七)—— 蜂鸣器播放音乐
51单片机C语言us级的精确延时
us级的精确延时延时,非要要汇编吗?否。请看下面例子: void delay1(unsigned char i) { while(--i); } i  delay time/us 1  5 2  7 3  9 ...
[单片机]
51单片机-电位器控制舵机
1.题目要求 为了使ADC的知识能配合其他模块实现不同功能,这里我们打算通过扭动电位器(滑动变阻器)来控制舵机桨的位置,如果我们顺时针扭一圈电位器,那么舵机桨也会跟着从一端旋转到另一端。 2.main.c测试代码 #include reg52.h #include function.h //详见第六章第8讲 #include timer.h //详见第八章第11讲 #include lcd.h //详见第十一章第3讲 #include adc.h //详见第十四章 sbit PWMOUT=P1^7; //舵机信号线接口 u8 flag20ms = 0; u8 PWM_VAL = 0; void m
[单片机]
<font color='red'>51单片机</font>-电位器控制舵机
8051单片机中DPTR的扩展设计
   摘要 首先对比分析在执行大规模数据转移时,传统805l单片机和进行DPTR扩展后的805l单片机在数据转移执行效率上的差别。通过详细分析DPTR操作所涉及的因素,具体实现对DPTR的扩展,并进行实际仿真测试。   单片机的出现是计算机技术发展史上的一个里程碑,它使计算机从海量数值计算进入到控制领域。在单片机中,以8051系列最为经典,至今仍是最普及、广泛使用的8位MUC架构。北界许多技术人员在其基础上不断进行性能扩展,使得805l系列芯片不断完善,从而形成一个庞大的体系。在传统的8051系列单片机中,设置了一组双字节寄存器(数据指针DPTR),用于访问外接的64 KB数据存储器和I/O接口电路;但在现今的8051单片机应用
[应用]
51单片机的片内RAM和片外RAM的区别
前边介绍单片机资源的时候,我们提到过 STC89C52 共有 512 字节的 RAM,是用来保存数据的,比如我们定义的变量都是直接存在 RAM 里边的。但是单片机的这 512 字节的 RAM在地位上并不都是平等的,而是分块的,块与块之间在物理结构和用法上都是有区别的,因此我们在使用的时候,也要注意一些问题。 51 单片机的 RAM 分为两个部分,一块是片内 RAM,一块是片外 RAM。标准 51 的片内 RAM 地址从 0x00H~0x7F 共 128 个字节,而现在我们用的 51 系列的单片机都是带扩展片内 RAM 的,即 RAM 是从 0x00~0xFF 共 256 个字节。片外 RAM 最大可以扩展到 0x0000~0x
[单片机]
Proteus运行Keil编写的51单片机C语言步骤
1. 在Keil 编写好程序以后,在左侧项目栏中单击鼠标右键,如下图 2.点击上图中Options for Target Target1 选项,弹出下列窗口 3.在Target标签中将Xtal(MHz)中的晶振频率改为12.0;再在Output标签中勾选Create HEX Fi复选框。 完成上面两项设置后点击确定。 4.再点击编译,生成Hex 文件。 5 再在Proteus中双击的51 芯片 ,弹出下列窗口,按下图修改 晶振 频率,添加需要运行的C语言生成的hex文件即可运行。 #include reg51.h #define uchar unsig
[单片机]
Proteus运行Keil编写的<font color='red'>51单片机</font>C语言步骤
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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