找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8133|回复: 13
打印 上一主题 下一主题
收起左侧

独立按键控制LED亮灭,没反应,请帮忙看看

[复制链接]
跳转到指定楼层
楼主
ID:63752 发表于 2014-7-8 11:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机是STC15F2K60S2  下载之后,按键没反应,什么都不工作,是什么问题啊?程序如下。
#include "stc.h"
#define uchar unsigned char
#define uint unsigned int
sbit BZ=P2^7; //LED INPUT//
sbit D=P1^1;  //KEY//
void Delay(uint x)
{
    uint a,b;
    for(a=x;a>0;a--)
       for(b=110;b>0;b--);
}  
unsigned char i;
void main()
{
  //int i;
  i=0;
BZ=1;
D=1;
while(1)
    {
    if(D==0)
     {
       Delay(10);
     if(D==0)
     {
    i++;
     if(i>=2)
       {
       i=0;
       }
      
     }     
     }
   while(!D);
    }
      switch(i)
   {
     case 0:
        BZ=0;
     break;
     case 1:
        BZ=1;
     break;
   }
  
   
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:18297 发表于 2014-7-8 16:04 | 只看该作者
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
sbit BZ=P2^7; //LED INPUT//
sbit D=P1^1;  //KEY//
void Delay(uint x)
{
    uint a,b;
    for(a=x;a>0;a--)
       for(b=110;b>0;b--);
}  
unsigned char i;
void main()
{
  //int i;
          i=0;
        BZ=1;
        D=1;
        while(1)
    {
            if(D==0)
             {
                       Delay(10);
                             if(D==0)
                             {
                                    i++;
                                     if(i>=2)
                                       {
                                                       i=0;
                                       }
      
                             }     
             }
                   while(!D);
    //}    此处去掉了括号。
    switch(i)
           {
             case 0:
        BZ=0;
             break;
             case 1:
        BZ=1;
             break;
           }
        }//此处添加括号。   
}
//原因是你的while(1)进入死循环中,不会运行一下程序段。
/* switch(i)
           {
             case 0:
        BZ=0;
             break;
             case 1:
        BZ=1;
             break;
           }
*/
回复

使用道具 举报

板凳
ID:63747 发表于 2014-7-8 16:07 | 只看该作者
学习了~~
回复

使用道具 举报

地板
ID:63752 发表于 2014-7-9 18:07 | 只看该作者
zjjhtony 发表于 2014-7-8 16:04
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int

朋友,程序可以了,但是按键不灵活,有时行,有时不行,是软件还是硬件问题呢?而且LED有时会自动灭了,是什么问题啊?头都大了。
回复

使用道具 举报

5#
ID:18297 发表于 2014-7-10 07:39 | 只看该作者
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
sbit ledlight=P2^7; //LED INPUT//
sbit key=P1^1;  //KEY//
void Delay(uint x)
{
    uint a,b;
    for(a=x;a>0;a--)
       for(b=110;b>0;b--);
}  
unsigned char i;
void main()
{
    ledlight=0;
        key=1;
        while(1)
        {
                if(key==0)
                {
                        Delay(2);
                        if(key==0)
                        {
                                while(key==0);
                                ledlight=!ledlight;
                        }
                }

        }
}
//以上为精简后的程序。功能一样,按键让led灯亮灭。
回复

使用道具 举报

6#
ID:63752 发表于 2014-7-10 13:01 | 只看该作者
zjjhtony 发表于 2014-7-10 07:39
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int

  我都写过这程序,但是LED能正常的亮灭,但是,当亮的时候,不到一会,LED灯就自动熄灭了。两个程序 都是同样的问题,就是LED亮了一会,就自动熄灭了,真不知是什么问题。下面是我的程序。
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
sbit BZ=P2^5; //LED INPUT//
sbit D=P1^1;  //KEY//
void Delay(uint x)
{
    uint a,b;
    for(a=x;a>0;a--)
       for(b=110;b>0;b--);
}  
//unsigned char temp;
void main()
{
    static bit temp;
        BZ=1;
        D=1;
        temp=BZ;
        while(1)
         {
           if(D==0)
           {
                  Delay(10);
                   if(D==0)
               {
                             temp=~temp;
                          while(!D);
                          BZ=temp;
                   }
           }
          

         }
}
回复

使用道具 举报

7#
ID:63752 发表于 2014-7-11 13:01 | 只看该作者
有没有朋友帮忙一下,现在还没解决问题,郁闷啊~~通过按键点亮了LED,但是过一会就自动熄灭了。
回复

使用道具 举报

8#
ID:18297 发表于 2014-7-11 15:02 | 只看该作者
“通过按键点亮了LED,但是过一会就自动熄灭了。”
这个是在开发板上的,还是自己做的实验板上的效果,
回复

使用道具 举报

9#
ID:63752 发表于 2014-7-11 18:05 | 只看该作者
一块单片机,一个轻触开关,一个小LED,一个5V稳压管,几根线,在万能板上连接的线路做出来的效果。现在还没解决问题呢。请帮帮忙。
回复

使用道具 举报

10#
ID:63752 发表于 2014-7-11 18:06 | 只看该作者
zjjhtony 发表于 2014-7-11 15:02
“通过按键点亮了LED,但是过一会就自动熄灭了。”
这个是在开发板上的,还是自己做的实验板上的效果,

一块单片机,一个轻触开关,一个小LED,一个5V稳压管,一电阻,几根线,在万能板上连接的线路做出来的效果。现在还没解决问题呢。请帮帮忙。
回复

使用道具 举报

11#
ID:18297 发表于 2014-7-12 17:14 | 只看该作者
可以发个电路连线图给我。QQ:12226405.
回复

使用道具 举报

12#
ID:63752 发表于 2014-7-13 11:39 来自手机 | 只看该作者
zjjhtony 发表于 2014-7-11 15:02
“通过按键点亮了LED,但是过一会就自动熄灭了。”
这个是在开发板上的,还是自己做的实验板上的效果,

问题已解决了,原来keil4要导入stc单片机型号才行的。谢你,希望能加你q继续下面的学习
回复

使用道具 举报

13#
ID:64406 发表于 2014-7-26 10:57 | 只看该作者
XUSHENG 发表于 2014-7-13 11:39
问题已解决了,原来keil4要导入stc单片机型号才行的。谢你,希望能加你q继续下面的学习

在keil编程用AT89C52的吧
回复

使用道具 举报

14#
ID:63752 发表于 2014-7-26 12:43 | 只看该作者
是STC单片机的型号。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表