历史上的今天
返回首页

历史上的今天

今天是:2025年02月24日(星期一)

正在发生

2020年02月24日 | 基于P87LPC764与SAA1064的I2C显示电路

2020-02-24 来源:eefocus

简介:I2C总线是Philips公司推出的芯片间串行传输总线。它以串行数据线(SDA)和串行时钟线(SCL)2根连线实现了完善的全双工同步数据传送,可以极方便地构成多机系统和外围器件扩展系统。


I2C总线是Philips公司推出的芯片间串行传输总线。它以串行数据线(SDA)和串行时钟线(SCL)2根连线实现了完善的全双工同步数据传送,可以极方便地构成多机系统和外围器件扩展系统。关于I2C总线的结构和工作原理详见参考文献1。


一、P87LPC764单片机I2C总线接口


P87LPC764是Philips公司生产的一种小封装、低成本、高性能的单片机(有关它的详细介绍见参考文献2)。它采用80C51加速处理器结构,片内带有支持I2C总线的硬件接口。当激活I2C总线时,P87LPC764端口1中的P1.2与P1.3分别作为SCL和SDA行使I2C总线功能。其I2C总线由3个特殊功能寄存器控制,这3个寄存器为I2C控制寄存器I2CON、I2C配置寄存器I2CFG和I2C数据寄存器I2DAT。各寄存器格式和位含义参见本刊第5期第36页。


二、I2C总线显示器件SAA1064


1.引脚功能


SAA1064是I2C总线系统中典型的LED驱动控制器件,为双极型集成电路,有2×8位输出驱动接口,可静态驱动2位或动态驱动4位8段LED显示器。SAA1064的器件地址为0111,其引脚地址端ADR按输入电平大小将A1A0编为4个不同的从地址,故在1个I2C总线系统中最多可以挂接4片SAA1064,实现16位LED显示。SAA1064为24脚双列直插封装,其引脚排列如图1所示。


ADR寻址端,SAA1064通过对该脚输入不同的模拟电压,以确定其不同的地址。SAA1064规定输入该脚的电压值为VEE、(3/8)VCC、(5/8)Vcc及Vcc时,分别对应十六地地址70H、72H、74H、76H(写操作)或71H、73H、75H、77H(读操作)。


CEXT时钟振荡器的外接电容,典型值为2.7nF。


P1~P8段驱动输出端口1。P1为最低位,P8为最高位。


P9~P16段驱动输出端口2。P9为最低位,P16为最高位。


MX1、MX2动态显示方式时的公共极驱动信号输出端,用以切换两对数码管轮流显示。


SDA、SCLI2C总线的数据线和时钟线。


2.数据操作格式


SAA1064除了与LED驱动控制相关的写操作外,还有能反映系统上电标志的读操作。SAA1064的读操作状态字节的读出操作,其状态字节仅最高位有意义,定义为PR。上电后PR为"1",在对其进行读状态字节操作后清零。因此,PR=1表示从上次读状态后出现过掉电和加电。利用这一功能,在系统中可作为冷热启动标志。


(1)数据的输入操作


SAA1064的显示驱动控制只需要I2C总线对其进行写入操作,即按照子地址(SUBADR)写入控制命令字节及显示器的段码数据即可,其数据操作格式如下:


SSLAWASUBADRACOMA

data1Adata2Adata3Adata4AP


SLAW为SAA1064的地址。


SUBADR为SAA1064片内地址单元首址。


COM为SAA1064的控制命令。


data1~data4为动态显示方式的4个LED显示器的共阴极段选码。


(2)子地址单元


SAA1064片内有5个地址单元,占用了3位地址位(SC、SB、SA),分别用于装入控制字节和4个显示段码,具体地址分配如表1所列。由于SAA1064写操作具有地址自动加1功能,故在数据操作格式的写入顺序中,SUBADR应为00H。


0000SASBSC单元地址功能

000000000H控制寄存器

00101H数字位1

01002H数字位2

01103H数字位3

10004H数字位4

10105H保留不用

11006H保留不用

11107H保留不用


(3)控制命令COM格式


SAA1064具有较强的控制功能,能实现亮度控制,显示器测试,动、静态及位亮、暗显示。这些控制命令集中设置在控制寄存器中。控制命令(COM)格式如下:


-C6C5C4C3C2C1C0


