/***********************************方法一************************** * 描述 : 本实验,让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; } } }