自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

单眼皮根号三的博客

坚持开源精神,不断分享解决方法

  • 博客(115)
  • 收藏
  • 关注

原创 【C语言冷知识】03_作用域和生命周期,变量的自我修养

文章目录01 - 变量的作用域和生命周期02 - 变量的作用域03 - 变量的生命周期04 - 回答问题01 - 变量的作用域和生命周期  上一文我们从上帝的视角去看变量,看透了变量的本质,是一段有定义、有意义和可变的内存,这仅仅是她的语法和语义,落实到编程中,她是程序员进行创建和调用的,既然能在代码这个大千世界里面担任重要的角色,那么她就一定有属于自己的魅力之处,作用域和生命周期便是她的自我修养。变量的自我修养非常重要,她关乎到代码的设计,老规矩,我们先抛出几个问题:  1、超过了作用域,生命周期

2021-06-01 16:49:58 149

原创 【C语言冷知识】02_从上帝视角看变量

文章目录01 - 变量的语法和语义02 - 变量的语法03 - 变量的语义04 - 变量的语法和语义实践01 - 变量的语法和语义  在上文中提及研究编程语言的语法和语义能让自己更加清晰看透本质,知其然并知其所以然,接下来我们讨论一个C语言完整的编程中必然出现的角色——变量,如果问很多人一个问题,C语言里面变量是什么?回答可能有以下:  1、变量就是带名字的内存,其值可变  2、变量就是变量,程序里面需要定义然后使用的可变的东西  3、变量是拿来储存具体数值的  ……  上面的说法其实都没

2021-05-31 19:29:06 165 2

原创 【C语言冷知识】01_语法和语义,脱离天际的思考

文章目录01-语法和语义是什么02-为什么要知道语法和语义03-怎么做才能摸清语法和语义我们先来哲学三问:语法和语义是什么、为什么要知道语法和语义、怎么做才能摸清语法和语义。01-语法和语义是什么  任何编程语言都离不开语法和语义,或许与哲学相关,可以联想到《易经》的阴和阳,或者计算机二进制中的0和1,理解为从属领域内事物的基准,万物起于始,也终于始,也就是语法和语义是一门语言的基准,语言从此开始,也结束于此,这里是一个闭环的定义,稍微有点抽象。下面引用《计算的本质:深入剖析程序和计算机》内的解释

2021-05-29 16:33:00 235 2

原创 【C语言冷知识】00_目录&&前言

文章目录目录前言目录00-前言&目录01-语法和语义,脱离天际的思考02-从上帝视角看变量03-作用域和生存期,变量的自我修养04-表达式,想说爱你不容易05-让人误解的嵌套06-被循环蒙蔽双眼的递归07-大仇家,数组和指针08-void指针,指针界的贝爷09-函数调用五部曲,打开新世界的大门前言此系列目的有3:第1,分享,让初入门的学生们知道更多或许在课堂上不会提及到的有趣C语言冷知识,或者以另一个角度展示C语言魅力。第2,警示,与初入门的学生立一块警示牌让我们牢

2021-05-29 16:13:12 86

原创 【应用C】C语言实现可配置带回调函数的蜂鸣器驱动

文章目录01 - Buzzer.h02 - Buzzer.c  如果你需要用蜂鸣器制造一段有节奏音乐的需求,则可以移植代码进行使用:代码所占code少于0.5K可移植性高,只需要提供底层PWM_Set()和配置对应音乐节奏节点注意:系统需要存在一个至少为10ms的时钟中断01 - Buzzer.h#ifndef __BUZZER_H__#define __BUZZER_H__#include "MCU.h" typedef enum { beepOff = 0, b

2020-10-28 11:14:01 283

原创 【嵌入式底层知识修炼】按键和LED共用IO口的分时复用扫描方法

文章目录01 - PCB原理图例程02 - 分时复用的注意项和设计2.1 - 注意项2.2 - 设计03 - 代码实现只要我跑的速度够快,寂寞就追不上我只要Key和Led切换速度够快,人眼就看不出来————小白  如果你存在按键Key和显示Led共用同一个IO时,需要分时复用的需求,则可以移植代码进行使用:代码所占code少于0.5K线程安全,中断安全可移植性高,配置容易注意:系统需要存在一个至少为1ms的时钟中断01 - PCB原理图例程  举2个Key和Led共用IO口的

2020-10-17 11:08:56 3977 3

