课程设计题四:LED彩灯控制器设计

要求:

1、至少10个发光管4种花样自动变换,循环往复。

2、彩灯花样变换的快慢节拍可以手动和自动方式控制,手动控制按钮按一次转换一次;自动控制方式每15秒变换一次,1分钟循环一遍。

3、系统复位清零开关。

获取该 程序+protues 的方式:

1、CSDN下载:

https://download.csdn.net/download/qq_38351824/11274657

2、关注微信公众号下载:

     ① 关注微信公众号:Tech云  

     ②

3、可以关注点赞并在下方评论,我给你邮箱发过去。

一、Protues仿真图:

二、程序源码:

因为注释非常的全,这里就不再进行讲解了。

/*******************************************************************************
================================================================================
【平    台】STC89C51平台
【编    写】Sumjess
【E-mail  】1371129880@qq.com
【软件版本】V2.0
【最后更新】2018年09月06日
【相关信息参考下列地址】
【网    站】
  Sumejss博客  https://blog.csdn.net/qq_38351824
  电子发烧友  http://bbs.elecfans.com/zhuti_mcu_1.html
  中国电子网  http://bbs.21ic.com/icfilter-typeid-11-214.html
---------------------------------------------------------------------------------
【dev.env.】MDK4.14及以上版本
【Target  】STC89C51
第一次修订:2019/05/23
第二次修订:2018/05/24
第三次修订:2018/05/26
================================================================================
********************************************************************************/	
#include <reg52.h>	         //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义	变量范围0~255
#define uint  unsigned int	 //无符号整型 宏定义	变量范围0~65535

sbit led0 = P0^0;	  //led定义
sbit led1 = P0^1;	  //led定义
sbit led2 = P0^2;	  //led定义
sbit led3 = P0^3;	  //led定义
sbit led4 = P0^4;	  //led定义
sbit led5 = P0^5;	  //led定义
sbit led6 = P0^6;	  //led定义
sbit led7 = P0^7;	  //led定义
sbit led8 = P2^0;	  //led定义
sbit led9 = P2^1;	  //led定义

sbit key0 = P3^2;	  //定义手动控制按键
sbit key1 = P3^3;	  //定义自动控制按键

uchar x =50;   		  //调节LED闪烁速率
uint js = 0,flag_auto=0;//定义计数15秒,自动变花样标志位

void delayms(uint z)	 //毫秒
{
	uint x,y;
    for(x=z;x>0;x--)
      for(y=110;y>0;y--);   
}

void Timer0_init()		  	    //定时器0初始化
{
	TMOD=0x01;					//设置定时器0为工作方式1(M1M0为01)
	TH0=(65536-45872)/256;		//装初值11.0592M晶振定时50ms数为45872
	TL0=(65536-45872)%256;		
	ET0=1;						//开定时器0中断
	EA=1;						//开总中断
}
 
void timer0() interrupt 1 using 1	//定时器0中断服务函数
{
	TH0=(65536-45872)/256;		//装初值11.0592M晶振定时50ms数为45872
	TL0=(65536-45872)%256;	
	js++;						//叠加20次 是一秒
	if(js==300) 
	{ 
	  js=0;						//清空
	  flag_auto=flag_auto+1;		//产生15s的倒计时
	  if(flag_auto>3)  flag_auto=1;	//限幅,最多4个花样
	 }
}

void LED0();  //花样1
void LED1();  //花样2
void LED2();  //花样3
void LED3();  //花样4

void main()
{
   Timer0_init(); //定时器初始化
   while(1)
   {

    if(key1==0)   //自动控制按键
    {  
      delayms(3); //去除按键抖动
      if(key1==0)
      { 
        while(!key1);     //以上表示按下开始按键
		flag_auto=0;	  //清零
        TR0=1;            //开启定时器
		while(1)
		{
		  if(key0==0)  	  //调节到手动模式
		  {
			  TR0=0;      //关闭定时器
			  js=0;	flag_auto=0;//计数、自动换花样变量清零
			  break;	  //跳出
			}
		  switch(flag_auto)//花样自动变化
		  {
		  case 0:  LED0(); break;
		  case 1:  LED1(); break;
		  case 2:  LED2(); break;
		  case 3:  LED3(); break;
		  }
		  }
      }
    }
    if(key0==0)   //手动控制按键
    {  
      delayms(3); //去除按键抖动
      if(key0==0)
      { 
		while(1)
		{
		  if(key1==0)  			//调节到自动模式
		  {
			  TR0=0;            //关闭定时器
			  js=0;	flag_auto=0;//计数、自动换花样变量清零
			  break;			//跳出
			}
		  if(key0==0)  	++flag_auto;//换花样
		  if(flag_auto>3)  flag_auto=1;	//限幅,最多4个花样
		  switch(flag_auto)	//花样手动变化
		  {
		  case 0:  LED0(); break;
		  case 1:  LED1(); break;
		  case 2:  LED2(); break;
		  case 3:  LED3(); break;
		  }
		  }
		}
     }

     }
  }

