【51单片机Task】:led十六进制控制led灯详解、按键控制流水灯、跑马灯等任务

news2025/4/7 15:46:46

 

学习目标:

        学习普中51单片机的按键控制led灯。

电路图:

                    


学习内容:

        LED灯的十六进制怎么算???

        在这给大家算一下:首先先看一下LED模块的电路图!

        

        实物图:

                

可以把    

        D1        D2         D3        D4        D5        D6        D7        D8

看成

        1           1           1           1           1           1           1           1

如:

D1D2D3D4D5D6D7D8
11111111

十六进制1位   对   二进制   四位

则        

 

0123456789ABC
0000000100100011010001010110011110001001101010111100

       下图接上图后:

DEF
110111101111

根据上图可以知道  十六进制  和  二进制  的一一对应。

        根据电路图又知   当   低电平   的时候   led灯点亮   即低电平有效

        在数字电路中     1  代表  高电平    0  代表    低电平

还有一个就是需要知道实物的编码方式:

D1 ——>  D8

所有led灯熄灭    则    111111111     十六进制就是    0xFF

如果我想要   右边第一个led灯亮     111111110 

注:这里要明白   左边 1111   右边1111 

                左边的1111控制的是右边的四个灯

                右边的1111控制的是左边的四个灯

所有想要右边第一个灯亮      则    就是    0x7F

比如      我想要   右边第二个灯亮     1111 1101     就是0xBF  (可以理解为就是反着来)

说明:1101   是从左到右  的    1+2+8  = 11 = B

(本文这样计算  只针对普中51单片机)

由于   上文可知

右边第三个灯亮          1111 1011       0xDF

右边第四个灯亮          1111 0111       0xEF

左边第一个灯亮          0111 1111       0xFE   

说明: 0111  是从左到右  的   2+4+8 = 14 = E

左边第二个灯亮          1011 1111       0xFD

左边第三个灯亮          1101 1111       0xFB

左边第四个灯亮          1110 1111       0xF7

由此    即讲完了   十六进制   控制   P2   亮指定灯     后续又代码   大家也可参考!


 

学习内容:

题目:

        用汇编或C语言实现霓虹灯效果:
        1)开始D1、D2、D3、D4、D5、D6、D7、D8,全灭,
        2)等待按键KEY1按下松开后D4->D3->D2->D1和D5->D6->D7->D8同时间隔约0.2秒逐次点亮后,从D8->D7->D6->D5->D4->D3->D2->D1逐次间隔0.3秒灭掉,循环执行D4->D3->D2->D1和D5->D6->D7->D8同时间隔约0.2秒逐次点亮后,从D8->D7->D6->D5->D4->D3->D2->D1逐次间隔0.3秒灭掉;重复以上现象。
        3)按键再一次按下后:D1->D2->D3->D4和D8->D7->D6->D5同时间隔0.2秒逐次点亮后,从D8->D7->D6->D5->D4->D3->D2->D1逐次间隔0.3秒灭掉;重复以上现象。
4)等按键按下后,分别重复1)2) .... ...

代码如下:

#include <reg51.h>

sbit key1 = P3^1;

#define uint unsigned int
#define uchar unsigned char

void delay(uint z) {
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}


void main()
{
	int i,j,key=1;
	
	while(1)
	{
		if(key1 == 0)
		{
			delay(20);
			if(key1 == 0)
			{
				key +=1;
			}
			if(key == 2)
			{
				for(j=0;j<4;j++)
				{
					P2 = 0xE7;
					delay(200);
					P2 = 0xC3;
					delay(200);
					P2 = 0x81;
					delay(200);
					P2 = 0x00;
					delay(200);
					
				   for(i=0;i<8;i++)
				   {
						P2=~(0x7f>>i);
						delay(300);
				   }			
				}
			}
			if(key == 3)
			{
				for(j=0;j<4;j++)
				{

					P2 = 0x7E;
					delay(200);
					P2 = 0x3C;
					delay(200);
					P2 = 0x18;
					delay(200);
					P2 = 0x00;
					delay(200);				
				   for(i=0;i<8;i++)
				   {
						P2=~(0x7f>>i);
						delay(300);
				   }			
				}		
			}
			
		}	
	}


}


/*
		P2=0XF7;
		delay(200);
		P2=0XF3;
		delay(200);
		P2=0XF1;
		delay(200);
		P2=0XF0;
		delay(200);
	
		P2=0xEF;
		delay(200);
		P2=0xCF;
		delay(200);
		P2=0x8F;
		delay(200);
		P2=0x0F;
		delay(200);

*/

学习内容:

题目 

       用汇编或者c语言实现

        1)初始状态所有灯火。
        2)等按键K3第一次按下松开后D1->D2->D3->D4->D5->u0->L? v0 b0NO 『T
秒亮后,等全亮后,冉从D8->Dr-5.山U流水虹效里掉,重复上面的全亮到全灭重复执行;出现流水灯效果。
        3)按键K3第二次按下松开后出现跑马灯效果
        4)按键再一次按下后,重复2)3)现象。

