这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » STC单片机实例之04花样流水灯

共11条 1/2 1 2 跳转至

STC单片机实例之04花样流水灯

高工
2014-03-03 22:35:13     打赏
/***********************************方法一**************************
* 描述    :  本实验,让8个LED不停显示依照规律轮流显示。
			 首先,8个LED分别两次间隔显示。然后高4位显示和低4位显示。
			 最后间隔全亮、全灭两次。

***********************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int

/********************************************************************
* 名称 : Delay()
* 功能 : 延时,延时时间为 10ms * del
* 输入 : del
* 输出 : 无
***********************************************************************/
void Delay(uint del)
{
	uint i,j;
	for(i=0; i<del; i++)
	for(j=0; j<1827; j++)    
	;
}

/********************************************************************
* 名称 : Main()
* 功能 : 实现灯的闪烁
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main(void)
{
	while(1)
	{
		/*下面四行用于控制LED每隔一个亮*/
		P0 = 0xaa;   
		Delay(50);
		P0 = 0x55;  
		Delay(50);

		/*下面四行用于控制LED每隔一个亮*/
		P0 = 0xcc;
		Delay(50);
		P0 = 0x33;
		Delay(50);

		/*下面四行用于控制LED 高四位 或者 低四位亮*/
		P0 = 0x0f;
		Delay(50);
		P0 = 0xf0;
		Delay(50);

		/*下面八行用于控制LED的两次全亮 全灭*/
		P0 = 0x00;
		Delay(25);
		P0 = 0xff;
		Delay(25);
		P0 = 0x00;
		Delay(25);
		P0 = 0xff;
		Delay(25);

		Delay(200);  //延时两秒
	}
}

 

/*****************************方法二**********************************
* 描述    :  本实验,让8个LED不停显示依照规律轮流显示。
			 首先,8个LED分别两次间隔显示。然后高4位显示和低4位显示。
			 最后间隔全亮、全灭两次。
			 采用查表方式进行操作,代码更短。

***********************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int

uchar code table[10]={0xaa,0x55,0xcc,0x33,0x0f,0xf0,0x00,0xff,0x00,0xff};
/********************************************************************
* 名称 : Delay()
* 功能 : 延时,延时时间为 10ms * del
* 输入 : del
* 输出 : 无
***********************************************************************/
void Delay(uint del)
{
	uint i,j;
	for(i=0; i<del; i++)
	for(j=0; j<1827; j++)    
	;
}

/********************************************************************
* 名称 : Main()
* 功能 : 实现灯的闪烁
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main(void)
{
	uchar i;
	while(1)
	{
		for(i=0;i<10;i++)
		{
			P0 = table[i];
			Delay(30);  //延时0.3秒
		}
	}
}

 

/*********************************方法三******************************
* 描述    :  该程序用于学习 LED流水灯 的控制方法。
			 8个LED会进行流水灯的演示		 

***********************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int

/********************************************************************
* 名称 : Delay()
* 功能 : 延时,延时时间为 10ms * del
* 输入 : del
* 输出 : 无
***********************************************************************/
void Delay(uint del)
{
	uint i,j;
	for(i=0; i<del; i++)
	for(j=0; j<1827; j++)   
	;
}

/********************************************************************
* 名称 : Main()
* 功能 : 实现灯的闪烁
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main(void)
{
	uchar i, temp;
	while(1)
	{
		temp = 0xfe;				
		for(i=0; i<8; i++)			
		{
			P0 = temp;					//把值赋给P1口
			Delay(10);					//延时(10毫秒 * j)秒
			temp = temp << 1;			//值右移一位
			temp = temp | 0x01;	
		}	
	}
}

 

 


高工
2014-03-03 22:39:33     打赏
2楼

高工
2014-03-03 22:44:39     打赏
3楼
动作这么快

专家
2014-03-03 22:53:34     打赏
4楼

院士
2014-03-03 23:05:46     打赏
5楼
看着想当年人们写的代码,真是有些沧桑的感觉啊~~

院士
2014-03-04 08:59:15     打赏
6楼
LZ,咱能不能有个说明啥的啊

高工
2014-03-04 09:26:06     打赏
7楼
是啊,最起码有个硬件电路图说明,,就程序应该没问题,,

高工
2014-03-04 10:06:34     打赏
8楼
我抽时间画个电路图

高工
2014-03-04 10:07:52     打赏
9楼
有时间画个电路图,说实话,现在不怎么想倒腾51的货

高工
2014-07-02 00:17:04     打赏
10楼
这个程序够简单了吧

共11条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]