中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

海曙網(wǎng)站制作職業(yè)培訓(xùn)學(xué)校加盟

海曙網(wǎng)站制作,職業(yè)培訓(xùn)學(xué)校加盟,杭州杭州網(wǎng)站建設(shè),網(wǎng)站建設(shè)模板制作時(shí)間記錄:2024/1/27 一、OLED相關(guān)介紹 (1)顯示分辨率128*64點(diǎn)陣 (2)IIC作為從機(jī)的地址0x78 (3)操作步驟:主機(jī)先發(fā)送IIC起始信號(hào)S,然后發(fā)送OLED的地址0x78,然…

時(shí)間記錄:2024/1/27

一、OLED相關(guān)介紹

(1)顯示分辨率128*64點(diǎn)陣
(2)IIC作為從機(jī)的地址0x78
(3)操作步驟:主機(jī)先發(fā)送IIC起始信號(hào)S,然后發(fā)送OLED的地址0x78,然后獲取校驗(yàn)位ACK,接著發(fā)送控制字節(jié),告訴OLED接下來發(fā)送的一個(gè)字節(jié)數(shù)據(jù)是指令字節(jié)還是數(shù)據(jù)字節(jié),Co=0,接下來只包含數(shù)據(jù),D/C=0時(shí),接下來的是指令字節(jié),D/C=1時(shí),接下來的是數(shù)據(jù)字節(jié),最后發(fā)送一個(gè)IIC結(jié)束信號(hào)
OLED操作步驟
1.3.1 寫指令代碼

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

1.3.2 寫數(shù)據(jù)代碼

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

(4)顯存GDDRAM大小為128*64
(5)每8COM組成一個(gè)Page,共有8Page,即64行
(6)每一個(gè)COM中有128個(gè)Segment,即128列
(7)在一個(gè)Segment中,發(fā)送的顯示數(shù)據(jù),數(shù)據(jù)高位在下,數(shù)據(jù)低位在上
Seg中數(shù)據(jù)顯示

二、OLED指令+數(shù)據(jù)結(jié)合使用,先發(fā)送命令指令然后發(fā)送數(shù)據(jù)指令

(1)設(shè)置對比度,即屏幕亮度

命令數(shù)據(jù)
0x81對比度(0-255)0x00-0xFF,默認(rèn)值0x7F(127)

實(shí)際是設(shè)置OLED的驅(qū)動(dòng)電流,對比度設(shè)置越大,驅(qū)動(dòng)電流越大,顯示亮度就越高。
(2)OLED顯示跟隨GDDRAM,即向GDDRAM寫入顯示數(shù)據(jù)后是否立馬改變顯示

命令數(shù)據(jù)
0xA4:OLED跟隨,0xA5:OLED顯示固定,不跟隨,默認(rèn)值0xA4

(3)設(shè)置反色,即GDDRAM中0還是1表示顯示

命令數(shù)據(jù)
0xA6:正常顯示,1表示顯示,0表示不顯示,0xA7:反轉(zhuǎn)顯示,1表示不顯示,0表示顯示,默認(rèn)值0xA6

(4)開啟/關(guān)閉顯示

命令數(shù)據(jù)
0xAE:關(guān)閉顯示,進(jìn)入睡眠模式,0xAF:開啟顯示,默認(rèn)值0xAE

(5)設(shè)置顯示列地址

命令數(shù)據(jù)
0x00-0x0F:設(shè)置列地址的低四位,默認(rèn)值0x00,0x10-0x17:設(shè)置列地址的高四位,默認(rèn)值0x10

此設(shè)置僅在頁尋址模式下有效,兩個(gè)設(shè)置共同決定了顯示列的起始地址
(6)設(shè)置尋址模式

命令數(shù)據(jù)
0x200x00:行尋址模式,0x01:列尋址模式,0x02:頁尋址模式,默認(rèn)值0x02

2.6.1 頁尋址模式,一行寫入完畢向第1列覆蓋顯示
頁尋址模式
2.6.2 水平/行尋址模式,一行寫入完畢向下一行的第一列覆蓋顯示
行尋址模式
2.6.3 垂直/列尋址模式
列尋址模式
(7)設(shè)置列地址

命令數(shù)據(jù)
0x210-127,默認(rèn)為0,0-127,默認(rèn)為127

此設(shè)置僅在行/列尋址模式下有效,兩個(gè)數(shù)據(jù)用于設(shè)置列起始地址和結(jié)束地址
(8)設(shè)置頁地址

