自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 1.STM32——简介

STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器。STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等。STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器。安装Keil5 MDK安装器件支持包软件注册安装STLINK驱动安装USB转串口驱动。

2024-09-09 16:05:55 760

原创 51单片机——14.LED点阵屏显示

可位寻址/不可位寻址:在单片机系统中,操作任意寄存器或者某一位的数据时,必须给出其物理地址,又因为一个寄存器里有8位,所以位的数量是寄存器数量的8倍,单片机无法对所有位进行编码,故每8个寄存器中,只有一个是可以位寻址的。对不可位寻址的寄存器,若要只操作其中一位而不影响其它位时,可用“&=”、“|=”、“^=”的方法进行位操作。74HC595是串行输入并行输出的移位寄存器,可用3根线输入串行数据,8根线输出并行数据,多片级联后,可输出16位、24位、32位等,常用于IO口扩展。//消影,不然不明显。

2024-08-21 09:17:16 1046

原创 51单片机——13.串口通信

STC89C52有1个UARTSTC89C52的UART有四种工作模式: 模式0:同步移位寄存器 模式1:8位UART,波特率可变(常用) 模式2:9位UART,波特率固定 模式3:9位UART,波特率可变(下面都是模式1来讲解的)单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。//定时器1时钟为Fosc/12,即12T。//清除定时器1模式位。

2024-08-21 09:15:16 993

原创 51单片机——12.定时器实现时间显示

/静态全局变量(子程序结束不销毁)T0Count++;//执行一次中断就++//定时器里面不可写复杂逻辑。

2024-08-21 09:13:22 108

原创 51单片机——11.按键实现LED灯左右移动

/INTRINS模块的,左移和右移。到达最端自动刷新到另一端去。//因为中断后寄存器会溢出,又从0开始计数。重新赋初值从0开始计时。//静态全局变量(子程序结束不销毁)T0Count++;//执行一次中断就++将时间间隔函数模块,和延时器模块引入。

2024-08-21 09:12:43 380

原创 51单片机——10.定时器及中断

定时器在单片机内部就像一个小闹钟一样,根据时钟的输出信号,每隔“一秒”,计数单元的数值就增加一,当计数单元数值增加到“设定的闹钟提醒时间”时,计数单元就会向中断系统发出中断申请,产生“响铃提醒”,使程序跳转到中断服务函数中执行。注意:定时器的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的定时器个数和操作方式,但一般来说,T0和T1的操作方式是所有51单片机所共有的。使用偷懒的方法,打开stc软件,选择“定时器计算器”,系统频率12,定时器0,1毫秒,16位,12T(FOSC/12)即可,复制。

2024-08-21 09:11:45 596

原创 51单片机——9.按键电子锁

