自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 2024/5/28 P1247 取火柴游戏

输入k及k个整数n1​n2​⋯nk​,表示有k堆火柴棒,第i堆火柴棒的根数为ni​;接着便是你和计算机取火柴棒的对弈游戏。取的规则如下:每次可以从一堆中取走若干根火柴,也可以一堆全部取走,但不允许跨堆取,也不允许不取。谁取走最后一根火柴为胜利者。k2n1​n2​222→1212→1111→1010→00如果决定A22→2020→00又如k3n1​1n2​2n3​3。

2024-05-28 20:45:14 1674

原创 2024/5/21 PID算法基础理论

补充:实际情况中,如果Kd过大,会产生一种高频率小幅度的震荡,就像在抽搐一样。拿无人机来说,空气对它的轻微扰动,或者系统自身的一点抖动等影响,都会引起d算法的强烈响应,从而产生这种高频率小幅度震荡,这是需要避免的。:只要存在误差,不管误差多小,I输出也会越来越大。I的作用是消除稳态误差,当系统误差接近于0,P的输出会很小,不能继续减小误差,使得误差始终不能减小到0.此时使用I算法让误差值不断累加,并输出累加值。假如系统误差大或者P参数较大,那么P的输出会很大,出现过冲现象。:误差越大,P输出也越大。

2024-05-21 23:31:40 199

原创 2024/5/16 P1416 攻击火星

一群外星人将要攻击火星。火星的地图是一个n个点的无向图。这伙外星人将按照如下方法入侵,先攻击度为0的点(相当于从图中删除掉它),然后是度为1的点,依此类推直到度为n−1的点。所有的点度统计是动态统计的。(一个点删掉后,与之相连的点的点度都会−1外星人攻击度为某个数的点时是同时攻击的。你需要设计这个图的边的方案来使得未被攻击的点最多。注意:你设计的图。

2024-05-16 21:59:31 872

原创 2024/5/1 P1025 [NOIP2001 提高组] 数的划分

将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序)。n7k3,下面三种分法被认为是相同的。115;151;511问有多少种不同的分法。

2024-05-01 00:15:54 492 2

原创 2024/4/25 红外遥控代码

这块如果IR听不懂可以看看那个状态机的相关视频。

2024-04-25 22:55:21 240

原创 2024/4/21 红外遥控器

红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出。发送低电平:红外LED以38KHz频率闪烁发光,接收头输出低电平。因为波形的上升沿下降沿变化很快,需要外部中断进行中断处理。发送高电平:红外LED不亮,接收头输出高电平。空闲状态:红外LED不亮,接收头输出高电平。(可以直接滤掉不需要的波,输出需要的波)STC89C52有4个外部中断。红外LED波长:940nm。通信协议标准:NEC标准。下降沿触发和低电平触发。通信方式:单工,异步。

2024-04-21 20:34:05 135

原创 2024/4/15 AD/DA

AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号AD/DA转换打开了计算机与模拟信号的大门,极大的提高了计算机系统的应用范围,也为模拟信号数字化处理提供了可能AD转换通常有多个输入通道,用多路选择开关连接至AD转换器,以实现AD多路复用的目的,提高硬件利用率AD/DA与单片机数据传送可使用并口(速度快、原理简单),也可使用串口(接线少、使用方便)

2024-04-15 00:19:40 500

原创 2024/4/11 直流电机调速/PWM

直流电机是一种将电能转换为机械能的装置。

2024-04-14 00:27:04 347

原创 2024/4/11 LCD1602

发送指令0x80|AC //设置光标位置(首位为1,表示设置光标,后面是地址)发送指令0x06 //数据读写操作后,光标自动加一,画面不动。发送指令0x38 //八位数据接口,两行显示,5*7点阵。发送指令0x0C //显示开,光标关,闪烁关。发送数据 //发送要显示的字符数据。发送数据 //发送要显示的字符数据。CGRAM+CGROM(字模库)发送指令0x01 //清屏。写数据or指令的时序结构。

2024-04-11 20:56:11 207