命令數(shù)據(jù)
0x220-7,默認(rèn)0,0-7,默認(rèn)7

此設(shè)置僅在行/列尋址模式下有效,兩個(gè)數(shù)據(jù)用于設(shè)置頁的起始地址和結(jié)束地址
(9)設(shè)置顯示頁的起始地址

命令數(shù)據(jù)
0xB0-0xB7,默認(rèn)值0xB0

此設(shè)置僅在頁尋址模式下有效,用于設(shè)置顯示頁的起始頁地址
(10)設(shè)置顯示開始行

命令數(shù)據(jù)
0x40-0x7F:對應(yīng)64-0行,默認(rèn)0x40

(11)設(shè)置列對于Segment的映射

命令數(shù)據(jù)
0xA0:Column0映射到Seg0,0xA1:Column127映射到Seg0,默認(rèn)值0xA0

(12)設(shè)置通道數(shù)(分辨率)

命令數(shù)據(jù)
0xA80x01-0x3F,對應(yīng)1-63,默認(rèn)63

(13)設(shè)置COM Driver的掃描方向

命令數(shù)據(jù)
0xC0:從COM0掃描到COMN,0xC8:從COMN掃描到COM0,默認(rèn)值0xC0

(14)設(shè)置COM的偏移值,一般設(shè)置為0,保證屏幕的完整顯示

命令數(shù)據(jù)
0xD30x00-0x3F,默認(rèn)0

(15)設(shè)置時(shí)鐘分頻比和時(shí)鐘頻率

命令數(shù)據(jù)
0xDA[3:0]:設(shè)置時(shí)鐘分頻比,[7:4]:設(shè)置時(shí)鐘頻率,0x12:128x64OLED,0x02:128x32OLED

(16)操作充電泵

命令數(shù)據(jù)
0x8D0x10:關(guān)閉充電泵,0x14:打開充電泵

(17)設(shè)置預(yù)充電時(shí)間

命令數(shù)據(jù)
0xD90x00-0xFF

(18)設(shè)置電壓級別

命令數(shù)據(jù)
0xDB默認(rèn)值0x20,0.77xVCC

三、OLED函數(shù)實(shí)現(xiàn)

(1)初始化函數(shù)

void vOledInit(void)
{vIICInit();Delay_Ms(100);vOledWriteCmd(0xA8);//設(shè)置分辨率vOledWriteCmd(0x3F);//0x3f : 128*64  0x1f  128*32vOledWriteCmd(0xDA);//設(shè)置COM硬件引腳配置,適應(yīng)分辨率vOledWriteCmd(0x12);//0x12 : 0.96->128*64  0x02 : 0.91->128*32vOledWriteCmd(0xD3);//設(shè)置顯示偏移vOledWriteCmd(0x00);//默認(rèn)無偏移vOledWriteCmd(0x40);//設(shè)置顯示開始0-63vOledWriteCmd(0xA1);//段SEGMENT重映射對于IIC四角OLED要設(shè)置為0xA1vOledWriteCmd(0x81);//對比度設(shè)置vOledWriteCmd(0xFF);//亮度設(shè)置0x00-0xFF,數(shù)值越大亮度越大vOledWriteCmd(0xA4);//輸出遵循RAM內(nèi)容,0xA5輸出忽略RAM內(nèi)容vOledWriteCmd(0xA7);//顯示方式正常顯示,0xA7反向顯示,逆碼,0點(diǎn)亮還是1點(diǎn)亮vOledWriteCmd(0x8D);//充電泵設(shè)置vOledWriteCmd(0x14);//允許在顯示開啟的時(shí)候使用,0x10:不允許在開啟前使用vOledWriteCmd(0x20);//設(shè)置內(nèi)存地址模式 水平/垂直/頁尋址(默認(rèn))vOledWriteCmd(0x02);//水平0x00   垂直0x01    頁尋址0x02vOledWriteCmd(0xC8);//設(shè)置COM掃描方式0xC0上下反置左到右  0xC8正常右到左vOledWriteCmd(0xB0);//為頁尋址模式設(shè)置開啟地址0-7vOledWriteCmd(0x00);//設(shè)置低列地址vOledWriteCmd(0x10);//設(shè)置高列地址vOledWriteCmd(0xD9);//設(shè)置預(yù)充電時(shí)期vOledWriteCmd(0x22);//充電時(shí)間vOledWriteCmd(0xDB);//設(shè)置取消選擇級別vOledWriteCmd(0x20);//默認(rèn)0x20 0.77xvccvOledWriteCmd(0xAF);//顯示開啟
}

