0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于LPC2103微控制器实现LED数码管的显示设计

电子设计 来源:信息化纵横 作者:王莹 2020-05-14 08:01 次阅读

SPI( Serial Peripheral Interface) 总线是Motorola公司提出的一个同步串行外设接口, 允许MCU与各种外围器件以串行方式进行通信、数据交换。SPI可以同时发出和接收串行数据, 它只需4条线就可以完成MCU与各种外围器件的通信。一般使用的4条线为:串行时钟线SCK、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SSEL。这些外围器件可以是简单的TTL移位寄存器、复杂的LCD显示驱动器、Flash、RAM、A/D转换器网络控制器及其他MCU等。

本文给出了一种基于SPI总线的LPC2103控制外围LED显示的设计方法。利用74HC595驱动静态共阳LED数码管,使用串转并的方式实现I/O口的扩展。

1、 LPC2103中的SPI功能特性

LPC2103是一个基于支持实时仿真的16/32位ARM7 TDMI-S CPU微控制器,内部具有2个完全独立的SPI控制器,采用全双工的数据通信方式,最大数据位速率为外设时钟Fpclk的1/8。与SPI总线接口有关的专用寄存器有:(1)SPCR控制寄存器。该寄存器包含一些可编程位来控制SPI总线的功能,而且在数据传输之前进行设定,主要有时钟相位控制、时钟极性控制、主从模式选择、字节传输移动方向及SPI中断使能;(2)SPSR状态寄存器(为只读寄存器)。用于监视SPI功能模块的状态,包括一般性功能和异常情况。主要用途是检测数据传输是否完成,通过判断SPIF位来实现,其他位用于指示异常情况;(3)SPDR数据寄存器。为SPI提供数据的发送和接收,处于主模式时,向该寄存器写入数据,将启动SPI数据传输。串行数据的发送和接收通过内部移位寄存器来实现;(4)SPCCR时钟计数器寄存器。用于设置SPI时钟分频值,SPI处于主模式时,该寄存器用于控制时钟速率,即SPI总线速率,寄存器值为1位SCK时钟所占用的PCLK周期数,并且值为偶数,必须不小于8;(5)SPINT中断标志寄存器。包含了SPI的中断标志位,由数据传输完成及发生模式错误来引发。

1.1 SPI电气连接

利用SPI总线可在软件的控制下构成各种系统,如1个主MCU和几个从MCU、几个从MCU相互连接构成多主机系统(分布式系统)、1个主MCU和1个或几个从I/O设备所构成的各种系统等。在大多数应用场合, 可使用1个MCU 作为主机来控制数据,并向1个或几个从外围器件传送该数据。从器件只有在主机发命令时才能接收或发送数据。同一时刻只允许有1个主机操作总线。在数据传输过程中,总线上只能有1个主机和1个从机通信。在一次数据传输中,主机总是向从机发送1个字节数据,而从机也总是向主机发送1个字节数据[3]。图1为SPI在主模式下控制2个SPI从机的硬件连接图。

基于LPC2103微控制器实现LED数码管的显示设计

1.2 SPI数据传输

在SPI数据传输中,SPCR控制寄存器的CPHA和CPOL位作用非常关键。CPHA为时钟相位控制,该位决定SPI传输时数据和时钟的关系,并控制从机传输的起始和结束,该位为1,时钟前沿数据输出,后沿数据采样;为0,时钟前沿数据采样,后沿数据输出。CPOL为时钟极性控制,为1时,SCK为低电平有效;为0时,SCK为高电平有效。

图2为SPI的4种不同数据传输格式时序,描述的是8位数据传输。该时序图水平方向分成3部分:(1)描述SCK和SSEL信号;(2)描述CPHA为0时的MOSI和MISO信号;(3)描述CPHA为1时的MOSI和MISO信号。SSEL信号为低电平,说明SPI工作在从模式。其中,MOSI和MISO信号中的bit1~bit8表示传输的第几位数据。

2、 74HC595扩展I/O接口电路

SPI是一个串行输入输出的接口,使用串转并的接口芯片可以实现扩展I/O口。74HC595芯片为一种常用的8位串转并移位寄存器芯片,本系统利用74HC595来驱动静态共阳LED数码管。74HC595的主要优点:具有数据存储寄存器,在移位过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。LPC2103工作在SPI主模式下。

