導航:首頁 > 操作系統 > 支持oled的單片機

支持oled的單片機

發布時間:2024-07-01 01:17:43

A. STM32F407單片機正常工作時,3.3V電壓正常,維信諾OLED液晶工作電壓也正常為3.3V,但是液晶不亮。什麼原因

oled除了需要3.3v的數字電壓以外,還需要一個10多伏的oeld驅動電壓。你可以參看晶奧科技公司網站,有2.4寸、2.7寸、3.5寸、4.7寸等OLED模組。另外,oled不是液晶,不驅動像素點的話,他是不會發光的!

B. 怎樣用oled12864畫一個點我的是淘寶上常見的0.96『的OLED。求51單片機的程序。

首先建個顯存數組,將要顯示的數據寫入顯存里,再將整個顯存通過顯示圖片的方式寫入5110的RAM里顯示就OK啦!我的12864OLED也讀不出內部的DDRAM,但我剛用這種方法給12864OLED打點了。

unsignedcharxdatamemory[128];//顯存


//在隨意坐標上畫點
voidOLED_Drawpoint(unsignedcharx,unsignedchary,bitdat)
{//x,y,行列坐標;dat,1寫,0擦除
unsignedcharrdata;
rdata=memory[y/8*128+x];//先將對應的位元組數據從顯存數組讀出來
if(dat==1){
memory[y/8*128+x]=rdata|(0x01<<(y%8));//將讀出來的數據加上添加點的數據
}
else{
memory[y/8*128+x]=rdata-(0x01<<(y%8));
}
}


OLED_DrawBMP(0,0,128,8,memory);//(顯示圖片函數)將顯存的數據導入顯示屏

C. stm8s003單片機寫OLED的代碼內存不夠怎麼辦

stm8s008空間大小是8K 使用的時候會出現空間不夠用的情況,這個時候要對軟體進行一些設置,從而優化程序大小。

1,修改優化等級,如下圖所示,這樣會優化掉無關的函數,將代碼優化到最大程度

2,如果代碼有多個數組,而ram實際空間不夠使用的時候,修改下面的參數,最大修改為0xfff。

3,當二維數組定義完報錯,無法容納的時候,在數組前面加上NEAR可解決報錯

例如:

NEAR u8 buff[10][10] = {********};

4,當代碼還是很多的時候就要從代碼邏輯和代碼本身一點點的扣 能用數組代替的盡量不用代碼,能用u8的不用u16

D. stm32f103c8t6單片機最小系統的p13引腳可以驅動oled嗎

STM32F103C8T6是3.3V的單片機,不能接5V的電壓。 STM32F103C8T6 類別:集成電路(IC) 家庭:嵌入式-微控制器 芯體尺寸:32-位 速度:72MHz 外圍設備:DMA,電機控制PWM,PWM,溫度感測器 輸入/輸出數:37 程序存儲器容量:64KB (64K x 8) 程序存儲器類型:FLASH RAM容量:20K x 8 電壓-電源(Vcc/Vdd):2 V ~ 3.6 V 數據轉換器:A/D 10x12b 振盪器型:內部 工作溫度:-40°C ~ 85°C 封裝/外殼:48-LQFP 包裝:托盤

E. 新手51單片機OLED使用請教

LED 屏的操作;與所用的處理器平台沒有關系。 因為大家對 C51 單片機相對都比較熟悉;大學里基本上都學習過;在此我以 C51 的程序來作簡單說明

F. 那位老大能提供一個stc單片機驅動oled屏(128*64)的keil c程序,要很簡單的就行

