![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 69
酱油兑啤酒
这个作者很懒,什么都没留下…
展开
-
CRC原理和C语言实现CRC
因为上面说了最后得出余数的那一次运算是被除数和除数之间的差异,在被除数添加上这个差异后,就不会再有余数了,故而余数为。法则规定,加减不考虑进位,所以加减是一致的,式子中不出现减号,以加号代替,因此可以用二进制的。运算就是数据后面添加冗余位数再与除数的异或运算,在最后的运算中,落下来到被除数上面的肯定是。得到冗余码之后,添加到数据的后面发送给接收方,接收方获得数据后,对同样的除数进行模。运算,将得到的余数添加到要发送的数据后面去(不是相加,是添加)时上次的余数,然后加上这次的数据,一起继续异或。原创 2020-08-25 15:02:16 · 5556 阅读 · 1 评论 -
PID算法
〇、参考文章PID的基本原理PID控制算法的C语言实现一 PID算法原理一、PID的原理这是PID的流程图,PID公式的输出不一定是真正的输出有可能是送给执行器的输入变量比例 P(Proportion)e(t)我们称之为静态误差,e(t) = 预期 - 实际比例环节是对误差做出快速的反应,控制实际向着预期靠近比如,预期50,但是实际上是45,误差为5,那么我们需要往45上面增加5,这个时候比例Kp就是1,但是呢,实际上模拟量的增加是没有办法突变的,比如没有办法使得温度突然的增加5原创 2020-08-10 17:18:27 · 525 阅读 · 0 评论 -
C语言之enum枚举类型变量
enum变量用在将变量转为数字的时候,比如TRUE和FALSE正常的情况下我们是定义为#define TRUE 1#define FALSE 0使用枚举变量可以这么定义enum BOOL{FALSE,TRUE}a; // a是枚举变量,其值只能是0或者1if (a == 1) ;else ;在数据多的情况下,比如是状态机的状态,数据类型的类型定义,使用enum比#define方便1.枚举变量的定义和结构体,联合体的定义类似,但是枚举数据成员以,隔开,最后一个不加逗号enum原创 2020-05-21 14:14:41 · 2085 阅读 · 3 评论 -
ESP8266的使用(二)
以下是方式3WiFi模块STA模式下做客户端设置STA模式的WiFi参数首先你得有一个能够发射wifi的路由器,当然可以用手机发射热点,但是这样你需要一个能接WiFi的笔记本或者是备用的手机串口助手连接上WiFi模块是跟AT一样的操作,不会?移步AT+CWMODE=1 // 设置模式为STAAT+RST // 重启WiFi模块生效AT+CWJAP="WIFI名称...原创 2020-03-30 08:52:37 · 308 阅读 · 0 评论 -
LCD12864显示图片继续踩坑
瞎搞一天,上一篇文章的LCD显示汉字没有什么问题,想继续显示图片,但是发现原来的程序理解上不太好理解,所以改成容易理解原理的程序了可以先跳过程序的阅读,看一下LCD显示的原理:如下图,LCD是宽128*高64个点组成,LCD分上下的半屏上半屏是32个行地址(00H-31H)x 8个列地址(00H-07H)上半屏是32个行地址(00H-31H)x 8个列地址(08H-0FH)列地址会自加...原创 2020-03-20 09:01:03 · 4759 阅读 · 0 评论 -
STM8的0.96寸OLED屏幕使用(二)
声明:本文借鉴了其他博主的文章,包括但不限于OLED的使用-4线SPI驱动SSD1306-0.96寸oled屏-滚动指令介绍 代码是在上面文章和普中代码基础上修改的(不知道为啥,都是一个样的)经过一顿的瞎操作,终于摸索出了一点的苗头,首先MCU使用的是STM8S105K4,OLED使用的是4线的SPI,SPI使用的IO口模拟的方式,其实也很简单下面是代码,注释得很清楚了main.c...原创 2020-03-19 17:39:42 · 2113 阅读 · 4 评论 -
IAR建立STM8工程
关于建立工程的文章参考下面的文章:IAR for STM8系列教程(一)_新建软件工程详细过程其中的几个点:预处理Preprocessor - 添加路径,这个是头文件路径STM8和STM32必须要预编译型号下面的是问题:路径有中文的问题会出现以下的错误,导致一些列的问题关闭源文件再次打开字体变化了如图的√去掉就可以了,因为添加了中文的注释,软件是英文的,字符转换的问题...原创 2020-03-18 15:02:29 · 415 阅读 · 0 评论 -
0.96寸OLED的使用
写在前面,还是先讲一下OLED的点亮原理,当然是指映射的关系,而不是为什么会发光和LCD有什么不一样的。OLED的构造:OLED由128*64个像素组成,64行和128列以此为基础建立一个坐标系如下:OLED的驱动芯片:OLED的核心驱动芯片是SSD1306,单片机与SSD1306通信,SSD1306再驱动OLED点亮对应的OLED像素点。SSD1306内部有一个GDDRAM数...原创 2020-03-16 14:19:12 · 5824 阅读 · 2 评论 -
普中蓝牙模块使用
使用的是HC-06模块HC-06默认的波特率是9600,8位数据为,1位停止位,无校验位在使用串口助手调试的时候,需要勾选自动换行,这里选用的友善串口助手修改蓝牙的AT指令可以查看蓝牙芯片手册,AT指令如果是上电长亮说明是直接进入了一个AT模式和配对模式,可以使用手机搜索到蓝牙模块,配对上,但是手机里面的蓝牙系统是连接不上HC-06的,需要额外下载一个蓝牙串口,在蓝牙串口连接上模块之后,...原创 2020-03-13 16:03:44 · 911 阅读 · 0 评论 -
LCD12864串行驱动程序
#include <reg52.h>#include <stdlib.h>#include <intrins.h>#include <stdio.h> #define uchar unsigned char#define uint unsigned intsbit CS = P2^7;//第4根线 RSsbit SID = P2...转载 2020-03-12 09:45:21 · 1977 阅读 · 1 评论 -
关于UCOS-II的互斥量问题
这里用两张图解释互斥量的作用原创 2020-03-04 15:36:32 · 424 阅读 · 0 评论 -
C语言的宏定义
1.什么是#define#是预编译命令,代表着在执行程序之前是进行一个预处理命令“define”是宏定义命令2.无参数宏定义无参数的宏定义是不带参数的其一般的表达形式为:#define 标识符 字符串比如 #define TRUE 1用TRUE来代替1这是原原本本的代替的,不进行错误检测eg. #define M (a)+(b) S = M*M 结果是S =...原创 2020-05-21 16:16:27 · 156 阅读 · 0 评论