原创 2024/4/9 DS18B20温度报警器

【代码】2024/4/9 DS18B20温度报警器。

2024-04-09 20:13:49 106

原创 2024/4/6 DS18B20温度传感器

DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点测温范围:-55°C 到 +125°C通信接口:1-Wire(单总线)其它特征:可形成总线结构、内置温度报警功能、可寄生供电64-BIT ROM:作为器件地址,用于总线通信的寻址SCRATCHPAD(暂存器):用于总线的数据交互EEPROM:用于保存温度触发阈值和配置参数一根通信线:DQ,Q是queue的缩写,DQ表示数据队列。

2024-04-07 13:09:05 492

原创 2024/4/5 AT24C02数据存储+ 秒表(定时器扫描按键数码管)

话不多说,先上代码,讲解在后面。

2024-04-05 22:17:11 704 1

原创 2024/4/5 AT24C02 总线(I²C总线)

将数据位依次放到SDA线上(高位在前),然后拉高SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA,也就是置1)在下面每个设备引出的两条线都设一个开关,开漏输出模式输出1意思就是开关全部断开,也就是电阻无限大,又称高阻态,毫无驱动能力。接收应答:在发送完一个字节之后,主机在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)

2024-04-05 16:23:29 701 1

原创 2024/3/31 蜂鸣器(2)

【代码】2024/3/31 蜂鸣器(2)

2024-03-31 20:28:41 102

原创 2024/3/31 蜂鸣器(1)

不同的音符代表不同的长度。例如四分音符500ms,二分音符1s,全分2s。白键音高对应简谱行的12345678(升高一个八度在上方加一个点,下降一个在下方加一个点),而黑键需要升音和降音符(#,b),例如#1就是1(do)升高半音。高阻态是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样。NPN:相当于用电阻那路的较为微弱的信号,让VCC那路能与GND连通。给R1那路高电平,VCC(实际的驱动)与GND连通。

2024-03-31 12:32:08 211

原创 2024/3/30 DS1302可调时钟

【代码】2024/3/30 DS1302可调时钟。

2024-03-30 12:09:40 113

原创 2024/3/28 DS1302实时时钟

SCLK上升沿数据进入时钟芯片,下降沿数据进入单片机。前8位告诉单片机你是要读出还是写入,然后地址A0-A4就是告诉你要读/写的是哪块儿的数据。RTC(Real Time Clock):实时时钟,是一种集成电路,通常称为时钟芯片。会发现数字由9直接跳到16之类的。原因:BCD码(就那个一个四位一起表示一位数的)使用LCD_ShowHexNum即可解决问题。DS1302的代码,根据时序图为参照。各个模式对应的命令字(16进制)这时候的main如果是这样。

2024-03-28 21:06:00 281

原创 2024/3/24 LED点阵屏

74HC595是串行 寄存器 感觉就是三转八寄存器。先配置74HC595,重新进行位声明。类似矩阵键盘,逐行or逐列扫描。

2024-03-24 16:28:13 200

原创 2024/3/14 定时器时钟

感觉和之前自己写的那个差不太多,只是用了定时器。贴一下代码.

2024-03-14 19:10:03 382

原创 2024/3/10 P1601高精加法

起因是本人在一个为数不多空闲的下午刷题ing,看到了A+B problem。”从而忽略了高精这俩字,然后喜提40分。其中忘了这一步,导致喜提wa。如果没有这步,0+0输出为空。于是开始研究何为高精。

2024-03-10 15:37:42 331

原创 2024/1/30 dfs与bfs

想要了解dfs与bfs,就得了解队列和栈。

2024-02-04 01:34:27 3398 1

原创 2023/12/17 n层正方形

为了方便起见,不妨拿n=3举例,此时第一组数为1,2,3,2,1;此时第二组数的总数为2* n-2,此时最中间的数为n-1(此时最中间的数有两个,但无妨),此时每个 i 对应的数组元素是arr[i-1][i-1+]〕(即arr[i-1][ i ]),同样用m代替。,第n-3行第n-1列) 最中间的数字也是n-1,进一步证明了上面那个公式不合适。这时第一组数中那个公式就可以用了,即第 j 组数的个数为2* n-j,最中间的数为(2* n-j+1)/2 (不妨记为n1),当 i<=n1时,m=i;

