- 博客(28)
- 收藏
- 关注
原创 温湿度采集与OLED显示
这次实验比较综合,用了温湿度传感器,USART,OLED,还用到了重定向语法,总的来说还是有收获。但是下来还得再熟悉熟悉。
2024-06-23 14:48:38
618
原创 基于I2C协议的OLED显示(利用U82G库)
文章目录一、I2C协议的基本原理(一)引入1.串口通信的优缺点2.总线通信方式的优点(二)I2C总线介绍1.定义2.I2C总线的组成3.内部结构4.主机与从机(三)I2C总线的时序协议1.主机是I2C通信的管理员(1)问题引入(2)问题解决2.数据通信的方向3.SDA信号的产生与接收4.数据帧的格式(1)空闲状态(2)起始位和停止位(3)寻址与应答二、实验部分(一)实验步骤1.建立CubeMX工程2.U8g2移植3.编写移植函数(二)实验现象1.U8g2的展示2.显示你自己的学号和名字(或网名昵称)3.左右
2024-06-11 15:28:20
1061
原创 uc/OS-III多任务程序
学习嵌入式实时操作系统(RTOS),以uc/OS为例,将其移植到stm32F103上,构建至少3个任务(task):其中两个task分别以1s和3s周期对LED等进行点亮-熄灭的控制;记录详细的移植过程。位于UCOSIII——>uC-cpu——>ARM-Coretex-M4——>RealView文件夹中的。1.PA1的LED灯间隔1S周期性闪烁,PA5的LED灯间隔3S周期性闪烁。:位于UCOSIII——>uCOS-III——>Source文件夹中的。:位于Core——>Src——>OS文件夹中的。
2024-06-08 17:11:15
808
原创 STM32定时器与PWM对LED灯的控制
通过本次实验,学习了定时器的有关概念及其结构。我用标准库通过定时器中断的方式点亮了LED灯。在此过程中我感觉定时器的很多用途都得与中断联系在一起。总的来说,标准库点灯会遇到很多麻烦,和异常的现象,比如keil波形是快频率的方波,实验现象却是呼吸灯的效果。
2024-05-31 19:49:32
1143
原创 HAL库点LED灯
中断是STM32学习的一个重点,也是一个难点。要深刻理解中断标志位、明白中断开始和结束的条件,这几个关键点,才更有助于我们学习中断。
2024-05-24 20:21:44
625
原创 STM32中断编程入门
用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。可参考教材课件上的6.4.3示例采用串口中断方式重做上周的串口通信作业,分别实现:1)当stm32接收到字符“s”时,停止持续发送“hello windows!当接收到字符“t”时,持续发送“hello windows!”(提示:采用一个全局标量做信号灯);2)当stm32接收到字符“stop stm32!
2024-05-19 18:06:03
585
1
原创 使用寄存器点亮流水灯——第二重奏
1.对于自定义宏封装寄存器的理解。2.左移右移运算符的理解,虽然我没有用,我不喜欢用,但还是要理解。3.对于特殊寄存器架构的理解,以及寄存器操控外设的理解。
2024-05-18 13:42:33
862
原创 STM32串口通信入门
GPIO口的初始化类型定义结构体定义定义解释一下成员属性①uint16_t GPIO_Pin:应该也是采用了位掩码的方式,赋的值可以直接传入引脚号码如:GPIO_Pin_3,而不是整形数据。②GPIOSpeed_TypeDef GPIO_Speed:赋的值如:GPIO_Speed_50MHz,在GPIO_Speed后面加一个下划线和具体的数值。(这部分传入的参数或赋的值都是以这种形式。
2024-05-12 19:40:43
624
1
原创 在STM32中用寄存器方式点亮流水灯
做完实验之后,我发现通过使用寄存器的方式点亮流水灯是比较底层的方法,也是比较笨的方法。但是,它能让我们更深刻地理解,STM32单片机中寄存器大致有哪些,对应的位置又在哪。通过本实验,一步一步自己配置要用的寄存器数据,其实挺有意思的。当在同时使用GPIOC15和PC15端口时,我一开始是一个一个端口去配置模式的,发现只有后面配置那个能亮,最后仔细检查发现这两者得同时配置,否则,后面配置的会覆盖前面配置的。本人才疏学浅,仍然有一处不太明白,就是我Proteus仿真的时候,为啥灯亮灭得那么快?
2024-05-05 18:28:47
1272
8
原创 单总线温度采集
DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线(单总线)”接口的温度传感器。与传统的热敏电阻等测温元件相比,它是一种新型的体积小、适用电压宽、与微处理器接口简单的数字化温度传感器。DS18B20 温度传感器具有如下特点:1、适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电。2、独特的单线接口方式,DS18B20 在与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。
2024-04-24 13:30:48
719
1
原创 单片机定时器与串口通信
发送端在发送串行数据的同时,提供一个时钟信号,并按照一定的约定(例如:在时钟信号的上升沿的时候,将数据发送出去)发送数据,接收端根据发送端提供的时钟信号,以及大家的约定,接收数据。在其他方式中,串行接收到停止位的中间时刻由内部硬件置位,即RI=1,必须由软件复位,即RI=0。在方式0,当串行发送数据第8位结束时,由内部硬件自动置位,即TI=1,向主机请求中断,响应中断后必须用软件复位,即TI=0。:在单工通信中,通信的信道是单向的,发送端与接收端也是固定的,即发送端只能发送信息,不能接收;
2024-04-20 12:11:57
468
原创 中断与定时计数
中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请求源提出的服务请求,并快速响应与及时处理。当中断请求元发出中断请求时,如果中断请求被允许,单片机暂时中止(中途停止)当前正在执行的主程序,转到中断服务处理程序,处理中断服务请求。处理完请求后,再返回原来被中止的程序之处(断点),继续执行被中断的主程序。中断响应和处理过程示意图如没有中断系统,单片机大量时间可能会浪费在查询是否有服务请求的定时查询操作上,即不论是否有服务请求,都必须去查询。
2024-04-07 16:11:36
867
原创 自学第四节
文章目录一、OLED(有机发光二极管)1.介绍2.硬件电路3.驱动函数一、OLED(有机发光二极管)1.介绍2.硬件电路3.驱动函数
2024-04-06 19:09:15
129
1
原创 自学第三节
设置GPIO_InitStructure结构体中的GPIO_Pin成员变量,这里使用按位或操作符(|)组合GPIO_Pin_1和GPIO_Pin_2,表示同时初始化GPIOA端口的第1号引脚和第2号引脚。如果一个GPIO引脚配置为输出模式(如GPIO_Mode_Out_PP、GPIO_Mode_Out_OD等),则它可以由微控制器控制输出高低电平,但这时它就不能反映外部信号的输入状态。例如,假设GPIO_Pin_1对应的是二进制的0001,GPIO_Pin_2对应的是二进制的0010。
2024-04-06 15:29:33
1508
1
原创 自学第二节
回到keil点击选中Source Group文件,再点击一下。(两次点击间隔时间较长)。将其重命名为Start。接着右键,选择添加已存在的文件到start。(该文件已在工程的同一目录下。已存在的文件是指在电脑上已存在的都可以添加。(1)先贴入通义千问的解释在STM32微控制器中,这些代码行是用来配置和控制GPIO(General Purpose Input/Output)端口以实现特定功能的。
2024-03-31 22:58:28
547
原创 自学第一节
STM32是意法半导体(STMicroelectronics)推出的一种基于ARM Cortex-M内核的32位微控制器系列。内核相当于STM32的CPU,ST公司拿着ARM公司设计的内核,再完善外围电路,封装起来,就做成了STM32。说人话STM32就是一种32位的单片机。1.STM32常用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等。2.STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式单片机。1.标红色的:电源相关的引脚。2.
2024-03-27 20:16:23
164
原创 汇编程序与周期性任务设计
通过这次实验,我感触很多。首先,弥补了之前对汇编语言的认识不充分、不深刻,现在能理解到汇编语言与C语言其实本质上都差不多,二者能相互转化。Keil是一个很好的软件,它能用生成HEX文件,然后烧录进芯片中。其次,我自己学习领会了平方数表的本质是“查找”,而不是“计算”,然后自己写了一段更为简练的代码进行验证。另外,纸上得来终觉浅,绝知此事要躬行。我在用STC-89C52RC开发板点亮8个独立的LED灯之一时,发现始终点不亮,又检查了好几遍代码。最后通过询问同学才得知,此LED灯乃是连接在P2.0口上的。
2024-03-24 16:00:11
684
3
原创 基于SDCC和Edsim51的代码仿真
SDCC(Small Device C Compiler),它是一款专门为小型微控制器设计的免费开源C语言编译器。SDCC主要用于支持8051架构及其他一些嵌入式系统的软件开发。主要用于嵌入式系统的软件开发。它专注于为小型微控制器(如Intel 8051系列、Maxim 80DS390、Zilog Z80、Motorola 68HC08等)生成高效的目标代码。SDCC包含一系列工具,包括预处理器、编译器、汇编器、链接器以及优化器,并且提供了一个名为SDCDB的源代码级调试工具。
2024-03-16 13:15:01
1151
2
原创 点亮一个LED灯和LED流水灯
*第一步:**修改工程名称为:Light_1_LED。**第二步:**修改工程路径到E盘新建的Light_1_LED文件目录下。**第三步:**点击新工程。**第四步:**点击下一步。。
2024-03-08 16:44:32
1502
1
原创 Verilog编程基础练习
我的理解wire是线网型变量,主要用于模块之间的/实例之间的信号传输,表示连续逻辑输出,而不是用来保存变量的状态。reg是寄存器型变量,顾名思义,主要用于在程序块中保存变量的状态。除此之外,在always程序块中对变量进行赋值时,变量的类型只能是reg类型。因此,改为wire不可以。下面是改了之后的代码即报错报的错误是翻译即错误(10137):a3_8_decoder.v(14)处的Verilog HDL过程分配错误:分配左侧的对象“Y”必须具有可变数据类型。
2023-12-17 19:05:14
187
1
原创 基本RS触发器和D触发器
从基本RS电路到钟控的RS电路,再到钟控的D触发器,我们不难发现,我们减少了输入的端口(CP是工作控制端,不视为输入端口),摆脱了约束条件,得到了好用功能强大的D触发器。在此过程中,我们对电路的改进应该是循序渐进,有理有据,即使在没有依据的时候,也应该不断尝试,通过用逻辑表达式,对输入输出进行理论分析,不断改善电路结构。我们应该牢记7种门电路逻辑表达式的真值表等基础的理论知识,按照组合逻辑电路设计的5个步骤循序渐进,求出我们想要的电路。
2023-11-20 20:25:42
3246
1
原创 编码器-解码器电路设计及Multisim软件仿真
发现自己好像确实没理解到编码器与译码器的含义,做的过程中基本上是问同学的,下来要多多反思,重新做。
2023-11-16 19:02:42
318
原创 组合逻辑电路的分析与设计
最多四票,百位最多为1,十位和个位为0(为了方便,在二进制中我也用个、十、百位来说明低高位)。重新验证之前的答案在理论上是否正确,并重新设计一个新的简化电路。用“与非”门设计一个表决电路:当四个输入端A、B、C、D中有三个或四个为“1”时,输出端才为“1”。超过9的数字用16进制数表示即依次为:A、B、C、D、E、F。掌握组合逻辑电路的分析与设计。使用Logsim的提供的“分析组合逻辑电路”的智能功能,重新完成 4路表决器实验。)在之前四路表决器电路实现的基础上,将投票为1的票数总和显示到一个 LED上。
2023-11-03 21:44:15
104
原创 基本逻辑门电路硬件验证与仿真分析
选用74LS00 二输入端四与非门两个,74LS00 芯片14 引脚接入+5V,74LS00芯片7 引 脚接入地 0V,并按图 1-2 接线,改变 A、B、C、D 的状态,观察输出端Y 的状态,并记录数据在表1-2。选用74LS20 四输入端两与非门一个,74LS20 芯片14 引脚接入+5V,74LS20 芯片7 引脚接入地0V,并按图1-1 接线,按表1-1 改变A、B、C、D 的状态,观察输出端Y 的状态,并记录数据。总之,感觉自己线下实验经验不足,能力不够,还得多加练习。1、测试门电路逻辑功能。
2023-10-24 20:07:49
124
原创 安装Ubuntu16.04 Desktop,并用vim写一个hello world文件。
学会了安装虚拟机,并在linux操作系统中写出了一个简单的"hello world"程序,有了对windows和linux操作系统下,编写代码差异的初步认识。增强了自己查阅资料,自主解决问题的能力,个人感觉linux比windows下更不易理解,也有可能是新接触的vim还不熟练。3.按i进入编辑模式,然后输入如下代码运行,按ESC退出编辑模式,再输入:wq,即保存并退出。等待下载完成,然后点击创建虚拟机,开始配置、安装。3.打开该虚拟机中,等待系统安装好,语言选择中文,并设置自己的信息。
2023-10-21 13:19:23
217
原创 关于全加器的反思
之前一直不明白为什么两个半加器组成全加器的时候后多出来一个“与”门。分析:原因是A、B、C此时的地位相等,都是作为同级的加数。通常先取A和B相加,得到本位S(此时S与C地位相等,属于同一数量级的数),得到最终十位T和百位D。再用S和C相加得到第百位E。最后用D和E确定最终百位F的值。
2023-10-16 21:01:23
66
原创 二进制数-原码转补码的数字电路
②再分析负数的反码:正数的符号位是0,用符号位0加上已经求得的反码即可。但是,我们发现若符号位的0带入像负数那样求反码,最终正数的原码仍等于反码,结果也不会变。①先分析负数的反码:负数的符号位是1,显然用符号位0加上已经求得反码的数字位最低位即可。离散数学中用“1“”代表真,“0”代表假,此时与离散数学中的“与”一样。用“1“”代表真,“0”代表假,此时与离散数学中的“与”一样。负数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。类似地,我们列举出与门的输入输出表格。
2023-10-16 20:05:54
2195
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人