分享 收藏 返回

单片机/MCU论坛

[问答] 摇摇棒画面自己跳转

2012-8-10 14:37

接通电源后两个画面总是自己跳转。。。把p3.0的那根线断掉 仍然自己跳转 下面是主函数和开头端口定义。。将主函数中去抖动判断里的pic++去掉则不会跳转 也就是没有给key信号 pic++也是执行的 求大神帮忙解释一下啊。。。。。。。。。



#include<reg52.h>   //52单片机头文件,一般不要改动,里面包含特殊功能寄存器的定义
#define uchar unsigned char
#define uint  unsigned int
sbit KEY=P3^0;
void display1(void);
void display2(void);



void main(void)       //入口函数
{
EA=1;   //首先开启总中断
EX0=1;    //开启外部中断 0
IT0=1;
KEY=1;        //设置成下降沿触发,0为低电平触发
while(1)     //主程序中只检测按键
{
   if(KEY==1)     //画面切换键按下
   {
    delay(10000);     //按键去抖
    if(KEY==1)
     pic++;
   }
   if(pic==2)
    pic=0;
  }

ky=0;
  • clip_image001.jpg

回帖(8)

张三

2012-8-10 16:10:09
把key==1改为key==0;还有按键去抖动不需要延时那么长,在按键最后加一句while(key==0);

yin188103

2012-8-10 20:27:34
怎么做的

zhouchaozinc

2012-8-11 10:58:02
引用: lovezjf234 发表于 2012-8-10 16:10
把key==1改为key==0;还有按键去抖动不需要延时那么长,在按键最后加一句while(key==0); ...

“while(KEY==0);”是防止按键时间过长跳两次的么?下面是我改的。。。貌似是比较正常了。。。

while(1)     //主程序中只检测按键
{
   if(!KEY)     //画面切换键按下
   {
    delay(8000);     //按键去抖
    if(!KEY)
     pic++;
   P0=0x00;    //这5行我加的显示切换成功的提示
   P2=0x00;
   delay(5000);
   P0=0xff;
   P2=0xff;
   while(KEY==0);  //这个是加这里么?
   }
   if(pic>3)
    pic=0;
      
  }

zhouchaozinc

2012-8-11 10:59:57
引用: yin188103 发表于 2012-8-10 20:27
怎么做的

网上好多这个的帖子呢 搜下有的是。。。

yin188103

2012-8-26 13:00:31
我做了一个,感觉视觉效果不好啊,画面看着不清楚

黄定

2013-5-4 23:37:40
{谢谢分享:12:}{:12:}

itfan

2013-5-5 08:43:09
学习了                                    

刘昌明

2013-6-2 09:30:31
了解了解                                                           

更多回帖