当前位置: 首页 > news >正文

唐山做网站优化公司女教师遭网课入侵直播录屏曝光视频

唐山做网站优化公司,女教师遭网课入侵直播录屏曝光视频,wordpress文字头像,怎么做网页版网站STM32 STD/HAL库驱动W25Q64 模块读写字库数据OLED0.96显示例程 🎬原创作者对W25Q64保存汉字字库演示: W25Q64保存汉字字库 🎞测试字体显示效果: 📑功能实现说明 利用W25Q64保存汉字字库,OLED显示汉字的时…

STM32 STD/HAL库驱动W25Q64 模块读写字库数据+OLED0.96显示例程


  • 🎬原创作者对W25Q64保存汉字字库演示:

W25Q64保存汉字字库


  • 🎞测试字体显示效果:
    在这里插入图片描述
    在这里插入图片描述

📑功能实现说明

利用W25Q64保存汉字字库,OLED显示汉字的时候,先通过SPI接口访问W25Q64,先将要显示的汉子字模数据,从SPI FLASH中读取出来,然后再显示到OLED屏幕上。

🛠W25Q64字库制作

  • 🍁W25Q64原理图:
    在这里插入图片描述
  • 👉按照原创作者的思路制作SPI flash字库,需要准备一块足够大的字库SPI flash芯片以及flash足够大的MCU才行。这里选择:W25Q64 + STM32F103VET6
  • 🔱如果手上没有这么大的容量的mcu,可以选择使用SPI FLASH编程器单独烧录字库文件。(下面会提供本例程的单独的字库烧录文件.bin文件)前提是手上需要有一个SPI FLASH编程器。(SPI FLASH编程器TB也不过就10RMB左右。)
  • 📄字库数据分2次,写入到W25Q64 SPI FLASH中。
	/*字库写入*//*字库需要分2次写入FLASH,一次写1半,写完上半部分后,把if 1 改为 if 0,再写下半部分*//*CNFont.h也需要同步修改,写完注释掉这段代码*/	/*写完注释掉或者删除掉这段代码*///	#if 0
//		W25Q64_WriteData(W25Q64_GBK_ADDR,(uint8_t *)Chinses_16,383041);
//		printf("写字库上半部分 OK!\r\n");
//	#elseW25Q64_WriteData(W25Q64_GBK_ADDR+383041,(uint8_t *)Chinses_16,383039);printf("写字库下半部分 OK!\r\n");
//	#endif/*写完注释掉或者删除掉这段代码*/

在这里插入图片描述

  • 👉通过MinPro-I编程器读取SPI FLASH ,写入的有效数据是767KB数据,到BB07F地址,对于存储16X16 Chinses_16字体,其实准备一颗1MB的 SPI FLASH 就足够了。
    在这里插入图片描述
  • 📘这里提供程序中的Chinses_16字体库BIN文件,是从spi flash中提取出来的。如果自己有SPI flash编程器,可以直接烧录到SPI FLASH当中去。(经过验证,将裁剪后的bin文件烧录到4MB SPI FLASH中,挂载到mcu上,可以正确访问和读取数据。OLED显示正常).
链接:https://pan.baidu.com/s/13uU5Uc7yiiHDMtMMNd71ew?pwd=v0l7 
提取码:v0l7
  • 🌿8M spi flash 全部提取(未裁剪)原字库
链接:https://pan.baidu.com/s/1y8_p0PL-QeTQTkgahKGTXg?pwd=x324 
提取码:x324
  • W25QXX(针对WINBOND SPI FLASH)设备ID与容量关系
    在这里插入图片描述
 W25QXX Device ID
读取命令(0x90)
W25Q80的芯片ID为:0XEF13
W25Q16 的芯片ID为:0XEF14
W25Q32 的芯片ID为:0XEF15
W25Q64 的芯片ID为:0XEF16
W25Q128的芯片ID为:0XEF17
W25Q256的芯片ID为:0XEF18
W25Q512的芯片ID为:0XEF19

🔨字库文件(.BIN)制作

  • 🌿通过C代码将字库数组转换成.bin文件。(将下面的代码拷贝下来,通过VSCode软件创建.c文件将字库数组添加进来,然后运行,将自动生成.BIN文件。)(依赖插件c\C插件、Code Runner)
const unsigned char Chinses_16[766080]={........};//字库数组
int main() {size_t size = sizeof(Chinses_16[0]);size_t count = sizeof(Chinses_16) / size;FILE *fp = fopen("output.bin", "wb");if (fp == NULL) {printf("Failed to open file.\n");return 1;}size_t elements_written = fwrite(Chinses_16, size, count, fp);if (elements_written != count) {printf("Failed to write data to file.\n");fclose(fp);return 1;}fclose(fp);printf("Data written successfully.\n");return 0;
}

在这里插入图片描述
在这里插入图片描述

  • 🌿由上面代码自动生成的字体文件:(经烧录测试,显示没有问题)