2023-12-17 23:36:50 1623

原创 2023/12/17 初始化

【代码】2023/12/17 初始化。

2023-12-17 11:14:54 280

原创 2023/12/12 志愿者信息管理系统

首先这个程序包含的文件一共有如下5个:input.txt,menu.txt,find.txt,insert.txt,out.txtx。其中input.cpp又可以分成三个部分(函数重载),input就是读取文件输入数据所用。然后是output.cpp,它对应数据输出到 文件中。//将链表内容写入文件find.cpp://查找number为no的人员,并返回该结点前一结点便于删除函数调用del.cpp ://从链表中删除number为no的人员,返回链首//插入一名人员至链尾,返回链首。

2023-12-15 21:58:14 836

原创 2023/12/14 折半查找法 BinarySearch

【样例说明】将数列0、10、20、30、50输入到数组中,它们作为数组元素下标分别为0、1、2、3、4,在数组中用折半查找法查找30这个数,首先和数组中的中间元素20比较,30比20大,往右查找,跟此时的中间元素30比较,正好相等就找到了,它在数组中的元素下标是3,经过2次和中间元素比较找到的。【问题描述】编写程序,利用折半查找法从一个升序排列的数列中查找某数是否存在,如果存在则输出该数的下标,否则输出no,输出查找过程中和中间元素比较的次数。

2023-12-14 13:58:31 55

原创 2023/12/10 链表

【代码】2023/12/7 链表。

2023-12-07 13:22:28 397 1

原创 2023/12/5 I/O流

流指针 get 和 put 的值对文本文件(text file)和二进制文件(binary file)的计算方法都是不同的,因为文本模式的文件中某些特殊字符可能被修改。这两个成员函数不用传入参数,返回pos_type 类型的值(根据ANSI-C++ 标准) ,就是一个整数,代表当前get 流指针的位置 (用tellg) 或 put 流指针的位置(用tellp).提示:可将得到的密文文件2.txt拷贝到1.txt文件中,并用原密钥对该文件再次加密,若得到的密文文件与原始文件相同,则说明程序算法正确。

2023-12-05 15:39:17 80

原创 2023/12/5 作用域

函数模板:http://t.csdnimg.cn/TthvE

2023-12-05 14:47:10 18

原创 2023/12/5 函数

调用函数实参用地址值,被调用函数形参用指针,调用时让指针指向实参变量。调用函数实参使用变量名或对象名,被调用函数的形参使用引用,实际传送的是地址值。1.实参形参都用数组:调用函数实参用数组名,被调用函数形参用数组。2.形参用指针,实参用地址值/数组名。3.形参用引用,实参数组名。

2023-12-05 14:31:18 28

原创 2023/12/3 文件操作

提示:可将得到的密文文件2.txt拷贝到1.txt文件中,并用原密钥对该文件再次加密,若得到的密文文件与原始文件相同,则说明程序算法正确。写一个加密程序,对文件1.txt进行加密。它从输入流中读入一个密钥,并将文件密文输出。从标准输入中读入一个密钥对文件1.txt加密,并将文件密文输出到2.txt文件中。从标准输入流中读入一个密钥串,使用其对当前目录下的文件1.txt进行加密。2)明文中字符c的密文为c^key[i];将文件密文输出到文件2.txt。输出密文到2.txt文件中。2.txt文件内容为。

2023-12-03 14:29:25 116

原创 2023/11/29 结构体

输入”xiaoe“,得到90.

2023-11-29 21:30:57 23

原创 2023/11/29 引用

主要用作函数参数和返回值。感觉引用在一定程度上有点像指针。但是它没有空引用,而且改变它是对变量本身进行改变,而指针会使指针变量指向下一个实体的地址,而并非改变所指实体。对引用的操作其实是对其引用变量的操作,它不是变量,不占据储存空间,与被引用的变量有共同储存地址。创建格式:类型 & 引用名 = 变量名。

