自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 day08DS1302时钟

本案例讲解如何使用DS1302时钟芯片将时间信息显示在LCD上。在Int目录下创建Int_DS1302N.h,写入以下内容。在Int目录下创建Int_DS1302N.c,写入以下内容。在main.c写入以下内容。

2024-04-22 21:06:19 606

原创 day07 51单片机-18B20温度检测

本案例讲解如何从18B20传感器获取温度信息并显示在LCD上。

2024-04-22 21:05:26 967

原创 day07 51单片机-串口通信

在方式0,当串行接收到第8位结束时,由内部硬件自动置位RI=1,向主机请求中断,响应中断后必须用软件复位,即RI=0。在其他方式中串行接收到停止位的中间时刻由内部硬件置位,即RI=1,必须由软件复位即RI=0。在方式0,当串行发送数据第8位结束时,由内部硬件自动置位,即TI=1,向主机请求中断,响应中断后必须用软件复位,即TI=0。​ SM2:在方式1时,如果SM2位为1,则只有在接收到有效的停止位时才置位中断请求标志位RI为1,如果SM2为0,则无论是否接收到有效的停止位都可以置位RI。

2024-04-22 21:02:58 1256

原创 day06 51单片机-点阵led

点阵LED的原理也非常简单,就是LED点灯。例如,我们想要让13列(阳极端)9行(阴极端)的LED点亮,需要13为高电平,9为低电平。注意对于我们的硬件原理图,阳极端通过74HC595芯片驱动,阴极端接P00-P07。如果想让点阵LED显示我们想要的图案,要采用“逐行扫描”的思路:通过74HC595芯片,依次激活每一行的阳极,再通过P0端口选择该行想点亮的LED即可。本案例讲解如何在LED点阵屏上从上到下循环滚动显示“尚硅谷”三个字。本案例介绍如何使用点阵LED显示一排由左上到右下的斜线。

2024-04-22 20:59:37 711

原创 day05 51单片机-外部中断、定时器

单片机中断是一种重要的计算机编程概念,用于处理在程序执行过程中突然发生的事件或条件。这些事件可以是外部硬件触发的,如按下按钮、传感器数据到达或定时器溢出等,也可以是软件内部条件满足时触发的,如某个特定的计算结果或状态变化,如图所示:中断的作用在于允许单片机暂时中止当前执行的程序,跳转到事先定义好的中断服务程序,以处理特定事件,然后再返回到原来的程序流程。这种机制使单片机能够实时响应外部事件,提高了系统的灵活性和响应能力。

2024-04-22 20:57:23 949

原创 day04 51单片机-矩阵按键

在项目的Int目录下创建Int_MatrixKeyboard.h,写入以下内容。在项目的Int目录下创建Int_MatrixKeyboard.c,写入以下内容。本案例实现以下功能:按下矩阵按键SW5到SW20,数码管会显示对应的按键编号。

2024-04-22 20:55:23 679

原创 04矩阵键盘实现计算器操作

ApplicationProgram.h 代码如下。ApplicationProgram.c 代码如下。Int_DigitalTube.h 代码如下。Int_DigitalTube.c 代码如下。

2024-04-09 09:24:38 829

原创 03独立按键左移、右移、加一、清零

【代码】03独立按键左移、右移、加一、清零。

2024-04-08 13:33:45 338

原创 02独立按键计数

【代码】02独立按键计数。

2024-04-08 13:33:14 452

原创 01数码管动态显示

【代码】01数码管动态显示。

2024-04-08 13:32:44 252

原创 01数码管动态显示

【代码】01数码管动态显示。

2024-04-08 13:31:32 137

原创 day03 51单片机

随着我们的代码越来越复杂,我们的main.c越来越长,阅读性也越来越差。如果将来开始做项目,我们可能要同时操作好几个模块,这种情况下我们无法再把代码写到同一个文件,而是要分模块管理代码。具体实现方法,就是将源码按照不同功能和模块,拆成若干部分源码,再用头文件相互引用。

2024-04-07 20:17:45 978

原创 day02 51单片机

打开STC-ISP,选择软件延时计算器标签,指定时长1ms,指令集选择STC-Y1(说明:STC89/STC90单片机都是Y1指令集),即可得到1ms的延时代码。DIG.2的编码是001,也就是1表示,依次类推,每个片选和对应的编码都是差1。所以后续想显示某个数码管时,需要对应的片选减1,才能和编码对应上。指令周期=1条指令完成所需要的时钟周期(一般12/24/48)。这个案例,我们要让P00引脚对应的LED按照1秒闪烁1次。这一案例,我们让右边数码管的左1位显示数字1。// 关掉当前数码管。

2024-04-07 20:15:43 960

原创 day02 VS Code开发单片机

