51单片机多路独立按键开关程序

发布者:清新家园最新更新时间:2022-04-22 来源: eefocus关键字:51单片机  多路  独立按键 手机看文章 扫描二维码
随时随地手机看文章

每一个按键对应一个led灯,实现独立开关灯。


源程序:

** #include

#define uint unsigned int

#define uchar unsigned char

//定义按键端口

sbit key1 = P1^0;//定义按键端口1

sbit key2 = P1^1;

sbit key3 = P1^2;

sbit key4 = P1^3;//定义按键端口4

sbit key5 = P1^4;

sbit key6 = P1^5;

sbit key7 = P1^6;

sbit key8 = P1^7;


sbit led1 = P2^0; //定义LED灯1

sbit led2 = P2^1;

sbit led3 = P2^2;

sbit led4 = P2^3; //定义LED灯4

sbit led5 = P2^4;

sbit led6 = P2^5;

sbit led7 = P2^6;

sbit led8 = P2^7;


//延时函数声明

void delay(uint xms);

//程序入口

void main(){undefined

while(1){undefined

//第一次判断

if(key1 == 0){undefined

//延时20ms 消除抖动

delay(20);

//第二次判断


List item


if(key1 == 0){undefined

led1 = ~led1;// 灯亮


}

while(!key1); //当按键未松开时,key为0,执行该死循环。

//等待按键被松开

}

if(key2 == 0){undefined

//延时20ms 消除抖动

delay(20);

//第二次判断

if(key2 == 0){undefined

led2 = ~led2; //灯亮


}


//等待按键被松开


while(!key2); //当按键未松开时,key为0,执行该死循环。

}

if(key3 == 0){undefined

//延时20ms 消除抖动

delay(20);

//第二次判断

if(key3 == 0){undefined

//灯亮

led3 = ~led3;


}


//等待按键被松开


while(!key3); //当按键未松开时,key为0,执行该死循环。

}


if(key4 == 0){undefined

//延时20ms 消除抖动

delay(20);

//第二次判断

if(key4 == 0){undefined

led4 = ~led4;// 灯亮


}

while(!key4); //当按键未松开时,key为0,执行该死循环。

//等待按键被松开

}

if(key5 == 0){undefined

//延时20ms 消除抖动

delay(20);

//第二次判断

if(key5 == 0){undefined

led5 = ~led5; //灯亮


}


//等待按键被松开


while(!key5); //当按键未松开时,key为0,执行该死循环。

}

if(key6 == 0){undefined

//延时20ms 消除抖动

delay(20);

//第二次判断

if(key6 == 0){undefined

//灯亮

led6 = ~led6;


}


//等待按键被松开


while(!key6); //当按键未松开时,key为0,执行该死循环。

}

if(key7 == 0){undefined

//延时20ms 消除抖动

delay(20);

//第二次判断

if(key7 == 0){undefined

led7 = ~led7; //灯亮


}


//等待按键被松开


while(!key7); //当按键未松开时,key为0,执行该死循环。

}

if(key8 == 0){undefined

//延时20ms 消除抖动

delay(20);

//第二次判断

if(key8 == 0){undefined

//灯亮

led8 = ~led8;


}


//等待按键被松开


while(!key8); //当按键未松开时,key为0,执行该死循环。

}


}

}

void delay(uint xms)

