自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

YLG_lin的博客

一个只属于你的博客

  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 RS232协议与RS485协议原理以及应用

该标准规定采用一个25引脚的DB-25连接器,标准中对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定;标准规定逻辑“1”的电平为-5v到-15v,逻辑“0”的电平为+5v到+15v,选用该电气标准的目的在于提高抗干扰能力,增大通信距离,其传送距离一般可达15m;UART通信时一般直接使用处理器使用的电平,即TTL电平,但不同的处理器使用的电平存在差异,所以不同的处理器使用UART通信时一般不能直接相连;UART只是对信号的时序进行了定义,而未定义接口的电气特性;RS485标准规定采用。

2022-10-22 15:19:00 442 1

原创 STM32新建工程

Library与User中的文件都是全部复制到相应的组中。将arm中的全部文件全选复制到Start文件中。如图所示把图中选择的文件复制到User文件中。

2022-10-15 11:37:51 4976 2

原创 STM32的GPIO输入与输出

(1) GPIO(General Purpose Input Output)意为通用输入输出口,也就是我们俗称的I/O口;(2) 可配置为8种输入输出模式,文章下半部分会详细介绍;(3) 引脚电平:0V~3.3V,部分引脚可容忍5V,具体哪些端口可以容忍5V可以参考STM32的引脚定义;

2022-10-13 09:44:01 5078 3

原创 结构体的浅拷贝与深拷贝

浅拷贝:将结构体变量空间内容 赋值一份 到另一个相同类型的结构体变量空间中。所谓的深拷贝,就是为结构体的指针成员 分配独立空间 然后再内容拷贝。如果结构体中有指针成员 浅拷贝 会带来多次释放堆区空间的问题。相同类型的结构体变量可以整体赋值,默认赋值方式为:浅拷贝。如果结构体中没有指针成员 浅拷贝 不会带来问题。如果结构体中有指针成员 尽量使用深拷贝。结构体中指针成员指向堆区。

2022-10-10 15:52:31 2128

原创 结构体的对齐规则

结构体自动对齐规则1、确定分配单位(一行分配多少字节)结构体中最大的基本类型 长度决定。2、确定成员的偏移量成员偏移量 = 成员自身类型的整数倍。3、收尾工作结构体的总大小 = 分配单位整数倍

2022-10-06 17:22:08 636

原创 C++动态空间申请

从堆区申请这个空间,你要用指针去指向这个空间。释放空间 只需要给空间起始地址就行了,new和delete是成对出现的;如果没有delete的话,只要进程不结束,那么这个堆区空间一直存在,不太安全;在数组一章中,介绍过数组的长度是预先定义好的,在整个程序中固定不变,但是在实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定。语言提供了一些关键字,可以按需要动态的分配内存空间,也可把不再使用的空间回收再次利。、在程序编译或运行过程中,按事先规定大小分配内存空间的分配方式。

2022-10-05 10:21:17 1972

原创 C++关键字

register修饰寄存器变量如果变量 别高频繁使用 会自动将变量存储在寄存器中目的:提高访问效率如果用户想将变量 直接放入寄存器中 可以加register修饰

2022-10-03 16:46:12 1004

原创 开始进入C++

头文件包含了对命名空间的声明,但是cout最终来自std,如果不使用命名空间std的话也是可以的,就是多了麻烦而已;就用std::cout与 std::endl来替代cout与endl;::是作用域表明cout来自std这个命名空间;

2022-10-02 16:04:17 742

原创 SPI总线详解

SPl(Serial Per ipheral Interface)是串行外设接口的缩写,SPI是一种高速的、全双工、同步的串行通信总线;SPI采用主从方式工作,一般有一个主设备和一个或多个从设备;SPI需要至少4根线,分别是MISO(Master Iput Slave Output 主设备输入从设备输出)、MOSI(主设备输出从设备输入)、SCLK(时钟)、CS(Chip Slect片选) SPI使用引脚较少且布线方便,所以越来越多的芯片集成了这种通信协议;

2022-09-28 11:15:47 1855

