1.用4个LED灯发光二极管实现至少四种灯光效果

2.可以通过输入按键在几种灯光之间切换

3.可以通过暂停按键停止彩色灯光效果,使小灯全亮,再次按下按键后继续之前的效果

4.增加自动在几种效果间切换功能

原理图很简单,正常的最小系统,加上你需要的LED灯和按键,分别定义他们的引脚就可以了,最后把对应引脚改进程序就搞定。

#include"reg52.h"
#include"intrins.h"#define uchar unsigned char
#define uint unsigned int
#define LED P0sbit KEY0=P2^0;
sbit KEY1=P2^1;
sbit KEY2=P2^2;unsigned char code led_1[4]={0xfe,0xfd,0xfb,0xf7};//,0xef,0xdf,0xbf,0x7f};//定义第一种流水灯状态
unsigned char code led_2[4]={0xf7,0xfb,0xfd,0xfe};//0x7f,0xbf,0xdf,0xef};//,0xf7,0xfb,0xfd,0xfe};//定义第二种流水灯状态
unsigned char code led_3[4]={0xfe,0xf7,0xfd,0xfb};//,0xff};//定义第三种流水灯状态
unsigned char code led_4[4]={0xfd,0xfe,0xfb,0xf7};//,0xff};//定义第四种流水灯状态
unsigned char code led_5[8]={0xfe,0xfd,0xfb,0xf7,0xf7,0xfb,0xfd,0xfe};//,0xff};//定义第五种流水灯状态
unsigned char code led_6[16]={0xfe,0xfd,0xfb,0xf7,0xf7,0xfb,0xfd,0xfe,0xfe,0xf7,0xfd,0xfb,0xfd,0xfe,0xfb,0xf7};
unsigned char code led_8[4]={0xff,0xff,0xff,0xff};unsigned int k,z,d;   //定义四个无符号整型变量void delayms(uint ms)  //延时
{uint i,j;for(i=ms ; i>0 ; i--)for(j=110 ; j>0 ; j--);
}
void key0()
{if(KEY0 == 0){delayms(10);if(KEY0== 0){k++;delayms(10);if(k>5)k = 1;}}
}
void key1()
{if(KEY1 == 0){  delayms(10);if(KEY1 == 0){d++;delayms(10);if(d>2)d = 1;}}
}
void main()
{uchar mode=0;uchar key_flag=0; while(!key_flag){if(!KEY0){_nop_();if(!KEY0){key_flag=1;mode=1;key0();while(!KEY0);}}if(!KEY1){_nop_();//单周期指令,对于一个12M的晶体振荡器,延迟时间是1uSif(!KEY1){key_flag=1;mode=2;key1();while(!KEY1);}
}if(!KEY2){_nop_();if(!KEY2){key_flag=1;mode=3;while(!KEY2);}}}if (mode == 1)//按键1控制流水灯 {k = 1;    //初始化为开机第一种流水灯状态while(1){switch(k){case 1:   //第一种流水灯状态for(z=0 ; z<4 ; z++){LED = led_1[z];delayms(500);key0();if(KEY0 == 0)break;}delayms(500);break;case 2:   //第二种流水灯状态for(z=0 ; z<4 ; z++){LED = led_2[z];delayms(500);key0();if(KEY0 == 0)break;}delayms(500);break;    case 3:   //第三种流水灯状态for(z=0 ; z<4 ; z++){LED = led_3[z];delayms(500);key0();if(KEY0 == 0)break;}delayms(500);break;case 4:   //第四种流水灯状态for(z=0 ; z<4 ; z++){LED = led_4[z];delayms(500);key0();if(KEY0 == 0)break;}delayms(500);break;case 5:   //第四种流水灯状态for(z=0 ; z<8 ; z++){LED = led_5[z];delayms(500);key0();if(KEY0 == 0)break;}delayms(500);break;}}}else if (mode == 2)//按键2控制流水灯{d = 1;while(1){switch(d){case 1:for(z=0 ; z<4 ; z++){LED = 0xf0;delayms(500);key1();if(KEY1 == 0)break;}break;case 2:for(z=0 ;z <4 ; z++){ LED = led_1[z];delayms(500);key1();if(KEY1 == 0)break;}delayms(500);break;} }
}else if (mode == 3)//按键3控制流水灯{while(1){for(z=0 ; z<16 ; z++){LED = led_6[z];delayms(500);if(KEY2 == 0)break;}}}
}

