论文部分内容阅读
摘要:本文介绍了多功能显示驱动器MCl4489与HCS12系列单片机的接口应用开发设计,给出了两种不同接口电路,叙述软件编程的步骤,并给出了相关的程序源代码,经实验表明SPI通讯具有更大的优势。
关键词:HCS12单片机;SPI;MCl4489;显示
引言
对于任意一种功能完整的单片机应用系统,显示功能往往是必不可少的。例如在智能车运行的过程中,对其速度和时间的实时监控是非常重要的,这样方便了系统的调试。针对清华大学的HCS12型开发板,它具有丰富的I/O口资源,集成了多种功能模块,可以广泛的应用于生产过程控制系统。同时,MCl4489是MOTOTOLA公司生产的串行接口5位的7段LED数码显示器的译码/驱动芯片,它占用单片机软件资源少,不需再外加电路即可与单片机协调工作,译码、扫描显示都由MCl4489自动完成,无需单片机干预,每次只需改变显示内容时才进行一次数据传输,因而大大节省了软件开销,提高了单片机的处理和运算能力,应用灵活方便。而目前,新型高速的16位、32位DSP型单片机成为主流,而且功能模块也越来越丰富。针对这一特点我们将通用的SPI技术应用于MCl4489的显示控制,同时也改进了用普通I/O口模拟控制的方法。
MC14489及特性
MC14489具有三线串行接口(SPI),可直接与具有SPI接口的CPU相连,也可采用软件模拟SPI接口,最大串行时钟频率可达4MHz。它有一个8位的内部系统寄存器和一个24位的显示寄存器。
MCl4489采用了所谓的“位抓取”技术,在向内部系统设置寄存器和显示寄存器送数时不需要引导码和地址码,而是根据一次串行输入数据的字节数由内部自动确定送往哪一个寄存器。若输入的是单字节数据,将被送往系统设置寄存器,若输入的是多字节数据,则被送往显示寄存器。
多片MC14489可级联使用以增加显示位数。还可由输入的显示代码决定全部显示段为满亮度或半亮度显示。MCl4489的引脚排列如图(图1)所示。
MC14489与HCS12单片机接口软件设计
MC14489采用同步串行数据输入方式,数据传输中无需起始位、停止位和校验位。在每个时钟的上升沿将DATAIN端的数据锁存到片内移位寄存器中,数据的传输是高位(MSB)在前。在ENABLE信号的上升沿将片内移位寄存器的数据存入控制寄存器或显示寄存器中:在一个ENABLE有效期间,CPU的数据输入到片内移位寄存器中,若输入的是8位数据,则自动地在ENABLE信号上升沿将数据存入片内控制寄存器中,若是24位数据,则在ENABLE信号上升沿自动将数据存入片内的显示寄存器中。

