实现4个按键控制8个LED灯1个数码管程序

2023-05-16

按要求C语言编程,实现4个按键控制8个LED灯1个数码管程序。具体要求如下:
1、按键一,清零作用。无论数码管以前显示何内容,都归零,显示0;
2、按键二,加一作用。数码管显示内容加1,显示到9后,要回0;
3、按键三,减一作用。数码管显示内容减1,显示到0后,要回9;
4、按键四,控制8个LED灯流水灯效果。效果可以自己任意选定,只要用到8个LED等,且8个灯都有有亮灭效果。

5、引脚连接电路图参考课程中提供的电路,调试也可以使用该电路调试。


程序代码如下:

/*********************************************************
	> File Name: Key_Control.c
	> Author: Wenfei6316
	> Mail: 2500873570@qq.com 
	> Created Time: Sat 03 Feb 2018 10:40:21 AM CST
 ********************************************************/

#include"reg52.h"
#define LED P3
#define LED_SMG P0

typedef unsigned char u8;

sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;

u8 smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
u8 led[]={0xaa,0x55,0xc3,0x96,0x00,0xff,0xef,0x7d};

static u8 counter=0;
char num=0;

void delay(void)   //延迟10ms
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}

void display(u8 num)
{
		LED_SMG=smg[num];
}
void key(void)
{
		if(K1==0)
		{
			delay();
			if(K1==0)
			{
				num=0;
				while(!K1);//按键释放
			}
			
		}
		
		if(K2==0)
		{
			delay();
			if(K2==0)
			{
				num++;
				if(num==10)
				{
					num=0;
				}
				while(!K2);//按键释放
			}
		}
		
		if(K3==0)
		{
			delay();
			if(K3==0)
			{
				num--;
				if(num==-1)
				{
					num=9;
				}
				while(!K3);//按键释放
			}
		}
		
		if(K4==0)
		{
			delay();
			if(K4==0)
			{
				counter++;
				if(counter==8)
				{
					counter=1;
				}             //LED显示
				switch(counter)
				{
					case(1):
						LED=led[0];
					  break;
					case(2):
						LED=led[1];
					  break;
					case(3):
					  LED=led[2];
					  break;
					case(4):
						LED=led[3];
					  break;
					case(5):
						LED=led[4];
					  break;
					case(6):
						LED=led[5];
					  break;
					case(7):
						LED=led[6];
					  break;
					case(8):
						LED=led[7];
					  break;
					default:
						break;						
				}
				while(!K4);//按键释放
			}
		}
}

void main()
{
		LED=0x00;
	  display(0);
	  while(1)
		{
			key();
			display(num);
		}
}


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