代码如下:

#include <reg51.h>
#include "intrins.h"

sbit key1 = P3^2;
#define led P2

#define uint unsigned int
#define uchar unsigned char

void delay(uint z) {
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}
void main()
{
	int i,j,key=1,a = 1;

   P2 = 0xFF;
   delay(500);
	while(1)
	{
		if(key1 == 0)
		{
			delay(20);
			if(key1 == 0)
			{
				key +=1;
			}	
			if(key == 2 && a == 1)
			{
			   for(i=0;i<8;i++)
			   {
					P2=0XFE<<i;
					delay(500);
			   }
			   for(i=0;i<8;i++)
			   {
					P2=~(0x7f>>i);
					delay(500);
			   }	
			   a = 2;
			}
			if(key == 3 && a == 2)
			{
				led=~0x01;
				delay(500);	
				for(i=0;i<7;i++)	 
				{									  
					P2=_crol_(P2,1);
					delay(500); 	
				}
				for(i=0;i<7;i++)	
				{
					P2=_cror_(P2,1);
					delay(500);	
				}
				a = 3;
			}
			if(key == 4 && a == 3)
			{
			   for(i=0;i<8;i++)
			   {
					P2=0XFE<<i;
					delay(500);
			   }
			   for(i=0;i<8;i++)
			   {
					P2=~(0x7f>>i);
					delay(500);
			   }	
				led=~0x01;
				delay(500);	
				for(i=0;i<7;i++)	 
				{									  
					P2=_crol_(P2,1);
					delay(500); 	
				}
				for(i=0;i<7;i++)	
				{
					P2=_cror_(P2,1);
					delay(500);	
				}

			   key = 1;a = 1;
			}
			P2 = 0xFF;
			delay(500);
			
		}	
	}
}

天行健,君子以自强不息。人生是一场努力,就算结局是一个烧糊的花卷子,也不要懊悔自己曾经的一番烈火锻炼。人生风景在路过,不在结局。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/414485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#基础复习--枚举

枚举 目录 枚举 设置底层类型和显式值 隐式成员编号 位标志 Flags 特性 枚举是由程序员定义的类型&#xff0c;与类或结构一样 与结构一样&#xff0c;枚举是值类型&#xff0c;因此直接存储他们的数据&#xff0c;而不是分开存储成引用和数据 枚举只是一种类型的成员&#…

C语言实践——通讯录(3)(文件版)

首先感谢上一篇博客的大佬们的点赞&#xff0c;非常感谢&#xff01;&#xff01;&#xff01; 目录 前言 一、需要添加的功能 1.增加保存数据函数——可以保存数据到文件中 主要逻辑&#xff1a; 注意事项&#xff1a; 代码实现&#xff1a; 2.修改初始化函数——新…

ChatGPT全球大封号!数10万企业停摆:第一批玩AI的人,被AI给玩了

