51单片机实验 |
您所在的位置:网站首页 › led小灯泡使用方法图解大全 › 51单片机实验 |
目录
引言led模块原理图解析led小灯的操作1.点亮led小灯位操作法总线操作法
2.闪烁led小灯位操作法总线操作法
3.led流水灯位操作法总线操作法总线操作-数组循环遍历法总线操作-循环位移法总线操作-循环位移函数法
4.led花样操作循环流水灯聚拢流水灯间隔闪烁灯流水似华年起舞弄清影总结
结束语
引言
51单片机led小灯的操作可以是多种多样的,操作方式也可以是多种多样的,本篇文章使用较为简单的方法实现led小灯的点亮、闪烁、流水灯等操作。 led模块原理图解析 首先,我们可能见到的模块原理图无非就两种,一种是将led模块直接集成在51单片机核心板上的,例如下图所示: 根据上面的分析,我们知道对于led小灯的控制,只需要判断出led小灯的接法,进而根据接法控制另外一级所接位置电平的高低即可控制小灯的亮灭。 那么对于共阳极接法,点亮led小灯只需要给阴极所接的P2口的相应位赋一个低电平(即赋值为0)即可实现点亮、赋一个高电平(即赋值为1)即可实现熄灭。共阴极接法与其反之亦反。 以下操作均以led小灯为共阳极接法并与P2口相连为例。 1.点亮led小灯操作现象: 点亮8盏led小灯 位操作法 #include //包含头文件 //使用sbit位定义 sbit led0 = P2^0; //位定义P2口第一位 sbit led1 = P2^1; //位定义P2口第二位 sbit led2 = P2^2; //位定义P2口第三位 sbit led3 = P2^3; //位定义P2口第四位 sbit led4 = P2^4; //位定义P2口第五位 sbit led5 = P2^5; //位定义P2口第六位 sbit led6 = P2^6; //位定义P2口第七位 sbit led7 = P2^7; //位定义P2口第八位 //主函数 void main() { while(1) { //点亮LED小灯 led0 = 0; //点亮第一盏小灯 led1 = 0; //点亮第二盏小灯 led2 = 0; //点亮第三盏小灯 led3 = 0; //点亮第四盏小灯 led4 = 0; //点亮第五盏小灯 led5 = 0; //点亮第六盏小灯 led6 = 0; //点亮第七盏小灯 led7 = 0; //点亮第八盏小灯 } } 总线操作法 #include //包含头文件 //宏定义 #define led P2 //宏定义P2口 //主函数 void main() { while(1) { //点亮LED小灯 led = 0xfe; //点亮第一盏小灯 led = 0xfd; //点亮第二盏小灯 led = 0xfb; //点亮第三盏小灯 led = 0xf7; //点亮第四盏小灯 led = 0xef; //点亮第五盏小灯 led = 0xdf; //点亮第六盏小灯 led = 0xbf; //点亮第七盏小灯 led = 0x7f; //点亮第八盏小灯 //led = 0x00; //全部点亮(另外一种方式) } } 2.闪烁led小灯操作现象: P2口第一位led小灯闪烁 位操作法 #include //包含头文件 //使用typedef关键字 //类型重命名 typedef unsigned int uint; //使用sbit位定义 sbit led = P2^0; //位定义P2口第一位 //函数声明 void delay(uint i); //延时函数 //主函数 int main() { while(1) { led = 0; //点亮小灯 //延时一会 delay(50000); //对于晶振11.0592MHZ :大约延时0.49s led = 1; //熄灭小灯 //延时一会 delay(50000); } } //函数定义 //延时函数 void delay(uint i) { while(i--); } 总线操作法 #include //包含头文件 //宏定义 #define led P2 //宏定义P2口 //使用typedef关键字 //类型重命名 typedef unsigned char uchar; typedef unsigned int uint; //函数声明 void delay(uint i); //延时函数 //主函数 int main() { while(1) { led = 0xfe; //点亮P2口第一盏小灯 //延时一会 delay(50000); //对于晶振11.0592MHZ :大约延时0.49s led = 0xff; //熄灭小灯 //延时一会 delay(50000); } } //函数定义 //延时函数 void delay(uint i) { while(i--); } 3.led流水灯操作现象: led小灯从第1盏~第8盏依次点亮。 位操作法 #include //包含头文件 //使用typedef关键字 //类型重命名 typedef unsigned char uchar; typedef unsigned int uint; //使用sbit位定义 sbit led0 = P2^0; //位定义P2口第一位 sbit led1 = P2^1; //位定义P2口第二位 sbit led2 = P2^2; //位定义P2口第三位 sbit led3 = P2^3; //位定义P2口第四位 sbit led4 = P2^4; //位定义P2口第五位 sbit led5 = P2^5; //位定义P2口第六位 sbit led6 = P2^6; //位定义P2口第七位 sbit led7 = P2^7; //位定义P2口第八位 //函数声明 void delay(uint i); //延时函数 //主函数 void main() { while(1) { led0 = 0; //点亮第一盏小灯 delay(50000); //延迟一会 led0 = 1; //熄灭第一盏小灯 led1 = 0; //点亮第二盏小灯 delay(50000); //延迟一会 led1 = 1; //熄灭第二盏小灯 led2 = 0; //点亮第三盏小灯 delay(50000); //延迟一会 led2 = 1; //熄灭第三盏小灯 led3 = 0; //点亮第四盏小灯 delay(50000); //延迟一会 led3 = 1; //熄灭第四盏小灯 led4 = 0; //点亮第五盏小灯 delay(50000); //延迟一会 led4 = 1; //熄灭第五盏小灯 led5 = 0; //点亮第六盏小灯 delay(50000); //延迟一会 led5 = 1; //熄灭第六盏小灯 led6 = 0; //点亮第七盏小灯 delay(50000); //延迟一会 led6 = 1; //熄灭第七盏小灯 led7 = 0; //点亮第八盏小灯 delay(50000); //延迟一会 led7 = 1; //熄灭第八盏小灯 } } //函数定义 //延时函数 void delay(uint i) { while(i--); } 总线操作法 #include //包含头文件 //宏定义 #define led P2 //宏定义P2口 //使用typedef关键字 //类型重命名 typedef unsigned char uchar; typedef unsigned int uint; //函数声明 void delay(uint i); //延时函数 //主函数 void main() { while(1) { led = 0xfe; //点亮第一盏小灯 delay(50000); //延迟一会 led = 0xfe; //熄灭第一盏小灯 led = 0xfd; //点亮第二盏小灯 delay(50000); //延迟一会 led = 0xfd; //熄灭第二盏小灯 led = 0xfb; //点亮第三盏小灯 delay(50000); //延迟一会 led = 0xfb; //熄灭第三盏小灯 led = 0xf7; //点亮第四盏小灯 delay(50000); //延迟一会 led = 0xf7; //熄灭第四盏小灯 led = 0xef; //点亮第五盏小灯 delay(50000); //延迟一会 led = 0xef; //熄灭第五盏小灯 led = 0xdf; //点亮第六盏小灯 delay(50000); //延迟一会 led = 0xdf; //熄灭第六盏小灯 led = 0xbf; //点亮第七盏小灯 delay(50000); //延迟一会 led = 0xbf; //熄灭第七盏小灯 led = 0x7f; //点亮第八盏小灯 delay(50000); //延迟一会 led = 0x7f; //熄灭第八盏小灯 } } //函数定义 //延时函数 void delay(uint i) { while(i--); } 总线操作-数组循环遍历法 #include //包含头文件 //宏定义 #define led P2 //宏定义P2口 //使用typedef关键字 //类型重命名 typedef unsigned char uchar; typedef unsigned int uint; //定义数组 //用来存放赋值给P2口的16进制操作数(即点亮某一位led小灯的操作数) uchar led_location[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //函数声明 void delay(uint i); //延时函数 //主函数 void main() { //定义for循环计数变量i uchar i; while(1) { //遍历数组实现循环点亮led小灯 for(i = 0; i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |