12864的OLED简单显示程序Word文档格式.docx
- 文档编号:7360296
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:26
- 大小:20KB
12864的OLED简单显示程序Word文档格式.docx
《12864的OLED简单显示程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《12864的OLED简单显示程序Word文档格式.docx(26页珍藏版)》请在冰点文库上搜索。
oled12864_wr_cmd(0x10);
for(x=0;
x<
X_WIDTH;
x++)
//oled12864_delay(10000);
oled12864_wr_data(bmp_dat);
}
OLED12864_CS=1;
/*********************LCD复位************************************/
voidoled12864_cls(void)
oled12864_wr_cmd(0);
/*********************LCD初始化************************************/
voidoled12864_init(void)
{
//manual_spi_init();
//MAN_SPI_SCL=1;
//MAN_SPI_SDA=1;
OLED12864_DC=1;
OLED12864_RST=0;
oled12864_delay(400000);
OLED12864_RST=1;
//从上电到下面开始初始化要有足够的时间,即等待RC复位完毕
oled12864_wr_cmd(0xae);
//--turnoffoledpanel
oled12864_wr_cmd(0x00);
//---setlowcolumnaddress
//---sethighcolumnaddress
oled12864_wr_cmd(0x3f);
//--setstartlineaddressSetMappingRAMDisplayStartLine(0x00~0x3F)
oled12864_wr_cmd(0x81);
//--setcontrastcontrolregister
oled12864_wr_cmd(0xcf);
//SetSEGOutputCurrentBrightness
oled12864_wr_cmd(0xa0);
//--SetSEG/ColumnMapping0xa0左右反置0xa1正常
oled12864_wr_cmd(0xc0);
//SetCOM/RowScanDirection0xc0上下反置0xc8正常
oled12864_wr_cmd(0xa6);
//--setnormaldisplay
oled12864_wr_cmd(0xa8);
//--setmultiplexratio(1to64)
//--1/64duty
oled12864_wr_cmd(0xd3);
//-setdisplayoffsetShiftMappingRAMCounter(0x00~0x3F)
//-notoffset
oled12864_wr_cmd(0xd5);
//--setdisplayclockdivideratio/oscillatorfrequency
oled12864_wr_cmd(0x80);
//--setdivideratio,SetClockas100Frames/Sec
oled12864_wr_cmd(0xd9);
//--setpre-chargeperiod
oled12864_wr_cmd(0xf1);
//SetPre-Chargeas15Clocks&
Dischargeas1Clock
oled12864_wr_cmd(0xda);
//--setcompinshardwareconfiguration
oled12864_wr_cmd(0x12);
oled12864_wr_cmd(0xdb);
//--setvcomh
oled12864_wr_cmd(0x40);
//SetVCOMDeselectLevel
oled12864_wr_cmd(0x20);
//-SetPageAddressingMode(0x00/0x01/0x02)
oled12864_wr_cmd(0x02);
//
oled12864_wr_cmd(0x8d);
//--setChargePumpenable/disable
oled12864_wr_cmd(0x14);
//--set(0x10)disable
oled12864_wr_cmd(0xa4);
//DisableEntireDisplayOn(0xa4/0xa5)
//DisableInverseDisplayOn(0xa6/a7)
oled12864_wr_cmd(0xaf);
//--turnonoledpanel
oled12864_fill_full(0x02);
//初始清屏
oled12864_set_pos(0,0);
default_prt_nowrow=DEFAULT_PRT_START_ROW;
//无x,y值审查
//white为1,black为0
voidoled12864_draw_point(u8x,u8y,u8white_black)
u8tmp1,tmp2;
staticu8pre_x,pre_y;
tmp2=(y%8);
tmp2=1<
<
tmp2;
y>
>
=3;
if(white_black)
tmp1=oled_buf[y][x];
//取得当前值
tmp1|=tmp2;
else
{
tmp1&
=(!
tmp2);
oled_buf[y][x]=tmp1;
//放一个8×
6字符串
//注意column是0~128,row是0~7
voidoled12864_put_86char(charcolumn6,charrow,char*ch)
charncount=0;
charc;
charmax_ncount=(X_WIDTH-column6)/6;
while(ch[ncount]!
=0&
&
ncount<
=max_ncount)
c=ch[ncount++];
c-=32;
oled_buf[row][column6]=F6x8[c][0];
column6++;
oled_buf[row][column6]=F6x8[c][1];
oled_buf[row][column6]=F6x8[c][2];
oled_buf[row][column6]=F6x8[c][3];
oled_buf[row][column6]=F6x8[c][4];
oled_buf[row][column6]=F6x8[c][5];
//按照默认方式显示一行数据,并清空下一行
voidoled12864_printf(char*ch)
oled12864_put_86char(0,default_prt_nowrow,ch);
default_prt_nowrow++;
if(default_prt_nowrow>
DEFAULT_PRT_END_ROW)
oled12864_put_86char(0,default_prt_nowrow,"
--------------------"
);
//oled内容按oled_buf[]刷新
voidoled12864_refresh(void)
u16u16Tmp;
intnCount;
oled12864_set_pos(0,y);
OLED12864_DC_DATA;
u16Tmp=oled_buf[y][x];
//while(SPI1->
SR&
0x0080);
//等待BSY变成0
for(nCount=0;
nCount<
9;
nCount++);
SPI1->
DR=u16Tmp;
//oled12864_wr_data(oled_buf[y][x]);
/*___________________________OLED12864.h_____*/
#ifndef__OLED12864_H__
#define__OLED12864_H__
stm32f4_bitband.h"
manual_SPI.h"
#defineOLED12864_DCPAout(8)
#defineOLED12864_DC_HGPIOA->
BSRRL=1<
8
#defineOLED12864_DC_LGPIOA->
BSRRH=1<
#defineOLED12864_DC_DATAOLED12864_DC_H
#defineOLED12864_DC_CMDOLED12864_DC_L
#defineOLED12864_RSTPAout(3)
#defineOLED12864_CSPAout(4)
#defineOLED12864_CS_HGPIOA->
4
#defineOLED12864_CS_LGPIOA->
#defineOLED_SPI//用手动SPI方式
#defineOLED_HIGH1
#defineOLED_LOW0
#defineOLED_DC_C0
#defineOLED_DC_D1
#defineXLevelL0x00
#defineXLevelH0x10
#defineXLevel((XLevelH&
0x0F)*16+XLevelL)
#defineMax_Column128
#defineMax_Row64
#defineBrightness0xCF
#defineX_WIDTH128
#defineY_WIDTH64
#defineOLED_BLACK_POINT0
#defineOLED_WHITE_POINT1
#defineOLED_COLUMN6(x)(x*6)
voidoled12864_delay(intn_count);
/*********oled写数据********/
//注意,没有片选,需要在调用函数中片选
#ifdefOLED_8080
#defineOLED12864_WRPAout(6)
#defineOLED12864_WR_HGPIOA->
6
#defineOLED12864_WR_LGPIOA->
#defineOLED12864_RDPAout(7)
#defineOLED12864_RD_HGPIOA->
7
#defineOLED12864_RD_LGPIOA->
#defineOLED12864_8080_DATAGPIOB->
ODR
void__inlineoled12864_wr_data(u8data)
OLED12864_8080_DATA=data;
OLED12864_DC_H;
//写数据信号
//OLED12864_CS=0;
OLED12864_WR_L;
//写信号
OLED12864_WR_H;
//OLED12864_CS=1;
/*********OLED写命令********/
void__inlineoled12864_wr_cmd(u8data)
OLED12864_DC_L;
//写命令信号
#endif
#ifdefOLED_MANUAL_SPI
OLED12864_CS_L;
//拉低CS
OLED12864_DC=OLED_HIGH;
manual_spi_sendbyte(data);
OLED12864_DC=OLED_LOW;
OLED12864_CS_H;
#ifdefOLED_SPI
intn;
DR=data;
//while(SPI1->
0x0080);
for(n=0;
n<
n++);
//等待BYS变成0
//#defineoled12864_wr_cmd(data)OLED12864_8080_DATA=data;
\
//OLED12864_DC_L;
//OLED12864_WR_L;
//OLED12864_WR_H;
//OLED12864_DC_H;
/**********oled设置坐标********/
void__inlineoled12864_set_pos(u8x,u8y)
oled12864_wr_cmd(0xb0+y);
oled12864_wr_cmd((x>
4)|0x10);
oled12864_wr_cmd(x&
0x0f);
voidoled12864_fill_full(unsignedcharbmp_dat);
voidoled12864_cls(void);
voidoled12864_init(void);
/******************画点,无x,y值审查******************************/
voidoled12864_draw_point(u8x,u8y,u8white_black);
voidoled12864_put_86char(charcolumn6,charrow,char*ch);
voidoled12864_printf(char*ch);
voidoled12864_refresh(void);
/*_____________________________codetab.h______*/
#ifndef__CODETAB_H__
#define__CODETAB_H__
/************************************6*8的点阵************************************/
constunsignedcharF6x8[][6]=
0x00,0x00,0x00,0x00,0x00,0x00,//sp
0x00,0x00,0x00,0x2f,0x00,0x00,//!
0x00,0x00,0x07,0x00,0x07,0x00,//"
0x00,0x14,0x7f,0x14,0x7f,0x14,//#
0x00,0x24,0x2a,0x7f,0x2a,0x12,//$
0x00,0x62,0x64,0x08,0x13,0x23,//%
0x00,0x36,0x49,0x55,0x22,0x50,//&
0x00,0x00,0x05,0x03,0x00,0x00,//'
0x00,0x00,0x1c,0x22,0x41,0x00,//(
0x00,0x00,0x41,0x22,0x1c,0x00,//)
0x00,0x14,0x08,0x3E,0x08,0x14,//*
0x00,0x08,0x08,0x3E,0x08,0x08,//+
0x00,0x00,0x00,0xA0,0x60,0x00,//,
0x00,0x08,0x08,0x08,0x08,0x08,//-
0x00,0x00,0x60,0x60,0x00,0x00,//.
0x00,0x20,0x10,0x08,0x04,0x02,///
0x00,0x3E,0x51,0x49,0x45,0x3E,//0
0x00,0x00,0x42,0x7F,0x40,0x00,//1
0x00,0x42,0x61,0x51,0x49,0x46,//2
0x00,0x21,0x41,0x45,0x4B,0x31,//3
0x00,0x18,0x14,0x12,0x7F,0x10,//4
0x00,0x27,0x45,0x45,0x45,0x39,//5
0x00,0x3C,0x4A,0x49,0x49,0x30,//6
0x00,0x01,0x71,0x09,0x05,0x03,//7
0x00,0x36,0x49,0x49,0x49,0x36,//8
0x00,0x06,0x49,0x49,0x29,0x1E,//9
0x00,0x00,0x36,0x36,0x00,0x00,//:
0x00,0x00,0x56,0x36,0x00,0x00,//;
0x00,0x08,0x14,0x22,0x41,0x00,//<
0x00,0x14,0x14,0x14,0x14,0x14,//=
0x00,0x00,0x41,0x22,0x14,0x08,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 12864 OLED 简单 显示 程序