单片机电灯实验
51单片机点亮一个LED灯
位方法
#include<reg52.h>
sbit D1 = P1^0;
void main(){
D1 = 0;
while(1);
}
总线法
二进制转16进制
灯亮 | 二进制 | 十六进制 |
---|---|---|
第一个灯亮 | 11111110B | 0xfe |
第二个灯亮 | 11111101B | 0xfd |
第三个灯亮 | 11111011B | 0xfb |
… | … | … |
全暗 | 11111111B | 0xff |
#include<reg52.h>
void main(){
P1 = 0xfe; //点亮第一个灯
}
![05_04_19_33_ZHuGK0](https://raw.githubusercontent.com/liufiercing/Upic/master/Upic/05_04_19_33_ZHuGK0.png)
51单片机点闪烁一个LED灯
位方法
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
void delay();
sbit D1=P1^0;
void main(){
while(1){
D1 = 0; //点亮第一个灯
delay();
D1 = 1; //熄灭所有灯
delay();
}
void delay() {
uint x,y;
for(x = 100; x > 0; x--){
for(y = 600; y > 0; y--);
}
}
总线法
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
void delay();
void main(){
while(1){
P1 = 0xfe; //点亮第一个灯
delay();
P1 = 0xff; //熄灭所有灯
delay();
}
}
void delay() {
uint x,y;
for(x=100;x>0;x--){
for(y=600;y>0;y--);
}
}
![05_04_20_37_2](https://raw.githubusercontent.com/liufiercing/Upic/master/Upic/05_04_20_37_2.gif)
51单片机点流水灯
使用c51标准库文
其中有循环左移动
The** crol **routine rotates the bit pattern for the character c left b bits. This routine is implemented as an intrinsic function
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp;
void delay();
void main(){
temp = 0xfe; //11111110B 一个灯
P1 = temp;
while(1){
temp = _crol_(temp,1); //返回11111101B、11111011B...
delay();
P1 = temp;
}
}
void delay(){
uint x,y;
for(x = 100; x > 0; x--)
for(y = 100; y > 0; y--);
}
![05_04_20_49_1](https://raw.githubusercontent.com/liufiercing/Upic/master/Upic/05_04_20_49_1.gif)