基于c51的节日彩灯控制器的设计

学完c51(其实是c52,功能上没多大区别),找些课程设计题目做做,看看有无大佬有更好的方法来讨论讨论。

一、设计要求

 制作一个节日彩灯控制器,通过按下不同的按键来控制LED发光二极管(由上到下排列)的点亮规律,在P1.0~P1.3引脚上接有4个按键k0~k3,各按键功能如下;(1)k0:开始,按此键彩灯开始由上向下流动显示。(2)k1:停止,按此键彩灯停止流动显示,所有灯为暗。(3)k2:由上向下,按此键则彩灯由上向下流动显示。(4)k3:由下向上,按此键则彩灯由下向上流动显示。彩灯运行的初始状态是彩灯由上向下流动显示。

二、代码

头文件 fesitival.h

#ifndef _FESTIVALLED_H
#define _FESTIVALLED_H#ifndef uchar
#define uchar unsigned char
#endif#ifndef uint
#define uint unsigned int
#endif#include "reg52.h"
#define GPIO_PORT_LED P2 //定义led输出引脚extern uchar value;  //用来保存按键状态sbit key0 = P3^1;
sbit key1 = P3^0;
sbit key2 = P3^2;
sbit key3 = P3^3; //定义按键引脚,用的板子,4个按键的引脚和题目不一样,但问题不大void delay(uint i);
void keyscan();#endif

主要功能文件