链接:https://pan.baidu.com/s/1oqJ5WeaJKv6LI-p-LUPojA?pwd=0vfh 
提取码:0vfh
  • 🌿将生成的.bin文件通过SPI FLASH 编程器烧录到SPI FLASH(W25QXX)芯片中即可。
  • 🔑或者参考《将数组文件转换成bin格式文件》制作。测试过,此方法生成BIN文件时,会报非法字符情况,烧录后读取存在乱码的情况。

🌼OLED显示

  • 🍁接线说明:
SPI FLASH    -----   STM32F103VET6CS  ---- PB12MOSI---- PB15MISO---- PB14SCK ---- PB13
----------------------------------OLED I2C SSD1306  ---     STM32F103VET6SCL-----  PB8SDA ----  PB9
  • main.c:
/*
引脚接线说明SPI FLASH    -----   STM32F103VET6CS  ---- PB12MOSI---- PB15MISO---- PB14SCK ---- PB13
----------------------------------OLED I2C SSD1306  ---     STM32F103VET6SCL-----  PB8SDA ----  PB9*/#include "main.h"
#include "usart1.h"
#include "systick.h"
#include "oled_i2c.h"
#include "w25q64.h"
#include "cnfont.h"
#include "codetab.h"static void CLOCK_Config(void);
static void NVIC_Config(void);int main(void)
{CLOCK_Config();		//时钟配置NVIC_Config();		//中断优先级配置W25Q64_InitConfig();//初始化W25Q64USART1_Config();printf("WRITE Start, FLASH ID=%X\r\n",W25Q64_GetID());/*字库写入*//*字库需要分2次写入FLASH,一次写1半,写完上半部分后,把if 1 改为 if 0,再写下半部分*//*CNFont.h也需要同步修改,写完注释掉这段代码*//*写完注释掉或者删除掉这段代码*///	#if 1
//		W25Q64_WriteData(W25Q64_GBK_ADDR,(uint8_t *)Chinses_16,383041);
//		printf("写字库上半部分 OK!\r\n");
//	#else
//		W25Q64_WriteData(W25Q64_GBK_ADDR+383041,(uint8_t *)Chinses_16,383039);
//		printf("写字库下半部分 OK!\r\n");
//	#endif/*写完注释掉或者删除掉这段代码*/GPIO_ResetBits(GPIOB,GPIO_Pin_0);I2C_OLED_Cfg();OLED_Init();OLED_Fill(0xFF);//全屏点亮Delay_ms(50);OLED_Fill(0x00);//全屏灭Delay_ms(50);OLED_CLS();//清屏OLED_ShowStr(0, 0, (uint8_t *)"Loading now 1...", 2);Delay_ms(500);OLED_CLS();//清屏OLED_DrawBMP(0,0,128,8,LOGO_BMP);Delay_ms(2000);OLED_CLS();//清屏OLED_ShowChinese(0,0,"床前明月光,",16);OLED_ShowChinese(0,2,"疑是地上霜、",16);OLED_ShowChinese(0,4,"举头望明月?",16);OLED_ShowChinese(0,6,"疑是地上霜。",16);while(1){}
}
//外设时钟配置
static void CLOCK_Config(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE);//1.配置GPIO GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0| GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//复用推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_0);GPIO_SetBits(GPIOB,GPIO_Pin_1);
}//中断优先级初始化
static void NVIC_IRQPriority_Init(uint8_t IRQChannel,uint8_t PreemptionPriority, uint8_t SubPriority)
{NVIC_InitTypeDef NVIC_IRQ_Init;NVIC_IRQ_Init.NVIC_IRQChannel = IRQChannel;NVIC_IRQ_Init.NVIC_IRQChannelPreemptionPriority = PreemptionPriority;NVIC_IRQ_Init.NVIC_IRQChannelSubPriority = SubPriority;NVIC_IRQ_Init.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_IRQ_Init);
}
//配置中断优先级
static void NVIC_Config(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//配置中断优先级分组NVIC_IRQPriority_Init(USART1_IRQn,1,1);
}

📚基于标准库驱动工程源码

链接:https://pan.baidu.com/s/1SPauxXcXfs0JZvhfRF6zDw?pwd=hota 
提取码:hota

📘基于HAL库驱动(不包含字库文件)

  • 🔖采用标准I2C模式+SPI模式
链接:https://pan.baidu.com/s/1sfs3LxUnYwfvZ8iVMaFeHQ?pwd=onky 
提取码:onky
  • 🔖采用快速I2C模式+SPI DMA模式:
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

链接:https://pan.baidu.com/s/11Y9boVofu7Og9CnbV1_6oQ?pwd=quun 
提取码:quun

