自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言指针的入门编程训练

以上内容都是由个人整理,有问题的话,欢迎留言指出。

2023-10-15 23:22:16 168

原创 C语言经典50例(1)

本系列是对C语言程序设计的50个小案例进行了详细的分析介绍,不定时更新,需要的小伙伴,可以参考一下。【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?分析题目要求互不相同且无重复数字的三位数,即我们需要定义三个变量,且三个变量最后的判断都不能相等,再去组成一个三位数并且统计个数。这里比较容易误导的是我们初看题目容易从数学角度去看想到排列组合,即随机从四个数中拿出三个数,再随机组合成三位数,共有4*6=24种结果。

2023-07-30 11:29:11 137

原创 基于STM32的SG90舵机使用

上有三根线引出,黄线:PWM信号;红线:VCC;灰线:GND。其中可接收的PWM波的频率不能太高,大约50HZ,即周期=1/频率=1/50=0.02s,20ms左右。

2023-05-27 23:04:07 294

原创 STM32的定时器使用介绍

代码中想用个延时,有两种方式:一种是用软件延时,即在代码中加一个延时函数,但同时有一个缺点:不精确且占用CPU资源。还有一种就是使用定时器,它使用的是精准的时基,通过硬件的方式,实现定时功能。此次介绍的就是如何使用STM32的定时器功能实现延时。话不多说,加快上车吧。

2023-05-20 21:47:01 1099

原创 stm32按键控制LED灯亮灭(中断法)

用按键控制STM32上的LED灯亮灭,可以采用轮询法和中断法。轮询法需要不断检测按键的状态,消耗MCU;而中断法只是在按下的那一刻触发中断,控制灯亮灭。轮询法相对于更常规,容易操作。因此我们这里讲的用中断法。关于中断的概述,这里不作介绍,只讲操作,分析代码,可以的话,欢迎上车。使用HAL库,不讲标准库的使用中断点灯就此结束,上述内容由我一个人整理,难免有疏漏。有问题欢迎留言讨论!

2023-05-10 09:43:01 4981

原创 初识stm32单片机(小白入门指南)

当你看到这篇博客时不知道是否已经了解过C51单片机,如果你没了解过它。这里有一份指南(C51教程)让你入门单片机,作为初学者从功能相对简单的单片机入手更有利于打好基础。虽然stm32在性能上更为强大,但stm32开发从它的配置和代码量上来讲比C51开发更复杂,缺少点乐趣。当然了看到这篇博客的肯定是学stm32的咯,所以废话讲的有点多。言归正传,直接开干。(ps:这里介绍的是以STMF103CBT6为例,但其实论操作stm32系列不都差不多嘛)

2023-05-09 09:48:10 2319

原创 基于IIC通信的显示器OLED编程详解(一篇搞懂)

上一篇博客介绍了IIC通信,这篇我们就来玩玩oled模块。当然选用的是IIC接口,因为市面上还有一种是SPI接口的。对于oled长啥样,采用了什么材料,工艺怎么怎么样等等这里就不作任何介绍,搞得眼花缭乱的,对我们用它做开发也没任何帮助,同时节省读者阅读时间。为什么会有这种想法,就是因为发现一些博客在无关紧要的东西方面写了大半篇幅,而在实现原理方面草草了之,再放点代码,贴个效果实现图就算完事了,虚的一批。所以想自己写点东西,话不多说,下面直接开干,上技术活。

2023-04-30 20:24:07 2435 2

原创 IIC协议的C语言编程详解

IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,其时钟信号是由主控器件产生。所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。在传输数据的过程中,我们要保证数据的有效性:SDA 线上的数据必须在时钟的高电平周期保持稳定。数据线的高或低电平状态,只有在SCL 线的时钟信号是低电平时才能改变(如图所示)。首先传输的是数据的最高位。IIC总线在传输数据的过程中一共有三种类型信号,分别为起始信号,终止信号和应答信号。

2023-04-28 18:35:31 651

原创 基于C51的蓝牙温控电风扇(教程里面提供源码)

基于C51的蓝牙温控电风扇。

2023-04-26 21:38:03 353

原创 基于C51的DHT11(温湿度传感器)编程(详解)

根据产品说明文档:用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集, 用户可选择读取部分数据.在模式下,DHT11接收到开始信号触发一次温湿度采集, 如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。最后,上述代码运行后,并不会看到结果来验证代码是否正确,可以加上串口代码在电脑端显示,也可以在单片机上加上蓝牙模块或LCD1602模块显示数据。

2023-04-26 21:35:33 1880

原创 基于C51的LCD1602编程(详解)

第 5 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS 和 R/W 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W 为高电平时可以读忙信号,当 RS 为高电平 R/W 为低电平时可以写入数据。第 3 脚: VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度。第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第 16 脚:背光源负极。

