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

关于做情侣的网站的图片素材静态页面生成器

关于做情侣的网站的图片素材,静态页面生成器,湖南企业建站系统平台,视频制作免费一、模块介绍 1、常见的显示设备 LED、数码管、点阵、LCD屏(1602/12864)、OLED屏(消费电子) 2、OLED屏的概述 OLED#xff0c;即有机发光二极管#xff08;Organic Light-Emitting Diode#xff09;#xff0c;又称为有机电激光显示#xff08;Organic Electroluminesenc…一、模块介绍 1、常见的显示设备 LED、数码管、点阵、LCD屏(1602/12864)、OLED屏(消费电子) 2、OLED屏的概述 OLED即有机发光二极管Organic Light-Emitting Diode又称为有机电激光显示Organic Electroluminesence Display, OELD。因为具备轻薄、省电等特性因此从2003 年开始这种显示设备在 MP3 播放器上得到了广泛应用而对于同属数码类产品的 DC与手机此前只是在一些展会上展示过采用 OLED 屏幕的工程样品。自 2007 年后寿命得到很大提高具备了许多 LCD 不可比拟的优势。 3、特性 型号SH1106 尺寸132 * 64个像素点前两列和最后的两列显示不了东西 像素点一帧画面所能表示的最小的显示单位。 分辨率横向像素点的个数 * 竖向像素点个数 通信方式 硬线接线四线SPI的通信方式 二、硬件分析 1、引脚分布 A0管脚如果是低电平就是发送命令过去 A0管脚如果是高电平就是发送显示数据过去 OLED_SCL -- 时钟线 MOSIOLED_SI -- 输入对于OLED的驱动芯片 OLED_CS -- 片选线 OLED_RES -- 复位管脚 OLED_D/C -- 命令或数据引脚 IO口模拟SPI 使用SPI控制器 三、SPI通信 1、通信特点 4线SPI同步串行全双工 3线SPI同步串行半双工 2、通信速度 几十Mhz以上 3、通信模式 MODE0和MODE3:上升沿接收数据下降沿发送数据 MODE1和MODE2下降沿接收数据上升沿发送数据 器件支持MODE0模式也支持MODE3支持MODE1模式也支持MODE2 4、通讯图 四、软件编写 1、时序图 1. CS线要拉低 2. SPI符合模式0或者模式3上升沿接收数据下降沿发送数据 3. A0线拉低代表把刚刚传输过去的八位数据给到命令寄存器里拉高代表传输到显存 2、OLED相关命令 假如现在想要从第1页开始显示就要把0xB0的指令发送出去 设置列地址分为了高四字节和低四字节 如果要去设置列地址就要分两次命令发送 当前如果要在第1列显示数据 发送低位的列地址就是00 发送高位的列地址就是10 3、字模提取: 4、图像提取 五、流程 1、初始化GPIO口 复用功能 复用到哪里 PB3 -- SCL -- SPI1_SCL PB5 -- SI -- SPI1_MOSI PB13 -- RES -- 推挽输出 PB7 -- CS --  推挽输出 PA15 -- DC --  推挽输出 2、初始化SPI控制器 使用库函数 先打开外设时钟 找Init函数 #include spi.h/**************************** 函数功能SPI管脚初始化 函数形参u32 nms 函数返回值void 函数说明 PB3 -- SCL -- SPI1_SCL PB5 -- SI -- SPI1_MOSI PB13 -- RES -- 推挽输出 PB7 -- CS -- 推挽输出 PA15 -- DC -- 推挽输出 ****************************/ void Spi_Port_Init(void) {GPIO_InitTypeDef GPIO_InitStruct;//定义了一个结构体变量SPI_InitTypeDef SPI_InitStruct; //1. 打开GPIOA的时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//2. 配置GPIO口功能GPIO_InitStruct.GPIO_Mode GPIO_Mode_OUT;//配置输出模式GPIO_InitStruct.GPIO_OType GPIO_OType_PP;//配置为推挽GPIO_InitStruct.GPIO_Pin GPIO_Pin_7 | GPIO_Pin_13;//选择7号管脚GPIO_InitStruct.GPIO_PuPd GPIO_PuPd_NOPULL;//无上下拉GPIO_InitStruct.GPIO_Speed GPIO_Fast_Speed;//低速GPIO_Init(GPIOB, GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin GPIO_Pin_15;//选择15号管脚GPIO_Init(GPIOA, GPIO_InitStruct); GPIO_InitStruct.GPIO_Mode GPIO_Mode_AF;//配置复用模式GPIO_InitStruct.GPIO_Pin GPIO_Pin_3 | GPIO_Pin_5;//选择3和5号管脚GPIO_Init(GPIOB, GPIO_InitStruct); //3.复用到哪里GPIO_PinAFConfig(GPIOB, GPIO_PinSource3, GPIO_AF_SPI1);GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_SPI1);//4.SPI控制器初始化RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);SPI_InitStruct.SPI_BaudRatePrescaler SPI_BaudRatePrescaler_2;//选择二分频SPI_InitStruct.SPI_CPHA SPI_CPHA_1Edge;//前沿采集SPI_InitStruct.SPI_CPOL SPI_CPOL_Low;//空闲时为低电平SPI_InitStruct.SPI_DataSize SPI_DataSize_8b;//8位数据为一帧SPI_InitStruct.SPI_Direction SPI_Direction_2Lines_FullDuplex;//选择全双工SPI_InitStruct.SPI_FirstBit SPI_FirstBit_MSB;//高位先发SPI_InitStruct.SPI_Mode SPI_Mode_Master;//主模式SPI_InitStruct.SPI_NSS SPI_NSS_Soft;//软件从模式管理SPI_Init(SPI1,SPI_InitStruct);SPI_Cmd(SPI1,ENABLE);//使能SPI1}/**************************** 函数功能SPI发送一个字节数据 函数形参u8 data 函数返回值void 函数说明****************************/ void Spi_SendByte(u8 data) {while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE) RESET)//当前发送缓冲区为空才能跳出循环{}SPI_I2S_SendData(SPI1,data);//发送数据while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE) RESET)//当前接收缓冲区为空才能跳出循环{}SPI_I2S_ReceiveData(SPI1);//接收数据}#include oled.h/********************************************************************************************************** * 函数名 OLED_writeByte * 功能描述 oled字节写向SH1106写入一个字节。 * 参数说明 dat:要写入的数据/命令 * cmd:数据/命令标志 0,表示命令;1,表示数据; * 返回值说明 none * 修改记录 * 其他 : **********************************************************************************************************/ void OLED_writeByte(u8 dat, u8 cmd) { cmd ? OLED_DC_SET() : OLED_DC_CLR(); OLED_select(); Spi_SendByte(dat);OLED_deSelect(); } /********************************************************************************************************** * 函数名 OLED_clear * 功能描述 清屏函数,清完屏,整个屏幕是黑色的!和没点亮一样!!! * 参数说明 none * 返回值说明 none * 修改记录 * 其他 :OLED;8页每页132字节 清屏首先清除第1页从第一个字节开始2 前面 后面 4列 因边框问题不处理 **********************************************************************************************************/ void OLED_clear(void) { u8 i,n; for(i0;i8;i) //8页{ OLED_writeByte (0xb0i,OLED_CMD); //设置页地址0~7//从第2列(0x02)开始OLED_writeByte (0x02,OLED_CMD); //设置显示位置—列低地址OLED_writeByte (0x10,OLED_CMD); //设置显示位置—列高地址 for(n0; n130; n)//到第130列{OLED_writeByte(0,OLED_DATA); //息屏整个屏幕是黑色的!和没点亮一样!!! }} //更新显示 } /********************************************************************************************************** * 函数名 Oled_init * 功能描述 oled初始化 * 参数说明 none * 返回值说明 none * 修改记录 * 其他 : **********************************************************************************************************/void Oled_init(void) { Spi_Port_Init(); //管脚初始化OLED_RES_L;Delay_ms(100);OLED_RES_H;OLED_writeByte(0xAE,OLED_CMD);//--turn off oled panelOLED_writeByte(0x02,OLED_CMD);//---SET low column addressOLED_writeByte(0x10,OLED_CMD);//---SET high column addressOLED_writeByte(0x40,OLED_CMD);//--SET start line address SET Mapping RAM Display Start Line (0x00~0x3F)OLED_writeByte(0x81,OLED_CMD);//--SET contrast control registerOLED_writeByte(0xCF,OLED_CMD); // SET SEG Output Current BrightnessOLED_writeByte(0xA1,OLED_CMD);//--SET SEG/Column Mapping 0xa0左右反置 0xa1正常OLED_writeByte(0xC8,OLED_CMD);//SET COM/Row Scan Direction 0xc0上下反置 0xc8正常OLED_writeByte(0xA6,OLED_CMD);//--SET normal displayOLED_writeByte(0xA8,OLED_CMD);//--SET multiplex ratio(1 to 64)OLED_writeByte(0x3f,OLED_CMD);//--1/64 dutyOLED_writeByte(0xD3,OLED_CMD);//-SET display offSET Shift Mapping RAM Counter (0x00~0x3F)OLED_writeByte(0x00,OLED_CMD);//-not offSETOLED_writeByte(0xd5,OLED_CMD);//--SET display clock divide ratio/oscillator frequencyOLED_writeByte(0x80,OLED_CMD);//--SET divide ratio, SET Clock as 100 Frames/SecOLED_writeByte(0xD9,OLED_CMD);//--SET pre-charge periodOLED_writeByte(0xF1,OLED_CMD);//SET Pre-Charge as 15 Clocks Discharge as 1 ClockOLED_writeByte(0xDA,OLED_CMD);//--SET com pins hardware configurationOLED_writeByte(0x12,OLED_CMD);OLED_writeByte(0xDB,OLED_CMD);//--SET vcomhOLED_writeByte(0x40,OLED_CMD);//SET VCOM Deselect LevelOLED_writeByte(0x20,OLED_CMD);//-SET Page Addressing Mode (0x00/0x01/0x02)OLED_writeByte(0x02,OLED_CMD);//OLED_writeByte(0x8D,OLED_CMD);//--SET Charge Pump enable/disableOLED_writeByte(0x14,OLED_CMD);//--SET(0x10) disableOLED_writeByte(0xA4,OLED_CMD);// Disable Entire Display On (0xa4/0xa5)OLED_writeByte(0xA6,OLED_CMD);// Disable Inverse Display On (0xa6/a7) OLED_writeByte(0xAF,OLED_CMD);//--turn on oled panelOLED_writeByte(0xAF,OLED_CMD); /*display ON*/ OLED_clear(); } /********************************************************************************************************** * 函数名 OLED_setPos * 功能描述 * 参数说明 X: 列坐标 0----131Y: 页坐标 0----7列总共由8个位组成 * 返回值说明 none * 修改记录 * 其他 : **********************************************************************************************************/ void OLED_setPos(unsigned char x, unsigned char y) //34 - 0010 0010 { x 2;//SSH1106 要加这个y 7;//保证页的地址不超OLED_writeByte(0xb0y,OLED_CMD); //设置页地址OLED_writeByte(((x0xf0)4)|0x10, OLED_CMD);//设置显示位置—列高地址//0010 0010 1111 0000//0010 0000 4 -- 0000 0010OLED_writeByte((x0x0f),OLED_CMD); //0010 0010 0000 1111 -- 0000 0010 } /********************************************************************************************************** * 函数名 Show_Signal_Word * 功能描述 显示单个字符 * 参数说明 u8 page, u8 col, u8 ch * 返回值说明 none * 修改记录 * 其他 : **********************************************************************************************************/ void Show_Signal_Word(u8 page, u8 col, u8 ch)//a -- 97 {u8 i;u8 n;u8 index ch - ;//得到当前这个字符在ASCII_816的位置,97 - 32 65if(col 120){col 0;page 2;}OLED_setPos(col,page);//由于一页只有八行一个字符有16行所以需要换两页for(i 0; i 2; i){//由于一个字符只有8列for(n0; n 8; n)//到第130列{OLED_writeByte(ASCII_816[index*16 i*8 n],OLED_DATA); //息屏整个屏幕是黑色的!和没点亮一样!!! }OLED_setPos(col,page1);} }/********************************************************************************************************** * 函数名 Show_String * 功能描述 显示字符串 * 参数说明 u8 page, u8 col, u8 *str, u8 num * 返回值说明 none * 修改记录 * 其他 : **********************************************************************************************************/ void Show_String(u8 page, u8 col, u8 *str, u8 num)//sakdjfhjk,0 {u8 i;OLED_setPos(col,page);for(i 0; i num; i){Show_Signal_Word(page,col,*str);str;col 8;//为了保证下一个字符和前一个字符不重合根据字体大小所以8if(col 120){col 0;page 2;}OLED_setPos(col,page);} }/********************************************************************************************************** * 函数名 Show_Chinese * 功能描述 显示字符串 * 参数说明 u8 page, u8 col, u8 *str, u8 num * 返回值说明 none * 修改记录 * 其他 : **********************************************************************************************************/ void Show_Chinese( u8 page, u8 col, u8 *str, u8 num) {u8 i,j;u8 n;if(col 112){col 0;page 2;}OLED_setPos(col,page);for(j 0; j num; j){for(i 0; i 2; i){//由于一个字符只有8列for(n0; n 16; n)//代表有16列的数据{OLED_writeByte(str[j *32 i*16 n],OLED_DATA); //息屏整个屏幕是黑色的!和没点亮一样!!! }OLED_setPos(col,page1);}col 16;if(col 112){col 0;page 2;}OLED_setPos(col,page);} }/********************************************************************************************************** * 函数名 Show_Pic * 功能描述 显示图片 * 参数说明 u8 page, u8 col, u8 *pic * 返回值说明 none * 修改记录 * 其他 : **********************************************************************************************************/ void Show_Pic(u8 page, u8 col, u8 *pic) {u8 weight pic[2];u8 height pic[4];u8 i,j;pic 6;//先偏移掉数据头的数据if(weight 129 - col){col 0;page 2;}OLED_setPos(col,page);for(i 0; i height / 8; i){for(j 0;j weight; j){OLED_writeByte(*pic,OLED_DATA);pic;}page 1;OLED_setPos(col,page);}}STM32之SPI总线-CSDN博客
http://www.zqtcl.cn/news/71694/

