第10周作业--汉字点阵与OLED屏显

一 SPI协议介绍
1.1 什么是SPI
1.SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。SPI的作用就是为这些被扩展的API寻找服务实现。
2. SPI是串行外设接口(Serial Peripheral Interface)的缩写,是Motorola公司推出的一种同步串行接口技术,是一种高速、全双工、同步的通信总线。
1.2 SPI的基本结构
1.NSS:从设备选择线,低电平有效,由主设备控制。当SSM为1时,NSS管脚的输入被SSI(空寄存器1的第8bit)值取代;当为0时,对应为外部NSS管脚的状态。
3. SCK:串行时钟线,传输时钟信号。
4. MOSI:主设备出、从设备入,由主设备向从设备传输数据的信号线,也称为从设备输入(Slave Input/Slave Data In,SI/SDI)。
5. MISO:主设备入、从设备出,由从设备向主设备传输数据的信号线,也称为从设备输出(Slave Output/Slave Data Out,SO/SDO)。
1.3 SPI相关架构与特征
SPI是一种同步串行接口技术,它使用单独的数据线和时钟信号来保证发送端和接收端的完美同步。SPI总线为同步串行数据传输总线,用于单片机的外围扩展。其通用外围扩展器件由SRAM、EEPROM、FLASH、ADC、DAC、RTC、I/O口等组成。
SPI的传输大概可以分为以下几个过程:
1.主机先将NSS信号拉低,保证开始接收数据。
2. 当接收端检测到时钟的边沿信号时,立即读取数据线上的信号,得到一位数据。
3. 由于时钟是随数据一起发送的,因此指定数据的传输速度并不重要,尽管设备将具有可以运行的最高速度。
另外,SPI有四种模式,包括模式0(CPOL=0 CPHA=0),模式1(CPOL=0 CPHA=1),模式2(CPOL=1 CPHA=0)和模式3(CPOL=1 CPHA=1)。每种模式在时钟极性和相位上有所不同,具体选择哪种模式取决于具体的设备和应用需求。
1.4 SPI基本时序单元
SPI的基本时序单元起始条件是SS(从高电平切换到低电平),终止条件是SS(从低电平切换到高电平)。空闲状态下,时钟线SCK处于低电平,在第一个时钟沿(CPHA=0),主设备发送数据,在第二个时钟沿(CPHA=1),从设备发送数据。此外,SPI的时钟极性(CPOL)和时钟相位(CPHA)是两个重要的参数。CPOL决定时钟空闲时的电平,CPOL=0时,空闲电平为低电平,CPOL=1时,空闲电平为高电平。CPHA决定数据采样的时刻,CPHA=0时,在每个周期的第一个时钟沿采样,CPHA=1时,在每个周期的第二个时钟沿采样。
交换一个字节(模式一)

