广州服务好的网站推广工具,网站开发读什么专业,用微信怎么做商城网站,电商网站设计平台前言#xff1a;感谢您的关注哦#xff0c;我会持续更新编程相关知识#xff0c;愿您在这里有所收获。如果有任何问题#xff0c;欢迎沟通交流#xff01;期待与您在学习编程的道路上共同进步。 目录
一. 独立按键灵活控制LED
程序一#xff1a;单个独立按键控制多个…
前言感谢您的关注哦我会持续更新编程相关知识愿您在这里有所收获。如果有任何问题欢迎沟通交流期待与您在学习编程的道路上共同进步。 目录
一. 独立按键灵活控制LED
程序一单个独立按键控制多个LED灯
程序二多个独立按键同时控制LED
二. 独立按键实现LED的位移控制
1.位运算介绍
2.具体运用
三. 实验视频 一. 独立按键灵活控制LED 对于独立按键的具体介绍可以参考51单片机学习3这里我们借助一些算术运算符以及一些逻辑运算符来实现不同的控制。
运算符如下 例如
程序一单个独立按键控制多个LED灯
#include REGX52.Hvoid Delay(unsigned int xms) //11.0592MHz
{unsigned char data i, j;while(xms){i 2;j 199;do{while (--j);} while (--i);xms--;}
}
void main()
{while(1){if(P3_10){Delay(20);while(P3_10);Delay(20);P2_0~P2_0, P2_1~P2_1; //实现K1控制LED1和LED2}}
}程序二多个独立按键同时控制LED
#include REGX52.Hvoid Delay(unsigned int xms) //11.0592MHz //延时函数设置
{unsigned char data i, j;while(xms){i 2;j 199;do{while (--j);} while (--i);xms--;}
}
void main()
{while(1) //while循环语句{if(P3_10||P3_00) //if语句并且运用逻辑或{Delay(20); //延时20ms去除第一段抖动while(P3_10||P3_00);Delay(20); //去除第二段抖动P2_0~P2_0; //按位取反即对应的LED状态改变}}
}二. 独立按键实现LED的位移控制 1.位运算介绍
按位与 按位与为双位运算符其作用于将两个二进制数逐位相与即只要对应的两个二进制都为1时结果为1否则为0。
例如111100000。
按位或|按位或也为双目运算符其作用于将两个二进制数逐位相或即只要对应的两个二进制中有一个为1其结果为1否则为0。
例如1|111|010|00。
按位异或^进行异或运算时当两个二进制表示不同时为1相同则为0。
例如1^101^01。
按位取反~按位取反即对于二进制的每一位都取反。
例如假设1的二进制为0000 0001则按位取反后为1111 1110。
按位左移将操作数的二进制所有位向左移动指定的位数。
例如1的二进制0000 00010000 00012即1的二进制数按位左移动2位则为0000 0100。
按位右移将操作数的二进制所有位向左移动指定的位数。
例如10的二进制为0000 10100000 10102即10的二进制数按位右移动2位则为0000 0010右移两位时高位补0即右移后的第一位补0。
注意这里的按位左移与右移均只对于正数而言且左移时为低位补0右移时为高位补0。 2.具体运用
源程序
#include REGX52.H
void Delay(unsigned int xms) //11.0592MHz
{unsigned char data i, j;while(xms){i 2;j 199;do{while (--j);} while (--i);xms--;}
}void main()
{unsigned int LEDNUM0; //定义移动的位数while(1){if(P3_10){Delay(20);while(P3_10);Delay(20);LEDNUM; //移动的位数逐渐增加来实现逐次控制不同LEDif(LEDNUM8){LEDNUM0; //当移动的位数超过8时重新令位数为0从而实现不断的逐次循环}P2~(0x01LEDNUM); //0x01本应该是第一个LED亮但是这里马上进行了位运算所以第一个点亮的为第二个LED然后依次被控制点亮。}}
} 三. 实验视频 51单片机独立按键依次控制LED 感谢老铁的浏览希望老铁可以一键三连加个关注您的支持和鼓励是我前进的动力后续会分享更多学习编程的内容。