c语言编写单片机跑马灯,用单片机编写几种跑马灯

本文介绍了三个C语言程序,分别实现了电路板上的单灯跑马灯、双灯同时移动以及四灯同步闪烁的效果。通过定义延时函数和使用宏定义,作者展示了如何控制二极管的亮灭状态来达到跑马灯的动态效果。这些程序对于电子爱好者和嵌入式开发者了解单片机控制LED灯的原理和实践具有参考价值。
摘要由CSDN通过智能技术生成

任务:

1、在电路板上实现跑马灯,一次1匹

2、在电路板上实现跑马灯,一次2匹

3、在电路板上实现4个二极管的同时闪烁

源程序1:

/***********************************信息****************************************

**作者:刘海涛

**版本:初始版V1.0

**描叙:用电路板实现跑马灯。

**日期:2010年7月25日

*******************************************************************************/本文引用地址:http://www.eepw.com.cn/article/170841.htm

/**********************************头文件***************************************

**头文件reg52.h

*******************************************************************************/

/**********************************函数名***************************************

**函数名:延时函数delay()

**输 入:无

**输 入:无

**宏定义:无

*******************************************************************************/

/**********************************宏定义***************************************

宏定义:#define XBYTE ((unsigned char *)0x20000L)

*******************************************************************************/

#includereg52.h

delay(unsigned int dat) // 延时函数定义

{

unsigned int i,j;

for(i=0;idat;i++)

{

for(j=0;j10000;j++);

}

}

#define XBYTE ((unsigned char *)0x20000L) //宏定义

void main(void) //主函数

{

unsigned char i;

while(1)

{

for(i=0;i4;i++)

{

XBYTE[0xd000]=(0x01i)^0xFF; //参考电路图,点亮第一个灯,并循环左移

delay(10); //延时函数调用

}

}

}

源程序2:

/***********************************信息****************************************

**作者:刘海涛

**版本:初始版V1.0

**描叙:用电路板实现跑马灯,一次移动2灯。

**日期:2010年7月25日

*******************************************************************************/

/**********************************头文件***************************************

**头文件reg52.h

*******************************************************************************/

/**********************************函数名***************************************

**函数名:延时函数delay()

**输 入:无

**输 入:无

**宏定义:无

*******************************************************************************/

/**********************************宏定义***************************************

**宏定义:#define XBYTE ((unsigned char *)0x20000L)

*******************************************************************************/

#includereg52.h // 头文件

#define XBYTE ((unsigned char *)0x20000L) //宏定义

delay(unsigned int dat) //延时函数

{

unsigned int i,j;

for(i=0;idat;i++)

{

for(j=0;j10000;j++);

}

}

void main(void) //主函数

{

unsigned int i;

while(1)

{

for(i=0;i3;i++)

{

XBYTE[0xd000]=(0x03i)^0xff; //点亮1、2两个灯

delay(10);

}

XBYTE[0xd000]=(0x090)^0xff; //点亮第一、第四个灯

delay(10);

}

}

源程序3:

/***********************************信息****************************************

**作者:刘海涛

**版本:初始版V1.0

**描叙:用电路板实现跑马灯,四个二极管同时闪烁。

**日期:2010年7月25日

*******************************************************************************/

/**********************************头文件***************************************

**头文件reg52.h

*******************************************************************************/

/**********************************函数名***************************************

**函数名:延时函数delay()

**输 入:无

**输 入:无

*******************************************************************************/

/**********************************宏定义***************************************

**宏定义:#define XBYTE ((unsigned char *)0x20000L)

*******************************************************************************/

#includereg52.h //主函数

#define XBYTE ((unsigned char *)0x20000L) //宏定义

delay(unsigned int dat) //延时函数

{

unsigned int i,j;

for(i=0;idat;i++)

{

for(j=0;j10000;j++);

}

}

void main(void) //主函数

{

while(1)

{

XBYTE[0xd000]=(0x0f0)^0xff; //

delay(10);

XBYTE[0xd000]=(0x0f4)^0xff;

delay(10);

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值