实现MCl4489与HCS12单片机的通讯,可采用多种连接方式:(1)采用准双向口方式;(2)采用串行通讯方式;(3)使用CAN总线的混合编址方式。由于本开发板中CAN资源另作他用,故本文仅对前两种方式加以讨论。下面是相关电路及完整的实验程序。
准双向口方式
HCS12单片机内部有丰富的I/资源,同时也集成了多种功能模块。其中PORTA、PORTB、PORTE、PORTK等接口在芯片处于扩展工作方式下,可被用作总线信号。
下面我们以PORTB口国例,采用软件模拟的方法实现与三线串行接口芯片的连接,其中PORTB_BITO、PORTB_BITl、PORTB_BIT2分别连接到MC14489的ENABLE、CLOCK和DATA IN引脚,然后按图2和图3的时序用软件方法实现串行数据的输出和输入。以下是MC14489与单片机接线图(图2)和实验完整的程序。



}
串行通讯方式
HCS12单片机的SPI的简述
SPI(Serial Peripheral Interface)是一种高速高效率的同步串行接口技术,这种接口技术主要用于MCU与外部的接口芯片间交换数据,这在MOTOROLA单片机中已经是一个标准模块,也逐渐成为一种工业标准。虽然从数据传送速率上讲,并行接口要优越于串行接口,但是会使得系统连线比较复杂,在大多数的情况下,这种由提高系统复杂程度而带来的数据传输速率的提高是得不偿失的,所以目前,较多新型的高速16位、32位MCU都带有SPI接口,使得系统更加简单、可靠,已经得到了广泛的应用。
SPI模块具有和其他外部设备进行全双工同步串行通信的功能,SPI操作可通过查询SPI状态标志或中断驱动。所有SPI中断都由CPU响应,而且SPTE(SPI发送器空)和NSPRF(SPI接收器满)位还可设置为DMA服务请求使能。在SPI的传输过程中,数据的发送(串行移出)和接收(串行移入 )是同步的。串行时钟使2条串行数据线上的移位和采样都是同步的。通过软件还可以控制SPI的时钟相位和极性,适用于各种不同的驱动芯片。
SPI软件编制方法
1>初始化
(1)PE=1,以允许SPI系统。
(2)置MSTR=1,以置MCU为主机方式。
(3)SPRl、SPRO为适当值,以使SPI时钟(SCK)能满足驱动芯片的时钟需要。
(4)POL,CPHA为适当值,以使SPI时序能满足驱动芯片的时序要求。对于MCl4489它要求,在SCK的上升沿输入和在下降沿输出数据,应选择CPOL=1,CPHA=1的方式。
(5)是否使用SPI中断来决定SPIE=0或1。一般情况下在SPI的时钟频率较高时,不必采用中断方式,而可采用查询方式。因为在SPI时钟频率为1MHz时,仅需8μs就可完成一次SPI传送,如使用中断,则响应中断和中断返回的执行时间就超过了8 μs。
(6)使用情况置DDRD的值。
2>数据的传送
(1)允许指定的从器件,这一般用清零(对低电平有效的器件)和置位(对高电平有效的器件)接至该器件的允许输出位来实现。
(2)向SPDR写入需发送的数据(或地址、命令等),以启动数据的传送。
(3)等待SPIF=1。在传送完成之前不能清除从器件的允许信号。
(4)禁止从器件,即清除从器件的允许信号。
对于多字节连续传送的场合,在第(4)步时,不应禁止从器件,而应在读入数据后,返回(2)、(3)步执行,直至多字节读出或写入操作完成后,才禁止从器件。
下面我们以HCS 12MCU为例,给出它与MCl4489的接口电路图(图3)和实验程序。
实验程序
unsigned int i.n;
void_SPl_Init(void){ /*SPI*初始化*/
SPIOBR=0x77; /*2048分频*/
SPIOCR2=0x00;
SPIOCRI=0x56; /*SPI使能,主模式,上升沿触发,ss输出*/
DDRS DDRST=I;}
union
{ unsigned char byte;
struct
{unsigned char:7;
unsigned char bit7:1;
}bit;
}temp;
void delay(unsigned int count){
unsigned int k:
for(k=O;k void display(uchar DCMD){
PTS PTS7=0;
while(!(SPIOSR&0x80))
{SPIODR=DCMD;}
PTS_PTS7=1;}
void display l(uchar cmd,uchardatal,uchar data2){
inti=0:
uchar dsp;
PTS_PTS7=0x00;
delay(1);
SPIODR=dsp; /*需要读的地址高8位*/
while(!SPIOSR_SPTEF);
SPI0DR=datal;/*需要读的地址低8位*/
while(!SPIOSR_SPTEF);/*等待发送完毕*/
SPIODR=data2;/*需要读的地址高8位*/
while(!SPIOSR_SPTEF);
delay(2000);
PTS_PTS7=I:}
void main(void){
SPI_Init();
display(0x01);/*写MCl4489内部设置寄存器点亮所有LED*/
display l(0x05,0x43,0x21);/*LEDl~LED5分别显示1234半亮度显示*/
PORTB=0xf0;
while(1){}}
结果分析
(1)用普通的I/O口模拟的方法常用,即使是针对没有SPI的单片机系统,这种方法也可行,但其编程比较繁琐,占用4个普通的I/O口,当单片机的I/O口资源比较紧张时要进行扩口。而且它容易受到内部的干扰,优先级别不够。功耗较SPI通讯传输较大,反应的速度也较慢,有略微的延迟。
(2)SPI通讯传输稳定,子系统允许使用相同的时钟发送和接收数据,使用灵活。每个管脚的方向都可以由软件控制,而且传输速度快,实时性能好。
结语
MC14489集成度高,将锁存、译码、驱动、扫描、时钟都集成在一片IC中,使单片机外围电路大为简化,对单片机的软、硬件资源占用也大大减少。HCS12单片机与MC14489的接口电路简单,应用范围广,工作可靠。SPI的通讯模式传输速率较快,编程实现简单,易掌握,且工作更稳定。
参考文献:
1.Peter Spasov(著),李小洪(译),‘微控制器原理与应用(第5版)’,清华大学,2006
2.邵贝贝,‘单片机嵌入式应用的在线开发方法’,清华大学,2004
关键词:HCS12单片机;SPI;MCl4489;显示
引言
对于任意一种功能完整的单片机应用系统,显示功能往往是必不可少的。例如在智能车运行的过程中,对其速度和时间的实时监控是非常重要的,这样方便了系统的调试。针对清华大学的HCS12型开发板,它具有丰富的I/O口资源,集成了多种功能模块,可以广泛的应用于生产过程控制系统。同时,MCl4489是MOTOTOLA公司生产的串行接口5位的7段LED数码显示器的译码/驱动芯片,它占用单片机软件资源少,不需再外加电路即可与单片机协调工作,译码、扫描显示都由MCl4489自动完成,无需单片机干预,每次只需改变显示内容时才进行一次数据传输,因而大大节省了软件开销,提高了单片机的处理和运算能力,应用灵活方便。而目前,新型高速的16位、32位DSP型单片机成为主流,而且功能模块也越来越丰富。针对这一特点我们将通用的SPI技术应用于MCl4489的显示控制,同时也改进了用普通I/O口模拟控制的方法。
MC14489及特性
MC14489具有三线串行接口(SPI),可直接与具有SPI接口的CPU相连,也可采用软件模拟SPI接口,最大串行时钟频率可达4MHz。它有一个8位的内部系统寄存器和一个24位的显示寄存器。
MCl4489采用了所谓的“位抓取”技术,在向内部系统设置寄存器和显示寄存器送数时不需要引导码和地址码,而是根据一次串行输入数据的字节数由内部自动确定送往哪一个寄存器。若输入的是单字节数据,将被送往系统设置寄存器,若输入的是多字节数据,则被送往显示寄存器。
多片MC14489可级联使用以增加显示位数。还可由输入的显示代码决定全部显示段为满亮度或半亮度显示。MCl4489的引脚排列如图(图1)所示。
MC14489与HCS12单片机接口软件设计
MC14489采用同步串行数据输入方式,数据传输中无需起始位、停止位和校验位。在每个时钟的上升沿将DATAIN端的数据锁存到片内移位寄存器中,数据的传输是高位(MSB)在前。在ENABLE信号的上升沿将片内移位寄存器的数据存入控制寄存器或显示寄存器中:在一个ENABLE有效期间,CPU的数据输入到片内移位寄存器中,若输入的是8位数据,则自动地在ENABLE信号上升沿将数据存入片内控制寄存器中,若是24位数据,则在ENABLE信号上升沿自动将数据存入片内的显示寄存器中。

实现MCl4489与HCS12单片机的通讯,可采用多种连接方式:(1)采用准双向口方式;(2)采用串行通讯方式;(3)使用CAN总线的混合编址方式。由于本开发板中CAN资源另作他用,故本文仅对前两种方式加以讨论。下面是相关电路及完整的实验程序。
准双向口方式
HCS12单片机内部有丰富的I/资源,同时也集成了多种功能模块。其中PORTA、PORTB、PORTE、PORTK等接口在芯片处于扩展工作方式下,可被用作总线信号。
下面我们以PORTB口国例,采用软件模拟的方法实现与三线串行接口芯片的连接,其中PORTB_BITO、PORTB_BITl、PORTB_BIT2分别连接到MC14489的ENABLE、CLOCK和DATA IN引脚,然后按图2和图3的时序用软件方法实现串行数据的输出和输入。以下是MC14489与单片机接线图(图2)和实验完整的程序。



}
串行通讯方式
HCS12单片机的SPI的简述
SPI(Serial Peripheral Interface)是一种高速高效率的同步串行接口技术,这种接口技术主要用于MCU与外部的接口芯片间交换数据,这在MOTOROLA单片机中已经是一个标准模块,也逐渐成为一种工业标准。虽然从数据传送速率上讲,并行接口要优越于串行接口,但是会使得系统连线比较复杂,在大多数的情况下,这种由提高系统复杂程度而带来的数据传输速率的提高是得不偿失的,所以目前,较多新型的高速16位、32位MCU都带有SPI接口,使得系统更加简单、可靠,已经得到了广泛的应用。
SPI模块具有和其他外部设备进行全双工同步串行通信的功能,SPI操作可通过查询SPI状态标志或中断驱动。所有SPI中断都由CPU响应,而且SPTE(SPI发送器空)和NSPRF(SPI接收器满)位还可设置为DMA服务请求使能。在SPI的传输过程中,数据的发送(串行移出)和接收(串行移入 )是同步的。串行时钟使2条串行数据线上的移位和采样都是同步的。通过软件还可以控制SPI的时钟相位和极性,适用于各种不同的驱动芯片。
SPI软件编制方法
1>初始化
(1)PE=1,以允许SPI系统。
(2)置MSTR=1,以置MCU为主机方式。
(3)SPRl、SPRO为适当值,以使SPI时钟(SCK)能满足驱动芯片的时钟需要。
(4)POL,CPHA为适当值,以使SPI时序能满足驱动芯片的时序要求。对于MCl4489它要求,在SCK的上升沿输入和在下降沿输出数据,应选择CPOL=1,CPHA=1的方式。
(5)是否使用SPI中断来决定SPIE=0或1。一般情况下在SPI的时钟频率较高时,不必采用中断方式,而可采用查询方式。因为在SPI时钟频率为1MHz时,仅需8μs就可完成一次SPI传送,如使用中断,则响应中断和中断返回的执行时间就超过了8 μs。
(6)使用情况置DDRD的值。
2>数据的传送
(1)允许指定的从器件,这一般用清零(对低电平有效的器件)和置位(对高电平有效的器件)接至该器件的允许输出位来实现。
(2)向SPDR写入需发送的数据(或地址、命令等),以启动数据的传送。
(3)等待SPIF=1。在传送完成之前不能清除从器件的允许信号。
(4)禁止从器件,即清除从器件的允许信号。
对于多字节连续传送的场合,在第(4)步时,不应禁止从器件,而应在读入数据后,返回(2)、(3)步执行,直至多字节读出或写入操作完成后,才禁止从器件。
下面我们以HCS 12MCU为例,给出它与MCl4489的接口电路图(图3)和实验程序。
实验程序
unsigned int i.n;
void_SPl_Init(void){ /*SPI*初始化*/
SPIOBR=0x77; /*2048分频*/
SPIOCR2=0x00;
SPIOCRI=0x56; /*SPI使能,主模式,上升沿触发,ss输出*/
DDRS DDRST=I;}
union
{ unsigned char byte;
struct
{unsigned char:7;
unsigned char bit7:1;
}bit;
}temp;
void delay(unsigned int count){
unsigned int k:
for(k=O;k
PTS PTS7=0;
while(!(SPIOSR&0x80))
{SPIODR=DCMD;}
PTS_PTS7=1;}
void display l(uchar cmd,uchardatal,uchar data2){
inti=0:
uchar dsp;
PTS_PTS7=0x00;
delay(1);
SPIODR=dsp; /*需要读的地址高8位*/
while(!SPIOSR_SPTEF);
SPI0DR=datal;/*需要读的地址低8位*/
while(!SPIOSR_SPTEF);/*等待发送完毕*/
SPIODR=data2;/*需要读的地址高8位*/
while(!SPIOSR_SPTEF);
delay(2000);
PTS_PTS7=I:}
void main(void){
SPI_Init();
display(0x01);/*写MCl4489内部设置寄存器点亮所有LED*/
display l(0x05,0x43,0x21);/*LEDl~LED5分别显示1234半亮度显示*/
PORTB=0xf0;
while(1){}}
结果分析
(1)用普通的I/O口模拟的方法常用,即使是针对没有SPI的单片机系统,这种方法也可行,但其编程比较繁琐,占用4个普通的I/O口,当单片机的I/O口资源比较紧张时要进行扩口。而且它容易受到内部的干扰,优先级别不够。功耗较SPI通讯传输较大,反应的速度也较慢,有略微的延迟。
(2)SPI通讯传输稳定,子系统允许使用相同的时钟发送和接收数据,使用灵活。每个管脚的方向都可以由软件控制,而且传输速度快,实时性能好。
结语
MC14489集成度高,将锁存、译码、驱动、扫描、时钟都集成在一片IC中,使单片机外围电路大为简化,对单片机的软、硬件资源占用也大大减少。HCS12单片机与MC14489的接口电路简单,应用范围广,工作可靠。SPI的通讯模式传输速率较快,编程实现简单,易掌握,且工作更稳定。
参考文献:
1.Peter Spasov(著),李小洪(译),‘微控制器原理与应用(第5版)’,清华大学,2006
2.邵贝贝,‘单片机嵌入式应用的在线开发方法’,清华大学,2004