基于51单片机《按键控制流水灯》相关推荐

  1. 51单片机按键控制流水灯

    1.按键的使用 <1>独立按键的原理图 按键所对应的引脚为P3的0.1.2.3引脚口,并且这里总共有四个独立按键,它们公共的一段都接到了GND电源的负极.这样我们就知道按键上电的默认电平为 ...

  2. 基于51单片机的花样流水灯设计

    文章目录 一.前言 二.模块介绍及原理说明 三.硬件连接 四.程序说明 五.效果演示 六.代码链接 一.前言 花样流水灯就是让LED灯按照一定规律进行各种变化,流水灯在生活中也随处可见,例如在建筑物的 ...

  3. 基于51单片机的花样流水灯设计(源码+仿真+设计报告)

    资料编号:113 采用51单片机的IO控制多个LED灯,实现多种模式的流水风,全套资料齐全:具体功能请看下方演示视频 113-基于51单片机的花样流水灯设计(源码+仿真+设计报告) 单片机最小系统介绍 ...

  4. Proteus:单片机按键控制流水灯方向

    题目概述: 单片机:按键控制流水灯方向. 编程: #include <reg51.h> #include<intrins.h> #define uchar unsigned c ...

  5. 基于51单片机的特殊流水灯——中间向两边流动

    这是在学校嵌入式应用协会中开学考核的一道题目,具体如下:按下独立按键K1设置led流水灯,从中间向两边流动,后8个流水灯同时进行闪烁,并使用独立按键K2控制流水灯2级变速. 我对题目的理解比较简单粗暴 ...

  6. 基于51单片机的八位流水灯(三种形式)

    写一下寒假做的51小项目. 基本项目 基于AT89C51的流水灯:流水灯共八个,可以实现交替闪烁,一起闪烁,左右流水灯等效果. 模式一:按动key1,实现1,3,5,7和2,4,6,8交替闪烁: 模式 ...

  7. C51单片机按键控制流水灯模式(定时器版本)以及定时器时钟

    上篇文章我们学了关于定时器的三大组成部分及许多寄存器的概念问题,这篇文章我们就要开始讲解实操部分. 首先,我们先来看看本文最后写成的代码: 以上三张是代码的主函数,此外,代码中还需用到的独立按键检测代 ...

  8. 单片机-四个按键控制流水灯

    单片机-四个按键控制流水灯 代码 代码 代码片. #include "reg51.h" sbit key1 = P2 ^ 0; sbit key2 = P2 ^ 1; sbit k ...

  9. AVR单片机实践--ATmega16按键控制流水灯

    一.实验目的 1.掌握AVR单片机开发平台的搭建方法. 2.掌握GPIO的编程方法. 二.实验内容及结果 1.设计程序 自行设计电路,包括流水灯和4个按键,完成"按键控制流水灯样式" ...

  10. 基于51单片机十字路口红绿灯交通灯+紧急模式

    基于51单片机十字路口红绿灯交通灯 +无黄灯+紧急 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J010 目录标题 基于51单片机十字路口红绿灯交 ...

最新文章

  1. Cloud Foundry中warden的网络设计实现——iptable规则配置
  2. Java高新技术第一篇:类加载器详解
  3. Dynpro程序抬头信息要求多值输入的解决方法
  4. jqgrid 摧毁_非个人的交流将摧毁我们
  5. android 如何完全卸载Android Studio
  6. python字母大小写排序_Python中sorted()排序与字母大小写的问题
  7. multi-byte wide-char
  8. 一些学习教程资料等你来拿
  9. 互补输出级采用共集形式是为了使_天津大学胡文平《先进材料》:溶液法制备厘米级高度取向有机晶体阵列,可用于高性能有机场效应晶体管...
  10. 将Array、Dictionary等集合类的序列化和反序列化
  11. 【BZOJ2438】杀人游戏,tarjan缩点+简单的概率计算
  12. oracle 12.2.0.1 使用 active dataguard broker 之二 switchover
  13. Linux中文档与目录的特殊权限
  14. 电脑训练数字键的测试软件,数字按键练习工具
  15. ajax中xhr监听,在firefox插件中监听http响应时确定XHR(ajax)响应
  16. 50. 文件上传篇——文件上传漏洞原理
  17. 真实案例解析OO理论与实践
  18. 线性代数考研笔记(三)
  19. 【C++】string容器
  20. 解决Gradle在IDEA中运行Java17的Junit单元测试程序报错:module java.base does not “opens java.lang“ to unnamed module

热门文章

  1. 串联滞后校正对系统的影响_什么是相位超前校正、滞后校正、滞后超前校正,对系统性能的影响...
  2. 数领科技|solidworks有哪些官方认证可以考取?
  3. ✪认知天性——分析导致记忆和学习失败的因素和过程
  4. 广东网络培训python
  5. Electron桌面项目-解决throw new Error('Electron failed to install correctly, please delete node_modules..
  6. 菜品管理(两表关联进行分页查询)
  7. 160W有桥PFC+LLC电源设计
  8. 我在个人站点里添加了樱花飘落特效
  9. 正弦余弦怎么用计算机计算公式,Excel 的正弦、余弦怎么编制计算公式?
  10. 使用PPStream老板键上班看视频无忧