【51单片机】4个按键分别控制流水灯的开启、关闭、加速、减速

功能实现:四个按键k1、k2、k3、k4分别对应流水灯的开启、关闭、加速、减速

代码:

#include "reg52.h"                 
#include<intrins.h>                //流水灯的左移函数需要用到这个头文件
typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;

sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3; 

u16 time=0;
u8 flag=0;

sbit LED1=P0^0; 
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3; 
sbit LED5=P0^4; 
sbit LED6=P0^5;
sbit LED7=P0^6;
sbit LED8=P0^7;
#define led P0

void delay(unsigned int ms)   //延时函数-单位ms
{
    unsigned char i;
    while(ms--)
    {
    for(i = 0; i < 120; i++);
    }
}

void main()
{       
    u8 i;
	IT0=0;
	EX0=1;
	 
	EA=1;
        while(1)
        {		         
         for(i=0;i<7&&flag==1;i++)         //将led左移一位
                {
                        led=_crol_(led,1);
                        delay(time);      
                }       
        }               
}

void Timer() interrupt 0   //外部中断0
{               
       if(k1==0){
        delay(10);  //消除抖动
	   	flag=1;
		led=0xfe; 
		time=500; 
	   }
	   if(k2==0){
        delay(10);  //消除抖动
	   	flag=0;
	    led=0xff; 
	   }
	   if(k3==0){
        delay(10);  //消除抖动
	   	flag=1;
		time=100; 
	   }
	   if(k4==0){
        delay(10);  //消除抖动
	   	flag=1;
		time=700; 
	   }
}

Proteus仿真图:

总结:初学单片机,为了这个大实验也到各大网站上参考了一些资料,代码有什么不对、不足的地方,还望各位大佬多多指正! 

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值