原创 【应用C】C语言实现基于实验法的定频波轮洗衣机模糊称重计算及处理

目录01 - 定频波轮洗衣机模糊称重原理及离散性1.1 - 模糊称重原理1.2 - 模糊称重离散性02 - 实验法进行模糊称重03 - C语言实现01 - 定频波轮洗衣机模糊称重原理及离散性1.1 - 模糊称重原理  定频波轮式洗衣机对桶内衣物的称重中,因为设计及成本的考虑,并没有像电子秤这样直接根据物体压力情况进行重力计算的元器件,采用的是电机反电动势(磁生电)通过激励源产生特定频率的正弦波进行的,具体过程为:#mermaid-svg-YCyk8bBzdEDClKcv .label{font-f

2020-10-16 17:38:47 523

原创 【project】51/52单片机闹钟日历(+源代码)

第一次接触单片机,买了整套模块练练动手能力,存档并分享源代码。文章目录01-硬件篇02-软件篇03-测试篇01-硬件篇  需要的是日历、闹钟和温度,因此材料清单如下:名称型号用途单片机AT89S52主控芯片温度传感器DS18B20温度检测,作高低温预警显示屏LCD1602显示日历和温度,设置时钟界面时钟/计时器DS1302产生世纪年月日时分秒信息  除此之外还有一些硬设施比如蜂鸣器、电池、按键、稳压器等。  但是当时第一次接触单片.

2020-07-29 16:55:27 735 1

原创 【RTX51 Tiny高级】14-修改默认产生时间片的定时器T0为其它定时器

01 - 修改默认定时器T0的场合  为什么要修改RTX Tiny的默认定时器T0,具有以下2个场合:  1、T0已经有用途。在本来已经完成的系统下移植RTX Tiny,本来的系统定时器T0已经有比较复杂的用途,因此不适合使用T0作为Tiny的定时器。  2、对时基要求高。51系列的T0都不具备自动重载功能,意味着定时器的时基需要消耗掉装值的时间,如果时基是us级别,那么这个操作不能被接受,因此需要改为其它具有自动重载功能的定时器(比如T2)。02 - 修改的办法  以修改为T2自动重载为例子,需

2020-06-07 16:25:57 1368 1

原创 【应用C】C语言实现基于中断方式的旋转编码器方向识别(编码器有空闲状态)

文章目录01 - 编码器旋转波形02 - 编程思路03 - 源代码  编码器类型是有空闲状态,当没有旋转的时候,AB相都为高电平,而且当旋转旋钮后无动作,AB相会恢复到高电平,所以方向的一个方向的完整波形为(假设A相先,B相后):A相高电平 — A相低电平— 持续低电平 — A相高电平B相高电平 ----------B相低电平 — 持续低电平 — B相高电平  然后看一下编程识别方向的...

2020-04-18 19:20:50 1037

原创 【应用C】C语言实现基于中断方式的旋转编码器方向识别(编码器没有空闲状态)

文章目录01 - 编码器旋转波形02 - 编程思路03 - 源代码  编码器类型:方向依靠AB两相的电平变化前后顺序而定,编码器没有所谓的空闲状态,先看编程识别方向的串口输出演示视频: 编码器(无空闲状态)编程识别方向的串口输出演示 01 - 编码器旋转波形  这种编码本...

2020-04-18 19:19:03 907

原创 【毕业设计】总结、展望及参考文献

基于区块链的传感器数据保护系统的设计与实现

2020-03-08 20:17:11 1548

原创 【毕业设计】第五章 系统测试与分析

基于区块链的传感器数据保护系统的设计与实现

2020-03-08 20:13:48 2370

原创 【毕业设计】第四章 传感器数据保护系统的实现

基于区块链的传感器数据保护系统的设计与实现

2020-03-08 19:54:52 351

原创 【毕业设计】第三章 系统总体设计

基于区块链的传感器数据保护系统的设计与实现

2020-03-08 19:41:59 1299

原创 【毕业设计】第二章 相关技术简介

基于区块链的传感器数据保护系统的设计与实现

2020-03-08 19:20:06 1562

原创 【毕业设计】第一章 绪论

