BC7281A串行通讯的解决方案
发布时间:2007/8/28 0:00:00 访问次数:775
作者:中科院上海技术物理研究所 陈木旺 陈育伟 童子磊
---------------------------------------------
摘 要:本文重点阐述数码管显示及键盘接口专用控制芯片BC7281A与MCU串行通讯中应注意的几个问题,给出了有效的解决方法,并提出了改进建议。
关键词:嵌入式系统;串行通信;BC7281A
传统的数码管显示和键盘接口一般直接采用MCU的I/O口对键盘或数码管进行动态扫描的方法,硬件上需要较多的外围部件,且占用MCU大量I/O口,软件上则浪费CPU资源,且给编程人员带来很大的不便。数码管显示及键盘接口专用控制芯片以其实现方法简单、功能强大等显著特点得到广泛的应用。这种芯片外围部件少、与MCU通讯一般采用串行接口或总线、在硬件上和软件上都占用极少资源、且功能强大、使得编程人员可以将更多的时间花在控制上。目前的这类接口芯片主要有:BC728X、HD7279A、ZLG7290、CH451等,BC7281A是其中性价比较高的一种。
典型应用电路
BC7281A的典型应用电路如图1所示,显示位数为16位,连接的键盘个数为64个,其外接移位寄存器采用74HC164,控制MCU采用ATMEL公司的AT89C51,为简单起见,图中仅画出与BC7281A相关的电路。
BC7281A与MCU之间的通讯
BC7281A与MCU之间的通讯是采用2线高速串行接口,这两个连线分别是数据线DAT和同步时钟线CLK,其中DAT为双向数据传输线,BC7281A既用该线从MCU接收数据,也用该线向MCU发送数据。BC7281A的DAT引脚为漏极开路输出结构,使用时须在该线上加20KW左右的上拉电阻。CLK引脚为串行时钟接口的同步时钟,由MCU控制,下降沿有效。串行接口数据宽度为8位,时序图如图2所示。
由于BC7281A的2线串行接口是自行规定的,一般MCU都不具备此通讯接口,但可以采用软件实现。MCU发送指令或数据到BC7281A子程序为SEND,MCU接收数据子程序为RECEIVE,采用51指令系统编写,其中DATA_OUT为MCU向BC7281A发送数据的寄存器,该寄存器既能直接寻址又能位寻址,DATA_IN为MCU接收BC7281A的数据寄存器,CLK和DAT定义为MCU的I/O口,分别连接到BC7281A芯片上的CLK和DAT引脚。
MCU发送指令或数据到BC7281A子程序
SEND: CLR CLK
SETB CLK ;发送握手请求脉冲
WAIT1: JB DAT,SEND ; DAT
CLR CLK ;建立通讯
SETB CLK
WAIT2: JNB DAT,WAIT2 ;发送串行数据
MOV BIT_COUNT,#8
SEND_LOOP: MOV C,DATA_OUT.7 ; BIT7
MOV DAT,C
CLR CLK ; CLK &n
作者:中科院上海技术物理研究所 陈木旺 陈育伟 童子磊
---------------------------------------------
摘 要:本文重点阐述数码管显示及键盘接口专用控制芯片BC7281A与MCU串行通讯中应注意的几个问题,给出了有效的解决方法,并提出了改进建议。
关键词:嵌入式系统;串行通信;BC7281A
传统的数码管显示和键盘接口一般直接采用MCU的I/O口对键盘或数码管进行动态扫描的方法,硬件上需要较多的外围部件,且占用MCU大量I/O口,软件上则浪费CPU资源,且给编程人员带来很大的不便。数码管显示及键盘接口专用控制芯片以其实现方法简单、功能强大等显著特点得到广泛的应用。这种芯片外围部件少、与MCU通讯一般采用串行接口或总线、在硬件上和软件上都占用极少资源、且功能强大、使得编程人员可以将更多的时间花在控制上。目前的这类接口芯片主要有:BC728X、HD7279A、ZLG7290、CH451等,BC7281A是其中性价比较高的一种。
典型应用电路
BC7281A的典型应用电路如图1所示,显示位数为16位,连接的键盘个数为64个,其外接移位寄存器采用74HC164,控制MCU采用ATMEL公司的AT89C51,为简单起见,图中仅画出与BC7281A相关的电路。
BC7281A与MCU之间的通讯
BC7281A与MCU之间的通讯是采用2线高速串行接口,这两个连线分别是数据线DAT和同步时钟线CLK,其中DAT为双向数据传输线,BC7281A既用该线从MCU接收数据,也用该线向MCU发送数据。BC7281A的DAT引脚为漏极开路输出结构,使用时须在该线上加20KW左右的上拉电阻。CLK引脚为串行时钟接口的同步时钟,由MCU控制,下降沿有效。串行接口数据宽度为8位,时序图如图2所示。
由于BC7281A的2线串行接口是自行规定的,一般MCU都不具备此通讯接口,但可以采用软件实现。MCU发送指令或数据到BC7281A子程序为SEND,MCU接收数据子程序为RECEIVE,采用51指令系统编写,其中DATA_OUT为MCU向BC7281A发送数据的寄存器,该寄存器既能直接寻址又能位寻址,DATA_IN为MCU接收BC7281A的数据寄存器,CLK和DAT定义为MCU的I/O口,分别连接到BC7281A芯片上的CLK和DAT引脚。
MCU发送指令或数据到BC7281A子程序
SEND: CLR CLK
SETB CLK ;发送握手请求脉冲
WAIT1: JB DAT,SEND ; DAT
CLR CLK ;建立通讯
SETB CLK
WAIT2: JNB DAT,WAIT2 ;发送串行数据
MOV BIT_COUNT,#8
SEND_LOOP: MOV C,DATA_OUT.7 ; BIT7
MOV DAT,C
CLR CLK ; CLK &n
上一篇:数字频率合成器