通过按键实现LED灯的亮灭(含两种情况)

发布时间:2024-08-14  

 1 #include 'stm32f10x.h'// 相当于51单片机中的  #include

 2 #include 'stm32f10x_gpio.h'

 3 /*通过按键实现LED灯的亮灭

 4 *本项目是两个效果,烧程序时注意分开!!!!!

 5 *1、LED实现的效果实是K1一直按下LED一直亮,直到K1松开LED熄灭

 6 *2、按一下key实现LED亮,再按一下实现LED灭

 7 *

 8 */

 9 

10 /*配置GPIO

11 *step1配置时钟

12 *结构体:Speed、Mode、Pin

13 *初始化

14 */

15 int main(void)

16 {

17     //点亮红色灯

18     //step1:使能

19     

20     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

21     //结构体

22     GPIO_InitTypeDef a;

23     a.GPIO_Speed=GPIO_Speed_50MHz;

24     a.GPIO_Pin=GPIO_Pin_5;

25     //推挽输出

26     a.GPIO_Mode=GPIO_Mode_Out_PP;

27     //调用GPIO初始化函数

28     GPIO_Init(GPIOB,&a);

29     //设置PB5为低点平

30     //GPIO_ResetBits(GPIOB,GPIO_Pin_5);

31     //GPIO_SetBits(GPIOB,GPIO_Pin_5);

32     

33     

34     

35     /**************按键初始*************/

36     

37     //step1:时钟使能

38     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

39     //step2:定义GPIO初始化结构体变量

40     GPIO_InitTypeDef b;

41     b.GPIO_Speed=GPIO_Speed_50MHz;

42     b.GPIO_Pin=GPIO_Pin_0;

43     //浮空输入

44     b.GPIO_Mode=GPIO_Mode_IN_FLOATING;

45     //stept3:调用GPIO初始化函数

46     GPIO_Init(GPIOA,&b);

47 /************************1********************************/

48 /*

49 *知识点:读取电平的函数:GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);

50 *详细见后面截图

51 */

52 

53         /*LED实现的效果实是K1一直按下LED一直亮,直到K1松开LED熄灭*/

54         

55     while(1)//死循环随时检测按键的情况

56     {

57             //读取引脚的点平并赋值给i

58         int i = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);

59         if(i==0)//判断K1的电平是否为0

60         {

61                 //为0时,设置PB5为高电平,

62             GPIO_SetBits(GPIOB,GPIO_Pin_5);

63         }

64         else

65         {

66             

67                 //设置PB5为低点平

68             GPIO_ResetBits(GPIOB,GPIO_Pin_5);

69         }

70     }

71     

72 

73 /***************************2*********************************/

74 /*********以下代码实现按键按一下LED亮,再按以下LED灭*********/

75     int pre=0;//上一次循环按键的点平

76     while(1)

77     {

78         //读取引脚的点平

79         int states = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);

80         if(states==0&&pre==1)//states是循环时检测的电平,难点在这???????????

81         {

82             //按键刚松开那一刻,states马上变为0,但是上一次循环中给pre赋的值还是1

83             if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==0)//再判断是否为低电平

84             {

85                 //给GPIOB端口5赋值为高电平,实现LED亮

86                 GPIO_SetBits(GPIOB,GPIO_Pin_5);

87             }

88             else

89             {

90                 //给GPIOB端口5赋值为低电平,实现LED灭

91                     GPIO_ResetBits(GPIOB,GPIO_Pin_5);

92             }

93         }

94         pre=states;//把本次循环按键的电平赋值给上一次

95     }

96 /*******************************************************************/    

97 }

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    stm32按键控制led灯亮灭;在嵌入式系统中,硬件按键常常被用作开关输入,控制LED灯亮灭。在STM32系列单片机中,有多种方式实现按键控制LED灯亮灭,我们将介绍其中一种较为简单的方法。一......
    子产品中用途非常广泛,同时也是我们学习单片机、嵌入式过程中经常接触的开关。 我们平时用开关感觉这个玩意要么是关,要么是开,就这两个动作,但是真实的开关按下和弹回的过程中是这样的 理想波形和实际波形 接下来我们来实现按键控制......
    ”模型实现按键控制LED反转,当然其中的"Switch"模型去掉也可以实现同样的效果,读者朋友还可以尝试使用其它模型搭建实现同样效果。 读者朋友可以思考下我们以往使用传统方式开发单片机按键......
    ;     } } 案例二:按键控制LED亮灭 电路: 代码: #include sbit K1=P3^0; sbit L1=P1^0; void main(void) {   while(1......
    51单片机矩形按键控制16个LED灯亮灭和数码管显示;电路原理图 程序 #include #define uint unsigned int  #define uchar unsigned......
    STM32按键控制LED亮灭;使用一个按键控制LED亮灭按键按下时LED亮起,按键松开时LED熄灭。通过按键控制实验来介绍下 IO 口作为输入的使用。本例中用到了GPIOE的PE3管脚......
    51单片机学习:独立按键实验;实验名称:独立按键实验接线说明:实验现象:下载程序后,按下“独立按键”模块中K1键,控制D1指示灯亮灭......
    stm32单片机按键控制的用法解析;1 /* 2 ::按键控制 3 PA8接LED,PE2接按键 4 */ 5 #include“stm32f10x.h” 6 void......
    控制L298的使能端口和输入端口,而驱动芯片则输出被放大的控制信号,用以控制电机运行。驱动电路如图9所示,图中所加4个二极管是起到保护作用。 图9直流电机驱动电路 3.4按键控制电路 单片机检测按键......
    嵌入式技能-51单片机仿真芯片调试; 程序是调出来的!!经常有小伙伴在知乎里面提问,说怎么实现花样流水灯,怎么实现按键控制LED灯,还有C语言......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>