(2)清屏函數(shù)

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)開/關(guān)顯示

void vOledOn(void)
{vOledWriteCmd(0x8D);//操作充電泵vOledWriteCmd(0x14);//打開vOledWriteCmd(0xAF);
}
void vOledOff(void)
{vOledWriteCmd(0x8D);vOledWriteCmd(0x10);//關(guān)閉vOledWriteCmd(0xAE);
}

(4)設(shè)置顯示位置函數(shù)

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

(5)顯示一個(gè)英文字符函數(shù)

static void vOledShowChar(int row,int col,u8 charData)
{if(row>7 || col> 127) return;int index = charData-' ';//計(jì)算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)格式化顯示字符串函數(shù)

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'){//格式化輸入整數(shù)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'){//格式化輸入小數(shù),小數(shù)點(diǎn)后全部保留sprintf(tempStr,"%s%lf",tempStr,va_arg(vaList,double));tempPos = strlen(tempStr);fmtPos++;}else if(fmtStr[fmtPos] == '%' && fmtStr[fmtPos+1] == '.' && fmtStr[fmtPos+3] == 'f'){//格式化輸入小數(shù),小數(shù)后進(jìn)行保留指定位switch(fmtStr[fmtPos+2]){//默認(rèn)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)輸出一個(gè)漢字函數(shù),文件編碼格式需要轉(zhuǎn)換為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)顯示漢字字符串函數(shù)

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://www.risenshineclean.com/news/27229.html

相關(guān)文章:

  • 中小企業(yè)的網(wǎng)站建設(shè)seo怎么學(xué)
  • 企業(yè)對電子商務(wù)網(wǎng)站的建設(shè)百度官方網(wǎng)站網(wǎng)址是多少
  • 東莞大嶺山鎮(zhèn)網(wǎng)站建設(shè)新聞式軟文
  • 自己開網(wǎng)站工作室阿里云域名查詢和注冊
  • 企業(yè)網(wǎng)站的缺點(diǎn)有域名了怎么建立網(wǎng)站
  • 大連網(wǎng)站推廣招聘手機(jī)優(yōu)化大師為什么扣錢
  • 昆山做網(wǎng)站的jofuns市場營銷一般在哪上班
  • 純靜態(tài)網(wǎng)站部署服務(wù)器跨界營銷案例
  • 優(yōu)秀網(wǎng)站設(shè)計(jì)效果圖企業(yè)營銷推廣怎么做
  • 格力網(wǎng)站建設(shè)首頁友情鏈接交換的作用在于
  • 廣東網(wǎng)站建設(shè)便捷抖音seo優(yōu)化
  • 哪些網(wǎng)站可以接單做推廣搜索引擎
  • 網(wǎng)站建設(shè)客服電話怎么找百度seo刷排名工具
  • 水電維修在哪個(gè)網(wǎng)站上做推廣好些系統(tǒng)優(yōu)化軟件
  • 怎么建個(gè)自己的網(wǎng)站seo建站收費(fèi)地震
  • 網(wǎng)站建設(shè)資訊平臺(tái)關(guān)鍵詞權(quán)重查詢
  • 達(dá)州做網(wǎng)站的公司b站引流推廣
  • 網(wǎng)站后臺(tái)添加投票系統(tǒng)電子商務(wù)網(wǎng)站建設(shè)方案
  • 做網(wǎng)站不會(huì)P圖怎么辦seo詞庫排行
  • 游戲ui設(shè)計(jì)落實(shí)20條優(yōu)化措施
  • 網(wǎng)站建設(shè)硬件網(wǎng)站怎么優(yōu)化推廣
  • 江蘇城鄉(xiāng)建設(shè)職業(yè)學(xué)院就業(yè)網(wǎng)站seo賺錢項(xiàng)目
  • 網(wǎng)站怎么進(jìn)行優(yōu)化排名福建鍵seo排名
  • 仿win8網(wǎng)站百度站長工具seo綜合查詢
  • 梅花網(wǎng)官網(wǎng)免費(fèi)素材中國seo排行榜
  • 企業(yè)建站有什么好處百度秒收錄軟件工具
  • 新鄉(xiāng)網(wǎng)站開發(fā)的公司谷歌瀏覽器下載安裝
  • 網(wǎng)站建設(shè)伍際網(wǎng)絡(luò)百度搜索推廣方法
  • 最近新聞大事件摘抄游戲優(yōu)化大師有用嗎
  • 網(wǎng)站如何添加白名單百度關(guān)鍵詞收錄排名