单片机
返回首页

单片机LED流水灯闪烁灯程序大集合

2012-08-15 来源:51hei

/*
点亮LED灯:方1  位操作方式   sbit D1=P1^0;
    方2  总线方工     P1=0x??;
让LED灯闪烁
*/
/*
//方1:位操作方式点亮LED
#include
sbit  D1=P1^0;      //P1^0的P必须是大写
void main()
{
    D1=0;        //使用P1^0必须先经过sbit定义,而不能直接用P1^0=0;否则编译过不了
}
*/

//-------------------------------------------------
:总线方式点亮LED
#include
void main()
{
    P1=0xfd;         //1111 1100 LED是共阳的,低电平时点亮,
所以就是LED1和2灯被点亮
}
*/

//-------------------------------------------------------------
/* 让LED灯闪烁    采用位点亮+内部循环进行延时
#include 
sbit D1=P1^3;              //随便一个你也可改为P1^0,注意P要大写的才可以
unsigned int a;
void main()
{
D1=0;
for (a=0;a<=20000;a++) {};       //for循环 {}空操作即可形成延时效果
D1=1;
for (a=0;a<=20000;a++) {};
}
*/

//--------------------------------------------------------------
/*
//让LED灯闪烁    采用位方式+delay延时函数方式
#include 
sbit D1=P1^0;    //位操作方式
unsigned int a;
void delay(int x)         //延时
{
int a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void  main()
{
D1=0;
delay(50);           //调用延时
D1=1;
delay(50);
/
}
*/

//-----------------------------------------------
/*
//让3个灯一起闪烁  ,采用总线方式
#include
unsigned int a;
void delay(int x)          //延时
{
int a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void main()
{
P1=0xf8;             //1111 1000,点亮前3个灯,3个灯一起闪烁
delay(500);
P1=0xff;
delay(500);
}
*/

//----------------------------------------------------
/*
//让LED灯闪烁   采用wlile方式
#include 
sbit P10=P1^0;
int a;
void main()
{
while(1)
  {
     a=51000;
     P10=0;         //点亮灯
     while(a--);    //程序停在这里,一直执行减法,直到a从51000减到0后退出循环,
这就形成延时
     a=5100;      //前面a已经减成0了,这里再给它个初值
     P10=1;
    while(a--);    //又从初值51000减到0为止,形成延时效果
}
}
*/
//-----------------------------------------------------------
/*
//流水灯 ,在PIC单片机里流水灯只要设整个端的0x??
值然后采用端口值=端口值<<1左移1位即可形成流水灯
//而在52单片机里却不行,得用_crol关皱字,
而这个关键字又是在另一头文件intrins.h里,所以在开头就得先包含它_
#include 
#include      //因为要用到corol这一关键字
#define uchar unsigned char
sbit P23=P2^3 ;
sbit D1=P1^0;
void delay(int x)
{
int a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void main()
{
uchar a,temp;
temp=0xfe;
  for (a=8;a>0;a--)   //循环8次,即流水灯8个循环8次即可点亮8个
      {
        P1=temp;
       temp=_crol_(temp,1); //移动
      delay(100);
     }
}
*/

//--------------------------------------------------------------

//流水灯 :正流+倒流;在PIC里流水灯只要设整个端的0x??
值然后采用端口值=端口值<<1左移1位即可形成流水灯
//而在52单片机里却不行,得用_crol关皱字,
而这个关键字又是在另一头文件intrins.h里,所以在开头就得先包含它
#include 
#include      //因为要用到corol这一关键字
#define uchar unsigned char
sbit P23=P2^3 ;
sbit D1=P1^0;
void delay(int x)
{
int a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void main()
{
uchar a,temp;
temp=0xfe;
  for (a=8;a>0;a--)   //循环8次,即流水灯8个循环8次即可点亮8个
     {
      P1=temp;
      temp=_crol_(temp,1); //移动
      delay(100);
     }
temp=0x7f;              //注意这一句,
如果没有这一句,下面的语句循环是循环了,却没东西出来
    for (a=8;a>0;a--)   //循环8次,即流水灯8个循环8次即可点亮8个
   {
     P1=temp;
    temp=_crol_(temp,-1); //移动
     delay(100);
   }
} 
进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 单稳态控制电路设计与分析

  • IGBT模块通过控制门极阻断过电流

  • MT3608构成3.7V转12V的升压电路图

  • 运算放大器IC741的基本工作原理及在电路中的实现方式

  • 基于M66T旋律发​​生器的电路图解析

  • 基于TDA1554的立体声放大器电路

    相关电子头条文章