单片机---LED灯

有两种编程方法:
(1)并行操作:P0=0x80;(一定赋值一个十六进制数,直接复制一个十六进制数,来代表某个灯亮)
(2)位操作:sbit LED1=P1^0;
LED1=0;
LED1=1;(可以直接赋给0,1。确定好哪个灯后,直接给灯赋值,0为开,1为关)
1.LED灯闪亮(代码)
#include <reg52.h>
unsigned int i;
void main()//主函数
{
while(1){//让循环一直执行
P1=0;//让所有灯亮
i=65535;
while(i–);//延时
P1=0xff;//1111 1111让八个灯都关
i=65535;
while(i–);//延时
}
}(8个灯闪亮)
总结:可以直接给P1口赋值0,让P1口的8个LED灯都亮,但是在让8个灯灭的时候必须赋给其16进制数。
2.流水灯模式
延时函数:自定义函数delay(毫秒级)
void delay(unsigned int z){
unsigned x,y;
for(x=z;x>0;x–)
for(y=114;y>0;y–);
}
给形参z赋值,如果延迟100毫秒,delay(100);
左移:”<<”每执行一次左移,最低位补0,其它位向左移移位。
右移:”>>”每执行一次右移,最高位补0,其它位向右移一位。
循环移位函数:(1)标准库函数:intrins.h
(2)字符型循环左移:crol
(3)字符型循环右移:cror
下面为流水灯的代码实现:
#include <intrins.h>//左移右移函数库
#include <reg52.h>
void delay(unsigned int z){//延迟函数
int x,y;
for(x=z;x>0;x–)
for(y=114;y>0;y–);
}
void main(){
P1=0xfe;//11111110
delay(200);
while(1){
P1=crol(P1,1);//左移函数,11111101,111110111,,
delay(200);
}
}//LED灯流水灯

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值