- 第一个LED灯以间隔200ms闪烁
#include <STC15F2K60S2.H> void LiuShuiDeng(); void Delayms (int ms); void main (void) { P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化程序 LiuShuiDeng(); } void LiuShuiDeng() { unsigned char LED=0; while(1) { P0=~(0X01<<LED) ; Delayms(1000); LED++; if(LED==8)LED=0; } } void Delayms(int ms) { int i,j; for(i = 0; i<ms;i++) for(j = 843;j>0;j--); }
-
8个LED灯由左至右间隔1流动,其中每个灯亮500ms,灭500ms
#include<STC15F2K60S2.H> unsigned int i; void Delayms(int ms); void main(void) { P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化程序 while(1) { P00=0; Delayms(500); P00=1; Delayms(500); Delayms(1000); P01=0; Delayms(500); P01=1; Delayms(500); Delayms(1000); P02=0; Delayms(500); P02=1; Delayms(500); Delayms(1000); P03=0; Delayms(500); P03=1; Delayms(500); Delayms(1000); P04=0; Delayms(500); P04=1; Delayms(500); Delayms(1000); P05=0; Delayms(500); P05=1; Delayms(500); Delayms(1000); P06=0; Delayms(500); P06=1; Delayms(500); Delayms(1000); P07=0; Delayms(500); P07=1; Delayms(500); Delayms(1000); } while(1); } void Delayms(int ms) { int i,j; for(i = 0; i<ms;i++) for(j = 843;j>0;j--); }
- 8个IED灯间隔200ms由左至右,再由右至左,再重复一遍,然后全部熄灭再以300ms间隔全部闪烁5次,然后重复整个过程
#include <STC15F2K60S2.H> void LiuShuiDengZ(); void LiuShuiDengF(); void Delayms (int ms); void main (void) { unsigned int i=0; P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化程序 LiuShuiDengZ(); LiuShuiDengF(); LiuShuiDengZ(); LiuShuiDengF(); P0=0XFF; Delayms(300); for(i=0;i<5;i++) { P0=0x00; Delayms(300); P0=0XFF; Delayms(300); } } void LiuShuiDengZ() { unsigned char LED=0; while(1) { P0=~(0X01<<LED) ; Delayms(200); LED++; if(LED==8)break; } } void LiuShuiDengF() { unsigned char LED=8; unsigned char cnt=0; while(1) { P0=~(0X80>>cnt) ; Delayms(200); cnt++; LED--; if(LED==0)break; } } void Delayms(int ms) { int i,j; for(i = 0; i<ms;i++) for(j = 843;j>0;j--); }
- 间隔300ms第一次一个灯亮流动一次,第二次两个灯亮流动,依次到8个灯亮,然后重复整个过程
#include <STC15F2K60S2.H> unsigned int k=0; void LiuShuiDeng(); void Delayms (int ms); void main (void) { unsigned char LED=0; P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化程序 for(k=0;k<8;k++) { P0=~(0X01<<LED); Delayms(1000); LeiShuiDeng(); LED++; } } void LiuShuiDeng() { unsigned char LED_RUN=0; while(1) { P0=~(0X01<<LED_RUN) ; Delayms(300); LED_RUN++; if(LED_RUN==8) break; } } void Delayms(int ms) { int i,j; for(i = 0; i<ms;i++) for(j = 843;j>0;j--); }
- 间隔300ms先奇数亮再偶数亮,循环三次;一个灯左右循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭所有LED灯,程序停止
#include <STC15F2K60S2.H> unsigned char LED=0; unsigned int k=0; void LiuShuiDengJO(void); void LiuShuiDengZ(void); void LiuShuiDengF(void); void LiuShuiDengMiddle(void); void LiuShuiDengSide(void); void LiuShuiDengFlash(void); void Delayms (int ms); void main (void) { P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化程序 LiuShuiDengJO(); for(k=0;k<3;k++) { LiuShuiDengZ(); LiuShuiDengF(); } LiuShuiDengMiddle(); LiuShuiDengSide(); LiuShuiDengFlash(); while(1); } void LiuShuiDengJO(void) { for(k=0;k<3;k++) { LED=0; while(1) { P0=~(0X01<<LED); Delayms(300); LED+=2; if(LED>6) break; } if(LED>6) { LED=1; while(1) { P0=~(0X01<<LED); Delayms(300); LED+=2; if(LED>7) break; } } } } void LiuShuiDengZ(void) { LED=0; while(1) { P0=~(0X01<<LED) ; Delayms(300); LED++; if(LED==8) break; } } void LiuShuiDengF() { unsigned char cnt=0; LED=8; while(1) { P0=~(0X80>>cnt) ; Delayms(300); cnt++; LED--; if(LED==0)break; } } void LiuShuiDengMiddle(void) { for(k=0;k<3;k++) { P0=~(0X81); Delayms(300); P0=~(0x42); Delayms(300); P0=~(0x24); Delayms(300); P0=~(0x18); Delayms(300); } } void LiuShuiDengSide(void) { for(k=0;k<3;k++) { P0=0Xe7; Delayms(300); P0=0xdb; Delayms(300); P0=0xbd; Delayms(300); P0=0x7e; Delayms(300); } } void LiuShuiDengFlash(void) { for(k=0;k<3;k++) { P0=0x00; Delayms(300); P0=0xff; Delayms(300); } } void Delayms(int ms) { int i,j; for(i = 0; i<ms;i++) for(j = 843;j>0;j--); }
蓝桥杯单片机LED课后题
于 2023-04-03 00:52:31 首次发布