观点| Mr.K 主笔| Wendy.L 编辑| Emma来源| 技术领导力(ID&#xff1a;jishulingdaoli)3月31日&#xff0c;Open AI就开始无征兆的进行全球大封号&#xff0c;其中亚洲是重灾区&#xff0c;官方没有给出任何声明&#xff0c;具体原因不得而知。并且暂停了这些地区新账号的注…

IDEA下载数据库驱动失败解决办法

IDEA下载数据库驱动失败解决办法 在使用IDEA连接数据库的时候可能会出现驱动下载失败的情况。我们可以到数据库官网上下载驱动进行本地安装。 下面以Sql Server为例&#xff1a; 打开官网&#xff0c;下载驱动 官网地址&#xff1a;https://www.microsoft.com/zh-cn/sql-se…

如何用WordPress搭建一个属于自己的网站、让你从0-1的保姆级教程

文章目录搭建网站必备前提第一步 拉取对应的lnpm包解压lnpm服务器开放端口号配置nginx安装对应的wordPress包第一步&#xff1a;安装 wordpress 安装包并解压到 /home/wwwroot第二步&#xff1a;登录MySQL&#xff08;密码在前面 部署LNMP 时你设置过&#xff09;&#xff0c;创…

第五章 保护模式进阶,向内核迈进

获取物理内存容量 学习Linux获取内存的方法 通过调用BIOS中断0x15实现&#xff0c;分别是BIOS中断0x15的三个子功能&#xff0c;子功能号要存放到寄存器EAX或AX中&#xff1a; BIOS中断是实模式下的方法&#xff0c;只能进入保护模式前调用。可以在实模式下用这三种方法检测…

医院PACS系统源码,PACS源码,带3D重建PACS系统源码

PACS系统源码&#xff0c;带3D重建PACS源码 专门针对医院工作流程设计的&#xff0c;完全符合医院需要&#xff0c;配置灵活的放射科信息化解决方案。采用标准接口协议&#xff0c;实现预约登记、报告诊断、图像浏览和处理、信息统计等功能。 文末获取联系&#xff01; 功能介…

基于广义benders分解法的综合能源系统优化规划(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

用友U8 cloud,信创云ERP的数智先锋

编辑&#xff1a;阿冒设计&#xff1a;沐由从来未曾有过一个春天&#xff0c;能够像当下这般被如此由衷地期待。经历了漫长的1000多个日日夜夜之后&#xff0c;我们的工作与生活终于回到正轨。自2023年以来&#xff0c;中国市场迎来“开门红”&#xff0c;消费市场加速回暖&…

分类算法性能度量指标

1.简介 为了了解模型的泛化能力&#xff0c;我们需要用某个指标来衡量&#xff0c;这就是性能度量的意义。常用的评估指标有&#xff1a;混淆矩阵(Confuse Matrix)、准确率(Accuracy)、精准率(Precision)和召回率(Recall)、F1-Score、ROC曲线(Receiver Operating Characteristi…

离散数学_九章:关系(1)

关系9.1关系及其性质 1、二元关系 2、集合A上的关系 3、n元素集合 有多少个关系&#xff1f; 4、关系的性质 1. 自反 2. 对称 3. 反对称 4. 传递 5、关系的组合 关系的合成 关系的幂 9.1关系及其性质 1、二元关系 设A和B是集合&#xff0c;一个从 A 到 B 的二元关系是…

Pytorch基础 - 8. scatter() / scatter_() 函数

目录 1. scatter() 定义和参数说明 2. 示例和详细解释 3. scatter() 常见用途 1. scatter() 定义和参数说明 scatter() 或 scatter_() 常用来返回根据index映射关系映射后的新的tensor。其中&#xff0c;scatter() 不会直接修改原来的 Tensor&#xff0c;而 scatter_() 直接…

元宇宙:虚拟仿真技术的全面提升

在当今数字化的世界中&#xff0c;我们经常听到虚拟现实、增强现实、混合现实等技术的名词&#xff0c;这些技术的应用越来越成熟。其中&#xff0c;虚拟仿真技术是一种通过计算机技术来模拟实际场景和对象的过程&#xff0c;它为我们提供了更多的可能性。而最近备受瞩目的元宇…

减震无人船或波浪自适应无人船

最近我的朋友夏先生介绍了一款他们自己正在研发的一款无人减震船&#xff0c;见下图&#xff0c;与以前无人船相比&#xff0c;它增加了悬挂减震系统&#xff08;图中红框内&#xff09;。 现有无人船大多属于中小型船舶&#xff0c;没有完善的减震减摇系统&#xff0c;减震减摇…

MIPI 打怪升级之DBI篇

目录1 Overview2 Display Architectures2.1 Type 1 Display Architecture Block Diagram2.2 Type 2 Display Architecture Block Diagram2.3 Type 3 Display Architecture Block Diagram2.4 Type 4 Display Architecture Block Diagram3 Interface Signal Description3.1 Type …

202306读书笔记|《与诗书在一起》——质而实绮,癯而实腴

《与诗书在一起》作者叶嘉莹&#xff0c;不错的一本书&#xff0c;大多只看了诗&#xff0c;部分读着比较有感觉的看了注释。 很喜欢的节选如下: 苏轼说陶渊明的诗“质而实绮&#xff0c;癯而实腴”&#xff0c;就是看起来它很简单质朴&#xff0c;内里实在是很美丽很丰富。 …

VS2010编译libcurl库并简单使用(c语言)

libcurl是什么&#xff1f; libcurl主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当封装了的sockPHP 支持libcurl&#xff08;允许你用不同的协议连接和沟通不同的服务器&#xff09;。 libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议…

Spring 之依赖注入底层原理

Spring 框架作为 Java 开发中最流行的框架之一&#xff0c;其核心特性之一就是依赖注入&#xff08;Dependency Injection&#xff0c;DI&#xff09;。在Spring中&#xff0c;依赖注入是通过 IOC 容器&#xff08;Inversion of Control&#xff0c;控制反转&#xff09;来实现…

助力研发效能变革,第七届Techo TVP 开发者峰会圆满落下帷幕

引言 在互联网数字企业结束“野蛮扩张”、追求高质量增长的今天&#xff0c;研发效能已然成为企业关注的核心命题。伴随着云原生概念在软件领域的落地生根&#xff0c;云原生正驱动软件应用设计、实现、部署及运维方式的巨变&#xff0c;为研发效能治理带来了新的挑战与机遇&am…

2022国赛31:虚拟化-------安装docker

大赛试题内容: 八、虚拟化(20) 在Windows3安装docker,导入NanoServer镜像。软件包和镜像存放在物理机D:\soft\DockerWindows。创建名称为web的容器,映射虚拟机的80端口到容器的80端口,容器启动后运行cmd命令,保持容器处于运行状态。解答过程: windows docker 安装 1.添…