51单片机实例5——基于单片机的花样彩灯

基于单片机的花样彩灯

1、设计目的

        (1)4种样式持续循环

        (2)花样1:从上到下依次点亮8位led

        (3)花样2:从下到上依次熄灭8位led

        (4)花样3:从两边向中间依次点亮8位led

        (5)花样4:从中间向两边依次熄灭8位led

2、仿真电路

3、程序设计(C语言)

#include<reg51.h>     //包含单片机寄存器的头文件
#include<math.h>      //包含数学函数的头文件
int mode;   //mode=0,依次点亮led;mode=1,依次熄灭led;mode=2,两边向中间点亮;mode=3,中间向两边熄灭
/****************************************
函数功能:延时
*****************************************/
void delay(int time)          //无返回值,无参数
{
	unsigned int i;         //定义无符号整数,最大取值范围65535
	for(time;time>0;time--)
		for(i=0;i<20000;i++);  //做20000次空循环                  
}
/****************************************
函数功能:花样转换
*****************************************/
void pattern(int model)
{
	int n;
	switch(model)
	{
		case 0:   //花样1
		{
			for(n=0;n<8;n++)
			{
				P3=P3<<1;
				delay(5);   //调用延时函数
			}
			mode=1;
		}
		break;
		case 1:   //花样2
		{
			for(n=0;n<8;n++)
			{
				P3=P3+pow(2,7-n);
				delay(5);   //调用延时函数
			}
			mode=2;
		}
		break;
		case 2:   //花样3
		{
			for(n=0;n<4;n++)
			{
				P3=P3-pow(2,7-n)-pow(2,n);
				delay(5);   //调用延时函数
			}
			mode=3;
		}
		break;
		case 3:   //花样4
		{
			for(n=0;n<4;n++)
			{
				P3=P3+pow(2,4+n)+pow(2,3-n);
				delay(5);   //调用延时函数
			}
			mode=0;
		}
		break;
	}
}
/*******************************************************
函数功能:主函数
********************************************************/
void main()
{
	while(1)       //程序持续运行
	{
			pattern(mode);  //调用花样切换函数
	}
}

  • 10
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LAI-BF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值