单片机—LED灯(二)

2019-04-15 17:02发布

各种灯

间隔灯

#include #define uint unsigned int void delayms(xms); void main() { while(1) { P2=0xff; delayms(500); P2=0x00; delayms(500); } } void delayms(xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } 间隔灯

左右跑马灯

#include #include #define uchar unsigned char #define uint unsigned int void delayms(xms); void main() { int i; uchar aa,bb; while(1) { aa=0x80; bb=0x01; for(i=1;i<=8;i++) { P2=aa; aa=_crol_(aa,-1); delayms(500); } for(i=1;i<=8;i++) { P2=bb; bb=_crol_(bb,1); delayms(500); } } } void delayms(xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } 这里写图片描述

一些比较好的代码

LED闪烁的简单试验

/************************************************************************************** * LED闪烁的简单试验 * * * 连接方法: JP11(P2)和J12用8PIN排线连接起来 * * * ***************************************************************************************/ #include //此文件中定义了51的一些特殊功能寄存器 void delay(unsigned int i); //声明延时函数 main() { while(1){ P2 = 0x00; //置P0口为低电平 delay(600); //调用延时程序 P2 = 0xff; //置P0口为高电平 delay(600); // 调用延时程序 } } /*******延时函数*************/ void delay(unsigned int i) { unsigned char j; for(i; i > 0; i--) //循环 600*255 次 for(j = 255; j > 0; j--); }

二进制加法试验

/******************************************************************************** ; 二进制加法试验 * ; p2口八个灯作二进制加法。理解二进值的计算 * ; 硬件连接:p2口8路指示灯 * ; * ;* 描述: * ; p2口八个灯作二进制加法。理解二进值的计算 * ;* 连接方法: JP11(P2)和J12(LED灯) 用8PIN排线连接起来 * *********************************************************************************/ #include void delay(unsigned int i); //声明延时函数 main() { unsigned char Num = 0xff; while (1) {P2 = Num; delay(1000); //延时函数 Num--; } } /*******延时函数*************/ void delay(unsigned int i) { unsigned char j; for(i; i > 0; i--) for(j = 255; j > 0; j--); }

LED闪烁的简单试验

/************************************************************************************** * LED闪烁的简单试验 * * 延时实现p2口LED流水灯效果 (用循环移位指令) * * 连接方法: JP11(P2)和J12(LED灯) 用8PIN排线连接起来 * * * ***************************************************************************************/ #include //此文件中定义了51的一些特殊功能寄存器 #include void delayms(unsigned char ms) // 延时子程序 { unsigned char i; while(ms--) { for(i = 0; i < 120; i++); } } main() { unsigned char LED; LED = 0xfe; //0xfe = 1111 1110 while(1) { P2 = LED; delayms(250); LED = LED << 1; //循环右移1位,点亮下一个LED "<<"为左移位 if(P2 == 0x00 ) {LED = 0xfe; } // 0xfe = 1111 1110 } }

跑马灯程序

/******************************************************************************* * 描述: 跑马灯程序 * * 连接方法: JP11(P2)和J12(LED灯) 用8PIN排线连接起来 * * * *******************************************************************************/ #include #include /***************************************************************************** * 延时子程序 * * * ******************************************************************************/ void delayms(unsigned char ms) { unsigned char i; while(ms--) { for(i = 0; i < 120; i++); } } /***************************************************************************** * 主程序 * * * ******************************************************************************/ main() { unsigned char LED; LED = 0xfe; P2 = LED; while(1) { delayms(250); LED = _crol_(LED,1); //循环右移1位,点亮下一个LED 此函数位库函数 P2 = LED; } }

LED闪烁的简单试验

/************************************************************************************** * LED闪烁的简单试验 * * * 连接方法: JP11(P2)和J12用8PIN排线连接起来 * * * ***************************************************************************************/ #include //此文件中定义了51的一些特殊功能寄存器 void delay(unsigned int i); //声明延时函数 int num; sbit P2_0= P2^0; main() { TMOD= 0X10; //定时器1的工作方式1 EA= 1; //开启总中断 ET1= 1; //开启定时器中断1 TH1= 0x3c; //高位赋初值 TL1= 0xb0; //低位赋初值 3cb0是15535,则计时为(65535-15535=50000)us,即50ms TR1= 1; //启动定时器 T1 num= 0; while(1) { P2_0= num; } } /*******延时函数*************/ void int_1()interrupt 3 { unsigned char n; TH1= 0x3c; TL1= 0xb0; //3cb0是15535,则计时为(65535-15535=50000)us,即50ms TR1= 1; n++; if(n==10) //0.5s num加1 { num=~num; n= 0; } }

左右跑马灯实验

/******************************************************************************** ;* 跑马灯实验 * ; * ; 延时实现LED流水灯效果 p2口八个灯作跑马灯。采用了寄存器存中间数 * ; 连接方法: JP11(P2)和J12(LED灯) 用8PIN排线连接起来 * ;********************************************************************************/ #include void delay(unsigned int i); //声明延时函数 char LED; main() { unsigned char i; while (1) { LED = 0xfe; for (i = 0 ;i < 8 ; i++) { P2 = LED; delay(500); LED = LED << 1; // 左移 LED = LED | 0x01; // 移位后,后面的位为高电平 if (LED == 0x7f) break; //提前退出 FOR 循环 } for (i = 0 ;i < 8 ; i++) { P2 = LED; delay(500); LED = LED >> 1; // 右移 LED = LED | 0x80; // 移位后,后面的位为高电平 } } } /*******延时函数*************/ void delay(unsigned int i) { unsigned char j; for(i; i > 0; i--) for(j = 255; j > 0; j--); } LED灯实验就到这里,接下来进一步学习……