精华内容
下载资源
问答
  • 2021-05-07 08:42:50

    function recursion_dir($dir){

    $files = array();

    if($handle = opendir($dir)){

    while(($file = readdir($handle)) !== false){

    if($file != "." && $file != ".."){

    if(is_dir($dir.'/'.$file)){

    $files[iconv('gb2312','UTF-8',$file)] = recursion_dir($dir.'/'.$file);//对中文字符进行转码处理

    }else{

    $files[] = iconv('gb2312','UTF-8',$file);

    }

    }

    }

    }else{

    return false;//打开文件失败

    }

    closedir($handle);//关闭句柄

    return $files;

    }

    $result = recursion_dir("W:/tmp/");

    echo '

    ';var_dump($result);exit;
     

    103)PHP,递归读取目录内容

    知识点总结: 打开某个目录 依次读取目录内文件 如果某个文件为目录 递归对该目录采用打开,读取,若还是目录,继续判断,读取 递归点: 如果子文件为目录,则递归 出口: 如果目录中不存在子目录,则不需要 ...

    php 递归读取目录

    看到很多面试题有这个,今天有机会写了一下. 要注意的是: 在opendir这个函数用完后,要注意closedir,因为安全问题,打开的目录依然存在于内存中,在并发情况下最好关闭,不然容易被破坏. &l ...

    C++ 递归读取目录下所有文件

    windows版本 #include #include #include #include

    python递归读取目录列表

    import os def listdirs(base): for line in os.listdir(base): fullpath = os.path.join(base,line) if os ...

    php递归操作目录 递归对参数转义

    header("Content-type:text/html;charset=utf-8"); //递归读取目录 function reddir($path,$level=0) { ...

    Linux下文件及目录的一些操作(附递归遍历目录源码)

    1.获取当前工作目录 #include 1.char *getcwd(char *buf,size_t size); 2. 3.其中,buf为缓冲区地址,size为给 ...

    【C】——APUE小程序之递归遍历目录

    递归降序遍历目录层次结构,并按文件类型计数. 先介绍相关的函数: #include DIR *opendir(const char *pathname); //打开目录 ...

    C# 递归读取XML菜单数据

    在博客园注册了有4年了,很遗憾至今仍未发表过博客,趁周末有空发表第一篇博客.小生不才,在此献丑了! 最近在研究一些关于C#的一些技术,纵观之前的开发项目的经验,做系统时显示系统菜单的功能总是喜欢把数据 ...

    [linux]解决vsftpd 读取目录列表失败的问题

    使用第三方FTP软件filezilla进行登陆,出现如下错误:状态:    正在连接 192.168.1.6:21...状态:    连接建立,等待欢迎消息...响应:    220 (vsFTPd ...

    随机推荐

    std::cout彩色输出

    Mac OS效果 Windows 效果 想写这个东西其实是因为最近要写个命令行的工具,但是有个问题是什么呢?就是传统的那个黑漆漆的窗口看起来很蛋疼.并且完全看不到重点,于是就想起 来这么一个东西.相对 ...

    Java前辈:学习J2EE流程中的经验和教训

    Java前辈:学习J2EE流程中的经验和教训   在这里我谈谈我在学习j2ee流程,并谈到在此过程中领会的经验和教训.以便后来者少走弯路. Java发展到现在,按应用来分主要分为三大块:J2SE,J2 ...

    uber司机如何注册 uber司机详细注册流程

    注意:本文驾驶证行驶证图片为本人拍摄,请广大网友勿作它用 转载请修改! 详细的介绍注册优步uber司机端步骤; uber对司机的要求: 车辆为本地牌照 车龄在5年以内 裸车价格在10万以上 目 ...

    如何进入MySQL

    C:\Users\电脑ID>D:D:\> cd D:\wamp\wamp64\bin\mysql\mysql5.7.19\binD:\wamp\wamp64\bin\mysql\mysql ...

    3D数学基础(一)Unity坐标系

    Unity引擎时非常成熟的,引擎内部运用了很多的数学知识,他对开发者来说是不可见的,而且他已经封装好的算法也不是很全面.此外,要是使用引擎封装好的算法也要明白其实现的原理. 写过一些代码,也参考了一些 ...

    PHP 在WIN10 下配置

    apache: https://www.apachehaus.com/ php: https://windows.php.net/ https://windows.php.net/ 集成安装配置版:h ...

    [转]HEX文件格式解析

    1.前言 本文主要讲述keil MDK 下STM32编译生成的的HEX镜像文件格式.并说明镜像load地址是如何添加进HEX文件的. 2.keil MDK如何在HEX文件中添加load addr 通过 ...

    Python Socket通信例子

    一.TCP 通信 服务端 #!/usr/bin/env python # -*- coding: utf-8 -*- # server_tcp.py import socket so = socket ...

    汽车为什么选择了CAN总线技术?

    汽车为什么选择了CAN总线技术? 围绕“汽车为什么选择了CAN总线技术?汽车CAN总线技术到底是怎么一回事?采用汽车CAN总线技术有哪些优点?汽车总线的发展趋势”等问题作了一个浅短的介绍: 1. 汽车 ...

    更多相关内容
  • 2019 年(F 题)纸张计数显示装置

    万次阅读 多人点赞 2020-07-23 19:55:08
    文章目录2019 年(F 题)纸张计数显示装置一、任务二、要求1.基本要求2.发挥部分三、说明四、评分标准 一、任务 设计并制作纸张计数显示装置,其组成如图 1 所示。两块平行极板(极板 A、极板 B)分别通过导线 a ...

    2019 年(F 题)纸张计数显示装置

    2019 年全国大学生电子设计竞赛试题 【本科组】

    一、任务

    设计并制作纸张计数显示装置,其组成如图 1 所示。两块平行极板(极板 A、极板 B)分别通过导线 a 和导线 b 连接到测量显示电路,装置可测量并显示置于极板 A 与极板 B 之间的纸张数量。
    在这里插入图片描述

    二、要求

    1.基本要求

    (1) 极板 A 和极板 B 上的金属电极部分均为边长 50mm±1 mm 的正方形,导线 a 和导线 b 长度均为 500mm±5mm。测量显示电路应具有“自校准”功能,即正式测试前,对置于两极板间不同张数的纸张进行测量,以获取测量校准信息。

    (2) 测量显示电路可自检并报告极板 A 和极板 B 电极之间是否短路。

    (3) 测量置于两极板之间 1~10 张不等的给定纸张数。每次在极板间放入被测纸张并固定后,一键启动测量,显示被测纸张数并发出一声蜂鸣。每次测量从按下同一测量启动键到发出蜂鸣的时间不得超过 5 秒钟,在此期间对测量装置不得有任何人工干预。

    2.发挥部分

    (1) 极板、导线均不变,测量置于两极板之间 15~30 张不等的给定纸张数。对测量启动键、显示蜂鸣、测量时间、不得人工干预等有关要求同“基本要求(3)”。

    (2) 极板、导线均不变,测量置于两极板之间 30 张以上的给定纸张数。 对测量启动键、显示蜂鸣、测量时间、不得人工干预等有关要求同“基本要求(3)”。

    (3) 其他。

    三、说明

    (1) 被测纸张一律为 70g 规格的 A4 复印纸,极板 A、B 电极接触被测纸张的具体位置不限。测试时使用测试现场提供的同规格纸张。

    (2) 极板 A、B 可用金属板材制作,也可用双面覆铜板(简称双面板)制 作。双面板的一面加工出边长 50mm±1mm 的正方形覆铜电极板,另一面允许有用于焊接导线 a、b 的过孔焊盘与引线、不允许有覆铜面网。禁止用多层板制作极板。

    (3) 极板 A、B 与导线 a、b(信号线)必须为二线制平行极板结构,每块极板的电极只能连接一根信号线;导线 a、b 的线缆类型与排布方式不限。极板、导线不符合上述要求的不予测试。

    (4) 参赛者自行设计极板与纸张之间的结构,使两极板能压紧或夹紧被测纸张,该结构不得增加电极板面积;极板 A、B 与导线 a、b 部分不得安装或连接元器件、其他传感器或量器,否则不予测试。

    (5) “自校准”应在测试前的作品恢复准备阶段完成,开始测试后不得再进行“自校准”操作。

    (6) 每次开始测量只能按同一个启动键(只能按一次),完成测量时发出蜂鸣音并显示锁定的被测纸张数,无法锁定显示纸张数的不得分。

    四、评分标准

    在这里插入图片描述

    展开全文
  • 关于时间的函数,你成为掌控时间的强者

    千次阅读 多人点赞 2022-04-10 11:21:03
    作为一个曾经长期掌控不了系统时间的初级程序猿,在经过几天的探索以后,心血来潮总结下来分享给小伙伴们。小伙伴们或许会很期待吧,一篇博客如何自己成为掌控时间的强者呢?点开链接以后就知道啦!

    我大概是乏了,横竖都开心不起来,站起身来皱了眉头,这悲伤是没来由的。作为一个曾经长期掌控不了系统时间的初级程序猿,在经过几天的探索以后,心血来潮总结下来分享给小伙伴们。小伙伴们或许会很期待吧,一篇博客如何让自己成为掌控时间的强者呢?多说无益,开始正文!

    目录

    今天是几号?

    time_t 型:日历时间

    time 函数:以日历时间的形式来获取当前时间

    tm 结构体:分解时间(撕裂时间)

    localtime 函数:把日历时间转换成表示本地时间的分解时间

    gmtime 函数:把日历时间转换成UTC分解时间

    asctime 函数:把分解时间转换成字符串

    ctime 函数:把日历时间转换成字符串

    difftime 函数:求时间差

    求星期

    mktime 函数:两极反转

    完结


    今天是几号?

    先来上本篇博客的第一段代码,小伙伴们来学习一下如何获取当前日期及时间:

    //time01
    
    #include <stdio.h>
    #include <time.h>
    
    void put_date(const struct tm* timer)
    {
    	char* wday_name[] = { "日","一","二","三","四","五","六" };
    
    	printf("%4d年%02d月%02d日(%s)%02d时%02d分%02d秒", timer->tm_year + 1900,      //年
    		timer->tm_mon + 1,                  //月
    		timer->tm_mday,                     //日
    		wday_name[timer->tm_wday],          //星期
    		timer->tm_hour,                     //时
    		timer->tm_min,                      //分
    		timer->tm_sec);                     //秒
    }
    
    int main()
    {
    	time_t current;                     //日历时间
    	struct tm* timer;                   //分解时间(结构体)
    
    	time(&current);                     //获取当前时间
    	timer = localtime(&current);        //转换成分解时间(本地时间)
    
    	printf("当前日期和时间是");
    	put_date(timer);
    	printf("。\n");
    
    	return 0;
    }

    time_t 型:日历时间

    time_t 型,又称为日历时间,其实它很像int型和double型一样,能够进行加减乘除运算的算数型。具体等同于哪个类型取决于编程环境(不光决定日历时间的类型,还决定了其具体的值)。使用它需要加上<time.h>头文件定义。在大多数编译环境中把time_t 型等同于int型或long型,以格林尼治标准时间,也就是1970年1月1日0时0分0秒后经过的秒数作为日历时间的具体值。

    time 函数:以日历时间的形式来获取当前时间

    且看下表:

    time
    头文件#include <time.h>
    格式time_t time(time_t *timer);
    功能决定当前的日历时间。未定义该值的表现形式
    返回值用所在编译环境中的最佳逼近返回求出的日历时间。若日历时间无效则返回值(time_t)1,当timer不为空指针时,将返回值赋给timer指向的对象。

    此函数在求出日历时间的基础上,把日历时间存入参数timer指向的对象中,同时返回日历时间。因此我们可以根据不同的用途和个人喜好来选择各种调用方式。

    我们通过运用time(&current); ,把指向变量current的指针作为参数传递给了time函数。

    tm 结构体:分解时间(撕裂时间)

    尝试一下用time_t型来表示时间的我们知道,它所表示的是我们极其不易理解的:

    因此,我们可以使用另外一个表示方法,就是被成为撕裂时间的tm结构体类型。

    我们把tm 结构体拿出来看看:

    struct tm{
        int tm_sec;            //秒(0-61)
        int tm_min;            //分(0-59)
        int tm_hour;           //时(0-23)
        int tm_mday;           //日(0-31)
        int tm_mon;            //从一月开始的月份(0-11)
        int tm_year;           //从1900开始的年份
        int tm_wday;           //星期:星期日-星期六(0-6)
        int tm_yday;           //从1月1日开始的天数(0-365)
    };

    小伙伴们可以通过代码中的注释来理解各个成员表示的值。而当我们在浏览到秒的成员tm_min的值设在0-61,是因为考虑到了”闰秒“

    localtime 函数:把日历时间转换成表示本地时间的分解时间

    localtime 函数(通过tm结构体)用于把日历时间的值转换成分解时间。

    localtime
    头文件#include <time.h>
    格式struct tm*localtime(const time_t *timer);
    功能把timer指向的日历时间转换成用本地时间表示的分解时间
    返回值返回指向转换后的对象的指针

    正如locattime的字面以四所示,转换后得到的是本地时间。我们来看看它的表示图:

     最后我们再来分析一下 time01 程序。

    (1)在main函数中,我们运用了time 函数以time_t 型的日历时间的形式获取当前时间,将其转换成分解时间,即tm 结构体。

    (2)如何再使用 put_date 接受转换后的结构,并用公历纪元显示分解时间;

    (3)最后,在tm_year 桑加上1900,在tm_mon上加上1,由于表示星期的tm_wday从星期日到星期六分别对应0到6,因此可以利用数组wday_name 将其转换后中文字符串”日“,”一“,…”六“并显示出来。

    gmtime 函数:把日历时间转换成UTC分解时间

    只讲本地时间的话可谓太吝啬了,接下来我将给小伙伴们带来协调时间时(即UTC)。

    gmtime 函数是用来执行UTC的函数,且看下表;

    gmtime
    头文件#include <time.h>
    格式struct tm *gmtime(const time_t *timer);
    功能把timer指向的日历时间转换成用协调时间时表示的分解时间
    返回值返回指向转换后的对象的指针

    我们来看看如何运用gmtime函数,代码其实跟 time01 如出一辙:

    //time02
    
    #include <stdio.h>
    #include <time.h>
    
    void put_date(const struct tm* timer)
    {
    	char* wday_name[] = { "日","一","二","三","四","五","六" };
    
    	printf("%4d年%02d月%02d日(%s)%02d时%02d分%02d秒", timer->tm_year + 1900,
    		timer->tm_mon + 1,
    		timer->tm_mday,
    		wday_name[timer->tm_wday],
    		timer->tm_hour,
    		timer->tm_min,
    		timer->tm_sec);
    }
    
    int main()
    {
    	time_t current;
    	struct tm* timer;
    
    	time(&current);
    	timer = gmtime(&current);
    
    	printf("当前日期和时间用UTC表示是");
    	put_date(timer);
    	printf("。\n");
    
    	return 0;
    }

    其实就是把timer = localtime(&current); 改为timer = gmtime(&current); 。

    asctime 函数:把分解时间转换成字符串

    再给小伙伴们分享一个函数,它可以把分解时间转换成字符串,能简单地表示出当前日期和时间,何乐而不为呢?且看下面代码:

    //time03
    
    #include <stdio.h>
    #include <time.h>
    
    int main()
    {
    	time_t current = time(NULL);
    
    	printf("当前日期和时间:%s", asctime(localtime(&current)));
    
    	return 0;
    }

    asctime 函数是把分解时间转换成字符串形式的函数。它生成和返回的字符串从左到右按星期/月/日/时/分/秒/年的顺序排列,用空白字符与冒号”:“隔开

     我们可以看到,星期和月中分别存有其英语单词开头的3个字母(开头的字母是大写字母,而第2个和第3个是小写字母)。我们再来看看它的表:

    asctime
    头文件#include <time.h>
    格式char *asctime(const struct tm *timeptr);
    功能

    把timeptr指向的结构体的分解时间转换成下面这种形式的字符串

    Sun Apr 10 13:13:09:00 2022

    返回值返回指向转换后的对象的指针

    ctime 函数:把日历时间转换成字符串

    使用asctime函数时,我们为了把time_t型的日历时间转换成tm 结构体的分解时间,需要实现调用localtime 函数。这样一来,把日历时间转换成字符串就需要两个步骤了,未免太过于繁琐。ctime 函数就不一样了,只需一步便可!

    //time04
    
    #include <stdio.h>
    #include <time.h>
    
    int main()
    {
    	time_t current = time(NULL);
    
    	printf("当前日期和时间:%s", ctime(&current));
    
    	return 0;
    }

    ctime 表如下:

    ctime
    头文件#include <time.h>
    格式char *ctime(const time_t *timer);
    功能把timer指向的日历时间转换成与asctime函数具有相同字符串形式的本地时间,相当于asctime(localtime(timer))
    返回值返回以分解时间为实际参数的asctime函数返回的指针

    difftime 函数:求时间差

    接下来我讲给你们带来如何利用time函数获取的日历时间来计算处理时间。先上代码:

    //time05
    
    #include <time.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    	int a, b, c, d;
    	int x;
    	time_t start, end;
    
    	srand(time(NULL));
    
    	a = rand() % 100;
    	b = rand() % 100;
    	c = rand() % 100;
    	d = rand() % 100;
    
    	printf("%d+%d+%d+%d等于多少:", a, b, c, d);
    
    	start = time(NULL);
    
    	while (1)
    	{
    		scanf("%d", &x);
    		if (x == a + b + c + d)
    			break;
    		printf("回答错误!!\n请重新输入:");
    	}
    
    	end = time(NULL);
    
    	printf("用时%.0f秒。\n", difftime(end, start));
    
    	return 0;
    }

    printf("用时%.0f秒。\n", difftime(end, start)); 通过调用difftime 函数用来求两个日历时间的差。它的用法极其简单,把两个time_t 型的值作为参数(end-start)给出就行,并以秒为单位的double型数值的形式返回时间差。

    我们再来看看difftime的表:

    difftime
    头文件#include <time.h>
    格式double difftime(time_t time1,time_t time0);
    功能计算两个日历时间的差time1 - time0
    返回值以秒为单位表示求得的时间差,将其作为double 型返回

    求星期

    mktime 函数:两极反转

    前面讲述了如果将日历时间转换成分解时间,现在我再来讲讲如何将本地时间的分解时间转换成日历时间,那就是使用mktime 函数,它的功能与localtime 函数进行的转换正好相反。

    而且,这函数还带来了意外之喜它可以计算并设定结构体的星期和一年中经过的天数的值。利用该功能的话,咱只需设定分解时间的年/月/日并调用mktime 函数,就能求出对应的星期。

    我们来看看它的流程图:

    这可真是两极反转啊!

    最后,用一段华丽的代码了却此博客:

    //time06
    
    #include <time.h>
    #include <stdio.h>
    
    int dayofweek(int year, int month, int day)
    {
    	struct tm t;
    	t.tm_year = year - 1900;
    	t.tm_mon = month - 1;
    	t.tm_mday = day;
    	t.tm_hour = 0;
    	t.tm_min = 0;
    	t.tm_sec = 0;
    	t.tm_isdst = -1;
    
    	if (mktime(&t) == (time_t)-1)
    		return -1;
    	return t.tm_wday;
    }
    
    int main()
    {
    	int y, m, d, w;
    	char* ws[] = { "日","一","二","三","四","五","六" };
    
    	printf("求星期。\n");
    	printf("年:");		scanf("%d", &y);
    	printf("月:");		scanf("%d", &m);
    	printf("日:");		scanf("%d", &d);
    
    	w = dayofweek(y, m, d);
    
    	if (w != -1)
    		printf("这一天是星期%s。\n", ws[w]);
    	else
    		printf("无法求出星期。\n");
    
    	return 0;
    }

    time06 中定义的dayofweek 函数会根据接受的年/月/日这3个值来生成分解时间,然后再调用mktime 函数,之后函数会通过”附赠“的功能直接返回成员函数tm_wday 中设定的值,值为0是星期日……

    此外,mktime函数返回错误时,说明程序有可能求出了错误的星期数值,因此函数dayofweek 会返回 -1

    完结

    感激阅读到这里的你,相信阅读完的你已经成为了掌控时间的强者了吧!精彩并不止于这些,学有余力的小伙伴可以看看下面这些博客,都是有着极多的技巧与干货❤!

    C语言小游戏(一)----猜数游戏_施律.的博客-CSDN博客_c语言猜数游戏次数限制

    《斗破CPP》 第壹章 ---- 初窥CPP_施律.的博客-CSDN博客

    《斗破CPP》 第贰章(上) ---- 初识分支句_施律.的博客-CSDN博客

    如果觉得本篇博客对正在学习编程的你有帮助的话,请给施律.多一点的支持与关注!未来的一段时间里施律.将和小伙伴们一起在编程的道路是越来越远,希望下次的我能为大家奉上更好的博客内容,也希望下次的博客有你

    展开全文
  • Arduino UNO 制作温度显示报警

    万次阅读 多人点赞 2018-09-15 12:22:38
    Arduino UNO 制作温度显示报警 所需要的材料 1.DHT11 温度湿度感应器 2.LCD1602 液晶显示矩阵 3.LCD1602 转接板 4.Arduino UNO ...2. 蜂鸣器1极接7号针脚(可自定义),另一脚接GND, 3. DHT...

    Arduino UNO 制作温度显示报警

    所需要的材料

    1.DHT11 温度湿度感应器
    2.LCD1602 液晶显示矩阵
    3.LCD1602 转接板
    4.Arduino UNO
    5.面包板一块
    6.接线若干
    7.蜂鸣器一个

    线路接法

    这里写图片描述
    说明

    将板上的5V的vcc和GND接到面包板上

    蜂鸣器1极接7号针脚(可自定义),另一只脚接GND,

    DHT11模块,VCC和GND接面包板的正负两极, Data接8号引脚

    LCD1602模块是带IIC转接版的,只有四个输出口,

    引脚说明
    GND —— 地线
    VCC —— 电源(5V or 3.3v 电源不同显示效果有点差别)
    SDA —— I2C 数据线
    SCL —— I2C 时钟线

    接线说明
    LCD1602 i2c模块 Ardunio Uno
    GND <——> GND接地线
    VCC <——> 5V 接电源
    SDA <——> A4
    SCL <——> A5

    我的LCD1602是带I2C的
    这里写图片描述

    这模块是通过LCD1602屏 和 LCD1602 I2C 模块 焊接结合的,可以直接买焊接好的,也可以分开买

    代码

    #include <DHT.h>
    #define DHTPIN 8
    #define DHTTYPE DHT11
    #define BEEPPIN 7
    
    //LingShun lab
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h> //引用I2C库
    
    DHT dht(DHTPIN, DHTTYPE);
    
    //设置LCD1602设备地址,这里的地址是0x3F,一般是0x20,或者0x27,具体看模块手册
    LiquidCrystal_I2C lcd(0x27, 16, 2);
    int warn = 0;
    
    void setup()
    {
        Serial.begin(9600);
        pinMode(BEEPPIN, OUTPUT);
        dht.begin();
    
        lcd.init();                  // 初始化LCD
        lcd.backlight();             //设置LCD背景等亮
    }
    
    
    void loop()
    {
        delay(2000);
    
        float h = dht.readHumidity();
        float t = dht.readTemperature();
    
        if(t > 28 && warn == 0)
        {
            beeWarnning();
        }
        else if(warn == 1)
        {
            stopWarn();
        }
    
        lcd.setCursor(0, 0);
        lcd.print("Humidity:");
        lcd.print(h);
        Serial.println("Humidity:");
        Serial.print(h, DEC);
        lcd.setCursor(0, 1); //将闪烁的光标设置到column 0, line 1 (注释:从0开始数起,line 0是显示第一行,line 1是第二行。)
        lcd.print("Temperature:");
        lcd.print(t);
        Serial.println("Temperature:");
        Serial.print(t, DEC);
    }
    
    void beeWarnning()
    {
        warn = 1;
        for (int i = 200; i <= 800; i++) //用循环的方式将频率从200HZ 增加到800HZ
        {
            tone(7, i);                   //在四号端口输出频率
            delay(5);                     //该频率维持5毫秒
        }
    }
    
    void stopWarn()
    {
        warn = 0;
        noTone(BEEPPIN);
    }
    

    DHT11模块引用库需要另外下载,下载地址:https://github.com/adafruit/DHT-sensor-library.git
    不过这个库缺少一个头文件,您需要另外去下载一下,放到这个代码目录下:Adafruit_Sensor.h
    LCD1602_I2C的库,下载地址:https://github.com/marcoschwartz/LiquidCrystal_I2C.git

    这两个库直接放到arduino的库目录下就可以了,直接在库目录git clone就好了

    当用热源加热感应器的时候 ,温度超过28,蜂鸣器就会发出声响了。

    引用文章
    Arduino 和LCD1602液晶屏 I2C接口实验

    附LCD1602设备地址寻找代码
    把模块按接线方法接好,上传这段代码后,打开端口监视器,就能找到在I2C上的设备地址,大家可以试试哦

    #include <Wire.h>
    void setup()
    {
        Wire.begin();
        Serial.begin(9600);
        Serial.println("\nI2C Scanner");
    }
    void loop()
    {
        byte error, address;
        int nDevices;
        Serial.println("Scanning...");
        nDevices = 0;
        for (address = 1; address < 127; address++ ){
            // The i2c_scanner uses the return value of
            // the Write.endTransmisstion to see if
            // a device did acknowledge to the address.
            Wire.beginTransmission(address);
            error = Wire.endTransmission();
            if (error == 0){
                Serial.print("I2C device found at address 0x");
                if (address < 16)
                Serial.print("0");
                Serial.print(address, HEX);
                Serial.println(" !");
                nDevices++;
            }else if (error == 4){
                Serial.print("Unknow error at address 0x");
                if (address < 16)
                    Serial.print("0");
                Serial.println(address, HEX);
            }
        }
        if (nDevices == 0)
            Serial.println("No I2C devices found\n");
        else
            Serial.println("done\n");
        delay(5000); // wait 5 seconds for next scan
    }
    
    展开全文
  • Github项目地址、设计下载 内含: 电赛论文 程序设计 机械结构设计 硬件电路设计 综合测评相关设计 交互显示设计 设计详细说明 ...纸张计数显示装置Github仓库说明?...纸张计数显示装置基于RT-Thread实时...
  • 《管理的实践》读书心得&摘录

    千次阅读 2021-01-21 17:46:38
    目录 推荐序一(赵曙明) 推荐序二(那国毅) 推荐序三(詹文明) 彼得·德鲁克自序 概论 管理的本质 第1章 管理层的角色 第2章 管理层的职责 第3章 管理层面临的挑战 第一部分 管理企业 第4章 西尔斯公司的故事 ...
  • 从网上大家对于 vue 3.0 的最大的变化,就是 Vue Composition API 的看法来说,两极分化比较严重。一种是认为这种写法实在太优秀了,很好,很喜欢。另外一种则认为变得没有以前那么清晰了,增加了学习成本。 那么我...
  • 如果有需要可以收藏,全部更新完之后,会在本文内加入各个单元翻译的链接 大学英语 综合教程 一到四 课文文章翻译 英译中 所有文章的目录导航为:大学英语 综合教程 一到四 课文文章翻译 英译中 目录导航 导航的...
  • 文章目录 从地图投影折射出的中西方文化差异 前言 地球的形状 路易十四 VS 康熙大帝 古代中国 VS 古代西方 地球坐标系 地图投影 圆柱投影 圆锥投影 方位角投影 参考文献 前言 这几天,因为项目需要,认真地学习...
  • 段码液晶屏点亮思路--以华大单片机为例

    千次阅读 多人点赞 2021-04-12 23:18:43
    目录前言一、什么是段码液晶?二、段码点亮基本原理1.液晶发光的基本原理2.LCD控制器简介三.华大单片机LCD驱动简介1.段码液晶seg-com表2.LCD原理图3.LCD输出配置寄存器4.小结四.代码实现五.效果 前言 提示:点亮...
  • ggplot2地图

    2022-05-25 22:46:59
    这个假设没有严格的保证,并且在某些情况下(例如,两极附近的区域)以这种方式处理经度和纬度的计算会给出错误的答案。出于这个原因,当 sf 包依赖这个近似值时,它会产生警告消息。 6.2.3添加其他geom 尽管geom_sf...
  • find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲...并且将查找到的子目录和文件全部进行显示。 语法 find path -option [ -print ] [ -exec -ok command ] {} \; 参数说明 : find 根...
  • 文章目录 一、层级索引 二、分组聚合 2.1、介绍 2.2、分组操作 2.3、自定义分组 2.4、自定义聚合 三、数据规整 3.1、透视表 3.2、数据合并concat 3.3、数据连接merge 3.4、数据重构stack,unstack 一、层级索引 它是...
  • Redis详细总结笔记

    2022-03-11 09:12:05
    dir Redis工作目录 /usr/local/redis 注意:/var/logs目录需要我们提前创建好 [3]Redis根据指定的配置文件启动 格式 redis-server文件路径 redis.conf文件路径 举例 /usr/local/redis/bin/redis-server /usr/local...
  • 目录任务分析一、道具降落二、得分排名实现过程一、道具降落二、得分排名项目进度 任务分析 一、道具降落 1、设置道具降落条件。 2、设计道具降落参数(方向,效果)。 二、得分排名 1、计算每次得分总分。 2、通过...
  • Redis详解

    2022-01-22 15:29:57
    显示 query/sec 值 11 --csv 以 CSV 格式输出 12 -l(L 的小写字母) 生成循环,永久执行测试 13 -t 仅运行以逗号分隔的测试命令列表。 14 -I(i 的大写字母) Idle 模式。仅打开 N 个 idle 连接并等待。 测试 ...
  • Redis笔记

    2021-05-27 07:14:51
    1.把redis压缩包放到/opt目录下 2.查看是否有gcc文件 gcc --version 3.下载gcc yum install gcc 提示统一输入y 4.解压redis压缩包 tar -zxvf redis-6.2.1.tar.gz 5.进入redis中 cd redis-6.2.1 6.make命令把文件...
  • 本实验中,各端口信号的管脚分配(由于引脚比较多,这里给出了GT9147的控制引脚,详细引脚请参考例程提供的XDC文件)如下表所示: 表 20.3.1 触摸显示实验管脚分配 信号名 方向 管脚 端口说明 电平标准 touch_scl...
  • 文章目录前言陨石成分不均是关键线索“时间隔绝”陨石同位素两极化勾勒太阳系“童年期”的画像 前言 研究人员提出,原行星盘气体的外流像一双“看不见的手”,参与了早期太阳系的塑造,影响了小天体和行星的形成...
  • 说明:参考素材是一张图片,并未指出具体的字体和字号,操作步骤提供了其中一种设置方 式。 步骤4:选中文本框中的文本文字,单击【开始】选项卡下【段落】组中的“居中”按钮。 步骤5:选中文本框控件,单击鼠标...
  • 鸿蒙HarmonyOS应用开发初体验

    万次阅读 多人点赞 2021-04-18 23:50:29
    JS工程结构如下 目录 说明 common 可选,用于存放公共资源文件,如媒体资源、自定义组件和JS文档等 i18n 可选,用于存放多语言的json文件 pages/index/index.hml hml文件定义了页面的布局结构,使用到的组件,以及...
  • Redis的学习 1、Nosql概述 为什么要用Nosql 1、单击MySQL的年代 90年代,一个基本的网站访问量一般不会太大,单个数据库完全足够! ... 思考一下,这种情况下:整个网站的瓶颈是什么?...1、数据量如果太大、一个机器放不下了!...
  • DTMF信号的产生与识别

    2021-05-20 15:27:50
    目 录 一 实验背景一 实验背景 3 3 二 实验目的二 实验目的 3 3 三 实验内容三 ...编译过过程 工程 工程程架架构 编译环构 编译环境境设置设置 2 2 程序运行结果 程序运行结果 图形图形显显示 数据示 数据显显示 ...
  • PythonOpenCV基础篇2线段

    千次阅读 2021-12-09 21:27:48
    也就是说,需要把实例6.2的第9行代码中的最后一个参数20修改为-1,就能够绘制一个实心矩形,关键代码如下: canvas = cv2.rectangle(canvas, (50, 50), (200, 150), (255, 255, 0), -1) # 绘制一个实心矩形 运行...
  • 三、Subversion的架构 图中的一端是保存所有版本数据的Subversion版本库,另一端是Subvesion的客户程序,管理着所有版本数据的本地影射(称为“工作拷贝”),在这两极之间是各种各样的版本库访问(RA)层,某些...
  • 目录 瓦片元数据及分级介绍 比例尺如何计算得到 知道一个点坐标,测算某层级下瓦片行列号 常用的天地图瓦片底图有地图和影像两种,每一种又分别有经纬度投影和球面墨卡托投影两种坐标,请求地址中_c表示经纬度投影,...
  • 前几天无聊浏览了一下,发现阅读量两极化严重,主要集中在“关于BMP(JPG)与DCM格式转换”和“DICOM 通讯协议”,尤其是许久前的第一篇博文DCMTK开源库的学习笔记1:将DCM文件保存成BMP文件或数据流(即数组)。...
  • 技术书是怎么写出来的

    千次阅读 多人点赞 2014-09-15 07:50:44
     我还是要说:总有那么一些时候,总有那么一些事情,会你不计付出与回报,全身心地投入,因为你喜欢这样,因为你愿意。 关于出版  其实这个事儿我不太清楚,总之有编辑流程,需要若干时间,然后返回给作者...
  • Redis常见知识总结这一篇文章就够了

    千次阅读 2022-01-22 23:46:43
    文章目录 一、常用五大数据类型及其数据结构 1.Redis键(key)常见命令操作 2.1 Redis字符串(String) 2.2 Redis列表(List) 2.3 Redis集合(Set) 2.4 Redis哈希(Hash) 2.5 Redis有序集合Zset(sorted set) 2.6 总结 二、...
  • 搜索引擎的检索模型-查询与文档的相关度计算1. 检索模型概述 搜索结果排序时搜索引擎最核心的部分,很大程度度上决定了搜索引擎的质量好坏及用户满意度。实际搜索结果排序的因子有很多,但最主要的两个因素是用户...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 663
精华内容 265
关键字:

怎么让目录只显示两级