VS Code 用于编辑 C 代码,我们还需要 C 编译器来运行 C 代码,所以安装 VS Code之前我们需要先安装 C 编译器。这里我们使用 MinGW-w64(Minimalist GNU for Windows 64-bit)。MinGW-w64 是一个用于Windows操作系统的开发工具集,其包含了C语言编译器 GCC(GNU Compiler Collection)。官网地址:https://www.mingw-w64.org。

2024-04-07 20:09:18 953

原创 day01 51单片机

目前使用的51单片机一般是宏晶STC89系列,这其中流传最广的版本,也是我们课程的主角,就是STC89C52RC。

2024-04-02 18:22:39 1164

原创 day05 设计计算机硬件

总线,在前面的课程中我们有过介绍,但是没有相应的实物,看起来比较抽象,其实总线就是CPU和外部通讯的导线,如果我们将CPU结构稍作改造,例如下图:我们将A,str,ld,Dout和Din五根导线分别接上输入和输出,就可以实现CPU和外部数据的交换,而这五根线就是总线,其中:Ø A线为数据总线,用来传输CPU寻址地址。Ø ld和str线为控制总线,用来传输CPU控制信号,表明CPU是打算对地址进行读,还是写。Ø Din和Dout为数据总线,用来传输数据。

2024-03-26 18:18:25 1001

原创 day04 设计计算机硬件

指令的本质就是控制信号的开关。现在已经有11位的信号控制了,如果电路越来越复杂,控制信号会越来越多。每一个控制信号都需要一个2进制位来表示它,现代计算机的指令多达几百上千个,那我们指令占用的位就太多了,我们必须用一种方式简化指令占用的控制位。一个二进制位表示2个数字,目前我们的系统一共有如下9条指令,那么只需要24=16,也即4个二进制位就可以表示。为了后期进一步扩展完善系统,我们选择25,32条指令的空间留有扩展的余地。5个二进制位在这里我们称为操作码,英文缩写opcode。

2024-03-25 20:11:24 552

原创 day03 设计计算机硬件

当要执行将数据RAM的值直接输入到A寄存器时,需要将ALU的A输入设置为0即可,因为ALU的B输入是从数据RAM中直接读取数据,我们选择ALU的运算模式为加,那么ALU的输出S=A输入+B输入(数据RAM的值),我们只需要保证此时A输入为0,那么ALU的输出 = 0 + 数据RAM中的值。上面的电路中,当执行str存储操作的时候,数据RAM的输出其实并不重要,但是这个数据输出仍然会被输入给ALU进行计算,我们不希望这样的情况出现,因此,可以通过控制数据RAM的ld引脚,来控制数据RAM的输出。

2024-03-23 16:41:21 861

原创 day02 设计计算机硬件

通过分析发现,PC计数器累加后,可以从内存中读取数据到ALU进行运算,而ALU的控制引脚一直输入的是00(加),因此,执行的结果是将数据RAM中的数据进行了累加。那如果我们改变ALU的控制引脚,使其进行其他操作,那么,我们的程序就可以进行复杂的运算了。加入一块新的EEPROM,将数据设置为16bit,地址设置为2bit,并输入数据0、0、1、1,对应ALU的加法、加法、减法、减法。右键点击A、B、加法器,减法器,与门,或门,比较器、S,将它们的位数改为16bit,这个ALU的位数就被设置成了16bit。

2024-03-22 18:02:39 1595

原创 day02 计算机组成原理

由科学家冯诺依曼提出的模型理论。基于通用图灵机建造的计算机都是在存储器(内存/寄存器)上存储数据。鉴于程序和数据在逻辑上是相同的,因此程序也能存储在计算机的存储器中。(1)存储器:用来存储数据和程序的区域(2)算数逻辑单元(ALU):用来进行计算(算数运算、逻辑运算、位运算等)的地方。(3)控制单元:对存储器、算数逻辑单元、输入/输出等子系统进行控制操作。(4)输入/输出单元:输入子系统负责从计算机外部接收输入数据,输出子系统负责将计算机处理结果输出到计算机外部。

2024-03-22 17:56:34 633

原创 day01 数字电路基础

D锁存器尽管可以起到保存数据的作用,但是当en信号为1时,D输入和Q输出相当于是联通的,此时如果D信号有波动,Q会跟随波动。问题:当en为1时,D的输入直接影响Q*的输出,为了提高触发器的可靠性,增强抗干扰能力,希望触发器的次态仅仅取决于en的下降沿(或上升沿)到来时的输入信号状态。En=0,与非门特性,G3输出S1=1,G4输出R’=1,因为S’、R’低电平有效,此处都为1,处于高电平,既不置0也不置1,输出保持不变。我们就得到了一个带en输入的D锁存器,其特性为:当en为高电平,Q和D的输入保持一致;

2024-03-20 19:45:50 816