图3为74HC595逻辑图。图中,SI为串行数据输入引脚,用来连接LPC2103的MOSI功能引脚;SCK为移位寄存器的时钟输入,连接LPC2103串行时钟线SCK;为清移位寄存器引脚;RCK为锁寄存器锁存时钟引脚;即输出触发端与SSEL连接;为输出使能引脚;SQH为串行数据输出引脚,连接MISO;QA~QH引脚为并行输出。当为高电平、使能接低时,SCK产生一个上升沿,SI引脚当前电平值将在移位寄存器中左移1位,在下一个上升沿到来时移位寄存器中的所有位都会向左移1位,同时SQH引脚也会串行输出移位寄存器中的高位的值。当RCK产生上升沿时,移位寄存器的值将会被锁存到锁存器里,并从QA~QH引脚输出。

图4为SPI接口与74HC595的连接原理图。其中QA~QH分别连接共阳LED数码管的8个段。在SPI输出1个字节的数据时,SSEL产生1个低电平,SPI主机串行地发该字节的各个位,各个位都依次被锁存在74HC595的移位寄存器内,当1个字节的数据传输完成后,SSEL由低电平变为高电平,从而使74HC595的移位寄存器的值被锁存到74HC595的锁存器并从其QA~QH引脚输出;在SPI输出1个字节数据的同时,74HC595移位寄存器之前的值也通过MISO引脚被SPI主机读回。

3、 软件设计

软件设计包括:进行I/O口初始化,设置SPI引脚连接,启用LPC2103的SPI 0总线,设置GPIO的P0.4、P0.5、P0.6、P0.7为SPI 0总线的SCK0、MISO0、MOSI0、SSEL0特殊功能,置74HC595片选端的I/O口为输出功能。其代码如下:

PINSEL0=0x00005500; //设置SPI引脚连接

PINSEL1=0x00000000;

IODIR=HC595_CS; //设置片选端I/O口为输出

3.1 SPI总线操作初始化

图5为SPI总线操作流程图。使用LPC2103的SPI总线主模式下实现对74HC595的数据传输,用来驱动外围LED数码管。设置SPI时钟,在SPI主模式下,SPCCR寄存器控制SCK的频率,SPI速率为Fpclk / SPCCR。通过SPCR控制寄存器设置时钟相位、时钟极性、主模式控制、字节移动方向及SPI中断使能等。代码实现如下:

Void MSpiIni(void)

{ SPI_SPCCR = 0x52; //设置SPI时钟分频

SPI_SPCR = (0《《3)| //CPHA=0,数据再从SCK的第一时钟沿采样

(1《《4)| //CPOL=1,SCK为低有效

(1《《5)| //MSTR=1,SPI处于主模式

(0《《6)| //LSBF=0,SPI数据传输MSB(位7)在先

(0《《7); //SPIE=0,SPI中断被禁止

}

3.2 SPI总线主模式下数据发送过程

首先选择从机,设置片选。选择74HC595为从机,置片选端SSEL为低有效。将发送的数据写入SPDR,发送出去。等待SPIF置位,即数据发送完毕。最后可从SPDR读取收到的数据。以下为发送函数:

uint8 MSendData(uint8 data)

{ IOCLR=HC595_CS; //片选端,由LPC2103指定的I/O口置位

SPI_SPDR=data;

while(0==(SPI_SPSR&0x80)); //等待SPIF置位,即等待数据发送完毕

IOSET=HC595_CS; //片选置高无效,结束发送

return(SPI_SPDR); //返回接收到的数据

}

3.3 控制LED数码管主函数

主函数使用LPC2103的SPI接口输出给74HC595,用来控制LED数码管显示。DISP_TAB[ ]为LED显示0-F字模的16进制码表。MSendData( )实现每一字节数据的发送。

#define HC595_CS 0x00000100 //P0.8口为74HC595的片选

uint8 const DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

int main(void)

{ uint8 rcv_data;

uint8 i;

PINSEL0=0x00005500; //设置SPI引脚连接

PINSEL1=0x00000000;

IODIR=HC595_CS; //设置LPC2103片选I/O口为输出功能

MSpiIni( ); //初始化SPI接口

while(1)

{ for (i=0;i《16;i++)

{rcv_data=MSendData(DISP_TAB[i]); //发送显示数据

DelayNS(50); //延时

}

}

return(0);

}

