开关检测案例一:
具体电路图如下: 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=0;i《val;i++)
for(j=0;j《113;j++);
}
void main()
{
while(1)
{
uchar8 temp;
led=0xff; // p1.1—p1.3 置1 高电平 ,led熄灭 ,高四位默认高电平,作为输入
temp=p1&0xf0; // 读 p1口 ,并且屏蔽其低四位,送入temp
temp=temp》》4; // temp内容 右移四位,也就是说 p1口高4位状态移动至低四位 ,两者状态一样
led=temp; // temp 的数据送 p1口输出
delayms(1000);
}
}
开关检测案例二:
参考程序代码:(目的: 通过 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 0 : led=0xfe;break; // 14 0x0e 1110
case 1: led=0xfd;break; // 13 0x0d 1101
case 2: led=0xfb;break; // 11 0x0b 1011
case 3: led=0xf7;break; // 7 0x07 0111
}
}while(1);
}
宁畅新一代Ampere架构A100的X640服务器 兼顾超强算力和极高存储
NI Measurement Studio 2010全新支持
大族激光计划收购韩国设备企业 进军显示领域
台积电晶圆被不合格原料污染,预估损失上万片晶圆
大数据技术可以解决哪一些实际问题
控制LED灯的亮灭的2种开关检测方案
这样一款室内照明设计 似乎看到了未来生活的模样
扫地机器人好用吗?看完这篇你就明白一切
漏电保护插头和普通插头有什么区别
德赛西威走进东风日产,硬核黑科技产品集中亮相
微软承认一直在收集用户语音数据,是为了改善
如何根据端口数量选择一款交换机 常用交换机配置命令
人工智能“独角兽”旷视科技落户杭州 加速推进智能安防业务
世界电信日 | NVIDIA 赋能电信行业,洞察电信行业 AI 现状(互动有礼)
液态二氧化碳储存罐远程无线监测系统
5G作为通用平台,预计将催生12万亿美元市场
特斯拉将在欧洲建巨型工厂 造电池也造车
简易空气净化器制作教程
汽车以及相关技术的基础设施
人机界面技术正在寻找更多交互方式