原创 使用定时器按键扫描数码管制作一个可存储数据的秒表

实验现象:按下K1并松开按键秒表开始计时,按下K2并松开按键秒表停止计时,按下K3并松开数据存储到AT24C02中,按下K4并松开读取AT24C02中存储的数据显示在数码管上;

2022-09-19 16:19:40 1135 4

原创 AT24C02存储与读取数据

AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息存储介质:E2PROM通讯接口:I2C总线容量:256字节。在LCD1602液晶屏上显示一个无符号整型数字,按下K1按键数字减一,按下K2数字加一,按下K3数字向AT24C02写入该数据,断电重启后按下K4可以从AT24C02中读取该数据。

2022-09-16 20:26:44 4000 1

原创 I2C总线原理及总线信号的实现

I2C总线是一种多主机总线,连接IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,I2C也具备冲突检测和仲裁的功能来防止错误产生;每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件增加和删除不影响其他器件正常工作;I2C总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器;主要用于近距离(抗干扰能力稍弱),低速的芯片之间的通信(传输视频,带宽

2022-09-14 16:59:14 2934 3

原创 51单片机——DS1302时钟

DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能RTC(Real Time Clock):实时时钟,是一种集成电路,通常称为时钟芯片。定时器计时的缺点:1.精度没有时钟芯片高2.它会占用单片机cpu时间3.单片机的定时器时钟不能掉电后继续运行;DS1302时钟芯片带有备用电池,如果掉电,它的内部逻辑判断就会自动把电源切换到备用电池

2022-09-07 20:36:48 7861

原创 strcpy的基本用法详解以及模拟实现strcpy

1.3使用 strcpy的注意事项:1.源字符串必须以 '\0' 结束当拷贝"hello"时字符串的结束标志'\0'也会被拷贝过去,'\0'也是strcpy终止拷贝的一个条件;2.会将源字符串中的 '\0' 拷贝到目标空间3.目标空间必须足够大,以确保能存放源字符串例如 arr[5]=0; strcpy(arr,"hello world");这是错误的4.目标空间必须可变

2022-09-04 17:15:01 1159 2

原创 51单片机——直流电机调速

直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转直流电机主要由永磁体(定子)、线圈(转子)和换向器组成除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等

2022-09-03 21:46:45 3028 1

原创 51单片机呼吸灯的实现

PWM(Pulse Width Modulation)即脉冲宽度调制,在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速、开关电源等领域PWM重要参数:频率 = 1 / TS 占空比 = TON / TS 精度 = 占空比变化步距。

2022-09-02 20:04:22 6326 4

原创 51单片机LCD1602液晶屏显示字符,字符串,(有)无符号整数,十六进制数,二进制数等

LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符显示容量:16×2个字符,每个字符为5*7点阵(其实时5*8的字符占了5*7)

2022-09-01 19:53:37 5510

原创 51单片机——电脑通过串口控制LED

由于TI和RI以“或逻辑”关系向主机请求中断,所以主机响应中断时事先并不知道是TI还是RI请求的中断,必须在中断服务程序中查询TI和RI进行判别,然后分别处理。向主机请求中断,响应中断后必须用软件复位,即RI=0。在其他方式中,串行接收到停止位的中间时刻由内部硬件置位,即RI=1(例外情况见SM2说明),必须由软件复位,即RI=O。EA:CPU的总中断允许控制位,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断甲请。ES:串行口中断允许位,ES=1,允许串行口中断,ES=0,禁止串行口中断。....

2022-09-01 09:55:19 2475 2

原创 串口每隔一定时间向电脑发送数据

串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。51单片机内部自带UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),可实现单片机的串口通信,STC89C52系列单片机的串行口设有两个控制寄存器:串行控制寄存器SCON和波特率选择特殊功能寄存器PCON。....

2022-08-31 19:24:25 2735

原创 51单片机——LED点阵屏显示动画

当我们了解了LED点阵屏显示图形后,就可以尝试用点阵屏来显示动画了,我们可以定义一个数组,把要显示的图形的数据存到数组里,然后逐个移动显示就变成了动画了。