基于SPI总线的数据通信技术已经广泛应用在MCU与各种外围设备的串行通信中。如存储系统、A/D转换系统、网络控制器和多MCU构成的分布式系统。本文给出了74HC595芯片驱动LED数码管显示的电路,采用SPI总线技术实现对LED显示的数据传输,方便快捷、准确性高、速度快,满足了复杂微控制系统对外围设备控制的要求。

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7492

    浏览量

    151074
  • led
    led
    +关注

    关注

    242

    文章

    23146

    浏览量

    658562
  • 数码管
    +关注

    关注

    32

    文章

    1876

    浏览量

    90961
收藏 人收藏

    评论

    相关推荐

    Jlink连接LPC2103

    使用JLINK连接LPC2103时总是失败,不知道是什么原因?{:soso_e132:}
    发表于 11-18 14:07

    基于EasyARM2103的DIY方案一:74HC595驱动数码管设计

    仅适合本文的硬件电路,但笔段测试方法是相同的。为了在7端数码管显示数字或者字符,控制器送出的字符需要进行转换,真值表的计算如表1.3所列。表中列出了7段数码管上能够
    发表于 03-30 09:58

    lpc2103

    我刚买的LPC2103开发板学ARM7,大家觉得如何?
    发表于 06-16 05:17

    求大神指导,LPC2103数码管的输出值是算的吗?

    const U8 SEGMENT_DATA【16】={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}最近刚学习LPC2103板子,在弄数码管的时候被这个难住了
    发表于 10-13 20:36

    12时制数字显示电子钟,MCU为LPC2103/2106

    ),校时时不能产生进位;(4)能显示上午、下午标志。 开发环境MCU 为LPC2103/LPC2106交叉编译为IAR Workbench 5.X仿真环境为Proteus7.X 这
    发表于 07-10 19:20

    关于lpc2103的问题

    谁能给一个lpc2103的最小系统原理图,感激不尽!还有protues中模拟地在哪儿?谢谢!
    发表于 06-13 16:25

    LPC2103微控制器电路原理图和PCB资料

    主要内容详细介绍的是LPC2103微控制器的电路原理图和PCB资料免费下载。
    发表于 09-22 07:04

    基于LPC2103 的SPI 总线技术的应用

    介绍了一种基于SPI 总线技术的LPC2103LED 数码管显示实现控制的方法。采用8 位7
    发表于 07-06 16:19 55次下载

    LED数码管显示控制实验

    实验 LED数码管显示控制实验一、实验目的1.学会用PLC控制LED
    发表于 09-30 13:18 1.4w次阅读
    <b class='flag-5'>LED</b><b class='flag-5'>数码管</b><b class='flag-5'>显示</b><b class='flag-5'>控制</b>实验

    LPC2103系列之无线蓝牙控制小车LPC2103程序

    LPC2103系列之无线蓝牙控制小车LPC2103程序,欢迎下载
    发表于 12-14 14:40 15次下载

    LPC2103工程模板

    LPC2103工程模板源代码,下来看看。
    发表于 05-20 16:08 21次下载

    LPC2103的TFT320240彩屏的仿真

    LPC2103的TFT320240彩屏的仿真
    发表于 01-26 11:36 12次下载

    LPC2103微控制器的电路原理图和PCB资料免费下载

    本文档的主要内容详细介绍的是LPC2103微控制器的电路原理图和PCB资料免费下载。
    发表于 08-03 08:00 42次下载
    <b class='flag-5'>LPC2103</b><b class='flag-5'>微控制器</b>的电路原理图和PCB资料免费下载

    LPC2103 PACK出厂演示程序

    LPC2103 PACK出厂演示程序(通信电源技术期刊编辑部电话)-【资源描述】:LPC2103 PACK出厂演示程序
    发表于 09-16 16:09 9次下载
    <b class='flag-5'>LPC2103</b> PACK出厂演示程序

    led数码管显示器静态显示接口是什么样的

    主要有以下几种: 1.1 并行接口 并行接口是指将LED数码管的各个段(如a、b、c、d、e、f、g、dp)分别通过数据线连接到微控制器的相应I/O端口。并行接口的优点是编程简单,但缺点是占用I/O端口较多,不适合I/O端口较少
    的头像 发表于 08-28 17:37 578次阅读