思路讲解:通过矩阵键盘输入密码,与内置的密码进行对比,成功就是OK反之就是error。if(num < 10){ //1-9,11是确定,12是取消。先将延时模块,将LCD显示屏模块,矩阵键盘模块先引入。

2024-08-21 09:08:03 415

原创 51单片机——8.按键显示LCD数据显示

思路讲解:按列扫描,将P13赋予0低电平,当S1按下的时候电路闭合,会导致P17也是0.这样就可以确定是S1按下了赋予值1。列如将S11按下,P11赋予0,其他131210就是1,判断P17到14的那个等于0,就可以得出按下的那个键,这样就可以确定是那个数字了。按行扫描是将17161514依次赋值0,而按列是将13121110依次赋值0;我们使用的开发版按行扫描会导致蜂鸣器乱响,所以我们采取按列扫描。重点是读懂pdf的矩阵键盘示意图(按行扫描和按列扫描)还有显示屏和延时函数自己引入。

2024-08-21 09:07:17 556

原创 51单片机——7.LCD显示屏数据显示

@param Number 要显示的数字,范围:0~1111 1111 1111 1111。* @param Number 要显示的数字,范围:0~0xFFFF。* @param Number 要显示的数字,范围:0~65535。* @param Length 要显示数字的长度,范围:1~16。* @param Length 要显示数字的长度,范围:1~5。* @param Length 要显示数字的长度,范围:1~5。* @param Length 要显示数字的长度,范围:1~4。

2024-08-21 09:05:38 954

原创 51单片机——6.模块化编程

模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include "XXX.h"文件即可。传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路。1.在main函数的同级目录下创建Delay.c文件。2.在同级目录下创建Delay.h的头文件(__DELAY_H__,名字一般是全大写。//尖括号一般是软件安装自己带的,自己写的是双引号。

2024-08-21 09:04:30 757

原创 51单片机——5.静态数码管显示

小知识点:看懂pdf文件,这个数码管由128译码器和数码管构成。看译码器LED5对应Y4,P22、P23、P24由他们决定。4 = 0x100 所以24=1,23和22=0。数字的显示:由数码管的八跟线abcdefg和dp(小数点)决定,是顺时针排序的。如果要显示6,就是b和dp不亮即可。单片机直接扫描:硬件设备简单,但会耗费大量的单片机CPU时间。专用驱动芯片:内部自带显存、扫描电路,单片机只需告诉它显示什么即可。Delayms(1);//这里是为了消影。多位显示,我这里用的是不断的去扫描显示出来的。

2024-08-21 09:03:30 810

原创 51单片机——4.独立按键控制LED灯

轻触按键:相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开小技巧:如P2是操作八位2进制寄存器,可以是FF。这里也可以操作位寄存器(1和0):P2_0 = 0 或者1(其他正数也默认是1)P2_1 = 0等可以到P2_7。​//这个是控制8位寄存器控制亮灭P2_0 = 0;//这个是控制位寄存器实现的相同功能。

2024-08-21 09:00:42 887

原创 51单片机——3.LED灯闪烁及流水灯

思路讲解:只需要将FF,FE,FD等,就是按顺序给0给低电平,时间间隔即可实现。思路讲解:控制某一个LED灯闪烁,只需要将改电平高低按照时间间隔控制即可。小技巧:可以利用stc软件,生成一些常用的函数(右上方忘左右划即可)。这里需要引入:#include 头文件。

2024-08-20 16:45:21 399

原创 51单片机——2.创建第一个项目,点亮第一个LED灯

但是第一次先要点击小图标,,点击OutPut勾选HEX即可。选择对应单片机的型号(STC89C52RC),这里找不到这个,选择Atmel下面的AT89C52即可。选择打开程序文件,选择刚刚生成的hex文件,点击下载编译即可,单片机要冷启动一下就可以了。点击左侧新建文件夹下面的文件夹右键点击第二个add,选择c语言即可,名字一般用main。小知识:当单片机通电,所有LED灯两端都是高电平(1),需要将一端改为0就可以亮了。根据模块图可以得知,控制LED灯的是P2,FE(1111 1110)亮一个灯D1灯。

2024-08-20 16:44:22 210

原创 51单片机——1.单片机开发及介绍

单片机,简称MCU内部集成了CPU,RAM,ROM,定时器,中断系统,通讯接口等一系列电脑的常用硬件功能。单片机的任务是信息采集(依靠传感器),处理(依靠cpu)和硬件设备(例如电机,LED等)的控制。单片机跟计算机相比,单片机就是一个缩小板的计算机,一个芯片就可以构成完整的计算机系统。但在性能上与计算机相差甚远,但单片机成本低、体积小、结构简单,在生活和工业大有所用。同时,学习使用单片机是了解计算机原理与结构的最佳选择。

2024-08-20 16:42:47 135

原创 python——13.异常捕获

tz = float(input("请输入你的体重(单位:kg):"))sg = float(input("请输入你的身高(单位:m):"))print("输入的是不合理的数字,请重新运行程序。print("你的BMI值:" + str(BMI))print("发生未知错误!print("程序运行结束!print("身高不能为0")

2024-07-25 15:42:53 157

原创 python——12.读写文件

括号里面放上路径,可以是相对路径,也可以是绝对路径。如果,不想清空内容就不用r,用a代表附加内容。注意:使用r模式,如果文件存在,他会先将文件里面的内容先清空,在写入。注意:a和w都是无法读取文件内容的,即不可以使用read()方法。f = open("./1.txt") 一般用法,要手动关资源。# file.write("我欲乘风归去,\n")# file.write("又恐琼楼玉宇,\n")# file.write("起舞弄清影,\n")和读一样,都是需要打开文件,和关闭文件。

2024-07-25 15:42:16 547

原创 python——11.类和对象

print(f"学生姓名为:{self.name} 学号为:{self.student_id}")self.grades = {"语文" : 0 , "数学" : 0 , "英语" : 0}print(f"科目:{km} , 成绩:{self.grades[km]}")print(f"员工编号:{self.id} , 员工姓名:{self.name}")# init他默认的构造函数,self这个参数,每个都会带上的def关键字,不能省略。ls = jz(2 , "李四" , 60 , 10)

2024-07-25 15:41:40 293

原创 python——10.函数

tz = float(input("请输入你的体重(单位:kg):"))sg = float(input("请输入你的身高(单位:m):"))def 函数名(): 括号里面可以跟参数,结果也可以return。print("你的BMI指数为:" + str(BMI))# 前面加f,后面就可以直接用{}取值。print(f"你的标准为:{msg}")msg = "偏瘦"msg = "正常"msg = "偏胖"msg = "肥胖"# 继续已BMI指数为例。

2024-07-25 15:40:56 414

原创 python——9.循环

""".format(name = "张三11" , age = "李四22")range(4,10,2) 表示4,6,8 表示间隔的长度,不写就是默认1.print("平均数为:" + str(sum/count))list = [3,77,44,99,"hh","哈哈哈"]print("值是:" + str(value))print("体温异常的人数为:" + str(num))print("1到100的和为:" + str(sum))""".format("张三" , "李四")

2024-07-25 15:40:02 329

原创 python——8.字典(kv键值对)

print("数据库有" + str(len(dict)) + "条记录!print("您查询的释义为:" + dict[queue])queue = input("请输入你需要查询的流行语:")print("你输入的流行语暂时尚未收录!key由于不可重复,可以使用元组来表示。dict = {"yyds" : "永远滴神" ,# 字典就是java里面的map。"bbq" : "芭比Q",dict["强国有我"] = "强国有我""tp" : "躺平"}dict["jjz"] = "绝绝子"

2024-07-25 15:38:54 318

原创 python——7.列表(就是像数组)

python的列表和java不同。java的列表必须是同类型,而python不用。shopping_list.append("巧克力")shopping_list.remove("巧克力")shopping_list.append("牛奶")shopping_list.append("饼干")# 数字列表,可以求最大值,最小值,及排序。# 求取列表的元素个数。# 查看固定位置的元素。

2024-07-25 15:37:42 89

原创 python——6.条件判断

条件判断语句 if或者else 或者elif 下面的语句都是缩进4个字符,否则报错。# 条件判断语句 if或者else 或者elif 下面的语句都是缩进4个字符,否则报错。结束都有冒号,而且python是根据缩进来判断的,四个缩进是不可以省略的。index = int(input("心情指数:"))index = int(input("心情指数:"))print("为了自己的小命,还是别打了!print("为了自己的小命,还是别打了!print("今晚可以打游戏")print("今晚可以打游戏")

2024-07-25 15:36:26 182

原创 python——5.输入(交互)

user_weight = float(input("请输入你的体重(单位:千克):"))user_height = float(input("请输入你的身高(单位:米):"))print("您的BMI指数是:" + str(user_BMI))# BMI指数 = 体重 / (身高 ** 2)类型转换就可以直接用,float或者str来转。

2024-07-25 15:35:21 176

原创 python——4.python的执行方式

交互模式:直接在cmd窗口打开,输入python就可以操作了。不需要print就可以直接显示出来,不会生成文件。关闭窗口就什么都没有了。命令行模式:就是我们经常用的模式,就是写好了然后运行,就可以了。

2024-07-25 15:34:21 87

原创 python——3.注解及一些小技巧

多行注释,就是三个单引号,或者三个双引号。

2024-07-25 15:33:31 61

原创 python——2.变量及基本数学运算

变量名和java一样,只可以是数字字母下划线。当然也不能是数字开头。java变量命名一般是驼峰命名法,而python是下划线命名法。python的变量,居然不用指明是什么类型,太爽了!print(my_name + "张三!print(my_name + "李四!print(my_name + "王五!# python里面的**代表乘方。# python里面的**代表乘方。my_name = "早上好呀!

2024-07-25 15:32:46 93

原创 python——1.第一个python小程序

单双引号,各自与自己配对使用。如果打印的既有单引号,又有双引号。就可以使用转义符“\”,就是反斜杠。三引号跨行字符串,就是用三引号包裹住的字符串,可以随便换行!print("是不是有病" + "44" + ",想不想")print('''君不见,黄河之水天上来,奔流到海不复回。五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。君不见,高堂明镜悲白发,朝如青丝暮成雪。居然不需要函数主入口,直接就可以打印。print('你好,"面壁人!岑夫子,丹丘生,将进酒,杯莫停。与君歌一曲,请君为我倾耳听。

2024-07-25 15:30:57 141

原创 MYSQL——15.mysql管理

1.host:代表允许登录的位置,localhost表示该用户只允许本机登录,也可以指定IP地址,比如:192.168.1.100。原因:当我们做项目开发时,可以根据不同的开发人员,给于他相应的mysql权限,所以mysql数据库管理人员(root),根据。create user '用户名' @ '允许登录的ip' identified by '密码'mysql中的用户,都存在于系统数据库mysql中的user表里面。drop user '用户名'@'localhost'需要创建不同用户,给予不同权限。

2024-07-25 15:26:34 109

原创 MYSQL——14.视图

性能:关系数据库的数据常常用分表存储,查询的时候会用到连接(join),这样不但麻烦而且效率低,可以使用视图来将相关的表和字段关联在一起,就可以避免使用join了。灵活:如果有一张旧表,设计不合理,即将废弃,但是很多应用都基于这个表就又不能修改,这时就可以用视图来解决,不用在去动旧表。同真实的表一样,视图包含列,其数据来自对应的真实表(基表)。就是根据视图名,重新定义了视图。安全:一些重要的数据,不希望被别人看见,可以使用视图,将保密字段进行隐藏。drop view 视图名1,视图名2.。

2024-07-25 15:25:36 366

原创 MYSQL——14.存储引擎

视频链接:74韩顺平MySQL存储引擎1哔哩哔哩bilibili

2024-07-12 11:08:44 217

原创 MYSQL——13.事务的学习

使用commit语句就可以提交事务了,当执行commit语句后,会确认事务的变化、结束事务、删除保存点、释放锁,数据生效。在介绍回退事务前,先设置一下保存点(savepoint),保存点是事务中的点,用于取消部分事务,当结束事务时(commit),会。自动的删除该事务的全部保存点。隔离性:是指多个用户并发访问数据库时,数据库为每一个用户开启一个事务,不被其他事务干扰,多个事务之间要相互隔离。事务是用于保证数据的一致性的,它由一组相关的dml(增删改)语句组成,该组的语句要么全部成功,要么全部失败。

2024-07-12 11:07:26 542

原创 MYSQL——12.索引学习

在加了索引之后,他会根据你加索引的列,生成二叉树。取中间值,然后依次小的在左边,大的在右边进行排序,哪怕数据量大,速度也很快。索引名,索引表及索引列。我们往往用的最多的是普通索引,index 因为我们平常用名字或者其他条件查询的时候,就可以用这个普通索引。-- 在设计表到时候,某个字段添加unique唯一约束,那么他自己就有唯一索引了,搜索也是很快的。2.对该列的增加,修改,删除的语句效率有影响(因为执行这些语句,会重新生成索引二叉树)-- 在设计表的时候,设计主键,自动就是索引了,搜索很快的。

2024-07-12 11:04:47 256

原创 MYSQL——11.主键及其约束条件

name` varchar(30) check (`name` in ('石' , '张三' , '李四')),`name` varchar(30) check (`name` in ('与' , '张三' , '李四')),复合主键,可以是多个,这里是id+name ,其中一个相同无所谓,只要别两个一起相同就可以了。insert into test4 values(1 , '张三' , '234212');insert into test4 values(1 , '张三' , '234212');

2024-07-12 11:02:15 732

原创 MYSQL——10.表复制和表去重

暂时用不到我就先偷个懒了~~

2024-07-12 10:59:49 64

原创 MYSQL——9.子查询

语法:(字段1 , 字段2) = (select 字段1 , 字段2 from。all类似于全部,其实和max差不多;any就是最小,和min差不多。也可以把查询出来的结果当成临时表,和其他真实存在的表进行连表查询。-- 多行子查询 , 用in就可以了。-- 单行子查询,用=就可以了。关键字:all和any。

2024-07-12 10:58:34 188

原创 MYSQL——8.多表查询

insert into table1 VALUES (1 , '张三') , (2 , '李四') ,(13 , '王五')-- 小技巧:多表查询的条件不能少于,表的个数-1,否则就会出现笛卡尔积,就是错误的。-- 自连接 : 就是只有一张表,但帮他看成两张表使用。-- 例如原工表里面,有职员也有总经理。-- 左外连接(左右表,是值在join的左右区分的)-- 笛卡尔集 行是两个表的乘积,列是两个表之和。-- 如果左侧的表完全显示我们就说是左外连接。-- 如果右侧的表完全显示我们就说是右外连接。

2024-07-12 10:57:11 388

原创 MYSQL——7.增强查询

- 如果select语句中,同时出现了group by ,limit , order by , having。-- 模糊查询like %代表0到多个字符;_代表一个任意字符。-- 字段等于null , 是用is null 来判断,不是=-- 分页查询 limit 必须在SQL语句的结尾才可以。-- 使用where也可以大于小于时间,但是格式要写对。-- 根据id升序,第一页,每页展示3条数据。-- 根据id升序,第二页,每页展示3条数据。-- 密码升序,而权限降序排序。

2024-07-12 10:55:53 161

原创 MYSQL——6.流程控制函数

( SELECT CASE WHEN flaf = '0' THEN '管理员' WHEN flaf = '1' THEN '普通用户' ELSE '未知用户' END )select if(true , '毅' , '好') as 'if' from dual;-- 类似于if elseif else 流程控制 1为true,这返回2。-- 解释:如果1为true ,则返回2 , 如果false则返回3。-- 解释:1不为null ,则返回1,否则返回2。

2024-07-12 10:55:00 297

原创 MYSQL——5.加密函数

insert into user_cs values(1 , '哥' ,md5('123456'));-- password算法加密 password(str) mysql数据库密码就是用这个加密的。-- user() 查询用户 查询到的是你登录的用户名 加上@ IP地址。为字符串算出一个MD5的32位的字符串。常用于用户密码加密。select md5('石') from dual;-- database() 数据库名称。-- 添加一个测试表。

2024-07-12 10:53:16 215

空空如也

空空如也

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

TA关注的人

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