2022-08-31 10:26:18 3522 2

原创 51单片机——LED点阵屏显示图形

SER:串行数据,在时钟的激励下一个一个数据从这个引线中出去,给移位寄存器输入数据,SERCLK:串行时钟,时钟每来一个上升沿,数据就会向下移位,数据一位一位往下走;RCLK:寄存器时钟如果寄存器时钟有上升沿的话,就会把移位寄存器中的数据同时搬运到输出缓存器中去。......

2022-08-30 18:43:26 4239 1

原创 用定时器做一个简易的时钟

本次实验用定时器0工作方式1,在LED1602液晶屏上显示一个简易的时钟。TF1位:T1计数溢出标志位。当T1计数溢出时,由硬件置1,申请中断。进入中断服务程序后被硬件自动清0。TR1位:T1计数运行控制位。由软件置1或清0。当GATE位(TMOD.7)=0时,若TR1=1,允许T1计数;TR1=0时,禁止T1计数。当GATE位=1时,TR1=1且INT1=1时,允许T1计数。TF0位:T0计数溢出标志位,功能同TF1。TR0位:T0计数运行控制位,由软件置1或清0。...

2022-08-29 09:59:36 1895 3

原创 利用定时器0工作方式1——独立按键控制流水灯模式

两个16位定时/计数器存放初值的SFR T0: TH0、TL0 T1: TH1、TL1其它相关的SFR:TMOD(工作方式控制寄存器)TCON(控制寄存器)定时功能时,每个机器周期定时器加1计数功能时,在外部相应输入脚(T0和T1)产生下降沿,计数器加1。 实验现象:按下K1按键LED向左移,按下K2按键LED向右移;...

2022-08-28 20:17:34 3730 2

原创 51单片机矩阵键盘——数码管显示

按下矩阵键盘S1并松开,数码管第一位(LED8)显示0;按下矩阵键盘S2并松开,数码管第一位显示1;...按下矩阵键盘S16并松开,数码管第一位显示F;

2022-08-24 18:44:22 9833 3

原创 51单片机矩阵键盘——LCD1602显示

矩阵键盘扫描(输入扫描) 原理:读取第1行(列)→读取第2行(列) →读取第3行(列) → ……,然后快速循环这个过程,最终实现所有按键同时检测的效果在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态。

2022-08-20 12:27:04 8078 4

原创 51单片机动态数码管显示

LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成“8”字型的器件。选第几位显示,G1,G2A,G2B为使能端,有效就工作。图片中已经接好了,就不用理了。ABC是输入端,其中C是高位A是低位。Y1到Y7为输出端;当P22=0;P23=0;P24=1;时,因为C是高位,相当于输入1 0 0,转化为10进制为4,Y4输出,即选中了LED5;在编程中要注意LED1到LED8是从右到左排列的,所以我们现实中看到开发板的第一位(左一)实际上是LED8。...

2022-08-18 16:17:56 3011 1

原创 51单片机控制LED左右移位

按下K1按键并松开时,LED向左移动一位,按下K2按键时LED向右移动一位。

2022-08-17 17:45:28 4467

原创 独立按键控制LED显示二进制

独立按键控制LED显示二进制。

2022-08-16 17:18:33 604

原创 51单片机独立按键控制LED状态

代码1:按下K1,D1亮,松开D1灭;代码2:按下K1不亮,直到松手才亮,再按一下无变化,直到松手才变化;

2022-08-16 15:51:44 1734 1

原创 51单片机LED流水灯

LED正极接正电,负极接负极则点亮;cup通过程序直接访问寄存器(8位一组),每一位对应一个I/O口,给高低电平的问题转化为配置寄存器p2口的问题。控制单片机引脚输出高低电平,可控制LED的亮灭。单片机采用TTL电平+5v为高电平1,0v为低电平0。如下图:vcc跟LED正极相连,此时想要点亮LED则LED则需TTL输出0v低电平。在明白LED原理之后,就可以根据自己的需求来编写程序从而达到你想要的效果了。......

2022-08-15 10:43:20 1587

原创 用C语言实现三子棋

用rand()生成一个随机数,%(求余)上行与列,范围恰好在棋盘内。在while循环中,电脑会寻找空的格子去填上‘#’。使用宏定义可以1.提高代码可读性,扩展性,如果将来要修改棋盘尺寸,代码修改会很方便。(2)如果数组中有元素为’ ‘,那么没满,返回0。如果全不为’ ',满了,返回1。由于数组下标是从0开始的,所以输入的行与列要减一;(3)如果棋盘满了未分出胜负,判为和棋。(1)调用isFull函数。1. 玩家赢了 - *2. 电脑赢了 - #4. 游戏继续 - C。(3)判定两条对角线。...

2022-08-08 21:24:59 284

原创 模拟实现strlen的三种方法

strlen所作的时一个计数器的工作,计算字符串长度。它从内存的某个位置(可以时字符串的开头,中间的某个位置,甚至是某个不确定的内存区域)开始扫描,直到遇到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。头文件:string.h。...

2022-08-07 15:04:14 163 1

原创 C语言冒泡排序

冒泡排序指的是在排序时,每次比较数组中相邻的两个数组元素的值,较小的数(从小到大排列)排在较大的数前面。排序的基本思想:两两相邻的元素进行比较,并且可能的话需要进行交换。

2022-08-05 20:11:24 1470 2

原创 C语言入门教程合集

C语言结构紧凑,使用方便,程序执行效率高。有9种控制语句,32个关键字和34种运算符。数据结构丰富,可实现链表,树,栈等复杂的运算。语法不太严格,程序设计自由度大。程序可直接访问物理地址,对硬件操作,移植性好。...

2022-08-04 17:25:38 2335 1

原创 C语言结构体

