/***********************************方法一**************************
* 描述 : 本实验,让8个LED不停显示依照规律轮流显示。
首先,8个LED分别两次间隔显示。然后高4位显示和低4位显示。
最后间隔全亮、全灭两次。
***********************************************************************/
#include
#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
#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
#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;
}
}
}