2023-04-26 08:45:51 1355

原创 基于C51单片机的ESP8266Wifi模块(ESP-01s)编程(详细)

其对所传输的数据包大小有定义:即对于AT指令的发送,除AT两个字符外,最多可以接收1056个字符的长度(包括最后的空字符)。效果展现:刚开始时,单片机D5,D6灭,连接上电脑服务器端后,D5,D6亮,此时网络调试助手上不断出现Hello字样,通过网络调试助手发送L1时,D5亮,发送L0时,D5灭。注意:AT指令,控制类都要加回车,数据传输时不加回车。遇到问题,莫急莫慌,寻找解决方案,通过现象,查看代码逻辑。(1) 上电后,通过串口输出一串系统开机信息,有的模块可能会出现乱码,以最后输出。

2023-04-17 19:45:54 8112 8

原创 C51的串口通信编程

其特点是通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。这一部分就涉及到定时器相关内容,前面我们讲的是那个16位自动重载方式,现在这里是设定定时器1为8位自动重装方式。虽然利用软件更加的快捷,但从学习者的角度上看,我们仍需对上述代码进行分析,以便后面自己能进行编程。11059200Hz。这次的内容就到这里了,遇到问题的话,请保持耐心查阅一下芯片手册,百度或留言讨论。对于其他的一些配置前面也都有所讲解,也可以通过查阅芯片手册,这里就不再进行赘述。

2023-04-12 19:18:58 1201

原创 超声波、震动感应开关盖垃圾桶(教程里面提供源码)

里面的代码整合,在完成这个项目的过程中,有什么问题的可以参考教程里面的代码。由于代码量过长,需要源码的小伙伴,请在下方留言,留下你的邮箱吧,加油!超声波Trig接P1.5;基于前面学习的知识,这次我们利用一个项目来做一个总结:超声波、震动感应开关盖垃圾桶。SG90舵机,超声波模块,震动传感器,蜂鸣器,杜邦线若干。检测靠近时,垃圾桶自动开盖并伴随滴一声,2秒后关盖。检测震动时,垃圾桶自动开盖并伴随滴一声,2秒后关盖。按下按键时,垃圾桶自动开盖并伴随滴一声,2秒后关盖。超声波,震动感应,开关垃圾捅。

2023-04-06 20:17:03 522 3

原创 超声波测距控制灯亮灭

说明一下time是如何计算的:如图TL0与TH0都是8位的,而我们采用16位计时。所以我们要把它拼接成16位。当每加1时TH0=00000001,现在我们要把它与TL0拼接成16位,且位于高位。即1要左移8位得到0000000100000000。化成十进制也就是:256。相当于TH0*256+TL0。接线参考:模块除两个电源引脚外,还有Trig,Echo引脚(如图所示),两个引脚分别接单片机P1.6,P1.5端口。目标:距离小于10cm,D5亮,D6灭,反之现象相反。型号:HC-SR04。

2023-04-04 23:30:10 547

原创 PWM开发SG90舵机

PWM,全称:Pulse Width Modulation,脉冲宽度调制缩写,它是通过宽度对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,例如方波的占空比就是50%。PWM波的频率大约50HZ,即周期=1/频率=1/50=0.02s=20ms。确定舵机转动角度与PWM值之间的关系。控制舵机每隔2s 0°,90°切换。

2023-04-04 22:01:56 355

原创 C51定时器编程和中断方式控制

当中央处理器CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。在TH0和TL0寄存器中加1,默认从0开始数数,以我们后面常用的模式1(16位定时器/计数器)为例,它由TL0的8位和TH0的8位所构成,即可以数2的16次方为65536下,累计最大计时:65536 x 1.085微秒=71(ms)。数字电路的所有工作都离不开时钟,晶振的好坏,晶振电路设计的好坏会影响到整个系统的稳定性。

2023-04-03 22:45:00 1414

原创 电动车报警器实现就是这么简单(教程里面提供源码)

上篇博客中简单写了一下初识单片机,实现了点灯入门。今天就来开始一下我们的入门级项目——电动车报警器实现。所以我们通过上面几幅图可以发现,当单片机IO输出低电平(0),信号触发端(IN)触发,继电器两端电压达到吸合电压,COM口和NO口闭合,也就是完成报警器串联电路,开始报警。1.震动传感器:如上图,它的工作模式是不是与我们点灯有点类似?不震动(灯灭),输出高电平,震动(灯亮),输出低电平。2.继电器模块:这里我们采用的是1路 5V继电器模块,上述不要忘记VCC,GND接线,不要接反!

2023-04-01 22:04:49 543

原创 初识C51单片机(详解)

