04 2022 档案
摘要:目录 串口介绍 硬件电路 电平标准 常见通讯接口比较 51单片机的UART 串口参数及时序图 串口通信流程图 串口相关寄存器 波特率的计算方法 中断模式以及寄存器的配置 数据显示模式 代码示例(串口与电脑互发数据) 串口介绍 串口是一种应用十分广泛的通讯接口...
阅读全文
摘要:目录 一,LED点阵屏介绍 二,显示原理 三,74HC595以及LED点阵屏 74HC595寄存器的介绍: 74HC595寄存器的使用方法: 74HC595以及LED点阵屏原理图: 四,开发板引脚对应关系 五, 寄存器声明与位声明的方法: 六,代码示例: 一,...
阅读全文
摘要:目录 一,数码管介绍 二,数码管引脚定义 我们首先对单个引脚进行说明: 其次,我们对多个引脚管进行说明: 最后我们来详细说说如何进行位选还有段选 接着是段选 三,数码管段码表 四,数码管驱动方式 五,代码演示 一,数码管介绍 LED数码管:数码管是一种简单、廉...
阅读全文
摘要:目录 一,定时器介绍 二,STC89C52定时器资源 三,定时器框图 四,定时器工作模式 五,中断系统及其流程 六,STC89C52中断资源 七,定时器与中断系统 八,相关寄存器的认识与配置 首先是定时器模式的配置(TMOD) 其次是中断系统的配置: 九,...
阅读全文
摘要:项目场景: keil uVsion5的编译的时代码的字节过大出现 问题描述: * RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT 原因分析: 原因就是你的keil为2048字节代码限制的版本,而你如果写入的...
阅读全文
摘要:先直接举出逗号表达式一般的例题 #include void main(){ int a; printf("%d\n",(a=3*5,a*4,a+5)); printf("%d\n",a);} 对于逗号的使用简单而言: 在C语言中,多个表达式可以用逗号分开,其中...
阅读全文
摘要:本文章是根据我自己期末复习以及题库为大家总结的C语言知识点马虎错误: 1,若定义变量的语句有错误,常见考点有两个: (1)变量的类型(是int型还是double型,在定义前要想好。以及定义函数时定义的函数类型与返回值的类型要一致,虽然不一致时系统会自动转换,但...
阅读全文
摘要:先引入例题: 有typedef关键字的 设有以下说明语句: typedef struct stu { int a; float b; } stutype;则下面叙述...
阅读全文
摘要:#include int x,y,z,n;void p(int *x,int y) { --*x; y++; z=*x+y; n=y;}int main(void) { x=5; //变式为:int x=5,y=2,z=0; y=2; z=0; p(&x,y)...
阅读全文
摘要:代码规范: 代码规范有七大原则:分别表现在空行,空格,成对书写,缩进,对齐,代码行,注释七方面的规范上: 1)空行: 规则一:定义变量后面要空行 规则二:每个函数定义结束后都要空行 规则三:总之,代码之间实现不同的功能就要空行 2) 空格 规则一:关键字之...
阅读全文
摘要:利用指针引用数组元素,比较方便灵活,有不少技巧。在专业人员中常喜欢用一些技巧,以使程序简洁。在看别人写的程序时可能会遇到一些令人混淆的情况,要仔细的分析。 请分析下面几种情况(设p开始时指向数组a的首元素(即p=a)。 ① 分析: p++;* pi; p...
阅读全文
摘要:按作用域来分 全局变量 静态外部变量(仅本文本可以使用) 外部变量(即非静态的外部变量,允许其他文件引用) 局部变量 自动变量,即动态局部变量(离开函数,值就消失) 静态局部变量(...
阅读全文
摘要:先引入一个例题: 以下正确的说法是:在C语言中()。 A.实参和其对应的形参各占用独立的存储单元 B.实参和与其对应的形参共占用一个存储单元 C.只有当实参和与其对应的形参同名时才共占用存储单元 D.形参是虛拟的,不占用存储单元 答案:A 实参和形参是各占独立...
阅读全文
摘要:有时希望函数中的局部变量的值在函数调用结束后不消失而继续保留原值,即其占用的储存单元不释放,在下一次调用此函数时,该变量已经有值(就是上一次函数调用结束时的值)。这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明。通过下面的例子可以了...
阅读全文
摘要:自增(++),自减(--)运算符 谭浩强的书是这样描述的: 自增(++)自减(--)运算符的作用是使变量的值加1或者减1,例如: ++i,--i(在使用i之前,先使i的值加(减)1) i++,--i(在使用i之后,使i的值加(减)1) 粗略的看,++i和i++...
阅读全文
摘要:程序要求如下: 1,求出数字是几位数 2,分别输出每一位数字 3,按逆顺序输出各位数字,如123输出321 #include #include int main(){ int num, gewei, shiwei, baiwei, qianwei, wanwe...
阅读全文
摘要:else与if的匹配方式: if(表达式1) if(表达式2)语句1 else 语句2else if(表达式3)语句3 else 语句4 else与最靠近它的,没有与别的else匹配过的if匹配 所以,我们不能靠对齐的方式来进行判断 例如: if(表...
阅读全文
摘要:void的作用在于: (1) 对函数返回的限定; (2) 对函数参数的限定。 先给一个例子 定义函数 返回值 函数名(参数1,参数2,参数3,.......) {内容} int sum (int a,int b){int c;c=a*b;return ...
阅读全文
摘要:m+=i++(m=m+i=i+1) 是赋值运算符与自增运算符的综合使用,该表达式等于如下2条表达式: m=m+i; i++; 如果表达式换成m+=++i(m=m+i+1=i),则表达式等价于: i++;(i=i+1) m=m+i; //++i是先进行加一运算后...
阅读全文
摘要:对于初学者大概有以下几种情况: A,定义的字符类型与输入函数的类型不一样 B,scanf函数没有加“&”符号 C,计算的数字并没有进行赋值 D,int型数字进行除法时,除数大于被除数 下面来一一讲解: 引入求圆的以及球的一些简单计算: #include #i...
阅读全文
摘要:一、实验原理(如下图) 1、该模块与单片机采用串口通信,手机连接蓝牙模块,通过无线信号发送数据给蓝牙模块,蓝牙模块收到数据后会把...
阅读全文
摘要:一、实验原理 1、舵机转动的原理(如下图所示) 1,根据上图我们可以得知,要想控制舵机转动指定的角度,必须要让它在一定的周期(20...
阅读全文
摘要:命名方式(以28BYJ48步进电机为例) 28BYJ48步进电机的编号 28-----步进电机的有效最大外径是28毫米 B-----表示步进电机 Y-----表示永磁式 J-----表示减速型 48-----表示四相八拍 工作原理 1、五线四相步进电机,不同...
阅读全文
摘要:命名方式(以28BYJ48步进电机为例) 28BYJ48步进电机的编号 28-----步进电机的有效最大外径是28毫米 B-----表示步进电机 Y-----表示永磁式 J-----表示减速型 48-----表示四相八拍 工作原理 1、五线四相步进电机,不同相...
阅读全文
摘要:目录 蜂鸣器介绍 驱动电路 三极管驱动 集成电路驱动 音乐的相关知识 音符与计时器重装载值对应表 将乐谱转换为宏定义的音调谱 实际代码演示: 蜂鸣器介绍 蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号 蜂鸣器按驱动方式可分为...
阅读全文
摘要:MPU6050读取数据步骤: 1,检查MCU(主机)与MPU6050(姿态传感器)是否通信成功 2,设置MPU6050为复位状态,并且100ms延时,确保复位完成 3,唤醒MPU6050,选择PLL为时钟源 4,配置6轴数据全部输出(3轴加速度与3轴陀螺仪) ...
阅读全文
摘要:先说四轴飞行器 四轴飞行器中串级PID控制是由角度环与角速度环一起控制的 可以这么简单的理解: 角度环可以可以保证飞机按期望的角度飞行,单环控制时,具有很好的自稳性。但是打舵的时候跟随性就不够完美。可能会出现滞后,失衡的现象。 角速度环可以使飞机尽可能的快速的...
阅读全文
摘要:基本的闭环控制图如下: 将各个控制单元对应到无人机上,可以做出Pitch角的反馈控制框图: 四轴姿态PID控制 单级控制框图如下: 串级控制框图如下: 主要是在角度控制的基础上,增加了角速度控制。期望姿态角与姿态结算出来的角度...
阅读全文
摘要:偏航角的控制与俯仰角以及翻滚角不同。俯仰角以及翻滚角都是要随着遥控器改变,特别是遥控器归中的时候,就俯仰角以及翻滚角也要归0。但是偏航角最大的区别就是遥控器归中后不需要恢复。 蓝鸟飞行器: 对于Z轴偏航角的控制: 是对接受来的遥控器数据进行分...
阅读全文
摘要:在动态控制中,我们通过调整PID三个参数来获得动力,同时消除振荡,找到对你当前的飞行场景来说更优的手感。 P(Propotional)是比例的简称。 “P”单元控制着控制系统的所有动力,以达到所需的输出。如果“P”单元没有足够的输出,无人机就没有足够的动力来反...
阅读全文
摘要:如果还是不理解这里的PID控制的话,我们来举一个简单的烧水的例子: 基本场景: 烧水的时候,我们设定在温度达到100摄氏度的时候...
阅读全文
摘要:首先我们要搞明白姿态结算在飞控中的位置: 简而言之就是将采集的数据通过算法转换为可以供姿态控制使用的欧拉角,较为精准的数据 转换思路: 在计算的时候我们一般将欧拉角(当然也可以叫做方向角)转换成四元数来计算:飞行的姿态可以用欧拉角描述的方...
阅读全文
摘要:在我们应用的库函数中也确实可以看到有一个结构体定义了这些模式的寄存器该如何配置(这里库函数的版本为v3.50) 下面是GPIO的不同模式对应的电路图: 代码演示: 主函数()(这里出现乱码在keil5中的修改中将editor更改为ANSI即可...
阅读全文
摘要:PID控制系统的基本构架实际就是我们耳熟能详的反馈控制,能根据输出值对输入值进行调整。从而使输入值达到最优的效果。 这里将PID与之进行类比: PID控制思想: 我们在单片机中不可能实现连续的控制(不可能说全部的时间都去进行PID控制,...
阅读全文
摘要:工程架构: 具体步骤: 1,建立工程文件夹,Keil中新建工程,选择型号(这里我们示范的是MD) 2,工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹 Start:定义的内容也是从固件库直接对芯片进行初始化操作,...
阅读全文
摘要:目录 小端分配的方式 C语言中*的功能 数据宽度 传递参数 传递返回值 直接访问物理地址下的数据 访问硬件指定内存下的数据,如设备ID号等 将复杂格式的数据转换为字节,方便通信与存储 指针(Pointer)是C语言的一个重要知识点,其使用灵活、功能强大,是C语...
阅读全文
摘要:目录 首先分为根据要实现的功能来选择硬件和软件: 硬件部分 软件部分 输入部分: 计算部分: 连续计算: 源代码示例: 主函数: 键盘输入: LCD1602显示: 蜂鸣器: 延时函数: 首先分为根据要实现的功能来选择硬件和软件: 首先我们要实现的功能有:多位显...
阅读全文
摘要:目录 有消除按键的机械抖动的原因: 消除抖动的方法有硬件和软件两种方法: 硬件方法 软件方法 键盘的分类: 按键消抖的相关优化: 用while来判断: 用if来判断: 代码示例 有...
阅读全文
摘要:目录 AD/DA介绍 硬件电路模型 硬件电路图 运算放大器 运放电路 AD原理 DA原理 AD/DA性能指标 XPT2046的使用介绍与配置 XPT2046的时序 代码解释 AD/DA介绍 AD(Analog to Digital):模拟-...
阅读全文
摘要:目录 红外遥控简介 硬件电路 基本发送与接收 NEC通信协议 简单的叙述一下代码思路: 遥控建码 51单片机的外部中断 STC89C52的外部中断有两种触发方式: 下降沿触发和低电平触发 外部中断寄存器 代码示例: 主...
阅读全文
摘要:目录 直流电机介绍 电机的驱动电路 PWM介绍 PWM重要参数 PWM的产生方法 代码演示 1,调速电机 2,呼吸灯 直流电机介绍 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反...
阅读全文
摘要:目录 LCD1602显示屏介绍 引脚介绍 内部结构框图 存储器 DDRAM储存器地址 CGRAM与 CGROM的地址 时序介绍 LCD1602快捷指令 LCD1602指令操作流程: 字符、字符串的显示 各种进制的数字显示 在LCD1602上显示十进制...
阅读全文
摘要:目录 DS18B20介绍 DS18B20温度传感器结构图: DS18B20温度传感器操作配置: 单总线介绍 单总线规范 单总线时序结构 初始化: 发送一位:(主机到从机) 接收一位:(从机到主机) 发送一个字节: 接收一个字节: 代码示例: 单线通信函数:...
阅读全文
摘要:目录 AT24C02引脚介绍与使用 AT24C02介绍 I2C通信介绍 I2C通信时序 起始条件与终止条件 发送一个字节(主机发送到从机) 接受一个字节(从机发送到主机) 发送应答与接受应答 I2C数据帧 发送一帧数据(向谁发送什么) 接受一...
阅读全文
摘要:目录 蜂鸣器介绍 驱动电路 三极管驱动 集成电路驱动 音乐的相关知识 音符与计时器重装载值对应表 将乐谱转换为宏定义的音调谱 实际代码演示: 蜂鸣器介绍 蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号 蜂鸣器按驱动方式可分为...
阅读全文
摘要:目录 DS1302介绍 引脚定义与应用电路 内部结构框架图 寄存器定义 时序定义 BCD码 时间设置上的一些问题 代码示例: DS1302介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分...
阅读全文