实验要求
代码实现
#include "ioCC2530.h"
#define D3 P1_0
#define D4 P1_1
#define D5 P1_3
#define D6 P1_4
//按键
#define SW1 P1_2
//统计数量
unsigned int count = 0;
//标志位
unsigned char F_LED = 0;
//延迟函数
void Delay(unsigned int t)
{
while(t--);
}
//端口初始化函数
void Init_Prot()
{
//配置4个LED灯的引擎
//选择端口的功能
P1SEL &=~0x1B;//设置通用io端口
//配置端口的方向
P1DIR |=0x1B;
//配置SW1按键引脚
P1SEL &=~0x04;
P1DIR &=0x04;//输入模式 清零
//将输入模式设置为上拉模式
P1INP &=~0x04;
P2INP &=~0x40;//第6位清零
}
//灯光检测函数
void LED_Check()
{
D3=1;
//P1 |= 0x1B;
Delay(60000);
Delay(60000);
//D3=0;
P1 &=~0x1B;
Delay(60000);
Delay(60000);
}
//跑马灯函数
void LED_Running()
{
Delay(60);
if(F_LED == 1)
{
count++;
}
if(count<1000)
{
D4 =1;
D3 =0;
D6 =0;
D5 =0;
}
else if(count<2000)
{
D4 =0;
D3 =1;
D6 =0;
D5 =0;
}
else if(count<3000)
{
D4 =0;
D3 =0;
D6 =1;
D5 =0;
}
else if(count<4000)
{
D4 =0;
D3 =0;
D6 =0;
D5 =1;
}
else if(count<5000)
{
count = 0;
}
}
//按键扫描函数
void Scan_Keys()
{
//按键
if(SW1 == 0)//可能有按键按下,那么进行去抖动操作
{
Delay(200);
if(SW1 == 0)//那么就是按键触发的信号
{
//按键处理程序
while(SW1 == 0)//低电平、按下状态
{
LED_Running();//等待的过程中任然执行
}
//暂停就启动、启动就暂停
if(F_LED == 0)
{
F_LED = 1;
}else if(F_LED == 1)
{
F_LED = 0;
}
}
}
}
void main(void)
{
//端口初始化
Init_Prot();
LED_Check();
F_LED = 1;
while(1)
{
LED_Running();
Scan_Keys();
}
}
关键字:CC2530 按键控制 跑马灯
引用地址:
CC2530按键控制跑马灯的运行与暂停
推荐阅读最新更新时间:2024-11-12 16:45
51单片机+74hc595芯片实现跑马灯
74HC595特点: 串进并出,移位,锁存(相当于把8位输入送到Q0-Q7,锁存前Q0-Q7为上一次的值) Q7‘为串行输出,即可以级联。 SCK(SH_CP) //串行输入时钟, 串行输入 RCK(ST_CP) //存储寄存器时钟,并行输出2、原理图如图所示 单片机源程序如下: #include reg51.h #include intrins.h typedef unsigned char uchar; typedef unsigned int uint; void delayms(uint xms); void hc595(uchar byteData); sbit SER = P3^4; //p3.4脚
[单片机]
MSP430中断函数篇
一、实现功能 利用中断函数实现按键控制LED,一按一灭的功能 。 二、运行内容 1、整体代码 #include MSP430.h #include IN430.h //#include MSP430f5529.h int main( void ) { WDTCTL = WDTPW + WDTHOLD; /*初始LED*/ P1DIR|=BIT0; P1OUT&=~BIT0; /*初始按键 输出*/ P1DIR&=~BIT1; /*使能上拉 */ P1REN |=BIT1; P1OUT |=BIT1; /*打开P1.0中断 */ P1IE |=BIT1; /*设定下降沿触发 */ P1IES
[单片机]
第18章 STM32F429的GPIO应用之跑马灯
18.1 初学者重要提示 学习本章节前,务必保证已经学习了第15,16和17章。 虽然是跑马灯的初级例程,但有必要掌握程序的基本设计框架,后面的例子都是建立在这个框架的基础上。 LED不是用CPU的IO直接驱动,而是由74HC574驱动的,74HC574是一个8路并口缓冲器,挂在FMC总线上,实现IO扩展。也许初学者会问为什么要做IO扩展,不是已经用了208脚的STM32F429BIT6吗?因为开发板使用了32位SDRAM和RGB888硬件接口,消耗IO巨大,所以必须得扩展了。 对于初学者来说,仅需掌握LED驱动的实现方法和对应的API调用即可,需要深入的理解IO扩展部分,会在后面的节进行详细讲解。 FMC总线扩展
[单片机]
stm32 按键控制实验
一旦用到按键,一个关键的问题就是消抖,如果对这个问题不管的话,会引起很多难以控制的问题,最常见的就是反复进入中断导致程序飞出。 目前我手里的这款32有四个按键,上PA0是高电,左下右PE234是低电 操作步骤: 持续胡扫描key.c #include system.h #define KEY_LEFT_Pin GPIO_Pin_2 //定义K_LEFT管脚 #define KEY_DOWN_Pin GPIO_Pin_3 //定义K_DOWN管脚 #define KEY_RIGHT_PinGPIO_Pin_4 //定义K_RIGHT管脚 #define KEY_UP_Pin GPIO_Pin_0 //定义K
[单片机]
STM32按键控制流水灯 转换|加速|减慢
单片机源程序如下: #include stdio.h #include stm32f4xx.h #include led.h #include key.h int main(void) { int pwm_cmd; SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); LED_Init(); KEY_Init(); EXTI_Config(); while(1) { }
[单片机]
STM32跑马灯配置流程
跑马灯配置流程(战舰开发板V3) LED的初始化 相应功能引脚的确定 插上一句:这里的IO引脚可以输出低电平/高电平,那就说明这个引脚采用的输出方式为“推挽输出模式”。 确保在文件中添加了相应库文件 这两个文件是STM32开发板的启动文件,可以启动你添加进其中的所有库文件。只注意就行,正点原子给你的template(库函数版本)中已经添加进入这两个文件,只会用就基本上OK了。 先建立LED硬件初始化文件并添加进项目工程中 在创建好的文件中编写初始化LED硬件的程序 Led.h文件 led.c文件 函数参实设置小技巧 第一步:返回函数定义的位置 第二步:寻找参数的定义形式 找到参数的合
[单片机]
30-基于单片机的跑马灯设计
具体实现功能 具体仿真功能为: ①总的有九种流水灯点亮模式,通过模式按键进行切换; ②通过加减按键可以切换每种流水灯模式的速度。 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X51 可降至0Hz 静态逻辑
[单片机]
PWM --用按键控制 LED 的亮度
以前写过一篇关于 PWM 的博文,已经有一年了,链接如下: http://hi.baidu.com/do_sermon/item/ff523b0a8b9d3d173b53ee74 文中使用了示波器来显示不同占空比的波形。 其实,利用 LED 也能通过亮度来表现出 PWM 参数的变化,用实物进行测试,效果很好,但是用 PROTEUS 进行仿真试验,却只是看到闪烁的厉害,基本上看不出亮度的变化。 近来发现,加上一个大电容,就可以减弱 LED 的闪烁,亮度就能够稳定一些,这样一来,就可以用 PROTEUS 软件直接观察亮度的变化了。 电路见下图。图中的大电容(C6)的容量是 4700uF,这个是可以随便调整的,实
[单片机]