{undefined

uint i,j;

for(i = 0; ifor(j = 0; j<110; ++j);

}

关键字:51单片机  多路  独立按键 引用地址:51单片机多路独立按键开关程序

上一篇:小白自学c51笔记之流水灯
下一篇:51单片机单键开关

推荐阅读最新更新时间:2024-11-17 10:12

39-基于51单片机的热敏电阻测温设计
1、设计需求及目标 具有温度上下限范围,并可以手动调整; 初始化后显示温度信息与上下限信息; 模数转换芯片使用分辨率10位以上A/D芯片; 采用液晶显示; 2、设计思路及方案 本设计以51系列单片机STC89C52为控制核心,以液晶显示模块、键盘为人机接口,负温度系数热敏电阻器(NTC)为采样传感器,实现了一个基于51单片机的热敏电阻测温设计。
[单片机]
39-基于<font color='red'>51单片机</font>的热敏电阻测温设计
单片机独立按键的扫描
原理搞清楚了,那么下面我们就先编写一个独立按键的程序,把最基本的功能验证一下。 #include reg52.h sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; sbit LED9 = P0^7; sbit LED8 = P0^6; sbit LED7 = P0^5; sbit LED6 = P0^4; sbit KEY1 = P2^4; sbit KEY2 = P2^5; sbit KEY3 = P2^6; sbit KEY4 = P2^7; void main(){ ENLED =
[单片机]
基于8051单片机的电机转速测量控制程序
以单片机8031为核心, 利用8279芯片实现按键输入和利用数码管显示所测转速,利用ADC0809将输入电压模拟量转化为数字量(实验箱内部已接好相关接口)控制电机转速的目的。然后利用DA0832将电机上的传感器配合DA0832的CKMOT接口将脉冲信号接到8031的INT0,利用外中断实现速度的测量,一次外中断会使速度计数器自动加一,利用定时器产生一秒的计时,得出一秒内速度计数器的值就可以得到电机的转速。另定时计数器每250MS产生一次定时器中断,利用中断来检测是否有新的控制信号输入,以达到实时控制转速的目的。 ORG 0000h ajmp main ORG 0003h ;外部中断0 AJMP ZS ORG 000BH
[单片机]
51单片机驱动DS18B20温度传感器程序及心得
关于DS18B20温度传感器,在没有硬件设备的辅助下,写内部程序有些困难,因为看不到实际信号波形。对于单片机,我。。。渐渐的有些心灰意冷。。虽然掌握了1_WIRE总线,却少了很多喜悦,下雨了。。。它是我的爱好,我付出了很多,可是我看不到实际的前景。。以我个人之力,要步入尖端芯片领域,很困难,在这里,采棉花是个普遍性的大问题,大型机械设备缺陷很多,如果以微控制芯片提高精度,我想效益会相当可观,可是技术瓶颈难以逾越。。。硬件研发,失败了,所有投入赴之东流,成功了,回报丰厚。现在,各行各业都处于饱和,没有成熟先进的技术,很难有立足之地,,,,,我开始重新审视我的选择。。。。。。艰难。。 /* 建立时间: 2013年5月2日;
[单片机]
51单片机汇编语言实验(六)-----8255键盘与显示设计
一、实验目的:    掌握8255外接键盘与数码管显示的设计 二、实验设备:    PC计算机一台,Dais-52PRO+实验系统一套。 三、实验内容:    8255键盘与显示设计 四、 8255键盘与显示设计    1、实验原理:    本实验使用8255的PA7到PA0控制数码管字形口、PB5到PB0控制数码管字位口,同时PB4到PB0作为键盘扫描口、PC3~PC0作为键盘读入口。利用CPU控制8255,对4×5键盘进行扫描和键值读取,将键值显示到6位数码管上。本文介绍的是简化版的实验,不控制最后一列键盘,数码管位选端不接线,直接点亮。    2、实验步骤:   ① 按下图拆除14芯扁平电缆;   ②将8
[单片机]
<font color='red'>51单片机</font>汇编语言实验(六)-----8255键盘与显示设计
51单片机-流水灯的优化解说
1.题目 为了更好地体现上一讲优化好的不支持连按代码的优势,我们来一道题目:用上7盏灯,左边6盏不停地流水,最右边1盏实现按键切换灯的打开和关闭,且按键动作不能干扰到流水灯的流速状态。 实验现象状态模拟如下 11111011//按键没按下 11110111//按键没按下 11101110//按键按下后抬起 11011110//按键没按下 10111111//按键按下后抬起 01111111//按键没按下 11111011//按键没按下 ...... 2.升华 在书写代码之前,我们来思考一下如何做到简化,如果按照以前的思路就是sbit的一个一个位地定义,这样的话就可以避免影响到LED2,因为LED2要实现自由,仅允许让
[单片机]
89C51单片机16位数据传送指令的执行过程
16位数据传送指令(1条) 这是89C51单片机唯一的一条16位立即数传递指令,其功能是将一个16位的立即数送入数据指针DPTR中去。其中高8位送入DPH,低8位送入DPL。 MOV DPTR,#data16;#dataH→(DPH),#dataL→(DPL)16位常数的高8位送到DPH,低8位送到DPL 例如:MOV DPTR,#2345 则执行完程序后,DPL中的值为23,DPL中的值为45。
[单片机]
89C<font color='red'>51单片机</font>16位数据传送指令的执行过程
51单片机C语言调用汇编子程序的简便方法
1、在汇编文件中,程序前边加上如下三句话就可以: PUBLIC _delay, _binrlc ;定义公用子程序名,这里定义了两个子程序(有下划线) LUOYUAN SEGMENT CODE ;程序段命名,LUOYUAN,叫啥名都可以 RSEG LUOYUAN 下边放子程序(程序名要下划线,其它标号不要下划线) ;汇编语言文件 PUBLIC _delay, _binrlc;定义子程序名 LUOYUAN SEGMENT CODE ;命名LUOYUAN的程序段 RSEG LUOYUAN _delay: MOV P1,#55H MOV R2,#30H DJNZ R2,$ RET
[单片机]

推荐帖子

ModelSim 6.6a-SE安装流程及说明
ModelSim6.6a-SE安装流程及说明建议先看完后再装,不知道你们安装的时候会不会遇到问题。(没有问题的朋友和我说声,我看看是不是我电脑系统的问题,谢谢)打开文件,双击modelsim-win32-6.6-se.exe文件,如图1,开始安装旅程图1开始后还是同样的WELCOME界面如图2,直接NEXT图2选择安装目录界面如图3,在这里我选择默认目录,还是建议大家不要装在系统盘。
lvfanzai FPGA/CPLD
(有贴代码)msp430g2553怎么实现两个捕获口来求时间差
下面的代码求指导,或者有哪位大神会msp430g2553实现两个捕获口来求时间差,求帮助~#includemsp430g2553.h#include12864ser.h//#includemath.hunsignedintcapture0_value=0;unsignedintcapture1_value=0;floatdiff_time_value=0;floatdiff_distance=0;unsignedcharflag_cnt
benni 微控制器 MCU
板子没到-请管理员帮忙啊
去快递那里问,我的手机号码快递单上少填了一位,所以板子又被退回去了,我以为没有快递单号,查不到,请管理员,负责人帮帮忙,给我查一下吧。。。我作品的元件都买了。感激不尽板子没到-请管理员帮忙啊不容易啊,顶一下,我还没被选上找找管理员@maylove直接联系管理员你的快递单号是:903249628678物流没有看到被退回的信息。TI那边表示没有少填手机号,你在问问你们那边快递,要是再不行,我这边再帮你问问怎么回事!相信很快会解决的不要急第三批什么时候出啊?
ziyouniao 微控制器 MCU
DDR1-3和GDDR1-5全解析
本帖最后由jameswangsynnex于2015-3-320:00编辑目前CPU用的内存正在从DDR2向DDR3过渡,而GPU用的显存则是以GDDR2/3为主、跳过GDDR4、直奔GDDR5而去。或许很多朋友一时还难以接受GDDR5那夸张的频率、不明白GDDR相比DDR发展速度为何如此“超前”、甚至搞不清楚GDDR1/2/3/4/5和DDR1/2/3之间“说不清道不明”的关系。如果您是一位求知欲很强的电脑爱好者,那么本文非常适合您,笔者特意搜集了大量官方技术文档,为大
wstt 移动便携
如何取得系统默认的输入法的CLSID?或者有更全的sdk也行,标准的wince5.0sdk没有Coresip.lib,不能用SipEnumIM枚举
RT,是个解决方法就好,想调出输入法的软键盘来如何取得系统默认的输入法的CLSID?或者有更全的sdk也行,标准的wince5.0sdk没有Coresip.lib,不能用SipEnumIM枚举
pd840228 WindowsCE
温度补偿晶振也是石英晶体振荡器之一,简称“温补晶振”
温补晶振特征是什么呢?因为不同领域的电子产品对石英晶体振荡器的需求是不同的,而温度补偿晶体振荡器是为了弥补普通晶体振荡器在高温下的不稳定因素而发展起来的,但是,温度补偿晶体振荡器有很多种,每一种温度补偿晶体振荡器都有自己的特点。温度补偿晶体振荡器由恒温槽控制电路和振荡电路组成。温度控制通常由热敏电阻桥组成的差分串联放大器来实现。晶体谐振器与振荡器电路集成在一起,没有温度补偿和温度控制,这些都是这些方面的特点。​晶体振荡器是一种在晶体谐振器中串
YXC扬兴晶振 分立器件
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved