【C语言入门学习】函数01
【C语言入门学习】函数的概念
前言
在数学中,函数是核心思想之一;同样,在计算机语言中,函数也是编程的核心思想。函数通过将代码结构化,帮助我们简化复杂的程序逻辑。
一、函数的定义
根据维基百科的定义:子程序,子程序是计算机程序中负责完成某项特定任务的一段代码。它由一个或多个语句块组成,相较于其他代码,具备较高的独立性。子程序通常有输入参数和返回值,提供过程的封装与细节的隐藏,且多被集成为软件库中的函数。
二、函数的分类
库函数
自定义函数
为什么需要库函数?
C语言的标准库中提供了大量的库函数,旨在减少重复编写常用功能的代码,避免重复造轮子。库函数帮助我们高效地解决常见问题,提高开发效率。
如何查找库函数?
以下是常用的库函数查询网站:
cplusplus.com
cppreference.com
提示:cppreference 支持在 Edge 浏览器中安装插件,URL 搜索框中输入 “cc”+“空格” 可以快速查询函数的定义、使用方式及对应的封装库。
常见的库函数
IO函数:如 printf、scanf
字符串操作函数:如 strlen
字符操作函数 ...
【C语言入门学习】[3]代码书写的规范
c语言代码书写规范:
if语句,while语句等等,尽量要带上{}
判断语句如if(a==1)最好改写成if(1==a),因为一但写成if(a=)形式, 编译也能通过,但会导致程序执行完全不同的结果。
如果写成if(1=a),因为语法规定,只能将值赋给等号左边的变量,不然编译不通过,这样的话,能够对编写语句起到 约束作用 避免了 “程序能跑就行”的局面
123456789101112131415161718192021222324252627#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main1(){ int a = 0; printf("请输入:\n"); scanf("%d", &a);//不要加转义字符 if (a % 2 == 1) { printf("为奇数\n"); } else { printf("为偶数\n"); } int num = 0; for (num = 1; num <= 100; num++) { if (num % 2 == 1) { pri ...
【Git学习】[1]基本命令
一、Git仓库的创建
1. Git仓库的创建:
将当前目录变成可以GIT管理的目录
1git init//创建初始化仓库
2. 将文件添加到版本库(Repository):
实际上就是把文件修改添加到暂存区
1git add . //将当前文件目录下所有文件移入暂存区``
3. 将暂存区内容添加到版本库(Repository)中:
仓库创建后,head默认指向master分支
实际上就是把暂存区的所有内容提交到当前分支
每一次的commit相当于一次快照,一但把项目文件该乱了,可以从最近的一次commit恢复
12git commit -m "第一次版本提交" //在后面加-m选项,以在命令行中提供提交注释git commit -am "第一次版本提交"//跳过add这一步,可以直接使用 -a选项
注意:每次修改,如果不用git add到暂存区,那就不会加入到commit中
4. 修改日志
版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看
5. 版本回退
1094a…是版本号
1git reset --hard 1094a...
...
【C语言入门学习】[2]初识C语言 02
【C语言入门学习】[2]初识C语言 02
2024.1.10更新
常见操作符 关键字(2)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>//1.static 修饰局部变量//2.static 修饰全局变量//3.static 修饰函数extern int g_val;//声明外部变量//static int g_val = 100; //static 修饰全局变量使得全局变量只能在自己所在的源文件内部使用//extern int g_val;报错//全局变量,在其他源文件内部可以被使用,是因为全局变量具有外部链接属性//但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量了//static int Add(int x, int y)//{// return x + y;//}//static 修饰函数, ...
【51单片机】定时器和中断 02
[51单片机] 第七节 定时器和中断总结<代码部分>
ps: 单片机的可位寻址/不可位寻址
可位寻址:可以对单个位赋值
不可位寻址:只能整体赋值
代码示例:
12345void Timer0_Init(){ TMOD=0x01; //0000 0001 TF=0;}
定时器的快捷配置
晶振电路简介(这里所使用晶振为11.0592MHZ)
一、中断测试代码
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#include <REGX52.H>#include "Tmier0.h"// void Timer0_Init()//定时器配置// {// //TMOD=0x01; //0000 0001 //缺点:会影响到其他定时器// TMOD &= 0xF0;//把TMOD的低四位清零,高四位保持不变 //优点:不影响高四位(其他定时器的配置)// TMOD |= 0X01;//把 ...
【51单片机】定时器和中断 01
[51单片机] 第七节 定时器和中断总结
前言:定时器中断 ,寄存器都是单片机中非常重要的概念,涉及到许多交叉的控制,掌握好这些知识点是学习单片机的关键。
51单片机的时钟源
1.外部脉冲
2.系统时钟(晶振),开发板上周期为12MHZ
一、定时器简介
注意:当时钟源为外部(T0)引脚提供时,定时器作为“计数器”作用,当外部每输入一个脉冲信号,计数器计数加一(不是常用功能)。
二、定时器工作模式
C/NT:当次开关为1时,为计数器功能(counter),配置T0引脚,当为0时,即定时器功能(timer),配置系统时钟。
定时器整个工作系统分为三个模块:
时钟模块: SYSclk,T0 pin ,此图为12分频的模式
计数模块/中断系统:计数范围:0~65530:计数溢出时会置标志位TF0,申请中断
控制模块: GATE,NINT0,TR0
三、中断系统简介
高优先级的中断可以打断低优先级的中断
中断系统即对紧急事件的实时处理
四、中断系统工作流程
五、stc89c52的中断资源
六、中断系统的结构
寄存器解释,中断系统的详细原理见数据手册(养 ...
【51单片机】串口通信
[51单片机] 第八节 串口通信总结
51单片机中的自动重载概念实际上就是当计数溢出后自动赋初值
同步通信中波特率为通信双方约定好的通信速率
<前置部分>
一、串口简介:
串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。
单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。
51单片机内部自带UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),可实现单片机的串口通信。
CH340串口模块
蓝牙串口模块
二、串口通信方式:
#串口模式图:
SBUF:串口数据缓存寄存器,物理上是两个独立的寄存器,但占用相同的地址。写操作时,写入的是发送寄存器,读操作时,读出的是接收寄存器,因此要通过检测TI和RI的信号判断是发送还是接收操作。
ps:用串口端控制发送/接收时,要注意对应上HEX/文本模式
HEX模式/十六进制模式/二进制模式:以原始数据的形式显示
文 ...
【51单片机】红外通信
【51单片机】第十七讲 红外通信
2024.2.2日更新
一、使用模块
红外遥控
介绍:红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出。
红外LED波长:940nm,红外信号属于电磁波
通信协议标准:NEC标准
红外接收管
二、原理部分
一、红外通信的原理
空闲状态:红外LED不亮,接收头输出高电平
发送低电平:红外LED以38KHz频率闪烁发光,接收头输出低电平
发送高电平:红外LED不亮,接收头输出高电平
总而言之,只有红外LED发送38KHZ的闪烁信号时,红外接收头OUT引脚才会对外输出低电平信号
红外发送–红外接收的本质是调制和解调,在这种条件下,可以过滤掉自然界中的“噪声信号”,只有38KHZ附近的红外信号才能被红外接收头识别转换为对应的低电平。
转换示意图:
1.红外LED发出的信号
2.红外接收头发出的信号
其中,红外接收头发出的低电平信号的宽度等价于红外LED发送的38KHz信号的时间。
二、NEC通信的原理
一、红外NEC协议
在51单片机中,使用NEC通信协议,虽然NEC标准上要求( ...
【C语言入门学习】分支和循环
【C语言入门学习】分支和循环
2024.2.20更新
#基本概念
一、语句
什么是语句?
c语言中语句是用于控制计算机执行相关操作的指令,一个语句会被编译成若干条机器命令继而由计算机执行。
语句的类型
表达式语句
函数调用语句
控制语句
复合语句
空语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。可分成以下三类:
条件判断语句也叫分支语句:if语句、switch语句;
循环执行语句:do while语句、while语句、for语句;
转向语句:break语句、goto语句、continue语句、return语句
#代码部分
一、if分支语句
if语句的书写规范,跳转【c语言入门学习】代码的书写规范
二、switch分支语句
switch中break的实际作用是把语句列表划分为不同的分支部分,不加break,会一直向下执行程序
1234567891011121314151617181920212223242526272829303132333435#define _CRT_SECURE_NO_WA ...
【5G】[1]基本术语-1
5G基本概念
接入网:所谓接入网是指骨干网络到用户终端之间的所有设备。其长度一般为几百米到几公里,因而被形象地称为"最后一公里"。由于骨干网一般采用光纤结构,传输速度快,因此,接入网便成为了整个网络系统的瓶颈。接入网的接入方式包括铜线(普通电话线)接入、光纤接入、光纤同轴电缆(有线电视电缆)混合接入和无线接入等几种方式。
信道:信道就是信息传递的通道,是将信号进行传输、存储和处理的媒介
信令:信令就是通信两端,有一端在进行状态转移的时候,要发送信息(信令)来通知另外一端做状态同步,然后顺便捎带一些配置信息和控制信息等。所以通信信令的设计本质就是状态机设计,信令主要是用来通信连接的两侧做状态同步使用。
接口:
1. 接口(硬件类接口)是指同一计算机不同功能层之间的通信规则称为接口。
2. 接口(软件类接口)是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员。
协议栈:什么是协议栈
协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程 ...
【51单片机】DS18B20
2024.1.29更新
2024.3.2
基本概念
所用外设:
DS18B20温度传感器(OneWire协议)
#前置概念
一、OneWire(单总线)协议
•单总线(1-Wire BUS)是由Dallas公司开发的一种通用数据总线
•一根通信线:DQ
•异步、半双工
•单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线
二、单总线电路规范
•设备的DQ均要配置成开漏输出模式
•DQ添加一个上拉电阻,阻值一般为4.7KΩ左右
•若此总线的从机采取寄生供电,则主机还应配一个强上拉输出电路
三、单总线的时序结构
DS18B20介绍
•DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点
•测温范围:-55°C 到 +125°C
•通信接口:1-Wire(单总线)
•其它特征:可形成总线结构、内置温度报警功能、可寄生供电
一、DS18B20温度存储格式
MS BYTE ...
【数字电路】课程设计
设计题目: 智能消防系统
题目来源: 2023 年全国大学生电子设计竞赛试题试题 G 题
一、 任务:
设计一套智能消防系统, 采用 FPGA 实验板。 防区区域为 40dm× 48dm,
可能出现的火源如图所示的 1、 2、 3、 4。 当消防车接收到火源地点位置信息即刻前往熄灭火源, 消防工作完成时间越短越好。 其中白色部分是街区, 消防车不得驶入, 红色区域是消防车停车点。
二、 要求:
消防车起始停留在红色区域, 接收到火情信息并显示火源地点位置坐标后,
出发前往火源地点, 途中不得碾压街区及其边界线。 消防车距离火源地点 5dm内停车, 发出声光报警, 持续 5 秒, 表示将模拟火源熄灭, 之后消防车返回红色区域。 从消防车出发到返回红色区域, 用时越短越好
三、硬件部分
主要结构:4驱直流电机小车
主控:FPGA
传感器:1.四路循迹模块(避线) 2.红外计数器(测速/里程计算)
代码主要语法:状态机
四、解题四路
一、调试小车基本运动模式
什么是分频器?
分频器原理
通过检测输入时钟信号下降沿(上升沿),或者说采样的方法,控制输出的时钟信 ...