开关检测案例一:具体电路图如下: 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口 ,并且屏蔽其低四位,送入temptemp=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 P1void main(){uchar8 state;do{P2=0xff; // 设置 P2口输入state=P2; // 读 P2口的状态,送入 statestate=state&0x03; // 屏蔽 高6位switch(state){case 0 : LED=0xFE;break; // 14 0x0e 1110case 1: LED=0xFD;break; // 13 0x0d 1101case 2: LED=0xFB;break; // 11 0x0b 1011case 3: LED=0xF7;break; // 7 0x07 0111}}while(1);}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。