2023-11-29 20:16:04 29

原创 2023/11/27 整数去重

这个题同样使用桶排序的思想。我们在输入数组的时候把arr[x]递增,然后只有在arr[x]==1时才对x进行输出。然而当我只是把100改成了20000,就正确了。

2023-11-27 14:10:34 24

原创 2023/11/25 直方图(桶排序)

它通过设置一些具有大小顺序的桶,每个桶对应一个数据范围,将数据平均分配到各个桶中;最终按照桶的顺序将所有数据合并。,它可以存储 0−100000−10000 的数,然后我们从 0−100000−10000 输出,如果桶非空,就输出现在循环到的下标,这样输出一定是有序的,因为下标是绝对按照顺序来排列的。如果这个题用普通的做法挺难想的:又要找到最大值,又要给每个值计出现次数。我们不直接存储数,而是把数当成下标,放进一个桶(一般是一个很大的数组)中。需要注意的是,注意桶的数据范围不是n而是输入的数最大为多少。

2023-11-25 19:56:53 44

原创 2023/11/25 查找特定的值(哨兵查找法)

更优的算法:哨兵查找法。核心思想,把arr[n]=x,这样一定能在数组中查找到所需数字。然后如果查找到的下标不是n那就输出这个数,如果是,就输出-1。第二行包含 n 个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过 10000。第一行包含一个正整数 n,表示序列中元素个数。第三行包含一个整数 x,为需要查找的特定值。x 的绝对值不超过 10000。在一个序列(下标从 0 开始)中查找一个给定的值,输出第一次出现的位置。若序列中存在 x,输出 x 第一次出现的下标;

2023-11-25 17:55:20 39 1

原创 2023/11/25 幂的末尾(快速幂,对齐输出)

这个过程中,当我们的指数是偶数时,我们就把底数平方,指数/2.当指数是奇数时,我们就分一个原底数出来,再接着继续指数为偶数时的操作。s和a之间有7个空格,cout

2023-11-25 09:56:19 237

原创 2023/11/24 求小数的某一位

这个题目咋一看思路很简单:double n=a/b;然后再计算n的几位小数不就行了吗。但是,结果显示错误。我们注意看题目给出的n的大小范围:1<=n<=10000。它本质上是a对b进行取余,取余得到的数字*10再次进行取余。这样我们的思路就很明显了,一直重复这样,最后再a/b,就可以得到目标数字了。分数 a/b 化为小数后,小数点后第 n 位的数字是多少?

2023-11-24 13:47:29 30

原创 2023/11/23 定时器 独立按键控制LED流水灯

(1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作(2)替代长时间的Delay,提高CPU的运行效率和处理速度(…)(相当于cpu可以在原本delay的时候同时进行其他任务)发出脉冲,进行计数,当计数值达到时,产生一个TF0(T0溢出中断标志),让产生中断,执行定时任务。时钟,即晶振周期;引脚,从外界接受脉冲:使CPU具有对外界紧急事件的实时处理能力而设置,要求CPU正在处理某件事发生紧急事件请求后,去转而处理这个事件,处理完后再回去继续处理原来的工作。

2023-11-23 16:52:35 235

原创 2023/11/23 浮点数取整

round :四舍五入。假设舍入前的数是 x ,那么舍入后的符号与之相同;然后考虑 ∣x∣ ,如果它小数点后一位在 0∼4 之间,会被直接舍去,而在 5∼9 之间则会进位。:输入一个双精度浮点数,将其向零舍入到整数。说明:向零舍入的含义是,正数向下舍入,负数向上舍入。floor:向下取整。ceil :向上取整。

2023-11-23 12:18:21 175

原创 2023/11/23 地球人口承载力估计

假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供 x 亿人生活 a年,或供y亿人生活b年。为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿人?

2023-11-23 11:39:42 30

空空如也

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

TA关注的人

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