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

2023-05-16

要求:

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);
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

课程设计题四:LED彩灯控制器设计 的相关文章

  • go get得到的东西不在$GOPATH中

    最近在ubuntu20 04上安装oci image tool xff0c 按照官方文档执行 xff0c 结果第一步就发现go get得到的东西找不到 xff0c 后来查阅了这篇博客 xff0c 发现了原因 xff0c 是因为开了gopro
  • 容器镜像加密-containerd imgcrypt实践

    最近在研究容器镜像加密 xff0c 发现国内对容器镜像这部分的博客好像不太多 xff0c 在看了一些人的博客后 xff0c 跟着他们的步骤进行了containerd imgcrypt的实践 xff0c 期间出现了一些错误 xff0c 决定记
  • ubuntu20.04安装howdy

    howdy是一款用于Linux系统的人脸识别身份验证系统 xff0c 可以看作是Windows中的Windows Hello的替代品 xff0c howdy在安装的过程中会去外网下载一些安装包 xff0c 所以前提条件是有访问外网的手段 h
  • zipimport.ZipImportError: can‘t decompress data; zlib not available

    在Ubuntu16 04上通过pyenv安装python3 6 8时出现以下错误 xff0c 记录一下 ubuntu 64 ubuntu pyenv span class token function install span 3 6 8
  • Ubuntu16.04安装zabbix4.0

    以下教程为Ubuntu16 04安装zabbix4 0 xff0c 需提前自己安装好Mysql数据库 其中第1 7点为主节点安装配置Zabbix server Zabbix agent Web前端 xff0c 第8点不用进行 xff1b 第
  • Ubuntu16.04搭建gitea1.14.1

    以下教程为在Ubuntu16 04上搭建gitea1 14 1 xff0c 同时附上官方教程链接 文章目录 1 数据库准备1 1 登录数据库1 2 创建gitea用户1 3 创建gitea数据库1 4 给gitea用户赋予数据库的权限1 5
  • ubuntu16.04搭建spice-html5用于配合KVM

    文章目录 0 配置需求1 启动spice客户端2 配置websockify3 配置spice html54 浏览器访问 0 配置需求 Firefox或Chrome浏览器 xff0c IE浏览器也可以 xff0c 但是效果不是太好 WebSo
  • python 数据挖掘中的数值计算

    一 环境安装 环境配置 xff1a OS xff1a Red Hat 4 4 7 11 查看命令 xff1a uname a xff1a 电脑以及操作系统的相关信息 cat proc version xff1a 正在运行的内核版本 cat
  • 银河麒麟下libguestfs-tools中virt工具无法使用情况

    银河麒麟下libguestfs tools中virt工具无法使用情况 问题描述 xff1a 在银河麒麟高级服务器版本V10下安装libguestfs tools工具包后 xff0c 使用virt xx等一系列命令都会出现以下错误 xff1a
  • ubuntu16.04搭建containerd

    本博客具体介绍在ubuntu16 04下安装containerd的过程 xff0c 有关ctr的命令都要有root权限才能运行 搭建过程 下载containerd安装包解压containerd安装包到根目录下启动containerd并设置开
  • KVM安装Windows11系列(一)

    本教程系列为KVM安装Windows11 xff0c 会分成两部分 xff0c 第一部分会跳过Windows11的硬件要求TPM和安全启动 xff0c 第二部分会安装TPM模拟器进行模拟 文章目录 软件环境下载Windows11镜像和驱动创
  • 容器技术对比(Docker/LXC/LXD/Multipass)

    DockerLXCLXDMultipass基本介绍为了打破 程序即应用 的观念 xff0c 通过镜像imges将作业系统核心除外 xff0c 运作应用程序所需的系统环境 xff0c 由下而上打包 xff0c 达到应用程序跨平台间的无缝接轨运
  • KVM虚拟机配置静态IP(一):Ubuntu16.04

    该系列文章为制作KVM虚拟机镜像的同时配置静态IP xff0c 为用户直接提供好固定IP xff0c 无需手动配置 系列文章目录 Ubuntu16 04Ubuntu18 04Centos6Centos7 文章目录 系列文章目录软件环境一 安
  • KVM虚拟机配置静态IP(二):Ubuntu18.04

    该系列文章为制作KVM虚拟机镜像的同时配置静态IP xff0c 为用户直接提供好固定IP xff0c 无需手动配置 系列文章目录 Ubuntu16 04Ubuntu18 04Centos6Centos7 文章目录 系列文章目录软件环境一 安
  • KVM虚拟机配置静态IP(三):Centos6

    该系列文章为制作KVM虚拟机镜像的同时配置静态IP xff0c 为用户直接提供好固定IP xff0c 无需手动配置 系列文章目录 Ubuntu16 04Ubuntu18 04Centos6Centos7 文章目录 系列文章目录软件环境一 安
  • KVM虚拟机配置静态IP(四):Centos7

    该系列文章为制作KVM虚拟机镜像的同时配置静态IP xff0c 为用户直接提供好固定IP xff0c 无需手动配置 系列文章目录 Ubuntu16 04Ubuntu18 04Centos6Centos7 文章目录 系列文章目录软件环境一 安
  • KVM下Ubuntu18.04打开设置注销问题

    问题描述 xff1a 在KVM中创建Ubuntu18 04 xff0c 打开系统设置 xff0c 发现直接注销 xff08 不是锁屏 xff0c 因为所有程序都退出 xff09 解决思路 在google上搜索发现大多数都是指向显卡问题 xf
  • cloud-init中NoCloud配置

    本文章主要记录cloud init工具中NoCloud数据源的使用方法 xff0c 可以搭配KVM镜像制作系列文章 xff0c 为用户定制操作系统 文章目录 NoCloud使用方法1 安装并初始化文件2 修改cloud init配置文件3
  • winform界面设计

    来自于以下两个地址 xff0c 为便于查阅 xff0c 所以全复制到了自己的BLOG xff1a http dotnet chinaitlab com VCNET 436373 html http www aspxboy com priva
  • cloud-init离线安装编程环境

    本博客主要介绍通过cloud init工具实现在Ubuntu16 04操作系统和KVM虚拟化技术下实现创建虚拟机同时离线安装编程环境 文章目录 1 准备离线安装包1 xff09 下载软件包2 xff09 创建放置软件包的磁盘3 xff09

随机推荐