用单片机编写几种跑马灯
任务:
1、在电路板上实现跑马灯,一次1匹
2、在电路板上实现跑马灯,一次2匹
3、在电路板上实现4个二极管的同时闪烁
源程序1:
/***********************************信息****************************************
**作者:刘海涛
**版本:初始版V1.0
**描叙:用电路板实现跑马灯。
**日期:2010年7月25日
*******************************************************************************/ /**********************************头文件*************************************** **头文件"reg52.h"
*******************************************************************************/ /**********************************函数名*************************************** **函数名:延时函数delay()
**输入:无
**输入:无
**宏定义:无
*******************************************************************************/ /**********************************宏定义*************************************** 宏定义:#define XBYTE ((unsigned char *)0x20000L)
*******************************************************************************/ #include"reg52.h"
delay(unsigned int dat) // 延时函数定义
{
unsigned int i,j;
for(i=0;i<dat;i++)
{
for(j=0;j<10000;j++);
}
}
#define XBYTE ((unsigned char *)0x20000L) //宏定义
void main(void) //主函数
{
unsigned char i;
while(1)
{
for(i=0;i<4;i++)
XBYTE[0xd000]=(0x01<<i)^0xFF; //参考电路图,点亮第一个灯,并循环左移
delay(10); //延时函数调用
}
}
}
源程序2:
/***********************************信息**************************************** **作者:刘海涛
**版本:初始版V1.0
**描叙:用电路板实现跑马灯,一次移动2灯。
**日期:2010年7月25日
*******************************************************************************/ /**********************************头文件*************************************** **头文件"reg52.h"
*******************************************************************************/ /**********************************函数名*************************************** **函数名:延时函数delay()
**输入:无
**输入:无
**宏定义:无
*******************************************************************************/
/**********************************宏定义*************************************** **宏定义:#define XBYTE ((unsigned char *)0x20000L)
*******************************************************************************/
#include"reg52.h" // 头文件
#define XBYTE ((unsigned char *)0x20000L) //宏定义
delay(unsigned int dat) //延时函数
{
unsigned int i,j;
for(i=0;i<dat;i++)
{
for(j=0;j<10000;j++);
}
}
void main(void) //主函数
{
unsigned int i;
while(1)
for(i=0;i<3;i++)
{
XBYTE[0xd000]=(0x03<<i)^0xff; //点亮1、2两个灯
delay(10);
}
XBYTE[0xd000]=(0x09<<0)^0xff; //点亮第一、第四个灯
delay(10);
}
}
源程序3:
/***********************************信息**************************************** **作者:刘海涛
**版本:初始版V1.0
**描叙:用电路板实现跑马灯,四个二极管同时闪烁。
**日期:2010年7月25日
*******************************************************************************/ /**********************************头文件*************************************** **头文件"reg52.h"
*******************************************************************************/ /**********************************函数名*************************************** **函数名:延时函数delay()
**输入:无
**输入:无
*******************************************************************************/
/**********************************宏定义*************************************** **宏定义:#define XBYTE ((unsigned char *)0x20000L)
*******************************************************************************/ #include"reg52.h" //主函数
#define XBYTE ((unsigned char *)0x20000L) //宏定义
delay(unsigned int dat) //延时函数
{
unsigned int i,j;
for(i=0;i<dat;i++)
{
for(j=0;j<10000;j++);
}
}
void main(void) //主函数
{
while(1)
{
XBYTE[0xd000]=(0x0f<<0)^0xff; // delay(10);
XBYTE[0xd000]=(0x0f<<4)^0xff; delay(10);
}
}。