实现4个按键控制8个LED灯1个数码管程序 的相关文章

  • 这是什么问题main.c(40): error C267: 'led_blink_off': requires ANSI-style prototype

    这是一个编译错误 它表示在 main c 文件的第 40 行发现了一个函数 34 led blink off 34 xff0c 但是这个函数缺少 ANSI 风格的原型 prototype ANSI 风格的原型是一种函数声明的格式 xff0c
  • 无线gprs控制卡服务器,无线LED控制卡/GPRS无线控制卡

    名称 xff1a gprs无线控制卡 型号 xff1a lztd02 控制范围 xff1a 1024 64 xff0c 1024 48 xff0c 1024 32 xff0c 2048 16 xff0c 双色减半 接口类型 xff1a 4个
  • STM32裸机开发(3) — 使用汇编点亮LED灯

    STM32裸机开发 xff08 3 xff09 使用汇编点亮LED灯 一 启动流程 对于STM32F103从flash的启动流程如下 xff1a 首先设置栈 xff1a CPU会从0x08000000读取值 xff0c 用来设置SP 不使用
  • 野火学习笔记(3) —— 使用寄存器点亮 LED 灯

    文章目录 1 GPIO 简介2 GPIO 框图剖析2 1 基本结构分析2 2 GPIO 工作模式 3 实验 xff1a 使用寄存器点亮 LED 灯3 1 硬件连接3 2 启动文件3 3 stm32f10x h 文件3 4 main 文件 1
  • STM32 创建LED工程,点亮LED

    容忍5V电压 FT 61 FIve Tolerate 允许5V 寄存器就是特殊的存储器 上拉输入和下拉输入 如果输入啥都不接 xff0c IO口输入电平极容易受外部电平干扰 xff0c 加上拉电阻就是为了保护输入引脚的电平 为了避免引脚悬空
  • 基于RK3399的LED驱动开发

    1 添加设备树 在设备树 arch arm64 boot dts rockchip rk3399 firefly linux dts 中添加 gpio span class token operator span led span clas
  • 谐振电路应用之LED交替闪烁

    谐振电路主要利用三极管特性 xff0c 让电路持续交替出现高低电平的现象 xff0c 根据这个特点 xff0c 可以制作LED交替闪烁的效果 谐振电路图如下所示 xff1a 根据这个图 xff0c 可以很方便的利用三极管 xff0c 电阻
  • 2、STM32点亮LED灯

    STM32寄存器和库函数点灯 一 寄存器操作1 新建工程 xff0c 新建一个目录存放以后所有的工程stmproject xff0c 在这个目录下新建文件夹寄存器点灯 xff0c 文件名为LED 2 新建文件main c并双击source
  • STM32之按键作为外部中断控制led灯

    基础概念 STM32F4 的每个 IO 都可以作为外部中断的中断输入口 xff0c 这点也是 STM32F4 的强大之处 STM32F407 的中断控制器支持 22 个外部 中断 事件请求 每个中断设有状态位 xff0c 每个中断 事件都有
  • LED高效恒流驱动电源的设计指导书

    参考链接 LED高效恒流驱动电源的设计指导书 LED灯驱动电源设计 LED恒流驱动电路 精 LED恒流驱动电路 led灯驱动电源电路图 led灯的驱动原理电路图方案详解 KIA MOS管 一 LED驱动电源原理 1 由于LED的光特性通常都
  • imx6ull 正点原子设备树适配韦东山的开发板 (一)顺利启动,配置led,button

    设备树在公司经常用到 有时候很多驱动编写也就是替换设备树 所以拿韦老师的板子练手设备树 这次尝试直接拿正点的设备书改成韦老师的板子能用 对比 正点原子的设备树结构图 韦东山的设备树结构图 从因为蓝色的是开发板厂商对开发板自己的优化 所以我们
  • Linux驱动编程篇(四)——LED驱动(二)LED驱动框架

    为应对多种芯片或开发板适配的LED驱动程序 xff0c 同时减少开发流程 xff0c 故需要在APP 驱动程序 硬件三个部分中添加一个部分 xff0c 用于放置各单板LED驱动程序的公共部分 一 LED驱动程序框架的流程图 二 对于公共部分
  • 驱动框架入门之LED-linux驱动开发第4部分-朱有鹏-专题视频课程

    驱动框架入门之LED linux驱动开发第4部分 5199人已学习 课程介绍 本课程是linux驱动开发的第4个课程 xff0c 主要内容是驱动框架的引入 通过led驱动框架和gpiolib的这两个框架的详细解释 xff0c 让大家学习内核
  • 三种常用的LED驱动电源电路图详解

    时间 xff1a 2017 07 10 15 30 43 关键字 xff1a LED电路 led驱动电源 led电源电路图 LED电源有很多种类 xff0c 各类电源的质量 价格差异非常大 xff0c 这也是影响产品质量及价格的重要因素之一
  • 【stm32CubeMX】基于STM32F103C8T6的LED闪烁并用Keil的软件仿真逻辑分析仪功能观察

    stm32CubeMX 基于STM32F103C8T6的LED闪烁并用Keil的软件仿真逻辑分析仪功能观察 一 安装STM32CubeMX二 安装HAL库三 新建项目四 keil仿真调试五 实现六 总结七 参考资料 一 安装STM32Cub
  • 【OK6410裸机程序】点亮LED

    globl start start 硬件相关的设置 Peri port setup ldr r0 61 0x70000000 orr r0 r0 0x13 mcr p15 0 r0 c15 c2 4 64 256M 0x70000000 0
  • 四、stm32-USART串口通讯(重定向、接发通信、控制LED亮灭)

    目录 一 固件库模板二 准备资料三 STM32串口通讯1 STM32的USART 简介2 USART 功能框图2 1 数据寄存器2 2 控制器2 3 发送器2 4 接收器2 5 小数波特率生成 3 校验控制3 1 中断控制 4 USART
  • 51单片机——独立按键

    如图是独立按键的原理图 通电后io口都是高电平 当按下K1 k4后 io口接地 变为低电平 说明当P30 P33为0时 代表我们按下了独立按键 例程1 独立按键控制LED亮灭 include
  • 如何在没有微控制器的情况下用 C++ 连接 LED 灯?

    我想在没有微控制器的情况下点亮 关闭 LED 我希望通过编写 C 程序来控制 LED 但我遇到的问题是把它们连接起来有没有免费的方法 如果相关的话 我正在使用 Windows XP 我有 LED 但没有微控制器 好吧 我找到了一些函数 但它
  • Android 通知 LED 不使用我的颜色

    我正在尝试使用一个通知 该通知也使用我的 S3 上的通知 LED 但由于某种原因 颜色将始终为蓝色 我猜这是默认值 我尝试使用不同的颜色但没有任何变化 其他应用程序 例如 Whatsapp Gmail 和 Facebook 在显示不同颜色的

