单片机—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排线连接起来 *
* *
***************************************************************************************/
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排线连接起来 *
*********************************************************************************/
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排线连接起来 *
* *
***************************************************************************************/
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排线连接起来 *
* *
*******************************************************************************/
/*****************************************************************************
* 延时子程序 *
* *
******************************************************************************/
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排线连接起来 *
* *
***************************************************************************************/
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 (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灯实验就到这里,接下来进一步学习……
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