交换一个字节(模式2)
在这里插入图片描述
交换一个字节(模式3)
在这里插入图片描述
二 OLED介绍与汉字取模软件
2.1OLED介绍
OLED(Organic Light-Emitting Diode),又称为有机电激光显示、有机发光半导体(Organic Electroluminescence Display,OLED)。OLED属于一种电流型的有机发光器件,是通过载流子的注入和复合而致发光的现象,发光强度与注入的电流成正比。OLED在电场的作用下,阳极产生的空穴和阴极产生的电子就会发生移动,分别向空穴传输层和电子传输层注入,迁移到发光层。当二者在发光层相遇时,产生能量激子,从而激发发光分子最终产生可见光。OLED显示技术与传统的LCD显示方式不同,无需背光灯,采用非常薄的有机材料涂层和玻璃基板(或柔性有机基板),当有电流通过时,这些有机材料就会发光。而且OLED显示屏幕可以做得更轻更薄,可视角度更大,并且能够显著的节省耗电量。
2.2 汉字取模软件及取模过程
本次使用的OLED显示的汉字均是通过汉字取模软件生成的。通过将汉字在16x16的像素区域内进行识别并排列,形成对应的C51代码,我们将C51代码粘贴到编程文件中就可以使用它了。
以下是一个简单的取模过程
解压完成后,打开第一个文件夹
在这里插入图片描述
在这里插入图片描述
在进入主界面后,点击设置,并设置为以下选项
在这里插入图片描述
在这里插入图片描述
点击确定好后,在主界面就可以输入你想要的汉字了。点击生成字模即可。文字下方是每个文字对应的C51字模代码,我们将其复制粘贴到代码中
在这里插入图片描述
三 显示姓名及学号
3.1获取并修改工程
首先需要在网上获取相关OLED的代码。
然后打开OLED工程
在这里插入图片描述
将使用芯片改为C8T6,执行以下步骤:
打开魔术棒,选择“Device”,将芯片改为STM32F103C8
在这里插入图片描述
转到C++,将字符串改为以下格式
在这里插入图片描述
3.2 代码撰写,点击“gui”这个文件,在头文件声明中找到“oledfont.h”,右边跳转定义
在这里插入图片描述
找到GB16数组,并将你想输入的文字字模复制并加入到数组中,同时去除原有的大括号,最后输入点阵的内容:
在这里插入图片描述
在这里插入图片描述
打开test.c文件,在TEST_MainPage函数下进行修改

在这里插入图片描述
最后,打开主函数,改为如下:
在这里插入图片描述
3.3 烧录结果
OLED与STM32开发板连接如下:在这里插入图片描述
连接好后上电,显示结果如下:
在这里插入图片描述
四 滑动字幕窗口显示
4.1
在这里插入图片描述
4.2修改代码
复制一个上一个实验的工程,并对GB16数组进行修改,加入新建立的字模
随后修改test.c
只需修改一个点就行
在这里插入图片描述
在主函数中删掉while循环,并在配置函数后添加滚动字幕代码

	
	OLED_WR_Byte(0x2E,OLED_CMD); //关闭滚动
	OLED_WR_Byte(0x27,OLED_CMD); //水平向左或者右滚动 26/27
	OLED_WR_Byte(0x00,OLED_CMD); //虚拟字节
	OLED_WR_Byte(0x00,OLED_CMD); //起始页 0
	OLED_WR_Byte(0x07,OLED_CMD); //滚动时间间隔
	OLED_WR_Byte(0x07,OLED_CMD); //终止页 2
	OLED_WR_Byte(0x00,OLED_CMD); //虚拟字节
	OLED_WR_Byte(0xFF,OLED_CMD); //虚拟字节
	TEST_MainPage();
	OLED_WR_Byte(0x2F,OLED_CMD); //开启滚动


4.3 烧录结果如下:
在这里插入图片描述
五 总结
本次实验做得还是比较成功的,也深切地体会了测试温度,显示字幕的过程,让我对于这门课程的了解也更多,当然未来还需要继续进步、学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。该系统主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者,包含项目源码、数据库脚本、项目说明等,有论文参考,可以直接作为毕设使用。 后台框架采用SpringBoot,数据库使用MySQL,开发环境为JDK、IDEA、Tomcat。项目经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。 该系统的功能主要包括商品管理、订单管理、用户管理等模块。在商品管理模块中,可以添加、修改、删除商品信息;在订单管理模块中,可以查看订单详情、处理订单状态;在用户管理模块中,可以注册、登录、修改个人信息等。此外,系统还提供了数据统计功能,可以对销售数据进行统计和分析。 技术实现方面,前端采用Vue框架进行开发,后端使用SpringBoot框架搭建服务端应用。数据库采用MySQL进行数据存储和管理。整个系统通过前后端分离的方式实现,提高了系统的可维护性和可扩展性。同时,系统还采用了一些流行的技术和工具,如MyBatis、JPA等进行数据访问和操作,以及Maven进行项目管理和构建。 总之,本系统是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。系统经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值