找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于单片机按键按下改变流水灯方向源程序

[复制链接]
跳转到指定楼层
楼主
P2口接8个LED流水灯,P3.0接一个按键
按键按下一次流水灯方向改变一次

单片机源程序如下:
#include<reg52.h>             //51系列单片机头文件
#include<intrins.h>           //51系列单片机头文件
#define uint unsigned int     //宏定义
#define uchar unsigned char   //宏定义
sbit k1=P3^0;
uchar a,b,c,d,y=0;            //定义一个变量,用来给P2口赋值
void delayms(uint xms)        //延时子函数
{
  uint i,j;
  for(i=xms;i>0;i--)          //i=xms即延时约xms毫秒
  for(j=110;j>0;j--);      
}
void key()
{
  uchar x;
  if(k1==0)
  {
    delayms(10);              //延时10ms 去抖
    if(k1==0)                                  //再判断k1按键是否按下
    {
      while(!k1);
      x++;
      if(x==4)
      x=1;
      if(y==4)
      x=0;
      switch(x)                                  //条件选择
      {
        case 1: y=1; break;
        case 2: y=2; break;
        case 3: y=3; break;
        default: break;  
      }
    }
  }
}
void display()
{   
    if(y==0)
        {
          P2=a;
          delayms(500);
          a=~a;                                 //状态0时 LED闪烁
        }  
    if(y==1)
    {      
      P2=b;            
      delayms(500);                     
      b=_crol_(b,1);           //状态1时 LED选择左移
    }
    if(y==2)
    {
      P2=c;            
      delayms(500);                     
      c=_cror_(c,1);         //状态2时 LED选择右移
    }      
    if(y==3)
    {
      P2=d;           
      delayms(500);                     
      d=d;                     //状态3时  LED全亮
    }
  }
void main()            
{
  a=0xff;                         //高4位和低4位都置为1
  b=0x01;                                //只有低4位的最低位为1
  c=0xfe;                                //低4位的最低位为0
  d=0xff;  
  while(1)            
  {  
    key();
    display();                   //按键显示
  }
}


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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