C51 微控制器计算按键次数

发布于 科技 2024-06-23
16个回答
  1. 匿名用户2024-01-29

    1.设置状态变量(如 flag),并将 flag=0 定义为 ON 状态,将 flag=1 定义为关闭状态。

    2.因为它是一个按钮(而不是开关),所以微控制器实际上应该以脉冲的形式读取输入。 密钥连接到单片机的P01引脚,因此可以使用以下程序来实现密钥扫描。

    if(p01==0) 按下按钮进入下降沿。

    delay2();按下按钮前 20 毫秒延迟摇晃。

    while(p01==0);等待上升沿到来。

    来,也就是说,按钮弹出。

    flag=~flag;标志被否定以实现状态切换。

    voiddelay2() 20ms 延迟子程序。

    unsigned

    chari,k;

    for(i=0;i<100;i++)

    for(k=0;k<100;k++)

    注:根据按键的具体连接方式,若按键将低电平输入到单片机,则采用上述程序; 如果按下按钮向微控制器输入高电平,则将 p01==0 更改为 p01==1。

  2. 匿名用户2024-01-28

    只需定义一个全局变量并将 1 添加到键中

  3. 匿名用户2024-01-27

    在循环中添加一个自加变量并不能解决问题。

  4. 匿名用户2024-01-26

    设置一个全局变量,放入键盘识别功能,设置使用后添加。 这样,每次按下按键调用键盘功能时,都会自行添加,到时候就会调用并显示。

    例如:unsigned char num=0; (如果 num 可能大于 255,请使用 int)。

    unsigned char keyscan(void) 键盘输入函数。

    unsigned char key;

    省略。 return key;

    num++;

    main()

    unsigned char key;

    key=keyscan();

    楼上的主程序似乎太臃肿了,键盘扫描最好写成一个函数。

  5. 匿名用户2024-01-25

    主程序如下所示。

    flag=0;记录击键次数。

    while(1)

    密钥检测。 if(flag==3)flag=0;

    if(flag==0)

    else if(flag==1)

    else有一个问题,因为流光的执行时间长,所以对键的响应速度慢,可以在行车灯之间添加一个键检测语句,当检测到键被按下时,使用break语句退出电流循环。

  6. 匿名用户2024-01-24

    哥哥写程序不要瞎了,小心地打断计时器,那节课仔细看看,在写程序的时候,你按的按钮没有反应,那就是中断没有进入。

    我指出了你的错误,你的t0定时器错误地中断了服务程序,你根本没有进入t0中断服务程序。

    void zhongduan0(void) 中断 0 这里是错误的,t0 中断是中断 1

  7. 匿名用户2024-01-23

    void zhongduan0(void) interrupt 0 这盏灯被你关掉了,注释掉这 2 行。

    此外,为了防止误触发抖动

    if (key1==0)

    while (!key1);}

  8. 匿名用户2024-01-22

    这完全取决于您的延迟 (5); 此延迟功能。 5.微妙,太短。

  9. 匿名用户2024-01-21

    你用过自己的大脑和双手吗?

  10. 匿名用户2024-01-20

    首先,根据要显示的数字数定义一个无符号的char型字符数组,调用扫描键盘功能,扫描按哪个键并将键值保存到相应的数组元素中,然后调用LCD程序显示,LCD程序中显示的位数是可变的, 您可以。

  11. 匿名用户2024-01-19

    if(key==1)

    取决于您按下按键连接的方式。

    delay()

    摇晃。 if(key==1)}

  12. 匿名用户2024-01-18

    while(1)

    elsetimer=0;其中。

    void delay(uint z)

    如果晶体振荡器为12MHz(或者,按下按钮定时器以大约一秒的速率增加,松开按钮,定时器复位为零。 定时器的数值可以显示在数码管上进行验证,这里不再赘述。

  13. 匿名用户2024-01-17

    您好,该程序是正确的,但我认为应该进行一些小的更改。

    if(!hey)

    请注意,计时器的类型决定了其范围。

  14. 匿名用户2024-01-16

    定时器初始化被清除,按钮完成后可以自动增加。

    你的意思是第一次按下按钮归零时,键稍后会增加吗? 在这种情况下,您可以做出判断,添加击键次数的判断,第一次清除它,并在其余时间增加它。

  15. 匿名用户2024-01-15

    这样的程序看不到效果,只能当个延时,程序没有错。

  16. 匿名用户2024-01-14

    快速介绍这个想法:定义一个控制变量,用于存储按键次数并确定计时器的初始值。 每个流程完成后,检测变量的值并分配相应的初始值。

相关回答
12个回答2024-06-23

LCD1602,两者都显示两条线。

您无需执行任何特殊操作即可显示两行。 >>>More

4个回答2024-06-23

端口的寄存器,它给出一个初始值。 每个人都对应一盏灯。 >>>More

16个回答2024-06-23

前两句话是自定义字符。

设置起始地址0x40后,可以写入8字节的点阵数据,即形成一个字符。 >>>More

19个回答2024-06-23

原理:只是执行一些所谓的“无意义指令”,比如缩放或执行一个int自加法,简单来说,就像高中数学中的“乘法原理”一样,很容易快速增加上面提到的“无意义指令”的数量。 >>>More

6个回答2024-06-23

还行。 在 51 微控制器的嵌入式 C 语言中,还支持指针。 >>>More