基于区块链的传感器数据保护系统的设计与实现 摘要   物联网作为万物相连的框架体系,其位于感知层的传感器是所有应用数据信息的来源,在传感器采样数据属于敏感而非隐私的场合例如公共环境数据检测、医疗卫生信息检测和食物质量数据检测等,此类传感器采样数据存在因为部门机构或个人的业绩考核等原因而被人为篡改的情况,最终将会导致公示数据与实际不符,出现欺诈监督者和使用者的情况。  基于上述情况,...

2020-03-08 17:02:05 593

原创 【嵌入式底层知识修炼】基于通用消抖算法,拓展通用非阻塞Key按键识别算法

文章目录01 - 通用消抖算法02 - Key按键识别需求03 - 拓展通用Key按键算法04 - 实际使用方法与测试数据4.1 - 使用方法4.2 - 测试数据05 - 总结首先学习别人的东西,然后吸收别人的东西,接着应用并改造别人的东西,最后这个东西就属于你自己了————小白  01 - 通用消抖算法  #define DEBOUNCE_TIMES 5uint8_t ...

2020-02-16 01:24:56 778

原创 对lim me → ∞ = you的理解

  在《爱情公寓5》第32集第46分15秒的时候,诸葛大力说几句台词:当我作为自变量趋向于正无穷时,得到的函数值,就是你。————诸葛大力  随后本集结束,屏幕出现一条公式:lim me→∞=youlim \ me\to \infty =you lim me→∞=you  这条公式是对应诸葛大力所表达的爱意,作为一个理科学霸,把爱藏在公式里,前人...

2020-02-14 23:28:12 11463

原创 【RTX51 Tiny初级】12_解决多重调用问题(MULTPLE CALL TOSEGMENT)

01 - 多种调用MULTIPLE CALL TO SEGMENT  使用RTX51 Tiny系统,Keil编译出现Warning:MULTIPLE CALL TO SEGMENT的时候,说明一个不可重入的函数Fun同时被2个或以上的任务调用,可能出现重入的情况,比如:02 - 解决办法  在Keil的51编译器中,因为资源限制,函数都是不可重入的,并不是所有的函数被2个或以上的任务调用...

2019-12-23 19:54:32 1123 1

原创 【RTX51 Tiny初级】11_os_wait和os_switch_task区别和使用场合

文章目录01 - os_send_signal()和os_set_ready()的区02 - 使用场合03 - 总结01 - os_send_signal()和os_set_ready()的区  os_wait()用于等待某个信号,os_switch_task()用于协助调度,相同点和不同点如下:  相同点:正常情况下都能发生上下文切换,也就是成功执行API后task都会停止当前执行,由r...

2019-12-23 19:43:35 1937

原创 如何打包Qt程序为exe安装包(免费的打包软件)【转载】

文章目录01 - 目的和说明02 - 简化教程此文为转载文章,文章原地址:https://blog.csdn.net/ecourse/article/details/8070140801 - 目的和说明  目的:一个Qt的桌面程序,打包为exe安装包,传输到别的电脑上进行使用,不需要传输整个zip压缩运行包。  说明:版本为Qt5.6.1,开源版本,一定要开源版本,否则将有法律责任。0...

2019-10-11 10:21:21 421

原创 如何设置Qt程序软件的语言翻译(Qt自带翻译软件)

文章目录01 - 目的和说明02 - 过程步骤03 - 链接分享01 - 目的和说明  目的:可以由用户通过互斥按钮选择界面显示语言,中文或英文(如需要其它语言,则需要稍作修改)。  说明:版本为Qt5.6.1,用两个互斥选择按钮进行语言的选择(如需要其它的选择方法,则需要稍作修改)。02 - 过程步骤  以下用工程名为App,界面如下的一个Qt工程进行演示:  1、工程文件pro...

2019-10-11 10:13:11 1273

原创 【嵌入式底层知识修炼】高性能的ADC一阶滞后滤波算法

文章目录01 - 一阶滞后滤波算法简介02 - 硬件低通滤波器03 - 稳定滤波的原理04 - 实际应用与变形05 - 滤波效果展示06 - 高性能的表现07 - 总结越有魅力的事物,往往存在一种“反差”,即其存在两个相互关联的特性,但是各自表现得十分不同————小白  一阶滞后滤波又称作RC低通滤波、一阶滤波、一阶惯性滤波、一阶低通滤波等,下文统一称为一阶滞后滤波。01 - 一阶...

2019-10-06 16:19:54 3695

原创 【RTX51 Tiny初级】10_os_send_signal()和os_set_ready()的区别和使用场合

