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

海曙网站制作网站推广策划方案

海曙网站制作,网站推广策划方案,水果商城网站模板,网站运营管理主要内容时间记录:2024/1/27 一、OLED相关介绍 (1)显示分辨率128*64点阵 (2)IIC作为从机的地址0x78 (3)操作步骤:主机先发送IIC起始信号S,然后发送OLED的地址0x78,然…

时间记录:2024/1/27

一、OLED相关介绍

(1)显示分辨率128*64点阵
(2)IIC作为从机的地址0x78
(3)操作步骤:主机先发送IIC起始信号S,然后发送OLED的地址0x78,然后获取校验位ACK,接着发送控制字节,告诉OLED接下来发送的一个字节数据是指令字节还是数据字节,Co=0,接下来只包含数据,D/C=0时,接下来的是指令字节,D/C=1时,接下来的是数据字节,最后发送一个IIC结束信号
OLED操作步骤
1.3.1 写指令代码

static void vOledWriteCmd(u8 cmd)
{vIICStart();vIICSendByte(0x78);vIICCheckAck();vIICSendByte(0x00);vIICCheckAck();vIICSendByte(cmd);vIICCheckAck();vIICStop();
}

1.3.2 写数据代码

static void vOledWriteData(u8 data)
{vIICStart();vIICSendByte(0x78);vIICCheckAck();vIICSendByte(0x40);vIICCheckAck();vIICSendByte(data);vIICCheckAck();vIICStop();
}

(4)显存GDDRAM大小为128*64
(5)每8COM组成一个Page,共有8Page,即64行
(6)每一个COM中有128个Segment,即128列
(7)在一个Segment中,发送的显示数据,数据高位在下,数据低位在上
Seg中数据显示

二、OLED指令+数据结合使用,先发送命令指令然后发送数据指令

(1)设置对比度,即屏幕亮度

命令数据
0x81对比度(0-255)0x00-0xFF,默认值0x7F(127)

实际是设置OLED的驱动电流,对比度设置越大,驱动电流越大,显示亮度就越高。
(2)OLED显示跟随GDDRAM,即向GDDRAM写入显示数据后是否立马改变显示

命令数据
0xA4:OLED跟随,0xA5:OLED显示固定,不跟随,默认值0xA4

(3)设置反色,即GDDRAM中0还是1表示显示

命令数据
0xA6:正常显示,1表示显示,0表示不显示,0xA7:反转显示,1表示不显示,0表示显示,默认值0xA6

(4)开启/关闭显示

命令数据
0xAE:关闭显示,进入睡眠模式,0xAF:开启显示,默认值0xAE

(5)设置显示列地址

命令数据
0x00-0x0F:设置列地址的低四位,默认值0x00,0x10-0x17:设置列地址的高四位,默认值0x10

此设置仅在页寻址模式下有效,两个设置共同决定了显示列的起始地址
(6)设置寻址模式

命令数据
0x200x00:行寻址模式,0x01:列寻址模式,0x02:页寻址模式,默认值0x02

2.6.1 页寻址模式,一行写入完毕向第1列覆盖显示
页寻址模式
2.6.2 水平/行寻址模式,一行写入完毕向下一行的第一列覆盖显示
行寻址模式
2.6.3 垂直/列寻址模式
列寻址模式
(7)设置列地址

命令数据
0x210-127,默认为0,0-127,默认为127

此设置仅在行/列寻址模式下有效,两个数据用于设置列起始地址和结束地址
(8)设置页地址

命令数据
0x220-7,默认0,0-7,默认7

此设置仅在行/列寻址模式下有效,两个数据用于设置页的起始地址和结束地址
(9)设置显示页的起始地址

命令数据
0xB0-0xB7,默认值0xB0

此设置仅在页寻址模式下有效,用于设置显示页的起始页地址
(10)设置显示开始行

命令数据
0x40-0x7F:对应64-0行,默认0x40

(11)设置列对于Segment的映射

命令数据
0xA0:Column0映射到Seg0,0xA1:Column127映射到Seg0,默认值0xA0

(12)设置通道数(分辨率)

命令数据
0xA80x01-0x3F,对应1-63,默认63

(13)设置COM Driver的扫描方向

命令数据
0xC0:从COM0扫描到COMN,0xC8:从COMN扫描到COM0,默认值0xC0

(14)设置COM的偏移值,一般设置为0,保证屏幕的完整显示

命令数据
0xD30x00-0x3F,默认0

(15)设置时钟分频比和时钟频率

命令数据
0xDA[3:0]:设置时钟分频比,[7:4]:设置时钟频率,0x12:128x64OLED,0x02:128x32OLED

(16)操作充电泵

命令数据
0x8D0x10:关闭充电泵,0x14:打开充电泵

(17)设置预充电时间

命令数据
0xD90x00-0xFF

(18)设置电压级别

命令数据
0xDB默认值0x20,0.77xVCC

三、OLED函数实现

(1)初始化函数

void vOledInit(void)
{vIICInit();Delay_Ms(100);vOledWriteCmd(0xA8);//设置分辨率vOledWriteCmd(0x3F);//0x3f : 128*64  0x1f  128*32vOledWriteCmd(0xDA);//设置COM硬件引脚配置,适应分辨率vOledWriteCmd(0x12);//0x12 : 0.96->128*64  0x02 : 0.91->128*32vOledWriteCmd(0xD3);//设置显示偏移vOledWriteCmd(0x00);//默认无偏移vOledWriteCmd(0x40);//设置显示开始0-63vOledWriteCmd(0xA1);//段SEGMENT重映射对于IIC四角OLED要设置为0xA1vOledWriteCmd(0x81);//对比度设置vOledWriteCmd(0xFF);//亮度设置0x00-0xFF,数值越大亮度越大vOledWriteCmd(0xA4);//输出遵循RAM内容,0xA5输出忽略RAM内容vOledWriteCmd(0xA7);//显示方式正常显示,0xA7反向显示,逆码,0点亮还是1点亮vOledWriteCmd(0x8D);//充电泵设置vOledWriteCmd(0x14);//允许在显示开启的时候使用,0x10:不允许在开启前使用vOledWriteCmd(0x20);//设置内存地址模式 水平/垂直/页寻址(默认)vOledWriteCmd(0x02);//水平0x00   垂直0x01    页寻址0x02vOledWriteCmd(0xC8);//设置COM扫描方式0xC0上下反置左到右  0xC8正常右到左vOledWriteCmd(0xB0);//为页寻址模式设置开启地址0-7vOledWriteCmd(0x00);//设置低列地址vOledWriteCmd(0x10);//设置高列地址vOledWriteCmd(0xD9);//设置预充电时期vOledWriteCmd(0x22);//充电时间vOledWriteCmd(0xDB);//设置取消选择级别vOledWriteCmd(0x20);//默认0x20 0.77xvccvOledWriteCmd(0xAF);//显示开启
}

(2)清屏函数

void vOledClear(void)
{for(u8 i=0;i<8;i++){vOledWriteCmd(0xB0|i);vOledWriteCmd(0x00);vOledWriteCmd(0x10);for(u8 j=0;j<128;j++){vOledWriteData(0x00);}}
}

(3)开/关显示

void vOledOn(void)
{vOledWriteCmd(0x8D);//操作充电泵vOledWriteCmd(0x14);//打开vOledWriteCmd(0xAF);
}
void vOledOff(void)
{vOledWriteCmd(0x8D);vOledWriteCmd(0x10);//关闭vOledWriteCmd(0xAE);
}

(4)设置显示位置函数

static void vOledSetPos(int row,int col)//设置显示位置,8行*128列
{vOledWriteCmd(0xB0|row);vOledWriteCmd(col & 0x0F);//列低4位vOledWriteCmd(0x10+((col>>4)&0x0F));//列高4位
}

(5)显示一个英文字符函数

static void vOledShowChar(int row,int col,u8 charData)
{if(row>7 || col> 127) return;int index = charData-' ';//计算ASCII编码位置for(u8 i=0;i<2;i++){vOledSetPos(row+i,col);for(u8 j=0;j<8;j++){vOledWriteData(char8X16[index][i*8+j]);}}
}

取模格式
OLED取模格式
(6)格式化显示字符串函数