void LED0(){
led0 = 1;	  //led赋值
delayms(x);
led1 = 1;	  //led赋值
delayms(x);
led2 = 1;	  //led赋值
delayms(x);
led3 = 1;	  //led赋值
delayms(x);
led4 = 1;	  //led赋值
delayms(x);
led5 = 1;	  //led赋值
delayms(x);
led6 = 1;	  //led赋值
delayms(x);
led7 = 1;	  //led赋值
delayms(x);
led8 = 1;	  //led赋值
delayms(x);
led9 = 1;	  //led赋值
delayms(x);
led0 = 0;	  //led赋值
delayms(x);
led1 = 0;	  //led赋值
delayms(x);
led2 = 0;	  //led赋值
delayms(x);
led3 = 0;	  //led赋值
delayms(x);
led4 = 0;	  //led赋值
delayms(x);
led5 = 0;	  //led赋值
delayms(x);
led6 = 0;	  //led赋值
delayms(x);
led7 = 0;	  //led赋值
delayms(x);
led8 = 0;	  //led赋值
delayms(x);
led9 = 0;	  //led赋值
delayms(x);
	}
void LED1(){
led0 = 1;	  //led赋值
led1 = 1;	  //led赋值
delayms(x);
led2 = 1;	  //led赋值
led3 = 1;	  //led赋值
delayms(x);
led4 = 1;	  //led赋值
led5 = 1;	  //led赋值
delayms(x);
led6 = 1;	  //led赋值
led7 = 1;	  //led赋值
delayms(x);
led8 = 1;	  //led赋值
led9 = 1;	  //led赋值
delayms(x);
led0 = 0;	  //led赋值
led1 = 0;	  //led赋值
delayms(x);
led2 = 0;	  //led赋值
led3 = 0;	  //led赋值
delayms(x);
led4 = 0;	  //led赋值
led5 = 0;	  //led赋值
delayms(x);
led6 = 0;	  //led赋值
led7 = 0;	  //led赋值
delayms(x);
led8 = 0;	  //led赋值
led9 = 0;	  //led赋值
delayms(x);
}
void LED2(){
led0 = 1;	  //led赋值
led1 = 1;	  //led赋值
led2 = 1;	  //led赋值
delayms(x);
led3 = 1;	  //led赋值
led4 = 1;	  //led赋值
led5 = 1;	  //led赋值
delayms(x);
led6 = 1;	  //led赋值
led7 = 1;	  //led赋值
led8 = 1;	  //led赋值		
led9 = 1;	  //led赋值
delayms(x);
led0 = 0;	  //led赋值
led1 = 0;	  //led赋值
led2 = 0;	  //led赋值
delayms(x);
led3 = 0;	  //led赋值
led4 = 0;	  //led赋值
led5 = 0;	  //led赋值
delayms(x);
led6 = 0;	  //led赋值
led7 = 0;	  //led赋值
led8 = 0;	  //led赋值
led9 = 0;	  //led赋值
delayms(x);
}
void LED3(){
led0 = 1;	  //led赋值
delayms(x);
led0 = 0;	  //led赋值
delayms(x);
led1 = 1;	  //led赋值
delayms(x);
led1 = 0;	  //led赋值
delayms(x);
led2 = 1;	  //led赋值
delayms(x);
led2 = 0;	  //led赋值
delayms(x);
led3 = 1;	  //led赋值
delayms(x);
led3 = 0;	  //led赋值
delayms(x);
led4 = 1;	  //led赋值
delayms(x);
led4 = 0;	  //led赋值
delayms(x);
led5 = 1;	  //led赋值
delayms(x);
led5 = 0;	  //led赋值
delayms(x);
led6 = 1;	  //led赋值
delayms(x);
led6 = 0;	  //led赋值
delayms(x);
led7 = 1;	  //led赋值
delayms(x);
led7 = 0;	  //led赋值
delayms(x);
led8 = 1;	  //led赋值
delayms(x);
led8 = 0;	  //led赋值
delayms(x);
led9 = 1;	  //led赋值
delayms(x);
led9 = 0;	  //led赋值
delayms(x);
}

 

目 录 前言 …………………………………………………………………………… 1 第一章 设计要求 …………………………………………………………… 2 1.1 设计及要求 …………………………………………………… 2 第二章 系统组成及工作原理 ……………………………………………… 3 2.1 系统组成框图 ……………………………………………………… 3 2.2 工作原理分析 ……………………………………………………… 3 第三章 电路方案设计 ……………………………………………………… 5 3.1 电路图设计 ………………………………………………………… 5 3.2 方案比较 …………………………………………………………… 5 第章 单元电路设计计算 ……………………………………………… 8 4.1 555时钟脉冲产生电路 …………………………………………… 8 4.2 种码产生电路 …………………………………………………… 9 4.3 彩灯开关电路 ……………………………………………………… 11 4.4 花样输出电路 ……………………………………………………… 13 4.5 各芯片管脚图………………………………………………………… 14 第五章 实验、调试及测试结果分析 ……………………………………… 16 5.1 结果的调试及分析………………………………………………… 16 结论…………………………………………………………………………… 17 参考文献 …………………………………………………………………… 18 附录1 花样彩灯控制器的原理总图 ……………………………………… 19 附录2 元器件清单 ………………………………………………………… 20
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值