C0动态、静态显示选择,C0=1动态显示。


C1数码管1、3亮灭选择,C1=1选择亮。


C2数码管2、4亮灭选择,C2=1选择亮。


C3测试位,C3=1时所有段点亮,正常工作时该位为0。


C4、C5、C6输出电流控制位,为1时分别对应3mA、6mA、12mA。皆为1时输出电流最大为21mA。


三、显示电路实例


图2是P87LPC764与SAA1064的接口电路实例。P87LPC764单片机采用6MHz的内部RC振荡器,访问4片SAA1064,驱动16只数码管显示,每片SAA1064的接线如图2所示。


该应用电路是一个单主的I2C总线系统,不会出现总线竞争问题,而且数据传送操作只有主发送方式,因此,在编程过程中没有检测总线错误。在数据发送过程中,每发送1个字节,都检测应答信号,如无应答信号,建立标志位F0,程序重新开始发送数据。


以下是该I2C总线显示电路的程序清单,显示缓冲区为30H到3FH单元。


START:MOVR0,#30H;显示缓冲区首地址


MOVR1,#17H;SAA1064控制码


MOVR2,#70H;SAA1064(1)的地址


MOVR3,#04H;4片SAA1064


LOOP:ACALLDISP


JBF0,START;无应答信号重新开始


INCR2;


INCR2;


DJNZR3,LOOP;



以下是显示子程序


DISP:CLRF0;清除无应答标志


MOVI2CFG,#30H;请求成为I2C总线主机


JNBMASTER,$;等待成为I2C总线主机


MOVI2CON,#1CH;清除起动条件


MOVA,R2;取从设备地址


ACALLSEND;发送从设备地址


JBF0,DISP2;无应答信号转移


MOVA,#0;SAA1064子地址


ACALLSEND;发送子地址


JBF0,DISP2;无应答信号转移


MOVA,R1;取SAA1064控制码


ACALLSEND;发送控制码


JBF0,DISP2;无应答信号转移


MOVR4,#04H;四只数码管


DISP1:MOVA,@R0;取字形代码


ACALLSEND;发送字形代码


JBF0,DISP2;无应答信号转移


INCR0;修正显示单元地址


DJNZR4,DISP1;


DISP2:ACALLSSTP;发送停止位


RET;


;发送1个字节


SEND:MOVR4,#8H;设置数据格式为8位


SENDB:MOVI2DAT,A;发送数据位


RLA;取下一个数据位


JNBDRDY,$;等待数据准备好


DJNZR4,SENDB;


MOVI2CON,#0A0H;转换为接收模式


JNBATN,$;等待应答信号


JNBRDAT,SENDE;是应答位吗?


SETBF0;建立无应答信号标志


SENDE:RET;


;发送停止位


SSTP:CLRMASTRQ;取消主机位置


MOVI2CON,#21H;产生总线停止条件


JNBATN,$;等待


MOVI2CON,#20H;清除数据准备好标志


JNBATN,$;等待发送停止条件


MOVI2C0N,#91H;释放I2C总线


CLRTIRUN;停止定时器I的运行


RET


推荐阅读

史海拾趣

ETC公司的发展小趣事

北京速通科技有限公司(以下简称速通科技)作为ETC行业的领军企业,其创立之初就专注于电子不停车收费系统(ETC)的研发与应用。随着国内交通拥堵问题的日益严重,速通科技看到了ETC系统在未来交通管理中的重要地位。公司组建了一支由行业专家和技术精英组成的团队,开始了ETC技术的探索之路。

D3 Semiconductor公司的发展小趣事

D3 Semiconductor自创立之初,就致力于半导体技术的研发与创新。公司凭借其独特的超结金属氧化物半导体场效应晶体管(MOSFET)技术,在功率电子市场上迅速崭露头角。这项技术在硬开关应用中展现出了同类最佳性能,为通讯、企业计算、不间断电源(UPS)和太阳能等领域提供了高效可靠的解决方案。D3 Semiconductor的这一技术突破不仅赢得了市场的认可,也为公司后续的发展奠定了坚实的基础。

Eastman Kodak Company公司的发展小趣事