相关文章:

  • 上海网站设计专业团队国家企业信用信息公示系统官网站
  • 上海做网站公司哪家好毛绒玩具 东莞网站建设 技术支持
  • 做网站刷点击网站备案难吗
  • 一个服务器可以放多少网站一个做炉石视频的网站
  • 学会建网站如何做网络营销太原建站公司有哪些
  • 模板网站建设流程图深圳网络营销
  • 企业网站asp源码做点心的网站
  • 北京梵客家装官网资阳seo
  • 济南网络推广杭州优化网站
  • 做个电商网站网站优化公司排名
  • 公司网站主要几方面网页设计图片加载不出来
  • html中文网站模板推广普通话文字内容
  • 1.86神华网站两学一做设计工作室取什么名字好
  • 做网站上极海网wordpress备份还原
  • 中企动力网站建设 医疗网站打不开dns修改吗
  • 高端网站设计推广v信haotg8深圳网站关键词排名查询
  • 南京网站制作步骤怎么制作私人网站教程
  • 企业整站推广中国建设银行官网站安装k宝
  • 个人建站网站建立网站方法
  • 建设部科研申报网站用着不好网站的后台建设
  • 公司网站未备案wordpress后台登陆太慢
  • 国内网站为什么要备案网站排名查询系统
  • 河北网站制作 网站开发个人网站带后台源码
  • 建网站用什么服务器好将自己做的网站发布到
  • 庆阳网站建设推广网站如何实现qq登录功能
  • 网站文字代码广点通推广登录入口
  • 外国优秀设计网站WordPress主题中文主题
  • 网站建设的含盖哪方面网站优化要用什么软件
  • 做足球推荐网站能赚钱吗天河网站建设哪个好
  • 网站关键词建设厦门企业网站建设方案