首 页 用户登录 | ![]() |
|||
|
|||
按字母检索 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
按声母检索 | A | B | C | D | E | F | G | H | J | K | L | M | N | O | P | Q | R | S | T | W | X | Y | Z | 数字 | 符号 |
|
![]() |
您的位置: 5VAR论文频道 → 论文中心 → 理工论文 → 电子通信 |
|
||||||||||||||||||||||||||
按平台模式设计的虚拟I2C总线软件包VIIC | ||||||||||||||||||||||||||
收集整理:佚名 来源:本站整理 时间:2009-01-10 22:55:44 点击数:[] ![]() |
||||||||||||||||||||||||||
,以及满足调用操作的初始化操作的三条命令为VIIC的应用界面,即: MOV SLA,#SLAR/SLAW ;总线上节点寻址并确定传送方向 MOV NUMBYT,#N ;确定传送字节数N LCALL RDNBYT/WRNBYT ;读/写操作调用 三、VIIC1.0软件包清单 VIIC1.0软件包清单如下。 ①STAR:SETB VSDA;启动I2C总线 SETB VSCL NOP NOP CLR VSDA NOP NOP CLR VSCL RET ②STOP: CLR VSDA ;停止I2C总线数据传送 SETB VSCL NOP NOP SETB VSDA NOP NOP CLR VSDA CLR VSCL RET ③MACK: CLR VSDA ;发送应答位 SETB VSCL NOP NOP CLR VSCL SETB VSDA RET ④MNACK: SETB VSDA ;发送非应答位 SETB VSCL NOP NOP CLR VSCL CLR VSDA RET ⑤CACK: SETB VSDA ;应答位检查 SETB VSCL CLR F0 MOV C,VSDA JNC CEND SETB F0 CEND: CLR VSCL RET ⑥WRBYT: MOV R0,#08H ;向VSDA线上发送1个数 ;据字节 WLP: RLC A JC WR1 AJMP WR0 WLP1: DJNZ R0,WLP RET WR1: SETB VSDA SETB VSCL NOP NOP CLR VSCL CLR VSDA AJMP WLP1 WR0: CLR VSDA SETB VSCL NOP NOP CLR VSCL AJMP WLP1 ⑦RDBYT: MOV R0,#08H ;从VSDA线上读取1个数 ;据字节 RLP: SETB VSDA SETB VSCL MOV C,VSDA MOV A,R2 RLC A MOV R2,A CLR VSCL DJNZ R0,RLP RET ⑧WRNBYT: MOV R3,NUMBYT ;虚拟I2C总线发送N个 ;字节数据 LCALL STA MOV A,SLA LCALL WRBYT LCALL CACK JB F0,WRNBYT MOV R1,#MTD WRDA: MOV A,@R1 LCALL WRBYT LCALL CACK JB F0,WRNBYT INC R1 DJNZ R3,WRDA LCALL STOP RET ⑨RDNBYT: MOV R3, NUMBYT ;模拟I2C总线接收n个 ;字节数据 LCALL STA MOV A,SLA LCALL WRBYT LCALL CACK JB F0,RDNBTY RDN: MOV R1,#MRD RDN1: LCALL RDBYT MOV @R1,A DJNZ R3,ACK LCALL MNACK LCALL STOP RET ACK: LCALL MACK INC R1 SJMP RDN1 四、VIIC1.0应用指南 1.适用范围 VIIC1.0适用于80C51系列单主系统中I2C总线外围器件扩展的应用程序设计。由于时序模拟基于6MHz时钟设计,在高速时钟下,可适当增加时序模拟子程序中的空操作指令。 2. 资源占用 VIIC使用了R0,R1,R2,R3,F0,C等资源。 3.符号单元 PVIIC中有许多符号标记,这些符号标记有: VSDA 虚拟I2C总线数据线; VSCL虚拟I2C总线时钟线; SLA寻址字节存放单元; NUMBYT传送字节数存放单元; MTD发送数据缓冲区; MRD接收数据缓冲区。 4.归一化操作命令 不论总线上扩展什么外围器件,都只须使用以下三条指令: MOV SLA,#SLAW/SLAR MOVNUMBYT,#N LCALLWRNBYT/RDNBYT 5.VIIC的装载 由于WRNBYT/RDNBYT都使用长调用命令LCALL,故VIIC1.0可放在程序存储器的任意空间。 图1 6.通用的应用界面 VIIC1.0的应用界面如图1所示。与VIIC1.0有关的只是3条归一化操作命令;与硬件电路相关的是器件地址与引脚地址构成的寻址字节和由器件规定的数据操作格式。 在本文参考文献2中给出了一些基于VIIC软件包的外围串行扩展应用实例。现就带I2C总线接口LED显示驱动器SAA1064扩展8位LED显示电路来示范VIIC1.0的应用。 1.硬件电路与寻址字节 用2片SAA1064扩展的8位LED显示电路如图2(b)所示,图2(a)为SAA的引脚排列图。设80C51用P1.1/P1.0来虚拟SDA/SCL口线。两片SAA1064的ADR引脚分别接地和VCC。SAA1064(1)、(2)的器件地址为0111,引脚地址为000和111,因此它们的寻址字节SLAW/SLAR分别为70H/71H和76H/77H。 2.显示原理与数据操作格式 在I2C总线外围器件的数据手册中,都给出了实现器件功能的数据操作格式,以及实现功能的控制命令与寄存器的管理模式。 (1) SAA1064的数据操作格式 80C51只须对SAA1064进行写操作,便实现了LED的显示驱动控制。SAA1064的写数据操作格式如下:
只须对SAA1064中首地址为SUBADR的5个寄存器单元中依次写入控制命令COM和4个LED共阴极段码datal~data4,SAA1064的SUBADR=00H。 控制命令COM格式及位功能规定如下: D7 D0
C0 静、动态显示选择。C0=1,动态显示。 C1 显示位1,3暗亮选择。C1=1,选择亮。 C2 显示位2,4暗亮选择。C2=1,选择亮。 C3 测试位。C3=1,所有段点亮。 C4,C5,C6 驱动电流控制位。C4,C5,C6为 “1”时,驱动电流分别为3mA,6mA,12mA;皆为1时输出驱动电流最大,达21mA。 3.应用程序设计 按下列步骤完成图2(b)的8位LED显示程序设计。 (2) 根据硬件电路及资源分配,将VIIC1.0中的符号单元赋值如下: VSDA EQU P1.1 ;用P1.1虚拟SDA VSCL EQU P1.0 ;用P1.0虚拟SCL SLA EQU 50H ;50H为寻址字节存放单元 NUMBYT EQU 51H ;51H为传送字节数据存放单元 MTD EQU 30H ;30H为发送缓冲区首地址 (3) 8位LED显示子程序设计 这里介绍1个在图2(b)LED显示器上显示“bUAA0706”固定字符的子程序。 根据SAA1064的数据操作格式,点亮4个LED只须依首地址SUBADR顺序送入控制命令COM和4个LED共阴极段选码data1~data4。 设LED驱动电流为18 mA(C6,C5为高电平;C4为低电平)动态显示要求(C2,C1,C0为高电 Tags: |
提供人:佚名 | |
【返回上一页】【打 印】【关闭窗口】 |
![]() |
5VAR论文频道 |
![]() |
5VAR论文频道 |
![]() |
关于本站 -
网站帮助 -
广告合作 -
下载声明 -
网站地图
Copyright © 2006-2033 5Var.Com. All Rights Reserved . |