随机推荐

  • Windows在外远程桌面控制macOS【macOS自带VNC远程】

    文章目录 前言1 测试局域网内远程控制1 1 macOS打开屏幕共享1 2 测试局域网内VNC远程控制 2 测试公网远程控制2 1 macOS安装配置cpolar内网穿透2 2 创建tcp隧道 xff0c 指向5900端口 3 测试公网远程
  • 初学正点原子Ministm32板串口实验

    本章将实现如下功能 xff1a STM32 通过串口和上位机的对话 xff0c STM32 在收到上位机发过来的字符串后 xff0c 原原本本的返回给上位机 本章分为如下几个小节 xff1a 1 STM32串口简介 2 硬件设计 3 软件设
  • Qt网络通信实战(聊天室小项目TCP实现)

    一 UDP与TCP的区别 用一个表格来显示这两者的区别 比较项TCPUDP是否连接面向连接无连接传输是否可靠可靠不可靠流量控制提供不提供工作方式全双工可以是全双工应用场合大量数据少量数据速度慢 快 我们这里采用TCP 当有新的连接出现时就会
  • 常用坐标系及坐标系之间的变换

    坐标系统 xff1a 有哪些坐标系 xff0c 他们之间的变换矩阵是怎样的 xff1f xff08 主要是3个坐标系 3 个角 xff09 地理坐标系 xff08 n系 xff09 坐标系原点On取为飞行器质心 Xn轴向指向北 xff0c
  • ulimit命令用法详解

    ulimit用来限制每个用户可使用的资源 xff0c 如CPU 内存 句柄等 一 用法 ulimit SHacdefilmnpqrstuvx 限制 参数详解 S xff1a 表示软限制 超出设定的值会告警 H xff1a 表示硬限制 xff
  • java的数组反转

    Java中数组反转一般有两个思路 xff0c 第一个是新建一个临时数组 xff0c 把原来的数组内各值倒着给放进去 public class ArrayReverse public static void main String args
  • Ardupilot移植经验分享(1)

    目录 前言背景为什么写这篇文章移植Ardupilot的方法有两种底层适配提取应用层代码两种方法对比 准备阅读源码阅读官方开发者wiki选择编译平台下载编译源代码切换版本的正确方式编译老版本手动下载编译器修改PATH配置配置ubuntu以支持
  • 国产UOS系统之——安装wxPython

    安装依赖库 xff1a sudo apt get install libgtk 3 dev sudo apt get install libcanberra gtk module sudo apt get install pkg confi
  • OpenHarmonyllvm交叉编译工具链编译介绍

    一 工具链基础介绍 1 1 工具链下载 repo init u https gitee com OpenHarmony manifest git b master m llvm toolchain xml repo sync c repo
  • 一键配置Ubuntu的OpenHarmony基础编译环境

    一键配置Ubuntu的OpenHarmony基础编译环境 一 配置前说明 该更新源仅适用于Ubuntu以下系列 Ubuntu18 04 Ubuntu20 04 Ubuntu22 04 强烈推荐Ubuntu20 04 xff0c 本人使用的一
  • 卸载Proteus后再次安装出错解决办法

    相信有人和我一样 xff0c 在卸载Proteus后再次安装时会跳过下图这一步 然后安装完了注册时会弹出修改注册 LICENCE失败 xff0c 从而导致破解不成功 xff0c 怎么办呢 xff1f 本人解决方法 xff1a 1 首先正常安
  • STM32cubeMx来对单片机串口1进行初始化

    步骤如下 xff1a 打开STM32CubeMX软件并新建一个工程在Pinout amp Configuration选项卡中选择正确的芯片型号 xff0c 然后在Pinout视图中找到串口1相关的引脚 默认情况下 xff0c 串口1使用PA
  • Keil 头文件源程序代码——Math.h

    MATH H Prototypes for mathematic functions Copyright c 1988 2002 Keil Elektronik GmbH and Keil Software Inc All rights r
  • Keil头文件代码—Absacc

    ABSACC H Direct access to 8051 extended 8051 and NXP 8051MX memory areas Copyright c 1988 2010 Keil Elektronik GmbH and
  • reg52.h中直接定义了P3^4等引脚,但是P1^5引脚没有明确表示出来?

    实际上reg52 h中已经定义了 34 sfr P0 61 0x80 sfr P1 61 0x90 sfr P2 61 0xA0 sfr P3 61 0xB0 34 等引脚的地址 xff0c 如果取P1 5的引脚 xff0c 只需要表示成
  • 关于scanf很多人不知道的小秘密

    今天忽然想到一个问题 xff0c 假如我利用scanf想给变量a输入一个 d的整数 xff0c 结果不小心输入了一个字符串yf或者是123ff后会怎么样呢 xff1f 哈哈 xff0c 自己测试了一下 xff0c 结果发现 xff0c 当你
  • 关于sizeof(*p+1)的那些事

    今天老铁在写程序时发现一个意外 xff0c 在char a 61 1 3 5 7 9 p 61 a 程序求sizeof p 43 1 时遇到一些意外 xff0c 本来以为会是1 xff0c 结果却出意料的是4 xff0c 这就有些尴尬了 x
  • 求解完数

    完数的定义 xff1a 一个数如果恰好等于它的因子之和 xff0c 这个数就称为 完数 例如 xff1a 6 61 1 xff0b 2 xff0b 3 如果需要求解1000或者10000以内的所有完数 xff0c 怎么做呢 xff1f 分析
  • 查找100-200以内素数

    只能被1和其本身整除的数称为素数 xff0c 1不是素数 xff0c 因为简单 xff0c 所以不做解释 xff0c 直接上程序 源代码如下 xff1a Search all prime numbers from 101 to 200 in
  • 实现4个按键控制8个LED灯1个数码管程序

    按要求C语言编程 xff0c 实现4个按键控制8个LED灯1个数码管程序 具体要求如下 xff1a 1 按键一 xff0c 清零作用 无论数码管以前显示何内容 xff0c 都归零 xff0c 显示0 xff1b 2 按键二 xff0c 加一