- 博客(18)
- 收藏
- 关注
原创 单片机串口通信中如何传递换行符
单独一个\r或\n都不是一般意义上的回车+换行,\r\n放在一起才是。通常在写程序的时候只要一个\n就可以了,这是因为编译器会自动将\n替换成\r\n。\r 就是return 回到本行行首这就会把这一行以前的输出覆盖掉,但不会移动到下一行。虽然不知道为什么,但把"\n"替换为"\r\n"就可以成功传递换行符了。为什么必须要用’\r\n’,也就是说必须加上’\r’?\n表示将光标移动到下一行,但不会移动到行首。c语言编程时(windows系统)为什么’\n’会失效呢?注意回车和换行是不一样的。
2025-03-29 00:52:54
189
原创 STM32寄存器版和库函数版
今天在玩AFIO时,想给AFIO的某个寄存器(其实就是EXTICR)设置值,但一直不知道这个寄存器在系统中是什么名称。之前,我以为STM32的寄存器版是直接给寄存器写数据比如16进制 0x0001,而且我所看的教程里第一个例程用的就是寄存器版的代码,也是用16进制数来配置寄存器——这个教程其实是库函数版教程。但今天真正用寄存器版来玩了一下外部中断,我发现,其实寄存器版也可以有简化的方式,不需要自己去写16进制,而是头文件里面已经给我们准备了各个寄存器可能会使用的值。哈哈哈,有感觉了吧。
2025-03-28 20:27:47
166
原创 STM32使用GPIO以及其他外设时,为什么必须先使能时钟?即配置RCC(Reset Clock Control复位和时钟控制)
问题链条:1、第一个问题:为什么驱动Stm32外设需要先使能该外设对应的时钟?由第一个问题经过查询资料联想到第二个问题:2、为什么单片机需要时钟信号?由第二个问题经过查询资料联想到第三个问题:3、为什么CPU需要时钟信号?在查询第三个问题的解答时,看到了一个有趣的提示:CPU内部就是由这样一个个逻辑电路组成的。同时,该帖子还提示说:寄存器内部其实用的是D触发器。由这个提示衍生出第四个问题:4.D触发器是什么?啊,这就是数字电子技术基础了。
2025-03-16 02:45:40
864
原创 三极管PNP与NPN+MOS管nMos和pMos
对于NPN,负载要接到上游而不能接到下游,因为NPN的导通条件是基极和发射极的压差为0.7V,如果把负载放在下游,负载就会分压,使得NPN的导通电压差在0.7V的基础上要加上负载的分压值。1、如上图所示,对于NMOS,在第一张图中,负载接在电源这一端,当G极给高电平的时候,Vgs>0,所以NMOS导通(NMOS是高电平导通)。2、如上图所示,对于PMOS,在第三张图中,负载接在地这一端,当G极给低电平的时候,Vgs<0,所以PMOS导通(PMOS是低电平导通)。总结,NPN是控制电流能否接地,是控制下游;
2025-03-14 01:18:22
948
原创 直流无刷电机+51单片机+Proteus
在Proteus中,直流无刷电机有两种,即BLDC_STAR和BLCD_TRIANGLE,前者是星形连接,后者是三角形连接。选择BLCD_STAR:左侧a、b、c为三相电压输入端,最大输入电压为12V;右侧sa、sb、sc是三个HALL传感器的输出端;下端Load为模拟负载输入端,omega为转子的角速度输出端,电压型输出,其输出电压乘以60,即为实际角速度。直流无刷电机的六步换向:AB ——AC ——BC ——BA ——CA ——CB。
2025-03-12 16:18:17
1071
原创 编码器——光电编码器和霍尔编码器
刚刚看了编码器,这跟我想象的不太一样,我之前以为,霍尔元件和编码器进行配合才能工作,霍尔元件产生脉冲,编码器接受脉冲,并对其计数,然后生产数字码(即脉冲个数),我们在使用的时候,只需要去读编码器的输出数字就行。也就是说,我所想要的编码器是绝对式编码器(为了偷懒啊),但目前所接触的似乎都是增量式编码器,不管是光电编码器还是霍尔编码器。。
2025-03-08 23:19:55
298
原创 电机的参数——电机转速、电机转矩、电机功率
电机转速 = (60 x f)/ p (其中,f为电机的电源频率,单位为Hz;p为电机转子的极数):电动机的电枢绕组受到电磁力的作用产生电磁 转矩 Tem(注:em是下标)。电机的输出功率 = 电机的转速 x 电机的输出转矩。= (9.55 x 电机输出功率) / 电机转速。电磁转矩与输出转矩相同——电机匀速转动。电磁转矩大于输出转矩——电机加速转动。电磁转矩小于输出转矩——电机减速运动。
2025-03-08 21:55:45
216
原创 步进电机的驱动——从原理到实践
好吧,我得承认,我现在还是看得太少了,经验太少,而且脑子不太灵活。1、一般给步进电机的脉冲间隔为5~10ms,但是在proteus仿真中,这样的频率,步进电机虽然会转,但一抖一抖的转得很慢——我猜可能是proteus处理不了这么高频率的数据。八拍(A+ —— A+B+——B+——B+A-——A-——A-B-——B-——B-A+ )步距角 = 360°/(50X8)=0.9°。如图,对于A相,①和⑤先链接,③和⑦先连接,然后从⑤引出A-线,从③引出A+线,连接①和⑦并在其中间引出com线;
2025-03-08 09:09:58
781
原创 交流电机——交流电动机和交流发电机
哈哈哈,今天看起来很乱啊。其实我只想知道交流电动机是咋回事罢了,因为好奇心和求知欲的驱使,又去补充了一些没完没了的知识。简单总结一下:1、直流电机:直流发电机和直流电动机(之前我以为没有直流发电机)交流电机:三相交流发电机和三相交流电动机(之前我以为没有交流电动机)2、交流电动机在一定程度上跟直流电动机一样,通电就可以转。但有些交流电动机需要特殊的启动方式。3、啥时候咱也能亲手玩玩交流发电机啊。
2025-03-07 18:16:02
1046
原创 直流电机-步进电机-伺服电机
直流电机的工作原理就梳理完成了,以后我要是忘记了直流电机的工作原理,就可以翻出这篇笔记,哈哈哈哈哈。其实,我本来想研究直流电机的一些公式和参数,结果我突然发现,我连直流电机的工作原理都忘得一干二净了,甚至看到电刷和换向器都毫无反应,我还在疑惑,这两玩意到底咋用来着。于是乎就找视频补了一下。参考链接:直流电机的工作原理论:https://www.bilibili.com/video/BV1Ca411n7FT/?
2025-03-05 16:37:00
647
原创 Proteus仿真串口通信出现的一个小问题
我突然想到,终端对话框有个叉,是不是因为我把终端对话框叉掉了,然后再次启动工程的时候,终端对话框就不再出现了?我想到,要是换一个虚拟终端,是不是能让终端对话框重新出现,毕竟进行多机调试的时候,每个单片机都要连接一个虚拟终端,于是乎,我就又放了一个虚拟终端。同样的工程,同样的程序,我只是多加了一条输出代码,程序就毫无反应了!既然终端对话框在加入虚拟终端的时候不会出现,而只能在启动工程的时候才能出现,上一次启动工程的时候叉掉了终端对话框,应该不影响下次启动工程才对啊!结果, 没有玩几下,程序又不行了!
2025-03-05 00:13:42
330
原创 C语言中把一个负数赋值给一个无符号整数会怎么样?
在单片机编程中,我经常喜欢用 无符号整数,这就要注意无符号整数的非负性了,以免出现这次这样的错误。中的i的值为 156;相当于 256 - 100 = 156;中的i的值是多少呢?反正不可能是 -1。因为i是一个无符号整数,所以非负,永远不可能小于0。哈哈哈,你敢信,这是个死循环!
2025-03-04 14:19:26
132
原创 将数字转化为字符串的算法
哈哈哈,这个算法从最高位开始取数,就不需要倒序了,而且比较妙啊。在传入的数的位数确定的情况下,可以这样玩。刚刚在看别人写的代码时,发现一个比较有趣的将数字转化为字符串的算法。而且可以稍作更改,就可以处理任意进制的转换了,我的算法从最低位开始取数,最后需要倒序。
2025-03-04 13:25:18
102
原创 DEVC++5.11没有设置编码格式的选项
如果非要用DevC++5.11版本查看文件,可以先把文件内容全选复制,粘贴到记事本里,在记事本里另存为的时候,在底部编码格式选项中选择ANSI,然后再用DevC++5.11打开。今天在玩DevC++的时候,打开了一个utf-8格式的C语言源程序,很不幸DevC++5.11版本默认的编码形式是ANSI!就开始百度了,确实找到了很多帖子,有改变编码格式的方法,但这些帖子的版本似乎都不是5.11的。很明显,在我划红线的地方没有其他版本的所谓:New Document Encoding选项。
2025-03-04 12:20:03
417
原创 Keil 报错提示
然后就直接把问题搜百度,通过AI的解答,搞得我莫名其妙,还是看到其他网友在遇到这个错误的时候的解决方式才一下子找到了错误点——原来是在头文件声明函数的地方没有加分号。呃呃呃,不知道怎么说,就这么愉快的没加分号,而且看了好几遍都没发现!按照字面意思,即“不在形式参数列表中”,我就检查参数,但都是一致的。错误C132:“_delay_n40us”:不在形式参数列表中。真的是百思不得其解。
2025-03-04 11:29:38
230
原创 C51-Proteus-数码管-LCD
注意:51单片机的P0口跟P1~P3口不同,P0口内部没有接上拉电阻,P1-P3内部都接了上拉电阻。如果P0口输出1,引脚处于高阻态,没有驱动能力。最后,我直接搜索proteus驱动LCD1602,根据视频教程,我发现是P0口需要接上拉电阻。然后,我就利用一个排插接了上拉电阻,问题解决了。然后我认为是程序写错了,我所参考的程序时序上似乎无法跟时序图对应上,于是我专门去找了个原原本本按照时序图来写的程序,结果还是不行。最开始我以为是偏执电压引脚没接好滑动电阻,但显然这不是主要问题,滑动电阻POT。
2025-03-03 10:36:05
141
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人