进入21世纪后,随着数码技术的迅速崛起,传统摄影市场遭受了巨大的冲击。面对这一挑战,伊士曼柯达公司开始尝试向数码领域转型。然而,由于公司在数码技术方面的积累相对较少,转型过程并不顺利。尽管如此,柯达仍然坚持创新,不断推出新的数码产品,以应对市场的变化。同时,公司还加强了与数码技术公司的合作,共同研发新产品,以提高市场竞争力。

Helium公司的发展小趣事

Helium公司成立于2013年,由Shawn Fanning、Amir Haleem和Sean Carey共同创立。在创立初期,Helium专注于物联网无线网络技术的研究,但并未迅速获得市场关注。这一时期,电子行业正处于创新与转型阶段,物联网作为新兴领域展现出巨大潜力。Helium团队预见到了物联网的发展趋势,但由于缺乏明确的商业模式,其网络发展并未大规模铺开。然而,这段时期的积累为Helium后续的技术突破和市场拓展奠定了坚实基础。

Good Sky Electric Co Ltd公司的发展小趣事
首先检查总电源开关是否已打开,然后检查启动按钮是否接触良好。接着,可以检查接触器是否吸合,以及主电机接线盒和电气盘内的接线处是否接触良好或接头是否脱落。此外,还应检查电气原理图中的熔断器是否熔断,以及接触器线圈是否烧毁等。
帝特(DTECH)公司的发展小趣事

2007年,帝特成功获得迪士尼形象授权(泰国),这一里程碑事件标志着帝特品牌在国际市场上的认可度和影响力得到了显著提升。随后,帝特又获得了国内悠嘻猴授权,进一步丰富了其产品线。2008年,帝特荣获“守合同、重信用企业”荣誉称号,这一荣誉不仅是对帝特过去努力的肯定,也为公司的未来发展奠定了坚实基础。

问答坊 | AI 解惑

LPC的板子的USB的线有什么特殊要求吗??

我用一根带阻抗匹配的线下载可以,我师兄拿去用了,我用MP4的线连接就没用 郁闷!…

查看全部问答>

wince应用程序ICO图标问题

在vs中的工程设置的图标 程序原来在wm上运行,图标显示是正常的 到了wince上就显示不正常了 好像是分辨率的问题 请问这个怎么解决呢…

查看全部问答>

学usb驱程有用吗

老师上课说大四做毕业设计有做usb驱程的,我有些兴趣就买了相关方面的书看,可是刚看前言作者就说学usb驱程很复杂也没有什么用,想问一下学这个对开发嵌入式有用吗…

查看全部问答>

关于计算机的二进制计算问题

最近在看汇编,但是很是困惑: 1.我们一般在高级语言里碰到的int\\float,与我们在讲解二进制加法时用的8位有什么关系? 2.若汇编老师在讲解完计算机内的数字存储后,发问7+251=?那到底怎么做呢?   251=11111011已经八位了啊!!? ...…

查看全部问答>

wince writefile 总是发送不了数据,但不报错!

问题如下:        我现在接手别人的工作,驱动别人是用evc4.2写dll,驱动经测试可用。        我现在用C#开发应用程序。        现在的问题是,驱动writefile第二个参数他传的是 ...…

查看全部问答>

WINCE驱动和WINDOWS驱动的关系???

想学WINCE的驱动,但书籍好少,于是我想先看WINDOWS的驱动,从这里入门,下面这三种那种更接近WINCE的驱动编程呢?区别又在那呢? 1)WIN9X虚拟设备驱动VxD 2)WIN NT驱动 3)WIN 2000 WDM驱动 …

查看全部问答>

89s52的的几个基础问题

1、89S52的波特率发生器是T2还是T1,还是两个都可以? 2、多机通信的时候SCON是设置成方式1还是方式3?(我要通过SM2来控制发送的是地址还是数据) 3、S52用KEIL在线仿真是接在COM口还是打印机口?…

查看全部问答>

菜鸟,请你们珍爱生命,远离protues

       今天,用protues搭了一个电路,写了一个相应的程序,调试运行了一下,竟然无效, 于是乎,我就把原本庞大的电路删减一部分剩下基本的显示数码管,可是竟然还是不 对,那么,我首先怀疑是不是我的程序有问题 ...…

查看全部问答>

STM32哪个开发板好?

                    STM神舟3  和 神舟4 哪个板子适合学习?如果有其他的,那推荐一个,非常感谢!…

查看全部问答>

真正的地下车库

这个液压设备倒是猛的很…

查看全部问答>