如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的。结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。有时候我们得到的不是一个结构体变量,而是指向一个结构体的指针。结构的成员可以是标量、数组、指针,甚至是其他结构体。结构体传参的时候,要传结构体的地址。函数传参的时候,参数是需要压栈的。结构变量的成员是通过点操作符(.指针访问结构体变量使用->...

2022-08-03 20:54:15 85

原创 C语言指针详解(2)

C/C++会把常量字符串存储到单独的一个内存区域,当几个指针指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。所以str1和str2不同,str3和str4相同。指针数组是一个存放指针的数组int(*p)[5];解释p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为5个。...

2022-08-02 16:28:43 185

原创 C语言指针详解(1)

1.指针是内存中一个最小单元的编号,也就是地址2.平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量指针变量我们可以通过&(取地址操作符)取出变量的内存其实地址,把地址可以存放到一个变量中,这个变量就是指针变量在32位的机器上,地址是32个0或者1组成二进制序列,那地址就得用4个字节的空间来存储,所以一个指针变量的大小就应该是4个字节。那如果在64位机器上,有64个地址线,那一个指针变量的大小是8个字节,才能存放一个地址。指针是用来存放地。...

2022-08-01 09:30:12 162

原创 C语言运算符与表达式

1. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。2. %运算符两端必须都是整型,其余的运算对象都可以是整型或实型,返回的是整除之后的余数。3.双目运算符两边的数值类型必须一致才能进行运算,如果不一致,系统先进行一致性转换。......

2022-07-30 10:53:50 333

原创 C语言数组详解

1.1数组的创建数组是一组相同类型元素的集合。也就是一组数。数组的创建方式类型说明符数组名[常量表达式];例intn=8;是错误的。1.2数组的初始化当数组创建后,系统会为该数组在内存中开辟一串连续的存储单元。数组创建时arr[]方括号中要为常量表达式,当访问时方括号中可以为变量;[],下标引用操作符。它其实就数组访问的操作符。每个数组的第一个元素都下标总是0,这也称数组下标的下界,所以上述的数组的最后一个元素下标应该是9,这也称为数组下标的上界。......

2022-07-28 15:27:01 285

原创 C语言函数详解

自定义函数和库函数一样,有函数名,返回值类型和函数参数。但是不一样的是这些都是我们自己来设计,这给程序员一个很大的发挥空间。{statement;//语句项}int为返回类型fun_name函数名part1函数参数。...

2022-07-26 11:55:59 395

使用定时器按键扫描数码管制作一个可存储数据的秒表

实验现象:按下K1按键秒表开始计时,按下K2按键秒表停止计时,按下K3数据存储到AT24C02中,按下K4读取AT24C02中存储的数据显示在数码管上;

2022-09-19

AT24C02数据存储.zip

在LCD1602液晶屏上显示一个无符号整型数字,按下K1按键数字减一,按下K2数字加一,按下K3数字向AT24C02写入该数据,断电重启后按下K4可以从AT24C02中读取该数据。

2022-09-16

基于PLC的管道流量变频控制系统设计.zip

本次过程控制实践基于PLC进行了三种控制系统的设计,分别是:流量、液位、压力单闭环控制系统,液位流量串级控制系统,流量比值控制系统。控制系统设计过程中,利用 WinCC软件的数据采集功能、通讯技术、人机交互等功能,利用STEP7软件对PLC进行编程,并用现场总线接口建立WinCC和PLC、水箱之间的数据联接,最终实现对水箱的精确控制。在这次实践中,借助数据采集模块、WinCC组态软件的PID控制算法,设计并组建远程计算机过程控制系统,完成控制系统试验和结果分析。方法使用简单可靠,可广泛应用于工业生产过程中的控制问题。 本文主要在硬件选择、硬件组态、I/O分配、流程设计、硬件原理图、算法思想、梯形图设计、界面设计、运行结果等方面对三个控制系统的设计过程与结果做出了详细的说明。 在这次的课程实践中,需要我们对S7-300 PLC、WinCC软件有更好、更深的认识与应用。

2022-08-29

利用定时器0工作方式1&按键控制流水灯模式.zip

按下独立按键K1,LED向左移动,按下独立按键K2,LED向右移动。用定时器0,工作方式1,代替了传统的Delay延时函数;提高CPU的运行效率和处理速度

2022-08-28

基于PLC水箱水位控制系统

本设计选用西门子step7300和Wincc ,内容包含程序,动画仿真,电气接线图,I/O表,流程图共五大项。 控制要求: 单容水箱液位变频控制能用变频器根据设计需要调整其转速。经过简单液位传感器信号转换,便可得到电压信号,转化的电压信号为0~5V反馈给变频器的VR,端。变频器根据输入给定值和反馈的实际值,即根据液位传感器信号转换获得的反馈电压信号;利用PID控制自动调节,改变频率输出值来调节所控制的三相异步电机转速,达到调速的目的,从而实现控水箱的液位平稳。 单机水泵控制按钮,系统启动时打开出水口, 用手动控制水泵电机的转速是管道流 量达到75%,这时系统装载 PID 参数和连接 PID 中断服务程序。装入回路设定值 vD104, 回路增益 vD112,回路采样时间vD116, 积分时间vD120,同时设定定时中断 0 的时间 间隔为100ms,设定定时中断执行PID程序INT0。关闭微分作用vD124。 在中断处,将过程变量转换为标准化的实数。首先将整数转换成双整数, 将双整数转换为实数, 而后将数值标准化, 最后将标准化 后的值存入回路表。而 I0.0 控制 PID 指令的运算

2022-08-26

LCD1602.rar

驱动LCD1602液晶屏的代码,以及头文件

2022-08-20

用C语言实现三子棋小游戏

三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。但是,有很多时候会出现和棋的情况。 1.菜单界面选择开始或者退出游戏。 2.创建棋盘并初始化。 3.打印棋盘。 4.玩家落子(玩家输入行列坐标的方式来落子),'*'代表玩家落子。 5.判定胜负关系(输,赢,和棋),'Q’表示和棋。 6.电脑落子(随机位置落子) ,'#’表示电脑落子。 7.判定胜负关系。

2022-08-08

空空如也

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

TA关注的人

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