所以当SW1按下时,KEY1直接接地,表现为低电平(0),当SW1没有按下时KEY1 位置通过上拉电阻到5v表现为高电平(1)。很明显只需要将D5(LED1),D6(LED2),跟D4一样接地(看单片机一上电它就会亮起)即可(配成低电平),同时根据芯片图LED1接的是P3.7引脚,LED2接的是P3.6引脚。“灯闪烁”无非就是亮灭交替。也就是一下子给高电平(灯灭),一下子给低电平(灯亮)。传统按键和灯是在同一个电路中,而单片机编程按键和灯是分开的两个电路,通过单片机作为媒介来处理数据,逻辑实现按键控制灯。

2023-03-31 23:42:12 2385

原创 C语言贪吃蛇游戏(5)——完结篇

在之前提到,🐍的移动原理是:通过加一个节点和减一个节点交替来实现🐍的移动。当🐍吃到食物时,我们只需要加一个节点即可,即只调用addNode()函数,而不需要调用deleteNode();当尾节点的坐标与食物坐标相等时,即吃到了食物,进行加分,然后我们再次进行调用initfood()函数,让食物下一次出现在地图中。它实际的作用就是当🐍在游行过程中,突然改变方向时,让我们在视觉效果上会感到更自然点。,当这条🐍向上,向下,向左移动时,原理是相通的。在这段代码中,我们调用了一个turn()函数。

2023-03-30 22:15:00 93

原创 C语言贪吃蛇游戏(4)——让它动起来

通过上图我们可以看出,从1到2,向右移动了一下,左边删掉一个节点,右边增加一个节点。依此类推就形成了蛇向右移动的样子。所以我们就不难理解下面的代码。看了上述代码,相信大家已经看出来了与上篇博客的不同之处。接下来就来看看是如何实现🐍向右移动的。上篇我们谈了如何让这条🐍出现在地图里,今天我们就来看看让它如何动起来,话不多说,先来看效果。这里就相当于蛇撞墙死亡后重新复活过来的实现代码。再次调用蛇初始化函数,让蛇重新从出发点开始。至此,今天C语言贪吃蛇游戏的第四部分就到此为止了,期待下篇博客的完结。

2023-03-28 21:24:07 341

原创 C语言贪吃蛇游戏(3)——“蛇身”显现

函数中蛇身的头节点地址赋给了p,通过检验p的地址是否为空,来一遍遍的遍历🐍身(链表),确定打印的🐍身在地图中的显示位置(这里要通过gamePicture();注意这两部分是两个地方不同的代码,可以说这两部分”互相呼应“,很明显上面那部分只返回1或0,当为1时下面那部分开始打印🐍身。上两篇博客已经完成了这款小游戏的前期编程学习,这次我们就来开始完成这款游戏的“主人公”,如何让这条🐍出现在地图里,话不多说,马上进入正题。好了,今天”🐍身“的显现完成就到这里了,可以自己动手试试,打造属于一条属于自己的小蛇。

2023-03-26 23:09:55 172

原创 C语言贪吃蛇小游戏(2)——地图的“绘制”

在上一篇文章中,我们简单认识了一下Ncurses库,接下来我们将讲一下地图的“绘制”,在这里我将用简单的一些控制流程语句来完成一个简易的地图绘制。函数,当然我们也可以把它里面封装的代码写在主函数里面。我们这样做可以使得主函数看起来更简洁,也方便我们做后续开发。里面封装的一些函数调用,之前在上一篇已经讲过了。我相信看完这张简易地图,大家应该有了自己如何去编程实现的初步想法,下面附了代码,供大家参考。好了,今天的就到这里了,可以自己动手试试。看了上述代码我想没有什么好着重强调的,就是这里我们封装了一个。

2023-03-24 22:29:05 431

原创 C语言贪吃蛇小游戏(1)——简单初识Ncurses库

想要用C语言做出一个用户界面,我们就要谈谈Ncurses编程库,可以说它提供了一系列的函数以便使用者调用来生成基于文本的用户界面,Ncurses名字中的n代表着“new”,是curses的自由软件版本。这次的Ncurses库的安装是在ubuntu系统上,虽然这个小游戏能在Ubuntu系统正确运行,并且达到想要的效果,但很遗憾的是当我把它放在Windows下vs code的环境下运行时,却没有成功,它的报错如下图所示。运行代码后,当你按动键盘上的上下左右键时,将会打印出如图所示的效果。

2023-03-23 20:14:00 287

原创 C语言链表代码总结

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序就是通过链表中的指针链接次序实现的。它相比于线性表的顺序存储结构,链式存储结构(即链表)在每一次插入和删除元素时,时间效率都得到了大大的提高,因此学习链表对于我们在数据的处理上有很大的帮助。在平时的使用中,链表通常分为单链表和双链表,但一般单链表懂了双链表也自然能理解。

2023-03-11 20:16:20 393

空空如也

空空如也

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

TA关注的人

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