原创 day02 模拟电路基础

信号是反映信息的物理量,用电流作为载体的信号,方便的储存和传递。电信号分为模拟信号和数字信号,模拟信号是连续的,数字信号是离散的。模拟电路就是用来管理和传递模拟信号的电路,涉及对于模拟信号的滤波,放大和传递,除了用到我们上面讲过的一些器件,还要用到一些其他核心元件,例如二极管、晶体管、场效应管等。在嵌入式软件开发中,有关模拟电路的部分,主要是用晶体管和场效应管做开关电路(继电器其封装体积较大,不适合用在集成电路里),至于信号的放大,滤波等是嵌入式硬件工程师的事情。

2024-03-19 19:05:08 1020

原创 嵌入式学习-02_数据结构和算法 (快速排序)

快速排序(Quick Sort)由图灵奖获得者Tony Hoare发明,被列为20世纪十大算法之一,是迄今为止排序算法中速度最快的一种,快速排序的时间复杂度为O(nlog(n))。快速排序通常明显比同为O(nlogn)的其他算法更快,因此常被采用,而且快排采用了分治法的思想,所以在很多笔试面试中能经常看到快排的影子。排序思想:从数列中挑出一个元素,称为"基准"(pivot),重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。

2024-03-18 18:15:04 662

原创 嵌入式学习-02_数据结构和算法 (冒泡算法)

1.1.1冒泡排序原理如下:(1)比较相邻元素: 从数组的第一个元素开始,依次比较相邻的两个元素。(2)交换位置: 如果前面的元素比后面的元素大(或小,根据升序或降序排序的要求),则交换这两个元素的位置。(3)一趟遍历完成后,最大(或最小)元素已移至末尾: 经过一趟遍历,最大(或最小)的元素会被交换到数组的最后一个位置。(4)重复进行遍历和交换: 除了最后一个元素,对数组中的所有元素重复执行上述两步,每次遍历都会将当前未排序部分的最大(或最小)元素放置到合适的位置。

2024-03-18 18:13:50 414

原创 嵌入式学习-02_数据结构和算法 (二分查找)

其原理是通过将数据集划分为两半并与目标进行比较,以确定目标在哪一半中,从而逐步缩小搜索范围,直到找到目标元素或确定不存在。(4)缩小搜索范围: 对于一个升序的数据集,如果中间元素大于目标元素,说明目标可能在左半部分;(5)重复步骤: 重复上述步骤,不断将搜索范围缩小,直到找到目标元素或搜索范围为空。(3)查找成功: 如果中间元素等于目标元素,则查找成功,返回中间元素的索引。(1)选择中间元素: 在有序数据集中,选择数组的中间元素。(2)比较目标: 将中间元素与目标元素进行比较。

2024-03-18 18:13:11 408

原创 嵌入式学习-02_数据结构和算法 (顺序查找)

(4)查找失败:如果遍历完整个数据集仍未找到目标元素,则查找失败,返回一个特殊的标识来表示未找到。(3)查找成功:如果当前元素等于目标元素,则查找成功,返回当前元素的索引。(1)从头开始遍历:从数据集的起始位置开始,逐个检查每个元素。(2)比较目标:对于每个遍历到的元素,将其与目标元素进行比较。

2024-03-18 18:12:39 444

原创 嵌入式学习-02_数据结构和算法 (队列)

队列(Queue):也是操作受限的线性表,限制为仅允许在表的一端进行插入(入队或进队),在表的另一端进行删除(出队或离队)操作。方法1:使用数组实现,入队列时添加到队列的最后,出队列时移除第一个元素同时将右侧的元素左移。可用顺序表(数组)和链表来存储队列,队列可以依照存储结构分为两种:顺序队列和链式队列。可用顺序表(数组)和链表来存储队列,队列按存储结构可分为顺序队列和链式队列两种。方法2:为队列分配的向量空间看成是一个首尾相接的圆环,这种队列称为循环队列。队列中没有元素时,称为空队列。

2024-03-16 16:52:54 502

原创 嵌入式学习-02_数据结构和算法 (栈)

栈(stack),是限制在只能在表的一端进行插入和删除操作的线性表。应用范围非常广泛。生活中也有栈的场景,比如堆叠的盘子、报 ,电梯中的人们,邮局的邮筒等。

2024-03-16 16:51:49 409

原创 嵌入式学习-02_数据结构和算法 (链表)

由于链表中的结点不是连续存储的,无法像数组一样根据索引直接计算出每个结点的地址。必须从头结点开始遍历链表,直到找到目标结点,这导致了链表的随机访问效率较低。物理结构:与数组不同,链表中的结点需要自行组织,向系统申请很多分散在内存各处的结点,每个结点都保存了当前结点的数据和下一个结点的地址(指针),通过指针将结点串成一串。(2)额外的存储空间。链表的每个结点都需要存储指向下一个结点的指针,这会占用额外的存储空间。(2)动态扩展性能更好,链表不需要像数组那样预先指定固定的大小,而是可以随时动态的增长或缩小。