文章目录01 - os_send_signal()和os_set_ready()的区02 - 总结01 - os_send_signal()和os_set_ready()的区  假设Task_A调用set_ready() / send_signal(),对象是Task_B,Task_A --> Task_B,从双方的角度看:  1、对于Task_B进入ready:set_ready(...

2019-10-04 12:42:48 1379

原创 【RTX51 Tiny初级】09_K_TMO与K_IVL的区别和使用场合

文章目录01 - K_TMO与K_IVL的区别02 - 总结01 - K_TMO与K_IVL的区别  调用os_wait() / os_wait2()指定K_TMO / K_IVL参数都能让任务进入waiting状态,然后等待一段时间后恢复到ready状态,K_TMO和K_IVl的区别有:  1、计算的起点:K_TMO是以当前调用wait / wait2的时间为起点,K_IVL是以上一次任...

2019-10-04 12:31:45 1656 3

原创 【RTX51 Tiny入门】08_Conf_tny.A51配置文件

文章目录01 - Conf_tny.A5102 - 关注的配置03 - 总结01 - Conf_tny.A51  Conf_tny.A51是RTX51 Tiny的OS配置文件,每一个RTOS都会有配置文件,让开发者自定义调度算法、时基等,方便内核的剪裁,打开C:\Keil_v5\C51\RtxTiny2\Examples\Ex1下的Conf_tny.A51文件,一般只关心2个内容,一个是IN...

2019-09-29 20:16:58 1653

原创 如何用WinHTTrack离线保存网站及网站内的链接(断网后依然可浏览)

文章目录01 - 目的及说明02 - 免费下载WinHTTrack03 - 使用WinHTTrack04 - 过程可能出现的错误05 - 演示01 - 目的及说明  目的: 把网站搬到本地,不需要网络进行浏览。访问一些不稳定的官网,比如编程中常用的在线API一般都是外国英文版的,这些网站十分不稳定,访问速度会很慢,因此想保存整个网页及内容(包含内部链接)到本地,访问速度加快,即使断网也能照常...

2019-09-29 19:53:31 4819

原创 【RTX51 Tiny入门】07_使用RTX51 Tiny

文章目录01 - Keil中使用RTX51 Tiny02 - 设计一个流水灯系统03 - 分割任务04 - 实现系统05 - 总结01 - Keil中使用RTX51 Tiny  下载正版Keil并购买PK51 license后就可以使用RTX51 Tiny,在上一篇中其实已经提及如何开启一个RTX51 Tiny项目,但是上篇只是粗略介绍,需要一篇详细的过程。在使用RTX51 Tiny之前需要...

2019-09-21 19:53:08 1116

原创 【RTX51 Tiny入门】06_查看RTX51 Tiny官方例程

文章目录01 - RTX51 Tiny官方例程02 - 分析RTX_EX1例程2.1 - 怎样在一个项目中使用RTX51 Tiny2.2 - 怎样定义一个RTX51 Tiny任务的2.3 - 怎样配置调度器算法为时间片调度03 - 总结01 - RTX51 Tiny官方例程  初步搭建RTX51 Tiny,不必从0开始构建,官网已经提供了4个例程,如果Keil的安装路径是默认的,那么例程的地...

2019-08-31 16:46:46 1276 2

原创 【嵌入式底层知识修炼】软件捕获PWM获取周期和占空比(+源代码)

文章目录01 - 软件捕获PWM思路02 - 核心源码03 - 软件捕获PWM测试结果04 - 源码链接05 - 总结遇到问题的时候,自己研究一段时间后仍不能解决,就要及早提问,少钻牛角尖————小白  相比软件模拟PWM而言,软件捕获PWM则十分不稳定,因为需要大量的计算过程,这些过程消耗的时间可能会拖延处理捕获点的到达,导致出现捕获点丢失的情况,除非能够保证数据运算在两个捕获点间...

2019-08-11 09:20:29 834

原创 【嵌入式底层知识修炼】软件模拟周期占空比可调的PWM(+源代码)

文章目录01 - 软件模拟思路02 - 核心源码03 - 软件模拟结果04 - 源码链接05 - 总结任何事情都不应满足只会使用,而是要求懂得原理。————小白  需要软件模拟PWM的理由,一般是硬件PWM的IO端口不够用,因为软件模拟PWM不稳定,准确性也比较差,所以在硬件PWM可用的情况下是不会使用软件模拟的,但无论怎样,软件模拟的作用也很大,可以作为测试用例、通用PWM、替补方...

2019-08-09 13:00:05 1109

原创 【RTX51 Tiny入门】05_API函数

文章目录01 - API分类02 - API 列表03 - 总结01 - API分类  RTX51 Tiny的OS API只有13个,官网或者Keil的【Help】中可以查看到:  按照用途,可以把这些API分为若干类:创建删除:os_create_task、os_delete_task通讯:isr/os_send_signal、os_clear_signal、os_wait/w...

2019-08-04 10:58:03 1073

原创 【RTX51 Tiny入门】04_任务和调度器

文章目录01 - 任务02 - 调度器03 - 任务状态04 - 总结01 - 任务  RTX51 Tiny中被调度的单位称为任务,它拥有属于自己的资源,能够相对独立地运行,在代码上表现为带关键字_task_和对应数字ID的一个无参数、无返回值的死循环函数,如下:void Task_Name(void) _task_ 0{ while(1) { // do something }...

2019-08-01 21:30:05 1371

原创 【RTX51 Tiny入门】03_内核组成

文章目录01 - 内核02 - 内核的组成03 - 总结01 - 内核  RTX51 Tiny可以分为3部分:RTX kernel、System ISR/Task和User ISR/TaskRTX Kernel,称为微内核,微内核由汇编代码编写,有最基本的任务调度器,提供了基础的任务创建、删除、切换、通信等OS API,可选的任务调度方式有协助调度(os_wait / os_switch...

2019-07-31 20:13:12 936 2

原创 【RTX51 Tiny入门】02_资源占用情况

文章目录01 - 资源占用02 - 简略差异表03 - 总结01 - 资源占用  由于8051及相关系列的资源相当紧张(如只有256bytes的内部RAM),所以有必要知道RTX51 Tiny能够在消耗多少资源的情况下启动,官网有明确的数据,如下图,可以看到使用RTX51 Tiny后各项资源的消耗情况:最多消耗CODE 900字节、DATA 7字节、不需要占用XDATA一个任务需要占堆...

2019-07-28 12:57:03 1211

原创 【RTX51 Tiny入门】01_RTX51 Full & Tiny简介

文章目录01 - RTX51简介02 - RTX51 Full & Tiny简介03 - 消失的RTX Full04 - 总结01 - RTX51简介  RTX51是Keil官方专门针对8051单片机及相关系列而研发的嵌入式多任务实时系统(RTOS),其实很少人知道8051也有操作系统,因为8051的各种资源限制问题,裸机编程是其长处,但需求是万变的,8051也有使用RTOS的场合。...

2019-07-27 08:59:44 2782

原创 【嵌入式底层知识修炼】使用求余(%)进行周期计算的隐藏BUG

文章目录01 - 使用求余%进行周期计算02 - 分析周期计算过程03 - 隐藏的BUG及解决办法04 - 总结每次累积1ms,不需要几天,程序时基就会混乱————小白  嵌入式中必定有一个能够产生程序时基的定时器,由于需要遵守在中断ISR中不能进行过多操作的原则,所以一般只在定时器中进行Counter计数,计数累积某个上限后,设置对应的标志位,然后通知主程序执行相关任务01 -...

2019-07-01 10:45:26 1530 5

原创 【秃头系列】-【本科生毕设论文格式Word】小修改和小问题

文章目录01 - 论文多级标题及正文04 - 总结  上一文:【秃头系列】-【本科生毕设论文格式Word】自动生成参考文献并交叉引用  01 - 论文多级标题及正文04 - 总结  上一文:【秃头系列】-【本科生毕设论文格式Word】自动生成参考文献并交叉引用...

2019-05-22 22:42:22 381

原创 【秃头系列】-【本科生毕设论文格式Word】自动生成参考文献并交叉引用

文章目录01 - 论文多级标题及正文04 - 总结  上一文:【秃头系列】-【本科生毕设论文格式Word】自动生成页面布局  下一文:【秃头系列】-【本科生毕设论文格式Word】当导师规定格式的时候,这样去操作  01 - 论文多级标题及正文04 - 总结  上一文:【秃头系列】-【本科生毕设论文格式Word】自动生成页面布局  下一文:【秃头系列】-【本科生毕设论文格式Wo...

2019-05-22 22:42:18 1070

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除