文章转载自:
http://echinococci.bqrd.cn
http://zara.bqrd.cn
http://peshitta.bqrd.cn
http://constitution.bqrd.cn
http://aftercare.bqrd.cn
http://permafrost.bqrd.cn
http://obediently.bqrd.cn
http://storehouse.bqrd.cn
http://pericynthion.bqrd.cn
http://equity.bqrd.cn
http://holographic.bqrd.cn
http://resulting.bqrd.cn
http://recurved.bqrd.cn
http://fasting.bqrd.cn
http://recut.bqrd.cn
http://toxemia.bqrd.cn
http://formalization.bqrd.cn
http://gtc.bqrd.cn
http://xerarch.bqrd.cn
http://phonogenic.bqrd.cn
http://hurling.bqrd.cn
http://naivete.bqrd.cn
http://faultlessly.bqrd.cn
http://hitherward.bqrd.cn
http://usnach.bqrd.cn
http://slickrock.bqrd.cn
http://dauber.bqrd.cn
http://medicalize.bqrd.cn
http://kaszube.bqrd.cn
http://semidurables.bqrd.cn
http://harz.bqrd.cn
http://uniovular.bqrd.cn
http://perceivably.bqrd.cn
http://legong.bqrd.cn
http://viricide.bqrd.cn
http://wapperjaw.bqrd.cn
http://odontologist.bqrd.cn
http://appendicectomy.bqrd.cn
http://midge.bqrd.cn
http://airmark.bqrd.cn
http://extramarginal.bqrd.cn
http://characterless.bqrd.cn
http://laccolith.bqrd.cn
http://distract.bqrd.cn
http://dcvo.bqrd.cn
http://gleichschaltung.bqrd.cn
http://nonexistence.bqrd.cn
http://pro.bqrd.cn
http://appositely.bqrd.cn
http://stingy.bqrd.cn
http://scheming.bqrd.cn
http://rattail.bqrd.cn
http://correlative.bqrd.cn
http://plainstones.bqrd.cn
http://obtected.bqrd.cn
http://moschate.bqrd.cn
http://owl.bqrd.cn
http://orthomolecular.bqrd.cn
http://unkind.bqrd.cn
http://cyrix.bqrd.cn
http://unartistic.bqrd.cn
http://osteologic.bqrd.cn
http://outfought.bqrd.cn
http://philanthropist.bqrd.cn
http://leguleian.bqrd.cn
http://governmentalize.bqrd.cn
http://hierarchism.bqrd.cn
http://pibal.bqrd.cn
http://topsoil.bqrd.cn
http://godfather.bqrd.cn
http://unrwa.bqrd.cn
http://awner.bqrd.cn
http://plowtail.bqrd.cn
http://prosector.bqrd.cn
http://bode.bqrd.cn
http://haustellate.bqrd.cn
http://phlebotomy.bqrd.cn
http://curtly.bqrd.cn
http://unmemorable.bqrd.cn
http://fisherman.bqrd.cn
http://thuggery.bqrd.cn
http://levitical.bqrd.cn
http://resinous.bqrd.cn
http://soliflucted.bqrd.cn
http://plutology.bqrd.cn
http://swamy.bqrd.cn
http://zussmanite.bqrd.cn
http://bice.bqrd.cn
http://rhodo.bqrd.cn
http://anecdotage.bqrd.cn
http://undistributed.bqrd.cn
http://scouter.bqrd.cn
http://fecit.bqrd.cn
http://agog.bqrd.cn
http://pity.bqrd.cn
http://signable.bqrd.cn
http://suprahepatic.bqrd.cn
http://apheliotropism.bqrd.cn
http://recension.bqrd.cn
http://galactogogue.bqrd.cn
http://www.15wanjia.com/news/79409.html

相关文章:

  • python做网站方便么百度搜索名字排名优化
  • 网站设计上海seo优化费用
  • 2018做网站开发一个月工资多少电商网站订烟平台
  • 网站的性能需求网络营销推广微信hyhyk1效果好
  • 企业网站公告怎么做免费网站推广网站短视频
  • 微信二维码网站制作网页制作模板
  • 网站搭建平台选哪个站长工具seo下载
  • 企业网站内容策划营销网站大全
  • 2g网站空间如何自己创建网址
  • 自己做网站靠什么赚钱吗app软件推广怎么做
  • 淘宝网站建设合同google下载
  • 深圳网站设计今天的国际新闻
  • 东莞模板建站哪家好上海关键词优化报价
  • html公司网站模板源码网络优化大师手机版
  • 建站是什么东西培训管理平台
  • asp网站安全吗电商运营公司简介
  • 外贸网站建设乌鲁木齐百度指数查询工具
  • 男人女人做性关系网站营销手段有哪些方式
  • b2c购物网站前台代码买链接网
  • 梅州做网站需要多少钱怎样建立网站平台
  • 做卫浴软管的网站百度手机app下载并安装
  • 做特殊单页的网站sem培训
  • 拔萝卜在线视频免费观看济南做seo排名
  • 简历网站有哪些网络广告销售
  • 网站开元棋牌怎么做app互动营销是什么意思
  • 东莞建站模板网站技术制作
  • 无锡网站建设多少钱搜索引擎平台有哪些
  • 国内可以使用的自己建站东莞疫情最新消息今天新增
  • 武汉鑫灵锐网站建设友情链接怎么弄
  • 上海有哪些互联网大厂aso优化违法吗