基于LMS8962的跑马灯教学程序——定时器、串口及GPIO的使用

本文详细介绍了基于LMS8962芯片实现跑马灯功能的过程,包括使用查询方式和定时器中断方式控制LED的亮灭。通过初始化Timer0A和UART0,结合GPIO操作,实现了状态编码的发送,并提供了具体代码实现。
摘要由CSDN通过智能技术生成

一、电路原理图

 

 

从图中可知,各LED是逢GPIO口为0,即低电平时亮,为1,即高电平时灭,呈反逻辑。由于四灯接至引脚号连续的GPIOA口的PIN2~PIN5,因此,可以方便地一次性控制四灯的工作状态。因此,首先定义LEDs为四个引脚的组合,代码如下:

#define LEDs GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_3 | GPIO_PIN_2

控制代码如下:

 

GPIOPinWrite(GPIO_PORTA_BASE, LEDs, temp<<2);

 

此处,temp左移2位,是使得temp的低四位可以对齐至PIN5,PIN4,PIN3,PIN2。

二、功能要求

(1)闪灭时间1s

(2)起始状态LED3、LED4、LED5、LED6全灭;

(3)走马灯流程

a.LED3亮(其他三灯灭)->LED4亮(其他三灯灭)->

LED5亮(其他三灯灭)->LED6亮(其他三灯灭)

b.四灯由灭到亮,由亮到灭闪烁4次

c.LED6亮(其他三灯灭)->LED5亮(其他三灯灭)->

LED4亮(其他三灯灭)->LED3亮(其他三灯灭)

d.继续流程b

如若定义状态编码如下:

LED6 

LED5 

LED4 

LED3 

MSB(0,灭;1,亮)

(0,灭;1,亮)

(0,灭;1,亮)

(0,灭;1,亮)LSB

例如:状态——LED6灭,LED5灭,LED灭,LED3亮,对应编码0001。

则每秒的状态如下所示:

 

三、功能实现

3.1 使用查询方式

从功能要求中,可以看到,此走马灯可以分为三种基本状态:

  1. LED点亮顺序由小到大(即LED3->LED4->…………)
  2. 四灯同闪4次
  3. LED点亮顺序由大到小(即LED6->LED5->…………)

因此设计三个函数完成以上3项功能:

3.1.1 ShiftUp

void ShiftUp()

{

int i = 0;

unsigned char temp = 0;

for(i = 0; i <=3; i++){

 

temp = ~(0x01<

 

 

 

GPIOPinWrite(GPIO_PORTA_BASE, LEDs, temp<<2);

SysCtlDelay(1000* (TheSysClock / 3000)); // 延时约1s

}

}

3.1.2 ShiftDown

void ShiftDown()

{

int i = 0; </

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值