使用STM32F103的SPI接口完成OLED屏幕的数据显示

一、SPI协议

SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

二、汉字点阵编码原理

在国标GD2312—80中规定,所有的国标汉字及符号分配在一个94行、94列的方阵中,方阵的每一行称为一个“区”,编号为01区到94区,每一列称为一个“位”,编号为01位到94位,方阵中的每一个汉字和符号所在的区号和位号组合在一起形成的四个阿拉伯数字就是它们的“区位码”。
区位码的前两位是它的区号,后两位是它的位号。
用区位码就可以唯一地确定一个汉字或符号,反过来说,任何一个汉字或符号也都对应着一个唯一的区位码。汉字“母”字的区位码是3624,表明它在方阵的36区24位,问号“?”的区位码为0331,则它在03区3l位。
汉字的机内码是指在计算机中表示一个汉字的编码。机内码与区位码稍有区别。如上所述,汉字区位码的区码和位码的取值均在194之间,如直接用区位码作为机内码,就会与基本ASCII码混淆。为了避免机内码与基本ASCII码的冲突,需要避开基本ASCII码中的控制码(00H1FH),还需与基本ASCII码中的字符相区别。为了实现这两点,可以先在区码和位码分别加上20H,在此基础上再加80H(此处“H”表示前两位数字为十六进制数)。经过这些处理,用机内码表示一个汉字需要占两个字节,分别
称为高位字节和低位字节,这两位字节的机内码按如下规则表示: 高位字节 = 区码 + 20H + 80H(或区码 + A0H) 低位字节 =位码 + 20H + 80H(或位码 + AOH)
由于汉字的区码与位码的取值范围的十六进制数均为01H5EH(即十进制的0194),所以汉字的高位字节与低位字节的取值范围则为A1HFEH(即十进制的161254)。
例如,汉字“啊”的区位码为1601,区码和位码分别用十六进制表示即为1001H,它的机内码的高位字节为B0H,低位字节为A1H,机内码就是B0A1H。
在汉字的点阵字库中,每个字节的每个位都代表一个汉字的一个点,每个汉字都是由一个矩形的点阵组成,0代表没有,1代表有点,将0和1分别用不同颜色画出,就形成了一个汉字,常用的点阵矩阵有1212,
14
14, 16*16三种字库。 字库根据字节所表示点的不同有分为 横向矩阵和 纵向矩阵,目前多数的字库都是
横向矩阵的存储方式(用得最多的应该是早期UCDOS字库),
纵向矩阵一般是因为有某些液晶是采用纵向扫描显示法,为了提高显示速度,于是便把字库矩阵做成纵向,省得在显示时还要做矩阵转换。

本文中用到的字模获取软件
在这里插入图片描述
包含在OLED驱动文件及里,获取方式是模块配套资料包

三、开发板连接屏幕并显示数据

此次实验用的屏幕是0.96寸_SPI_OLED。
开发板是野火STM32F103 MINI(STM32RCT6)
连接方式对应如下图
在这里插入图片描述
接下来去获取字模。

在这里插入图片描述
进行如下配置(自定义格式选择C51,输出数制选择十六进制数)
模式选择处选择字符模式(画图模式需要自己描绘,不仅费事而且丑)
然后生成字模
在这里插入图片描述
将生成的字模复制,然后粘贴到oledfront.h中,字符结构体下,调整好格式即可。

在这里插入图片描述
在test.c里写入(修改)如下函数
在这里插入图片描述

编译并烧录,效果如下

在这里插入图片描述

四、AHT20温湿度采集并显示

温湿度采集模块直接移植自之前的温湿度采集并通过串口输出——基于I2C硬件协议的AHT20温湿度传感器的数据采集实验!
需要的文件有bsp_i2c.h、bsp_i2c.c、sys.h、sys.c,其中sys.h、sys.c需要改名。
调试程序无错误即可。
需要用到的字模

"温",0x00,0x00,0x23,0xF8,0x12,0x08,0x12,0x08,0x83,0xF8,0x42,0x08,0x42,0x08,0x13,0xF8,
  0x10,0x00,0x27,0xFC,0xE4,0xA4,0x24,0xA4,0x24,0xA4,0x24,0xA4,0x2F,0xFE,0x00,0x00,/*"温",0*/
	"度",0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x3F,0xFC,0x22,0x20,0x22,0x20,
  0x23,0xE0,0x20,0x00,0x2F,0xF0,0x24,0x10,0x42,0x20,0x41,0xC0,0x86,0x30,0x38,0x0E,/*"度",0*/
	"湿",0x00,0x00,0x27,0xF8,0x14,0x08,0x14,0x08,0x87,0xF8,0x44,0x08,0x44,0x08,0x17,0xF8,
  0x11,0x20,0x21,0x20,0xE9,0x24,0x25,0x28,0x23,0x30,0x21,0x20,0x2F,0xFE,0x00,0x00,/*"湿",0*/
	"显",0x00,0x00,0x1F
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值