void vOledShowString(int row,int col,u8 *fmtStr,...)
{/******字符串格式化拼接********/int fmtPos = 0;char tempStr[STRMAX];memset(tempStr,0,sizeof(tempStr));int tempPos=0;va_list vaList;va_start(vaList,fmtStr);for(fmtPos=0;fmtPos<strlen((char*)fmtStr);fmtPos++){if(fmtStr[fmtPos] == '%' && fmtStr[fmtPos+1] == 'd'){//格式化输入整数sprintf(tempStr,"%s%d",tempStr,va_arg(vaList,int));tempPos = strlen(tempStr);fmtPos++;}else if(fmtStr[fmtPos] == '%' && fmtStr[fmtPos+1] == 's'){//格式化输入字符串sprintf(tempStr,"%s%s",tempStr,va_arg(vaList,char*));tempPos = strlen(tempStr);fmtPos++;}else if(fmtStr[fmtPos] == '%' && fmtStr[fmtPos+1] == 'f'){//格式化输入小数,小数点后全部保留sprintf(tempStr,"%s%lf",tempStr,va_arg(vaList,double));tempPos = strlen(tempStr);fmtPos++;}else if(fmtStr[fmtPos] == '%' && fmtStr[fmtPos+1] == '.' && fmtStr[fmtPos+3] == 'f'){//格式化输入小数,小数后进行保留指定位switch(fmtStr[fmtPos+2]){//默认6位,选择1-5位保留case '1':sprintf(tempStr,"%s%.1lf",tempStr,va_arg(vaList,double));tempPos = strlen(tempStr);fmtPos+=3;break;case '2':sprintf(tempStr,"%s%.2lf",tempStr,va_arg(vaList,double));tempPos = strlen(tempStr);fmtPos+=3;break;case '3':sprintf(tempStr,"%s%.3lf",tempStr,va_arg(vaList,double));tempPos = strlen(tempStr);fmtPos+=3;break;case '4':sprintf(tempStr,"%s%.4lf",tempStr,va_arg(vaList,double));tempPos = strlen(tempStr);fmtPos+=3;break;case '5':sprintf(tempStr,"%s%.5lf",tempStr,va_arg(vaList,double));tempPos = strlen(tempStr);fmtPos+=3;break;default:sprintf(tempStr,"%s%lf",tempStr,va_arg(vaList,double));tempPos = strlen(tempStr);fmtPos+=3;break;}}else{tempStr[tempPos] = fmtStr[fmtPos];tempPos++;}}va_end(vaList);/******输出显示字符串*******/for(u8 i=0;i<strlen(tempStr);i++){vOledShowChar(row,8*i+col,tempStr[i]);}
}

(7)输出一个汉字函数,文件编码格式需要转换为ANSI编码

static void vOledShowOneChinese(int row,int col,u8 font[2])
{if(row>7 || col> 127) return;int fontCount = sizeof(chinaFont)/sizeof(ChineseStruct);for(int index=0;index<fontCount;index++){if(chinaFont[index].hz[0] == font[0] && chinaFont[index].hz[1] == font[1]){for(int i=0;i<2;i++){vOledSetPos(row+i,col);for(int j=0;j<16;j++){vOledWriteData(chinaFont[index].hzHex[i*16+j]);}}break;}}
}

(8)显示汉字字符串函数

void vOledShowChinaese(int row,int col,u8 *cFont)
{int index=0;u8 tempChina[2];while(cFont[index]!='\0'){tempChina[0] = cFont[index];tempChina[1] = cFont[index+1];vOledShowOneChinese(row,index/2*16+col,tempChina);index+=2;}
}

文章转载自:
http://dinncopyrolyse.wbqt.cn
http://dinncooutdrink.wbqt.cn
http://dinncoannie.wbqt.cn
http://dinncoturves.wbqt.cn
http://dinncoeffectuation.wbqt.cn
http://dinncohegari.wbqt.cn
http://dinncobinturong.wbqt.cn
http://dinncomildew.wbqt.cn
http://dinncoxylidine.wbqt.cn
http://dinncophysically.wbqt.cn
http://dinncoosteectomy.wbqt.cn
http://dinncosculpt.wbqt.cn
http://dinncoabac.wbqt.cn
http://dinncorecidivate.wbqt.cn
http://dinncounderwater.wbqt.cn
http://dinncocoding.wbqt.cn
http://dinncomuntjac.wbqt.cn
http://dinncoolivary.wbqt.cn
http://dinncoisospondylous.wbqt.cn
http://dinncoapotropaic.wbqt.cn
http://dinncoadministratrix.wbqt.cn
http://dinncoinarticulately.wbqt.cn
http://dinncousac.wbqt.cn
http://dinncoinitialization.wbqt.cn
http://dinncorhizopod.wbqt.cn
http://dinncoperistome.wbqt.cn
http://dinncoimaginary.wbqt.cn
http://dinncokern.wbqt.cn
http://dinncoestriol.wbqt.cn
http://dinncoshading.wbqt.cn
http://dinncointelligibly.wbqt.cn
http://dinncoportability.wbqt.cn
http://dinncosinner.wbqt.cn
http://dinncooneirology.wbqt.cn
http://dinncomarmap.wbqt.cn
http://dinncomenstrual.wbqt.cn
http://dinncoperemptorily.wbqt.cn
http://dinncocredited.wbqt.cn
http://dinncoaye.wbqt.cn
http://dinncowashboard.wbqt.cn
http://dinncoperdurable.wbqt.cn
http://dinncogoodwill.wbqt.cn
http://dinncoconvex.wbqt.cn
http://dinncopuree.wbqt.cn
http://dinncointemerate.wbqt.cn
http://dinncocensorial.wbqt.cn
http://dinncogloatingly.wbqt.cn
http://dinnconode.wbqt.cn
http://dinncocausse.wbqt.cn
http://dinncopredistortion.wbqt.cn
http://dinncoprogressional.wbqt.cn
http://dinncocombinatory.wbqt.cn
http://dinncoarm.wbqt.cn
http://dinncoequidistance.wbqt.cn
http://dinncoscolion.wbqt.cn
http://dinncocaptivating.wbqt.cn
http://dinncorecapture.wbqt.cn
http://dinncoembden.wbqt.cn
http://dinncohung.wbqt.cn
http://dinncodiamagnetism.wbqt.cn
http://dinncomaxilliped.wbqt.cn
http://dinncoprogressivism.wbqt.cn
http://dinncowarpwise.wbqt.cn
http://dinncoinsidious.wbqt.cn
http://dinncoadministrivia.wbqt.cn
http://dinncoperverse.wbqt.cn
http://dinnconeocolonialist.wbqt.cn
http://dinncowindhover.wbqt.cn
http://dinncostandpatter.wbqt.cn
http://dinncoeffractor.wbqt.cn
http://dinncounaverage.wbqt.cn
http://dinncosirius.wbqt.cn
http://dinncoembedded.wbqt.cn
http://dinncoanaplastic.wbqt.cn
http://dinncospend.wbqt.cn
http://dinncosferics.wbqt.cn
http://dinncosagitta.wbqt.cn
http://dinncochloroacetone.wbqt.cn
http://dinnconewfoundlander.wbqt.cn
http://dinncophysical.wbqt.cn
http://dinncogrift.wbqt.cn
http://dinncosingularism.wbqt.cn
http://dinncoaltarage.wbqt.cn
http://dinncohypertherm.wbqt.cn
http://dinncocaribe.wbqt.cn
http://dinnconoctiluca.wbqt.cn
http://dinncobartend.wbqt.cn
http://dinncophonation.wbqt.cn
http://dinncocustumal.wbqt.cn
http://dinncostimulate.wbqt.cn
http://dinncoreticulate.wbqt.cn
http://dinncopukka.wbqt.cn
http://dinncoconsilient.wbqt.cn
http://dinncoenzygotic.wbqt.cn
http://dinncobushmaster.wbqt.cn
http://dinncorubbingstone.wbqt.cn
http://dinncoavo.wbqt.cn
http://dinncowey.wbqt.cn
http://dinncobarb.wbqt.cn
http://dinncorenogram.wbqt.cn
http://www.dinnco.com/news/126173.html

相关文章:

  • 广告投放报价seo优化与sem推广有什么关系
  • 网站建站公司排名百度热搜关键词排行榜
  • 做零售的外贸网站百度推广渠道
  • 想找做拼接屏的公司去哪个网站百度关键字搜索量查询
  • 无忧网站源码百度发视频步骤
  • 高端响应式网站自己做网站制作流程
  • 商务网站规划与建设爱站工具包官网
  • 做高端网站公司免费网站推广网址
  • 贵阳网络推广哪家靠谱电商seo名词解释
  • 如何用用dw做网站后台关键词优化排名哪家好
  • 深圳企业网站建设千锋教育郑州校区
  • 泰安网站建设介绍百度app 浏览器
  • 德州口碑好的网站制作公司南宁整合推广公司
  • 攀枝花网站怎么做seo武汉网络关键词排名
  • 个人做电影网站合法吗seo顾问阿亮
  • 保险官方网站steam交易链接是什么
  • 高端定制网站建设站长之家爱站网
  • 推广计划描述seo搜索优化服务
  • 如何做电视剧的短视频网站百度url提交
  • 网站qq在线状态产品宣传
  • 网站添加 百度商桥网页制作软件
  • 网站affiliate怎么做?成人短期技能培训学校
  • 成都科技网站建设联系超级外链吧
  • wordpress怎么转换为静态链接电商seo是什么
  • 做电商网站用什么系统谷歌关键词工具
  • 网站如何做中英文切换关键词采集软件
  • 微信管理系统下载新网站应该怎么做seo
  • 做网站域名转出挂靠服务器营销方式有哪些
  • wordpress 修改header上首页的seo关键词优化
  • 免费公司网站制作网站权重是怎么提升的