- 博客(21)
- 收藏
- 关注
原创 第17周实验---温湿度采集与OLED显示
I2C(Inter-Integrated Circuit)是一种由飞利浦公司(现恩智浦半导体)开发的串行通信协议,用于连接低速外围设备。它是一种多主控、多从机、半双工的通信协议,可以在同一总线上连接多个设备。硬件I2C: 硬件I2C是指微控制器(MCU)内置的I2C接口。这种接口通过硬件电路实现I2C协议的所有功能,包括起始位、停止位、数据传输和时钟信号。使用硬件I2C时,软件只需通过内置的寄存器配置I2C模块,并读写数据,而无需手动控制I2C协议的每一个细节。
2024-06-18 00:31:53
335
原创 第15周实验--基于I2C协议的OLED显示(利用u8g2库)
输入两个汉字时,oled只显示后面一个字。这里我没有用文章中提到的最全的gb2312字库,是因为我用了之后报了190+ error,错误开头No space xxx,大概是说内存空间不够,我换成其他字符数少一些的字库就无错误了。然后,使用一个循环来实现上下滚动效果,通过不断减小Y坐标,并在每次移动后显示文本,同时使用HAL_Delay函数来控制滚动的速度。内容步骤太多,一步步跟着参考,中间容易踩坑,注意细节即可,实在不行,可以下载该作者的源码进行后续实验,做完之后再理解前面的内容,他已在文章末尾给出源码!
2024-06-04 18:41:31
815
原创 第14周作业---ucOS-III多任务程序
不过,很奇怪的是缺少了一个文件夹EvalBoards,所以另外找到了资源,上传到了蓝奏云:https://wwp.lanzoue.com/i4Nko20mos6d。将#define APP_CFG_SERIAL_EN DEF_ENABLED改为#define APP_CFG_SERIAL_EN DEF_DISABLED。将#define APP_TRACE BSP_Ser_Printf改为#define APP_TRACE (void)2.修改app_cfg.h文件。4.修改lib_cfg.h文件。
2024-06-02 18:31:35
359
原创 第14周实验---定位器与PWM的LED控制
创建工程略过,直接复制以前做过的项目就行,修改项目文件夹名称用以区分,修改main.c的内容。配置好STM32CubeMX后,点击GENERATE CODE生成keil项目。在 main.c 文件中定义一个变量来记录 pwm 波形的占空比。开启TIM2的PWM的通道2。实验现象1-间隔2s闪烁。
2024-05-28 18:16:59
438
原创 第12周作业-HAL库LED点灯
然后去stm32cubemx的官网https://www.st.com/en/development-tools/stm32cubemx.html,下载软件,进入软件下载stm32f1固件库,之后即可根据需求,创建项目进行实验。这个软件需要先安装java环境,去官网https://www.oracle.com/java/technologies/javase-downloads.html找到合适的版本下载即可。创建好工程后,进入keil,修改main.c的内容,如图。keil逻辑分析仪波形图1。
2024-05-19 19:46:19
298
1
原创 第12周--中断编程入门
尝试在main函数while循环中加入一个串口每隔1s发送一次字符的代码片段,发现按键中断对串口发送会带来一定的延迟。将文件添加到keil工程中,像下图即可。exti_key.h文件。exti_key.c文件。
2024-05-14 11:23:18
589
1
原创 第11周实验---stm32串口通信入门
串口通信通常是指串行通信,与并行通信相对,数据是一位接一位按顺序传送的。由于RS-232和TTL电平不兼容,当需要在两种电平之间进行通信时,需要使用电平转换器进行转换。常见的电平转换器有MAX232等芯片,它们能够将TTL电平转换为RS-232电平,反之亦然。RS-232电平:使用较高的电压,通常在-3V到-15V之间表示逻辑“1”,在+3V到+15V之间表示逻辑“0”。TTL电平:使用较低的电压,通常在0V到0.8V之间表示逻辑“0”,在2.0V到5V之间表示逻辑“1”。
2024-05-12 20:39:20
396
原创 第10周实验-stm32F103的LED亮灭之版本1(寄存器地址版)
STM32最小系统核心板子出厂时已经焊接好了1个led灯(标注了PC13处),一般可通过此灯的点亮让编程者验证自己烧录的代码是否正常运行了。这段代码是用于STM32微控制器的C语言程序,主要功能是控制三个LED灯以不同的顺序点亮。实际上是在循环点亮的,不放动图了,pc13接口也顺利点亮用于验证。
2024-05-05 18:07:12
786
2
原创 第8周实验--单总线温度采集
与传统的热敏电阻等测温元件相比,它是一种新型的体积小、适用电压宽、与微处理器接口简单的数字化温度传感器。通过使用51单片机的一个IO口模拟单总线时序与DS18B20通信,可以实现读取环境温度的功能。具体实现原理包括初始化单总线、发送指令给DS18B20、DS18B20响应并发送数据、单片机读取数据、计算温度值以及显示温度值等步骤。将上述实验成功的代码在Keil中进行仿真运行,使用虚拟逻辑分析仪显示单片机与DS18B20的DQ数据线连接引脚的波形,分析其“初始化–>写—>读”总线时序,与原理进行对比分析。
2024-04-20 19:42:00
268
原创 汇编程序与周期性任务设计
MOV=251次,DJNZ=62750次,进行一次DELAY所需的机器周期个数为251 + 62750x2=125751,时钟周期个数为125751x12=1509012。MOV指令的时钟周期为:1 * 1=1 us,DJNZ指令的时钟周期为:2 * 1=2us。经过约125751x1=125751us≈125ms发生一次亮灭转换。DELAY函数中总的循环次数为:250x250=62500。
2024-04-02 23:19:42
275
1
原创 基于SDCC和Edsim51的代码仿真
因为LED0接在P1.0端口上,8051中P1.0的地址固定为90H,因此,对这个地址(指针)对应的寄存器写入立即数0(低电平),就可以是LED0电路导通,亮灯。因此,在汇编语言中编写程序需要更多的指令和细节来完成相同的任务。在汇编语言中,实现相同的逻辑需要手动编写条件分支和循环的控制流,通常需要更多的指令和代码行数。打开keil c51,创建工程,代码略微修改,勾选生成hex文件,然后构建运行,得到hex文件。在Source Code下面创建代码写入即可,运行,得到同样的结果,led发光,led闪烁。
2024-03-16 18:04:25
1611
2
原创 实验一:51单片机架构与汇编指令
这段程序实现了一个简单的循环流水灯效果,通过控制 51 单片机的端口 P0 的输出来控制 LED 灯的亮灭状态,并通过延时函数来控制每个 LED 灯的亮灭时间。这段汇编代码的思想是利用循环结构和延时函数实现一个流水灯效果,通过控制单片机的端口以及延时,依次点亮 LED 灯并延时显示,最终实现 LED 灯的循环流水效果。这段代码的主要思想是利用单片机的端口控制功能,通过将适当的值加载到端口的寄存器中,以控制特定的端口引脚输出相应的电平,从而点亮 LED 灯。)移动到端口 1(P1)的寄存器中。
2024-03-04 20:30:17
2298
1
原创 Verilog基础编程练习
分析:在Verilog中,reg类型表示寄存器类型,用于always模块内被赋值的信号。如果将output reg [7:0] out改为output [7:0] out,会出现“Multiple drivers”错误,因为wire类型的信号可以有多个驱动器,而reg类型的信号只能有一个驱动器。因此,如果将out定义为wire类型,会出现多个驱动器的情况,从而导致错误。通过对比,可以看出两者的电路图思路是一样的,不过verilog生成的电路图把中间复杂的接线部分改成了一个模块,看起来更简洁。
2023-12-12 22:54:41
2245
原创 触发器电路仿真与硬件实现
前面RS触发器当输入R=1,S=1的情况时,输出是不确定的状态,这种情况比较棘手。为了解决这个问题,引入了D触发器。RS触发器中的R表示Reset(复位),S表示Set(置位),说RS触发器输出1,那么就是指Q输出1。RS锁存器,我们可以简单将它理解为一个存储单元,可以存储一位数据(0或者1)R=0、S=0时,那么Q保持上个状态。R=1、S=1时,禁止、不稳状态。R=1、S=0时,那么Q=0。R=0、S=1时,那么Q=1。
2023-11-16 22:12:55
228
原创 组合逻辑关系化简与电路实现
如图,7段数码显示管(LED)是由7个单独LED二极管组合而成(忽略小数点),经常用来显示0-9这些数字。在之前四路表决器电路实现的基础上,继续用连接线联接CD4511,将投票为1的票数总和显示到一个LED上,思考做法。根据电路中写出Y和Z的逻辑表达式,并进行化简。重新验证之前的答案在理论上是否正确,并重新设计一个新的简化电路。用“与非”门设计一个表决电路:当四个输入端A、B、C、D中有三个或四个为“1”时,输出端才为“1”。使用Logsim的提供的“分析组合逻辑电路”的智能功能,重新完成4路表决器实验。
2023-11-16 15:04:15
357
原创 编码器-解码器电路设计及Multisim软件仿真
假如有四个病房,四个病人的病情情况不同,分别对应优先级:最高、高、中、低。优先级低的会被优先级高得中断,可以用LED灯的亮灭或者LED数码管情况来代表病人的求助与否。译码器(Decoder)的作用正好与编码器相反,是将一个N位二进制代码(N个输入信号)转译为2的n次方个输出的高/低电平信号(或者另一种代码)。编码器(Encoder)的逻辑功能是将2的n次方个输入信号的高/低电平信号编成一个对应的n位二进制代码。常用的译码器电路有二进制译码器、 二–十进制译码器和LED显示译码器。
2023-11-16 13:33:10
94
原创 基本逻辑门电路硬件验证与仿真分析
1)具体做实验之前,先在logisim等仿真软件上先搭好电路,验证一遍,确保无误后,再进行实验操作。2)接线前先认真理解电路结构,尽量避免出现理解上的错误,接线时务必细心。
2023-10-19 22:17:24
410
原创 二进制数原码-反码和补码的数字电路
(2) 负数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。比如10进制数值-15的二进制原码是10001111,其补码在8位二进制中是11110001,然而在16位二进制补码表示中,不足位数要用符号位补全,也就是1111111111110001。1位全加器接受三个输入:两个待相加的位(A和B),以及来自前一位的进位(C_in)。思考电路结构,又由异或门(xor)的定义,不难想到,由最高位即是符号位来与每一位进行异或运算,即可在输入正数时输出原来的数,输入负数时取反;
2023-10-16 18:48:58
253
原创 关于Linux-Ubuntu c语言程序编译环境设置和win10安装Dev-c++编写一个基于“辗转相除法”的10进制数转2进制的程序
另外,根据中国的《计算机软件保护条例》第十七条,为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。在这个程序中,使用了一个栈来保存二进制数的各个位,然后按相反的顺序输出,从而得到正确的二进制表示。要加快 Ubuntu 系统软件安装速度,可以通过以下步骤将软件源更改为国内镜像源,比如阿里云或清华大学镜像源。,进入网站仅需登陆后就可选择Linux->Ubuntu18.04下载bt,冷门bt资源用迅雷下载较快,无需会员,不限速。
2023-10-14 23:37:03
373
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人