标签:字符型 闪烁 ide while ++ 一段 src 变亮 延时
P0口联接8个LED灯,P1^0~P1^7;
点亮一个LED
1 #include<reg52.h> //包含头文件,一般情况不需要改动, 2 //头文件包含特殊功能寄存器的定义 3 4 sbit LED=P1^0;// 用sbit 关键字 定义 LED到P1.0端口, 5 //LED是自己任意定义且容易记忆的符号 6 /*------------------------------------------------ 7 主函数 8 ------------------------------------------------*/ 9 void main (void) 10 { 11 //此方法使用bit位对单个端口赋值 12 LED=1; //将P1.0口赋值 1,对外输出高电平 13 LED=0; //将P1.0口赋值 0,对外输出低电平 14 15 while (1) //主循环 16 { //主循环中添加其他需要一直工作的程序 17 LED=0; 18 //将P1.0口赋值 0,对外输出低电平 19 } 20 }
点亮多个LED
#include<reg52.h> //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义 sbit LED0=P1^0;// 用sbit 关键字 定义 LED到P1.0端口, sbit LED1=P1^1;//LED是自己任意定义且容易记忆的符号 sbit LED2=P1^2; sbit LED3=P1^3; sbit LED4=P1^4; sbit LED5=P1^5; sbit LED6=P1^6; sbit LED7=P1^7; /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { //此方法使用bit位对单个端口赋值 LED0=0; //将P1.0口赋值 0,对外输出低电平 LED1=1; LED2=0; LED3=1; LED4=0; LED5=1; LED6=0; LED7=1; while (1) //主循环 { //主循环中添加其他需要一直工作的程序 } }
如果像上面那样一个个赋值就太累了,下面是简单方法
//此方法使用1个字节对单个端口赋值
P1 = 0xFF; //P1口全部为高电平,对应的LED灯全灭掉,
//ff换算成二进制是 1111 1111
P1 = 0xfe; //P1口的最低位点亮,可以更改数值是其他的灯点亮
//0xfe是16进制,0x开头表示16进制数,
//fe换算成二进制是 1111 1110
P0口是开路漏极只能输出低电平,不能正常输出高电平。
全部取反,主函数中的代码修改为
LED=~LED;
在一个时钟周期内闪烁一次,这个时间太短,难以观察。
这样就引入延时需要,简单方法就是执行一个循环一段时间。
1 void main (void) 2 { 3 while (1) //主循环 4 { //主循环中添加其他需要一直工作的程序 5 LED=~LED; 6 //将P1.0口赋值 0,对外输出低电平 7 delay(100);//执行100次 8 } 9 } 10 void delay(int time)//延时函数 11 { 12 int i=0; 13 while(time--) 14 { 15 i=4000; 16 while(i--); 17 } 18 }
1 void delay(int time)//延时函数 2 { 3 int i=0; 4 while(time--) 5 { 6 i=4000; 7 while(i--); 8 } 9 } 10 void main (void) 11 { 12 while (1) //主循环 13 { //主循环中添加其他需要一直工作的程序 14 15 unsigned char i; //定义一个无符号字符型局部变量 i 取值范围 0~255 16 //P1=0xfe; //赋初始值 17 for(i=0;i<8;i++) //加入 for循环,表明for循环大括号中的程序循环执行8次 18 { 19 P1<<=1; 20 delay(100);//执行100次 21 } 22 } 23 }
1 void delay(int time)//延时函数 2 { 3 int i=0; 4 while(time--) 5 { 6 i=4000; 7 while(i--); 8 } 9 } 10 void main (void) 11 { 12 13 unsigned char i; //定义一个无符号字符型局部变量 i 取值范围 0~255 14 delay(100); 15 P1=0xfe; //赋初始值 16 while (1) //主循环 17 { 18 for(i=0;i<8;i++) //加入 for循环,表明for循环大括号中的程序循环执行8次 19 { 20 delay(100); 21 P1<<=1; 22 P1=P1|0x01; //左移后,最右端自动赋值0,所以需要该语句赋值1 23 } 24 P1=0xfe; //重新赋初始值 25 //主循环中添加其他需要一直工作的程序 26 } 27 }
1 sbit LED0=P1^0; 2 void delay(int i)//延时函数 3 { 4 while(i--); 5 } 6 void main (void) 7 { 8 9 unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值 10 while (1) //主循环 11 { 12 LED0=1; 13 delay(60000); //特意加延时,可以看到熄灭的过程 14 for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++){ //PWM_LOW表示低 15 //电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次 16 17 LED0=0; //点亮LED 18 delay(PWM_LOW);//延时长度,600次循环中从1加至599 19 LED0=1; //熄灭LED 20 delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减至1 21 22 } 23 LED0=0; 24 for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--){ //与逐渐变亮相反的过程 25 26 LED0=0; 27 delay(PWM_LOW); 28 LED0=1; 29 delay(CYCLE-PWM_LOW); 30 } 31 //主循环中添加其他需要一直工作的程序 32 } 33 }
标签:字符型 闪烁 ide while ++ 一段 src 变亮 延时
原文地址:https://www.cnblogs.com/bymeet/p/14347715.html