2024-03-15 16:56:24 540

原创 嵌入式学习-02_数据结构和算法 (数组)

可变长的动态数组是一种数据结构,它允许在运行时根据需要动态地调整数组的大小,而不需要提前指定固定的大小。这种动态数组通常被称为动态数组、动态分配数组、动态增长数组或动态内存数组。(2)重新分配内存(realloc): 如果需要改变动态数组的大小,可以使用realloc函数来重新分配内存。C语言中是通过使用指针和内存分配函数来实现动态数组,常见的内存分配函数是malloc、realloc和free。(3)释放内存(free): 当不再需要动态数组时,应使用free函数释放之前分配的内存,以避免内存泄露。

2024-03-15 16:54:25 494

原创 C语言项目--**客户信息管理系统

printf(”\n编号\t姓名\t性别\t年龄\t电话\t邮箱");

2024-03-14 10:26:10 618

原创 嵌入式学习-01C语言day11

宏定义,就是用一个标识符(宏名称)来表示一个替换文本,如果在后面的代码中出现了宏名称,预处理器会将它替换为对应的文本,称为宏替换或宏展开。

2024-03-14 10:23:57 854

原创 嵌入式学习-01C语言day10

【代码】嵌入式学习-01C语言day10。

2024-03-12 19:35:30 687

原创 嵌入式学习-01C语言day09

【代码】嵌入式学习-01C语言day09。

2024-03-12 19:33:56 409

原创 嵌入式学习-01C语言day08

定义一个函数,接收数组名或首元素指针 和 数组长度 作为参数,计算数组的平均数。定义函数,接收一个字符串和字符,统计字符在字符串中出现的次数。

2024-03-12 19:31:54 396

原创 嵌入式学习-01C语言day07

有一堆桃子,猴子第一天吃了其中的一半,并多吃一个。以后每天猴子都吃其中的一半,然后再多吃一个。当到第十天时,想再吃时(注意:此时还没吃),发现只有1个桃子了。

2024-03-12 19:27:59 468

原创 嵌入式学习-01C语言day06

函数可以没有返回值案例,编写一个函数,从终端输入一个整数打印出对应的金字塔,函数可以传入金字塔层数。

2024-03-12 19:23:38 311

原创 嵌入式学习-01C语言day05

【代码】嵌入式学习-01C语言day05。

2024-03-12 19:20:29 351

原创 嵌入式学习-01C语言day04

4.输入星期几,如果是星期一到星期三,打印:AAA,星期四到星期五,打印: BBB,星期六到星期日,打印CCC,如果都不是,提示“输入错误”。编写程序,根据输入的月份和年份,求出该月的天数(1-12), 就是需要考虑闰年(2月份 29)和平年(2月份 28)。判断一个整数是否是水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身,例如:153 = 1。1、实现判断一个整数,属于哪个范围:大于0;(获取用户输入的整数)

2024-03-12 19:15:27 400

原创 嵌入式学习-01C语言day02

【代码】嵌入式学习-01C语言day02。

2024-03-12 19:08:35 407

day01 数字电路基础

day01 数字电路基础

2024-03-20

day02 模拟电路基础

day02 模拟电路基础

2024-03-19

嵌入式学习-02-数据结构和算法 (链表)

嵌入式学习-02-数据结构和算法 (链表)

2024-03-15

嵌入式学习-02-数据结构和算法 (数组)

嵌入式学习-02-数据结构和算法 (数组)

2024-03-15

嵌入式学习-01C语言day11

嵌入式学习-01C语言day11

2024-03-14

嵌入式学习-01C语言day10

嵌入式学习-01C语言day10

2024-03-12

嵌入式学习-01C语言day08

嵌入式学习-01C语言day08

2024-03-10

嵌入式学习-01C语言day08

嵌入式学习-01C语言day08

2024-03-09

嵌入式学习-01C语言day07

嵌入式学习-01C语言day07

2024-03-08

嵌入式学习-01C语言day06

嵌入式学习-01C语言day06

2024-03-08

嵌入式学习-01C语言day05

嵌入式学习-01C语言day05

2024-03-08

嵌入式学习-01C语言day04

嵌入式学习-01C语言day04

2024-03-08

嵌入式学习-01C语言day03

嵌入式学习-01C语言day03

2024-03-08

嵌入式学习-01C语言day02

嵌入式学习-01C语言day02

2024-03-08

C语言基础知识 day01

C语言基础知识 day01

2024-03-08

算法与程序设计课后题答案

算法与程序设计第三版课后答案,全;

2022-12-08

空空如也

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

TA关注的人

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