#define LCM_RW P2_0 //定義引腳
#define LCM_RS P2_1
#define LCM_E P2_2
#define LCM_Data P1
#define Busy 0x80 //用於檢測LCM狀態字中的Busy標識
#i nclude <at89x51.h>
void WriteDataLCM(unsigned char WDLCM);
void WriteCommandLCM(unsigned char WCLCM,BuysC);
unsigned char ReadDataLCM(void);
unsigned char ReadStatusLCM(void);
void LCMInit(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
void Delay5Ms(void);
void Delay400Ms(void);
unsigned char code uctech[] = {"uctech"};
unsigned char code net[] = {"uctech.icpcn.com"};
void main(void)
{
Delay400Ms(); //啟動等待,等LCM講入工作狀態
LCMInit(); //LCM初始化
Delay5Ms(); //延時片刻(可不要)
DisplayListChar(0, 5, uctech);
DisplayListChar(0, 0, net);
ReadDataLCM();//測試用句無意義
while(1);
}
//寫數據
void WriteDataLCM(unsigned char WDLCM)
{
ReadStatusLCM(); //檢測忙
LCM_Data = WDLCM;
LCM_RS = 1;
LCM_RW = 0;
LCM_E = 0; //若晶振速度太高可以在這後加小的延時
LCM_E = 0; //延時
LCM_E = 1;
}
//寫指令
void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC為0時忽略忙檢測
{
if (BuysC) ReadStatusLCM(); //根據需要檢測忙
LCM_Data = WCLCM;
LCM_RS = 0;
LCM_RW = 0;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
}
//讀數據
unsigned char ReadDataLCM(void)
{
LCM_RS = 1;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
return(LCM_Data);
}
//讀狀態
unsigned char ReadStatusLCM(void)
{
LCM_Data = 0xFF;
LCM_RS = 0;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
while (LCM_Data & Busy); //檢測忙信號
return(LCM_Data);
}
void LCMInit(void) //LCM初始化
{
LCM_Data = 0;
WriteCommandLCM(0x38,0); //三次顯示模式設置,不檢測忙信號
Delay5Ms();
WriteCommandLCM(0x38,0);
Delay5Ms();
WriteCommandLCM(0x38,0);
Delay5Ms();
WriteCommandLCM(0x38,1); //顯示模式設置,開始要求每次檢測忙信號
WriteCommandLCM(0x08,1); //關閉顯示
WriteCommandLCM(0x01,1); //顯示清屏
WriteCommandLCM(0x06,1); // 顯示游標移動設置
WriteCommandLCM(0x0C,1); // 顯示開及游標設置
}
//按指定位置顯示一個字元
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF; //限制X不能大於15,Y不能大於1
if (Y) X |= 0x40; //當要顯示第二行時地址碼+0x40;
X |= 0x80; // 算出指令碼
WriteCommandLCM(X, 0); //這里不檢測忙信號,發送地址碼
WriteDataLCM(DData);
}
//按指定位置顯示一串字元
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned char ListLength;
ListLength = 0;
Y &= 0x1;
X &= 0xF; //限制X不能大於15,Y不能大於1
while (DData[ListLength]>0x20) //若到達字串尾則退出
{
if (X <= 0xF) //X坐標應小於0xF
{
DisplayOneChar(X, Y, DData[ListLength]); //顯示單個字元
ListLength++;
X++;
}
}
}
//5ms延時
void Delay5Ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc--);
}
//400ms延時
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--)
{
TempCycB=7269;
while(TempCycB--);
};

閱讀全文

與支持oled的單片機相關的資料

熱點內容
cnc編程用什麼牌子電腦 瀏覽:772
程序員酒局 瀏覽:60
兩張圖片怎麼合成pdf 瀏覽:838
android項目編譯打包流程 瀏覽:34
雲伺服器怎麼連監控 瀏覽:52
基於單片機的超市收銀機設計 瀏覽:558
實訓室單片機 瀏覽:36
現在的安卓手機如何玩以前的游戲 瀏覽:855
python網頁服務響應按鈕 瀏覽:192
java類重復 瀏覽:126
firewall命令 瀏覽:63
chat命令提示沒有f 瀏覽:766
充錢為什麼現實伺服器繁忙 瀏覽:609
androidapi16 瀏覽:724
常考的編程題 瀏覽:397
java能被整除的演算法 瀏覽:103
做演算法工程師的感受 瀏覽:32
適用於win7的c語言編程軟體 瀏覽:484
警察叔叔app的二維碼在哪裡 瀏覽:78
會員視頻app的視頻資源在哪裡 瀏覽:517