在知道了取模方式之后,我們就可以根據(jù)取模的方式來編寫顯示字符的代碼了,這里我們針對以上取模方式的顯示字符代碼如下:
//在指定位置顯示一個字符,包括部分字符
//x:0~127 y:0~63
//mode:0,反白顯示;1,正常顯示
//size:選擇字體 12/16/24
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode)
{
u8 temp,t,t1,y0=y;
u8 csize=(size/8+((size%8)?1:0))*(size/2);//得到字體一個字符對應點陣集所占的字節(jié)數(shù)
chr=chr-' ';//得到偏移后的值
for(t=0;t
{
if(size==12)temp=asc2_1206[chr][t]; //調用 1206 字體
else if(size==16)temp=asc2_1608[chr][t]; //調用 1608 字體
else if(size==24)temp=asc2_2412[chr][t]; //調用 2412 字體
else return; //沒有的字庫
for(t1=0;t1<8;t1++)
{
if(temp&0x80)OLED_DrawPoint(x,y,mode);
else OLED_DrawPoint(x,y,!mode);
temp<<=1;y++;
if((y-y0)==size)
{
y=y0; x++;break;
}
}
}
}
該函數(shù)為字符以及字符串顯示的核心部分,函數(shù)中 chr=chr-' ';這句是要得到在字符點陣數(shù)據(jù)里面的實際地址,因為我們的取模是從空格鍵開始的,例如oled_asc2_1206[0][0],代表的是空格符開始的點陣碼。在接下來的代碼,我們也是按照從上到小(先 y++),從左到右(再 x++)的取模方式來編寫的,先得到最高位,然后判斷是寫 1 還是 0,畫點;接著讀第二位,如此循環(huán),直到一個字符的點陣全部取完為止。這其中涉及到列地址和行地址的自增,根據(jù)取模方式來理解,就不難了。
oled.c的內容就為大家介紹到這里,接下來我們看看oled.h 代碼:
#ifndef __OLED_H
#define __OLED_H
#include "sys.h"
#include "stdlib.h"
//OLED 模式設置
//0: 4線串行模式 (模塊的BS1,BS2 均接GND)
//1: 并行8080 模式 (模塊的BS1,BS2均接VCC)
#define OLED_MODE 1
//-----------------OLED 端口定義----------------
#define OLED_CS PBout(7)
#define OLED_RST PGout(15)
#define OLED_RS PDout(6)
#define OLED_WR PAout(4)
#define OLED_RD PDout(7)
//使用4 線串行接口時使用
#define OLED_SCLK PCout(6)
#define OLED_SDIN PCout(7)
#define OLED_CMD 0 //寫命令
#define OLED_DATA 1 //寫數(shù)據(jù)
//OLED 控制用函數(shù)
void OLED_WR_Byte(u8 dat,u8 cmd);
…… //忽略部分函數(shù)聲明
void OLED_ShowString(u8 x,u8 y,const u8 *p);
#endif
該部分比較簡單,OLED_MODE 的定義也在這個文件里面,我們必須根據(jù)自己 OLED 模塊 BS1和 BS2的設置(目前代碼僅支持 8080和4線SPI)來確定OLED_MODE的值。
最后我們來看看主函數(shù)代碼:
int main(void)
{
u8 t=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統(tǒng)中斷優(yōu)先級分組2
delay_init(168); //初始化延時函數(shù)
uart_init(115200); //初始化串口波特率為115200
LED_Init(); //初始化 LED
OLED_Init(); //初始化OLED
OLED_ShowString(0,0,"ALIENTEK",24);
OLED_ShowString(0,24, "0.96' OLED TEST",16);
OLED_ShowString(0,40,"ATOM 2014/5/4",12);
OLED_ShowString(0,52,"ASCII:",12);
OLED_ShowString(64,52,"CODE:",12);
OLED_Refresh_Gram();//更新顯示到OLED
t=' ';
while(1)
{
OLED_ShowChar(36,52,t,12,1);//顯示 ASCII字符
OLED_ShowNum(94,52,t,3,12); //顯示 ASCII字符的碼值
OLED_Refresh_Gram();//更新顯示到OLED
t++;
if(t>'~')t=' ';
delay_ms(500); LED0=!LED0;
}
}
該部分代碼用于在OLED上顯示一些字符,然后從空格鍵開始不停的循環(huán)顯示 ASCII字符集,并顯示該字符的ASCII值。然后我們編譯此工程,直到編譯成功為止。
上一篇:STM32f4---TFTLCD顯示實驗代碼(01)
下一篇:STM32f4---OLCD顯示實驗代碼(03)
推薦閱讀
史海拾趣
在快速發(fā)展的同時,Brilliance公司始終關注社會責任和可持續(xù)發(fā)展。公司積極參與公益事業(yè),為社會做出貢獻。同時,公司還注重環(huán)保和節(jié)能減排,努力降低生產過程中的環(huán)境影響。這種積極履行社會責任的態(tài)度也贏得了社會各界的廣泛認可。
通過以上五個故事,我們可以看到Brilliance公司在電子行業(yè)發(fā)展中的艱辛與輝煌。憑借技術創(chuàng)新、市場拓展、產業(yè)鏈整合以及社會責任等方面的努力,Brilliance成功地在電子行業(yè)中樹立了自己的品牌形象,并為未來的發(fā)展奠定了堅實的基礎。
在國內市場取得一定成功后,Brilliance公司開始將目光投向國際市場。公司制定了詳細的國際化戰(zhàn)略,積極尋求與國際知名企業(yè)的合作機會。通過與國外合作伙伴的共同努力,Brilliance的產品逐漸打入國際市場,并獲得了良好的口碑。同時,公司還積極參加國際電子展會和交流活動,提升了品牌知名度和影響力。
為了進一步擴大市場份額,Banner Engineering公司積極實施全球化戰(zhàn)略。公司在全球范圍內建立了多個生產基地和銷售網絡,以便更好地服務客戶。同時,公司還積極參加國際電子展會和技術交流會議,與國際同行進行合作與交流,不斷吸收新技術和新理念。這些舉措使公司的知名度和影響力得到了進一步提升,也為公司的國際化發(fā)展奠定了堅實基礎。
在快速發(fā)展的同時,ERGOBAHCO公司始終不忘履行社會責任和推動可持續(xù)發(fā)展。公司積極參與社會公益事業(yè),捐款捐物支持貧困地區(qū)的教育、醫(yī)療等事業(yè)。同時,ERGOBAHCO公司還注重環(huán)保和節(jié)能減排工作,通過引進先進的環(huán)保技術和設備,實現(xiàn)了生產過程的綠色化、低碳化。這些舉措不僅提升了公司的社會形象,也為公司的可持續(xù)發(fā)展奠定了堅實基礎。
面對日益嚴峻的環(huán)境問題和可持續(xù)發(fā)展的挑戰(zhàn),BERGQUIST公司始終堅持綠色發(fā)展的理念。公司不斷投入研發(fā)力量,開發(fā)環(huán)保型熱管理材料和生產工藝。同時,公司還積極推廣節(jié)能減排技術,努力降低生產過程中的能耗和排放。這些舉措不僅符合社會發(fā)展趨勢,也為公司的可持續(xù)發(fā)展提供了有力保障。
這五個故事從不同角度展示了BERGQUIST公司在電子行業(yè)中的發(fā)展歷程和成就,體現(xiàn)了公司不斷創(chuàng)新、追求卓越的精神。這些事實性的描述旨在客觀呈現(xiàn)BERGQUIST公司的歷史與現(xiàn)狀,不含任何褒貶之意。
大家買車會買自主品牌的車子么? 從銷售來看,日系車子賣的比較好,周圍的同事也有打算買。 我本人很不喜歡日貨,但是勢單力薄阿! 如果沒有國人的支持,我覺得自主品牌的車子不會大紅。 為什么國家就不扶持一下呢?… 查看全部問答∨ |
|
FPGA內用main clock產生分頻時鐘clk_div2,clk_div4 分頻時鐘各自驅動數(shù)千個FF,故分頻后的net各自驅動一個bufg 兩者之間有交互的數(shù)據(jù) PR之后發(fā)現(xiàn)clk_div2到clk_div4有hold time的violation 是由于兩個時鐘的max clock skew過大造成的 請教如 ...… 查看全部問答∨ |
平板電視技術進過07、08年的高速發(fā)展之后,09年將以什么樣的姿態(tài)呈現(xiàn)在我們面前呢?相信這也是很多一直關注平板電視動態(tài)的讀者的疑問。而從今年中國外資、國產品牌的新品發(fā)布動向來看,“LED背光”已經取代了1080P全高清和100Hz倍速驅動,成為當前 ...… 查看全部問答∨ |
現(xiàn)在要把一個dhcp的源碼,就是從網站上下載的源碼。用arm上的編譯器編譯成在arm linux下運行的dhcp client。 存在問題:下載了源碼,發(fā)現(xiàn)有configure makefile.am makefile.in configure.ac還有幾個目錄client server common doc等等。 看了make ...… 查看全部問答∨ |
我用的AT24C256 EEPROM,經常在寫入第二個字節(jié)的地址后,它就不返回ACK,導致讀取數(shù)據(jù)失敗。大部分時間返回正常,有時候不返回ACK,不產生IIC中斷。請問這是什么原因?… 查看全部問答∨ |
各位大俠:我是新手.自己寫了程序用MIKROC PRO2009 FOR PIC編好 ,用PICFLASH 燒進PIC18F2620,再實時仿真都成了. 可是想脫離PICFLASH和PC,用PIN1(MCLR)和VCC間加個10K電阻,再將PIN1到地瞬間短路,產生向下脈沖去RESET.可總也沒 成功.請教各位大俠,該 ...… 查看全部問答∨ |
請問在vxworks下如何往2個網口(或其中之一)發(fā)送UDP廣播 用MPC852T,VXWORKS5.5,將MPC852T的FEC口為配為100M網口,SCC口配為10M網口,編寫了發(fā)送UDP廣播代碼,通過在FEC和SCC的發(fā)送函數(shù)中加打印信息可以看到,發(fā)送的UDP廣播,發(fā)到FEC口去了,我想將UDP廣播發(fā)送到SCC口,不知如何實現(xiàn)?VXWORKS是如何區(qū)別兩 ...… 查看全部問答∨ |
系統(tǒng)以TI高性能DC/DC轉換器TPS5450為核心組成兩塊DC/DC電路模塊,分別構成本開關電源模塊并聯(lián)供電系統(tǒng)的恒壓源以及恒流源,通過恒壓源模塊調節(jié)實現(xiàn)整個并聯(lián)系統(tǒng)的穩(wěn)定的8V電壓輸出,通過調節(jié)恒流源,實現(xiàn)兩模塊電流的分配。整個系統(tǒng)由兩塊DC/DC轉換 ...… 查看全部問答∨ |
JLinkARM_V4.02d程序連接不上OK6410開發(fā)板!新手求指導 j-linkv8顯示已經連接上,target 顯示Not connected,弄了好久,不知道什么原因,如圖所示: 希望高手能夠指點,不勝感激~!!!!!!不知道是jlink的問題,還是板子的問題?? 問題補充:用JLinkARM_V4.22g版本的能夠顯示連上開發(fā)板,但是 ...… 查看全部問答∨ |
設計資源 培訓 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實惠套件和強大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設備數(shù)驅動Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設置開機自啟動
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測試
- 場景定義、精準創(chuàng)「芯」,芯馳全新發(fā)布AI座艙處理器和高端智控系列
- Arm 技術加持,地平線以 HSD 及征程 6P 推動汽車智能化變革
- 華為自動駕駛技術解讀
- 加速電動化轉型,邦迪汽車系統(tǒng)攜多款創(chuàng)新產品首秀2025上海車展
- 數(shù)據(jù)中心面臨電力約束挑戰(zhàn),推動GenAI終端發(fā)展
- 博泰車聯(lián)網與高通深化合作,基于驍龍座艙平臺至尊版打造新一代智能座艙解決方案
- 凌華智能與Elma強強聯(lián)手為軌道交通及關鍵任務應用提供高可靠加固系統(tǒng)解決方案
- 何為接近開關?如何調試接近開關
- 具身智能浪潮反思:中國制造業(yè)需要什么樣的協(xié)作機器人?
- 影響接近開關工作距離的因素有哪些?使用接近開關有哪些注意事項
- 機器人安全應用系列(三):速度與分離
- LG OLED顯示屏生產延遲 蘋果仍需依賴三星供應
- 中興之困、中國“芯”結背后:警惕中國制造的“外強中干”
- 云計算十年 “爭奪戰(zhàn)”從戰(zhàn)略回歸到了戰(zhàn)術
- 華為從戰(zhàn)略到細節(jié)如何布局 儀器企業(yè)可從中受益
- 華爾街日報:芯片采購像買彩票,平均交付時間拉長到22周
- 中興通訊:美最新《安全設備法案》對公司海外業(yè)務影響小
- 郭明錤:WiFi 6/6E/7或成元宇宙標配 供應鏈為十年內主贏家
- 愛德萬宣布收購美測試設備供應商R&D Altanova
- 指標分析師:電視面板價格12月或在明年初止穩(wěn)反彈