- 博客(47)
- 收藏
- 关注
原创 51 AutoLeaders控制组——51单片机任务
模式2要求最后两位显示数字按1s的频率改变,那么这里我们需要写一个类似计时器的程序来计算一秒的时间,但是不能直接用延时函数,因为在延时函数执行的过程中我们是没有办法进行操作的,因此我们需要考虑其它的实现方法,这里我通过计算数码管的扫描此时来得到大致1s的时间。模式4的要求为每按一下K4,显示的数字加一,那么这里我们需要一段代码用于判断K4是不是被第一次按下(即K4被按下前是否处于模式4),当K4是第一次按下时,将计数器归零,否则计数器加1,最后在数字达到99时,加1则归零。时间周期:通常指一个时钟周期。
2023-11-18 15:08:18
161
原创 51 初识单片机
单片机(Micro Controller Unit, 简称MCU),内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能,常用于信息采集、处理和设备控制。
2023-11-13 15:29:08
101
原创 Py 异常、模块与包
import 模块名 as 别名from 模块名 import 功能名 as 别名可以将导入的模块、功能进行重命名,方便使用除了Python中已经有的模块,我们可以根据自己的需求定义自己的模块每一个Python文件都可以作为一个模块,模块的名字就是文件名(不包括.py后缀)# 新建一个名为my_mode的.py文件,放入下面的代码# 在原文件中调用my_modeprint(ret)# 输出3注意:当导入多个模块,且有多个模块中具有相同的功能名,当调用这个功能的时候,会调用后面导入的模块的功能。
2023-11-07 19:51:30
28
原创 Py 文件操作
当我们直接调用write时,内容并未真正写入文件,而是积攒在程序的内存(缓冲区)中,这样是为了避免频繁操作文件,导致效率下降。在with open语句块中,可以对文件进行操作,在操作完成后会自动关闭文件,避免遗漏close。num表示要从文件中读取的数据的长度(单位为字符数),如果不传入num,则读取文件中的所有数据。注意:当多次读取时(无论用什么形式读取),下一次读取会从上一次读取的结尾开始读取。当文件存在,会在内容的末尾进行追加,如果文件不存在,会创建文件并进行写入。
2023-11-05 19:56:14
38
原创 Py 函数进阶
def关键字可以定义带有名称的函数lambda关键字可以定义匿名函数(无函数名称)语法:lambda 传入参数:函数体(一行)函数体(执行逻辑)只能写一行匿名函数只能使用一次lambda设定的函数自带返回值,不需要自己写print(ret)# 输出3。
2023-11-05 11:47:46
33
原创 Py 数据容器
定义变量:变量名 = [元素1, 元素2, …]定义空列表:变量名 = []变量名 = list()列表内可以放各种元素,包括另一个列表# 列表的嵌套# 这个列表要有两个元素,每个元素都是列表变量名 = (元素1, 元素2, …)(把变量名去掉就是定义字面量)注意:当元组只有一个数据,数据后面需要加上括号,后面没加逗号时,变量会变成str定义空元组:法一:变量名 = ()法二:变量名 = tuple()(变量名称 = tuple() 实际上是得到了一个元组的类对象)
2023-11-04 21:12:50
40
原创 Py 函数
def 定义函数def 函数名(传入参数):函数体return 返回值在不需要传入参数时,传入参数可以不写,但是括号不能少;没有返回值时,返回值也可以不写。
2023-10-31 21:57:49
36
原创 Py 循环语句
在实际运用中,我们常常会遇到需要重复运用某个过程的需求,而将这段代码进行复制粘贴会使代码变得非常冗杂,且在遇到需要次数极大甚至时无穷时,这种方法显然不能满足需求,因此,对循环语句的运用就显得十分重要。
2023-10-26 13:26:19
58
原创 C 初阶结构体
int height;//这里可以不加结构名,如果加了(比如p3),后面访问的时候要带上结构名int No;int main()//结构体变量的创建和初始化//里面的大括号可以去掉//含有结构体的结构体变量的创建和初始化//注意:浮点数在内存中不能精确保存,可能会有误差return 0;也可以不完全初始化(即只初始化一部分内容)
2023-10-22 14:36:34
71
1
原创 C 二维数组、冒泡排序
如果说一维数组就是一条线,那么二维数组就是一个面,其格式为arr[x][y],其中的x和y分别对应行和列,初始化时可以把全部元素写在一行,程序会自动从上到下放进数组,不够的会初始化为0。数组越界:数组的下标大于n+(编译器不一定报错,但是会影响程序运行)这是用冒泡排序写的对输入的10个数进行从小到大排序的代码。简单说就是相邻两个数对比,然后交换位置。重复多次,最后得到一个特定顺序。今天主要学了二维数组和冒泡排序。有一段时间没学c,有点生疏了。
2023-09-27 00:19:30
414
1
原创 C 静态库的简单使用和函数递归
在需要发送给他人一份包含有可调用函数的代码或一些特殊场景,即接收者需要使用某一段代码但是发送者不希望接收者能够看到源代码的情况下,可以使用静态库的方式。(1)写一个包含需要发送的C文件,并创建一个含有该函数的对应声明的头文件(.h)1、函数的声明:用于告诉编译器函数叫什么,参数是什么,返回什么。(2)将对应头文件移除出项目 ,并右键项目名,选择属性。(4)确定后输出,得到一个静态库文件(.lib)3、函数递归: 调用自己是递归,调用别人是嵌套。(3) 在常规选项中的配置类型一栏选择静态库。
2023-09-14 23:23:31
60
1
原创 C 函数的嵌套使用和链式访问
这是因为,数组在传递过程中,为避免在传输过程中对整个数组的数据进行传输而占用大量空间,程序只是传输了数组的地址,也就是首元素的地址,在x64环境中,地址大小为64bit=8byte=2个int变量(x86环境下为32bit)所占的空间,所以此时sz=2,因此该程序只能用于查找1、2。布尔类型只包含true和false,用于判断结果的返回,而当我们去查看其定义时,会发现它只是对1和0的封装,因此可以被代替。(1)函数可以嵌套调用(在一个函数内调用另一个函数),但不能嵌套定义(在一个函数内定义另一个函数)
2023-09-13 21:13:33
52
1
原创 20230912
eg:在使用外部函数交换a、b两个变量的值时,如果不传地址,而是用x、y等变量接收,则该被调用的函数会生成x和y两个形参,此时在函数中对参数的修改均为形参,而不是对实参的修改,此时无法达到交换的目的,当传递的值为地址时,就能完成两数字交换的操作。简单一点的说法就是(自己的理解),当传递的数据不为地址时,此时相当于把a和b的地址交换了,但a和b所对应的地址里存的还是原来的数字,当传递的为地址是,相当于把地址里存的数据交换了,此时a、b所对应的地址虽然没有改变,但地址里的数据被改变了。
2023-09-12 23:59:40
34
1
原创 C goto语句、变量的传递
简单来说就是在自定义函数接收来自主函数的数据(实参)时,会另外创建变量(形参),此时两个函数之间的变量的值虽然相同,但是指针不同,对形参的修改不会影响实参,因此在第一段代码中,该交换数字的目标无法完成。今天学了goto语句,goto语句就是从程序的某个部分跳到另一个部分,可用于循环的跳出、创建循环等,但 goto语句会打乱程序运行的过程,因此在非必要时尽量用其它语句代替goto语句。此外,今天还学了有关数据的传输的一个小知识点,实例为一个交换变量的程序。运用goto语句写的关机程序。
2023-09-11 23:13:44
64
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人