#include "festivalled.h"uchar value;void delay(uint i)
{while(i--);
}void keyscan()//保存按键状态
{if((key0==0)|(key1==0)|(key2==0)|(key3==0)){delay(500); //消抖if((key0==0)|(key1==0)|(key2==0)|(key3==0)){if(key0==0)value=0;else if(key1==0)value=1;else if(key2==0)value=2;else if(key3==0)value=3;}}
}

main函数

#include "reg52.h"
#include "festivalled.h"
#include "intrins.h"uint mark=0; //重置判断标记void main()
{while(1){keyscan();if(value==0){if(mark==0)//当按下key1,所有灯熄灭后,再按下key0时,彩灯运行状态重置{GPIO_PORT_LED=0xfe; //1111 1110mark=1;delay(50000);}else {GPIO_PORT_LED=_crol_(GPIO_PORT_LED,1);delay(50000);}}else if(value==1){P2=0xff;mark=0; //重置标记置零,下一次按key0时重置}else if(value==2){GPIO_PORT_LED=_crol_(GPIO_PORT_LED,1);delay(50000);}else if(value==3){GPIO_PORT_LED=_cror_(GPIO_PORT_LED,1);delay(50000);}}
}

三、说明

(1)这个代码最大的问题是:按键不能及时响应。在led闪烁的延时期间,按下按键,不会立刻响应,所以可能需要稍稍长按按键才会切换状态。
(2)上述的问题感觉可以用外部中断来解决,但是c51只有两个外部中断引脚,所以就没有采用。
(3)欢迎大佬在评论区分享更好的方法

基于c51的节日彩灯控制器的设计相关推荐

  1. 基于VHDL的可变速彩灯控制器的设计

    使用VHDL进行设计,首先应该理解,VHDL语言是一种全方位硬件描述语言,包括系统行为级,寄存器传输级和逻辑门级多个设计层次.应充分利用VHDL"自顶向下"的设计优点以及层次化的设 ...

  2. 单片机C语言节日彩灯,单片机c语言节日彩灯控制器设计.docx

    单片机c语言节日彩灯控制器设计 湖南涉外经济学院课程设计报告课程名称:单片机原理及应用报告题目:节日彩灯控制器的设计学生姓名:所在学院:信息科学与工程学院专业班级:电子信息工程1102班学生学号:指导 ...

  3. 基于单片机节日彩灯控制器系统设计、基于单片机脉搏检测和体温检测设计、基于单片机可燃气体检测及报警系统、基于单片机可调八路抢答器仿真设计-全套设计资料

    1425基于单片机节日彩灯控制器系统设计-protues仿真资料 以单片机为核心,设计一个节日彩灯控制器: l  K1-开始,按此键则灯开始流动(由上而下). l  K2-停止,按此键则停止流动,所有 ...

  4. 单片机节日彩灯实训报告_基于单片机的节日彩灯设计论文课程设计.doc

    基于单片机的节日彩灯设计论文课程设计.doc 辽 宁 工 业 大 学 单片机原理及接口技术课程设计(论文) 题目: 基于单片机的节日彩灯设计 院(系): 专业班级: 学 号: 学生姓名: 指导教师: ...

  5. 彩灯控制器课程设计vhdl_基于VHDL的彩灯控制器设计与实现毕业设计(DOC毕业设计论文)...

    基于VHDL的彩灯控制器设计与实现毕业设计(DOC毕业设计论文) <计算机组成原理>课程设计报告目 录任务书 .2摘 要 .5Abstract .61 引 言 71.1VHDL 技术介绍7 ...

  6. 单片机实验:节日彩灯控制器

    任务 设计8路节日彩灯控制器,要求在Protues中设计接口电路图,并编程实现节日彩灯闪烁方式的控制: 通过P1.0到P1.2来控制3个按键.3个按键分别对应3种彩灯闪烁方式. 彩灯闪烁方式分别为:从 ...

  7. 基于FPGA的CAN总线控制器的设计(下)

    今天给大侠带来基于FPGA的CAN总线控制器的设计,由于篇幅较长,分三篇.今天带来第三篇,下篇,程序的仿真与测试以及总结.话不多说,上货. 导读 CAN 总线(Controller Area Netw ...

  8. 彩灯控制器课程设计vhdl_VHDL花样彩灯控制器的设计

    10 分 得 分 一.实验名称 实验 8 :花样彩灯控制器的设计 二.任务及要求 [基本部分] 5 分 1 .在 QuartusII 平台上,采用文本输入设计方法,通过编写 VHDL 语言程序,设计一 ...

  9. 基于FPGA的CAN总线控制器的设计(上)

    今天给大侠带来基于FPGA的CAN总线控制器的设计,由于篇幅较长,分三篇.今天带来第一篇,上篇,CAN 总线协议解析以及 CAN 通信控制器程序基本框架.话不多说,上货. 导读 CAN 总线(Cont ...

  10. 基于51单片机的霓虹灯控制器的设计

    基于51单片机的霓虹灯控制器的设计 霓虹灯 基于51单片机的霓虹灯控制器的设计 摘要 1引言 1.1设计目的与意义 2 总体设计方案 2.1设计思路 2.1.1设计任务: 2.1.2设计要求: 2.1 ...

最新文章

  1. KITTI IMU 原始100Hz数据 (里面数据有重复)
  2. 什么电线适合在面包板上布线?
  3. linux下载tomcat7命令,linux下安装tomcat7.0
  4. 如何允许非Administrator用户远程登录主机
  5. python卸载后安装不上_[宜配屋]听图阁
  6. [转]bad interpreter:No such file or directory的原因
  7. C++11在加入<thread>头文件后Socket服务器接收不到消息
  8. 计算机主板及其硬件图,[计算机硬件及网络]intel G43主板电路图.pdf
  9. 使用ffmpeg下载m3u8流媒体
  10. 数据结构与算法经典问题解析 Java语言描述pdf
  11. 极化码生成矩阵的构造
  12. ios脱壳工具dumpdecrypted安装和使用教程
  13. IRQL_NOT_LESS_OR_EQUAL蓝屏分析
  14. 读书、学习、工作和生活中收集的20条经典语录:21-40
  15. IKEv2子网之间秘钥重协商
  16. 【BZOJ4316】小C的独立集
  17. 军队文职(数学2+物理)——高等数学 1、函数
  18. Yii框架里的一些zii用法
  19. 史上最全Maven教程(三)
  20. 概述史:五胡十六国过这么乱的历史怎么可能搞得懂?6000字短文帮您整个清清楚楚...

热门文章

  1. 「Python量化基础」时间序列的自相关性与平稳性
  2. NVIDIA CUDA各版本下载链接(包括最新11版本和以往10.2版本)
  3. 王长君:城市交通智能管控20年发展反思
  4. 表白神器java代码_程序员的表白神器代码
  5. MATLAB-二次曲面
  6. Unity SRP自定义渲染管线学习1.1:初步搭建
  7. 毕业季海报设计素材图片大全,送给毕业生们最好的毕业季祝福语文案
  8. python论文降重_论文怕被查重怎么办?你的降重神器来了|简明python教程|python入门|python教程...
  9. 正交试验minitab
  10. python股票查询系统_使用Python查询股票所属行业