linxinkaihahaha 2022-03-30 16:21 采纳率: 100%
浏览 45
已结题

单片机 当开关按下时 语音模块不能只播报一次

c语言学的不好,来请教一下大家
这是一个灯条的程序,p07为灯条的负极,正极接了5V。在灯条中间我加了一个开关。我的想法是当开关按下时,灯亮。且语音播报:灯已打开。
不知道如何让语音模块只播报一次。

void main()
 {    int key=0;
    p07=0;
    while(1)
       {p23=1;//p23为语音触发端,为0时触发播放语音
         if(p07!=0)
            {key=1;}
         if(key==1)
             {p23=0;delay_ms(1000);key=0;}
      }
 }

现在这个程序会一直播报语音 好像是因为即使第二个if最后写了key=0,但是不能阻止第一个if 又让key=1(因为开关按下p07灯亮)
请问一下大家应该怎么改?

  • 写回答

2条回答 默认 最新

  • 老皮芽子 2022-03-31 00:55
    关注

    硬件设计有问题,这样的硬件设计没法完成你需要的功能。
    需要更改硬件设计

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    linxinkaihahaha 2022-03-31 06:38

    好的 谢谢 我看看怎么修改

    回复
    老皮芽子 2022-03-31 06:45

    你 p07 = 0;再按下开关,才能使 LED 亮
    p07 = 0 以后,按不按开关 回读 p07任然是0,你这个硬件得不到按键的状态

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 4月29日
  • 已采纳回答 4月21日
  • 修改了问题 3月30日
  • 修改了问题 3月30日
  • 展开全部
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部