单片机编程:当按下按键K1时,LED亮1个灯;当按下K2时,LED亮2个灯;K3亮3个灯;K4亮4个灯。求程序,在线
发布网友
发布时间:2022-05-31 17:13
我来回答
共2个回答
热心网友
时间:2023-10-20 15:11
LOOP:
JNB K1,CASE1
JNB K2,CASE2
JNB K3,CASE3
JNB K4,CASE4
AJMP LOOP
CASE1:
MOV LED,#01111111
AJMP LOOP
CASE2:
MOV LED,#00111111
AJMP LOOP
CASE3:
MOV LED,#00011111
AJMP LOOP
CASE4:
MOV LED,#00001111
AJMP LOOP
K1~K4对应按键输入口,LED对应LED输出,两者应为普通IO口
热心网友
时间:2023-10-20 15:11
/************************************************************************
程序名: 四个按键控制四个LED
编写人: zhatianyi
编写时间: 2011 年 4月 18日
硬件支持: 51单片机,12MHZ晶振
接口说明: 见接口定义(可自己修改)
修改日志:
NO.1-
/*************************************************************************
说明:当按下按键K1时,LED亮1个灯;当按下K2时,LED
亮2个灯;K3亮3个灯;K4亮4个灯。每次灯亮1秒后熄灭,等
待第二次按键(灯亮时按键无效)。
/*************************************************************************/
#include <REG51.h> //通用89C51头文件
sbit K1 = P1^0 ; //定义按键接口
sbit K2 = P1^1 ;
sbit K3 = P1^2 ;
sbit K4 = P1^3 ;
sbit LED1 = P1^4 ; //定义LED灯接口
sbit LED2 = P1^5 ;
sbit LED3 = P1^6 ;
sbit LED4 = P1^7 ;
/**************************************************************************
函数名:毫秒级CPU延时函数
调 用:DELAY_MS (?);
参 数:1~65535(参数不可为0)
返回值:无
结 果:占用CPU方式延时与参数数值相同的毫秒时间
备 注:应用于1T单片机时i<600,应用于12T单片机时i<125
/*************************************************************************/
void DELAY_MS (unsigned int a){
unsigned int i;
while( --a != 0){
for(i = 0; i < 600; i++);
}
}
/**************************************************************************/
/***************************************************************************
函数名:主函数
调 用:无
参 数:无
返回值:无
结 果:程序开始处,无限循环
备 注:
/***************************************************************************/
void main (void){
K1 = 1; //初始化按键
K2 = 1;
K3 = 1;
K4 = 1;
while(1){ //无限循环程序
LED1 = 1; //初始化LED
LED2 = 1;
LED3 = 1;
LED4 = 1;
if(K1 == 0){ //如果K1按下
LED1 = 0; //亮一盏灯
DELAY_MS(250); //亮一秒钟(当前灯未熄灭时按键无效)
}
if(K2 == 0){ //如果K2按下
LED1 = 0; //亮两盏灯
LED2 = 0;
DELAY_MS(250); //亮一秒钟
}
if(K3 == 0){ //如果K3按下
LED1 = 0; //亮三盏灯
LED2 = 0;
LED3 = 0;
DELAY_MS(250); //亮一秒
}
if(K4 == 0){ //如果K4按下
LED1 = 0; //亮四盏灯
LED2 = 0;
LED3 = 0;
LED4 = 0;
DELAY_MS(250);//亮一秒
}
}//while括号
}//主函数括号
/**********************************************************************************************/