(三)开关检测来控制LED灯的亮灭
开关检测案例一:
具体电路图如下: K1--K4闭合,控制 D1—D4 亮灭

产生的问题:
1、关于 R8 R9 R7 R10 的阻值选择问题,倘若太大的话, 比如10K 不管开关断开还是闭合,好像都没什么用,电阻上部分电流被拉低,一直为低电平,虽然仿真对,但终究有问题
倘若选择一般大,则为灰色,表示电平不确定,最后不得已选择 20Ω 电阻,电平可以确定,开关闭合,电平拉低,那么实际电路中, 电阻的取值究竟怎样呢????
2、需要掌握 按位与 的用法
参加运算的两个数据,按二进制位进行“与”运算。
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
即:两位同时为“1”,结果才为“1”,否则为0
例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。
————————————————————————————————————————————————————————————————————————————————————————————
参考程序如下以及电路图:

#include<reg52.h>
#include<intrins.h>
#define uchar8 unsigned char
#define uint16 unsigned int
#define LED P1 /*****************************/
// 函数名称: DelayMS( )
// 函数功能: 延时
// 入口函数: 延时毫秒
// 出口函数: 无
/************************* *******************/
void DelayMs(uint16 val)
{
uint16 i,j;
for( i=;i<val;i++)
for(j=;j<;j++); } void main()
{ while()
{
uchar8 temp;
LED=0xff; // P1.1—P1.3 置1 高电平 ,LED熄灭 ,高四位默认高电平,作为输入 temp=P1&0xf0; // 读 P1口 ,并且屏蔽其低四位,送入temp
temp=temp>>; // temp内容 右移四位,也就是说 P1口高4位状态移动至低四位 ,两者状态一样
LED=temp; // temp 的数据送 P1口输出
DelayMs(); } }
开关检测案例二:

参考程序代码:(目的: 通过 K1 K2 按键的组合00 01 10 11 来控制 LED 的灯的亮灭)
#include<reg52.h>
#include<intrins.h>
#define uchar8 unsigned char
#define uint16 unsigned int
#define LED P1 void main()
{ uchar8 state; do
{ P2=0xff; // 设置 P2口输入
state=P2; // 读 P2口的状态,送入 state
state=state&0x03; // 屏蔽 高6位 switch(state)
{
case : LED=0xFE;break; // 14 0x0e 1110
case : LED=0xFD;break; // 13 0x0d 1101
case : LED=0xFB;break; // 11 0x0b 1011
case : LED=0xF7;break; // 7 0x07 0111 } }while(); }
(三)开关检测来控制LED灯的亮灭的更多相关文章
- 通过按键实现LED灯的亮灭(含两种情况)
#include "stm32f10x.h"// 相当于51单片机中的 #include <reg51.h> #include "stm32f10x_gpio ...
- 5-51单片机ESP8266学习-AT指令(8266TCP服务器--用手机TCP调试助手发信息给单片机控制小灯的亮灭)
http://www.cnblogs.com/yangfengwu/p/8759294.html 源码链接:https://pan.baidu.com/s/1wT8KAOIzvkOXXNpkDI7E8 ...
- 6-51单片机ESP8266学习-AT指令(8266TCP服务器--做自己的AndroidTCP客户端发信息给单片机控制小灯的亮灭)
http://www.cnblogs.com/yangfengwu/p/8776712.html 先把源码和资料链接放到这里 链接: https://pan.baidu.com/s/1jpHZjW_7 ...
- 7-51单片机ESP8266学习-AT指令(8266TCP服务器,编写自己的C#TCP客户端发信息给单片机控制小灯的亮灭)
http://www.cnblogs.com/yangfengwu/p/8780182.html 自己都是现做现写,如果想知道最终实现的功能,请看最后 先把源码和资料链接放到这里 链接: https: ...
- arduino入门学习实现语音控制LED灯
需要的准备的硬件arduino+PC+麦克风实现语音命令控制LED灯的亮灭. 首先需要将写好的arduino程序烧录到arduino uno主板中,下面是代码如下: int val;//定义变量val ...
- Arduino控制LED灯(开关控制)
问题:当使用"digitalRead(BUT) == 1"控制LED灯时会出现"digitalWrite(LED, ledState);"的值出现跳动. 原因: ...
- 云中树莓派(4):利用声音传感器控制Led灯
云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 云中树莓派(3):通过 AWS IoT 控制树莓派上的Led 云中树莓派(4):利用声音传感 ...
- C#与Arduino通过串口通信来控制LED灯的状态
一.引言 最近摆弄了一段时间的Arduino,发现Arduino做一些电子类项目.监控.机器人.电子玩具比较容易,并且Arduino与.NET程序集成也不难.接下来介绍一个简单的小程序,C#做的一个W ...
- Arduino 开关控制小灯持续亮之具体思路
Arduino 开关控制小灯持续亮之具体思路 为什么写这篇文章: 我们用开关控制灯的亮灭的时候,希望只需要按一下按键就可以做到灯一直亮着.而在<Arduino魔法书>中——有弹性的按键这一 ...
随机推荐
- libopencv_highgui.a(window_gtk.cpp.o): undefined reference to symbol 'g_type_check_instance_is_a'
libopencv_highgui.a(window_gtk.cpp.o): undefined reference to symbol 'g_type_check_instance_is_a' 尝试 ...
- 支持4G以上文件的MD5单元
根据网上一个流传很久的基于Delph4的MD5单元修改的, 可以支持4G以上的文件, 可以支持UNICODE字符的Delphi 恩.......对于大文件速度稍微慢了一点点, 在我自己的电脑上测试, ...
- php内容
PHP语言原理:先把代码显示在源代码中,再通过浏览器解析在网页上 PHP中关键字通常分为四种类型: 1. 用于数据类型定义的关键字,如:int,string,bool,classic,object和a ...
- Java线程池的原理及几类线程池的介绍
刚刚研究了一下线程池,如果有不足之处,请大家不吝赐教,大家共同学习.共同交流. 在什么情况下使用线程池? 单个任务处理的时间比较短 将需处理的任务的数量大 使用线程池的好处: 减少在创建和销毁线程上所 ...
- 移动web开发--meta 之 viewport
常用的 viewport meta 如下: 1 <meta name="viewport" content="width=device-width,initial- ...
- php---apache的A/B测试
A/B测试 A/B测试是一种新兴的网页优化方法,可以用于增加转化率注册率等网页指标..A/B测试的目的在于通过科学的实验设计.采样样本代表性.流量分割与小流量测试等方式来获得具有代表性的实验结论,并确 ...
- Array原型链添加“遍历”方法
<script> //1.在我们之前的项目里向原型链中集成方法时大多代码分析不严密,有时间我在这里会做详细分析; Array.prototype.each = function(fn) { ...
- caption,为表格增加标题和摘要
格式: <table summary="***"> <caption>***</caption> <tr> </tr> ...
- EntityFramework更新数据
1.TryUpdateModel 使用很方便,但实际更新数据的过程还是先select,再update.另外发现一个问题,对于input的type类型file的字段,无法使用TryUpdateModel ...
- 高效的两段式循环缓冲区──BipBuffer
Simon Cooke,美国 (原作者) 北京理工大学 20981 陈罡(翻译) 写在前面的话: 循环缓冲区是一个非常常用的数据存储结构,已经被广泛地用于连续.流数据的存储和通信应用中.对于循环缓冲区 ...