|
基于51單片機的OLED底層代碼
0.png (66.88 KB, 下載次數: 72)
下載附件
2016-6-28 11:54 上傳
- #include <reg52.h>
- #include "function.h"
- #include "word_lib.h"
- #define X_WIDTH 128 //顯示屏每行的顯示點數
- #define Y_WIDTH 64 //顯示屏每列的顯示點數
- /*************************************************************************************
- 以下為設置控制OLED的端口,D0、D1、RST、DC依次對應OLED的CK、DI、RST、DC
- **************************************************************************************/
- sbit OLED_D0 = P1^0;
- sbit OLED_D1 = P1^1;
- sbit OLED_RST= P1^2;
- sbit OLED_DC = P1^3;
- /*************************************************************************************
- 函數名稱: void OLED_WrCmd(unsigned char cmd)
- 函數功能: OLED顯示屏下指令操作
- 調用函數: 無
- 入口參數: cmd
- 出口參數: 無
- 返回值: 無
- 其他: 可以不理解,直接拿過來用
- **************************************************************************************/
- void OLED_WrCmd(unsigned char cmd)
- {
- unsigned char i=8;
- OLED_DC=0;;;;
- OLED_D0=0;;;;
- while(i--)
- {
- if(cmd&0x80)
- {
- OLED_D1=1;
- }
- else
- {
- OLED_D1=0;;;;
- }
- OLED_D0=1;;;;
- ;;;;;;
- OLED_D0=0;;
- cmd<<=1;;
- }
-
- }
- /**************************************************************************************
- 函數名稱: void OLED_Fill(unsigned char bmp_dat)
- 函數功能: 讓OLED清屏或者全屏亮,取決于參數
- 調用函數: OLED_WrCmd(0xb0+y); OLED_WrDat(bmp_dat);
- 入口參數: bmp_dat//一般為0x00或者0xff
- 出口參數: 無
- 返回值: 無
- 其他: 可用此函數進行清屏操作,如OLED_Fill(0),可以清除所有的顯示
- ***************************************************************************************/
- void OLED_Fill(unsigned char bmp_dat)
- {
- unsigned char y,x;
- for(y=0;y<8;y++)
- {
- OLED_WrCmd(0xb0+y);
- OLED_WrCmd(0x01);
- OLED_WrCmd(0x10);
- for(x=0;x<X_WIDTH;x++)
- OLED_WrDat(bmp_dat);
- }
- }
- /******************************************************************************************************
- 函數名稱: void OLED_Init(void)
- 函數功能: OLED顯示屏初始化
- 調用函數: OLED_WrCmd(unsigned char cmd),寫命令CD_Fill(0x00); //初始清屏 OLED_Set_Pos(0,0);寫地址
- 入口參數: 無
- 出口參數: 無
- 返回值: 無
- 其他: 可以不理解,直接拿過來用
- *******************************************************************************************************/
- void OLED_Init(void)
- {
- OLED_D0=1;
- //OLED_CS=1; //預制SLK和SS為高電平
- OLED_RST=0;
- ;;;;;;;
- OLED_RST=1;
-
- //從上電到下面開始初始化要有足夠的時間,即等待RC復位完畢
- OLED_WrCmd(0xae);//--turn off oled panel
- OLED_WrCmd(0x00);//---set low column address
- OLED_WrCmd(0x10);//---set high column address
- OLED_WrCmd(0x40);//--set start line address Set Mapping RAM Display Start Line (0x00~0x3F)
- OLED_WrCmd(0x81);//--set contrast control register
- OLED_WrCmd(0xcf); // Set SEG Output Current Brightness
- OLED_WrCmd(0xa1);//--Set SEG/Column Mapping 0xa0左右反置 0xa1正常
- OLED_WrCmd(0xc8);//Set COM/Row Scan Direction 0xc0上下反置 0xc8正常
- OLED_WrCmd(0xa6);//--set normal display
- OLED_WrCmd(0xa8);//--set multiplex ratio(1 to 64)
- OLED_WrCmd(0x3f);//--1/64 duty
- OLED_WrCmd(0xd3);//-set display offset Shift Mapping RAM Counter (0x00~0x3F)
- OLED_WrCmd(0x00);//-not offset
- OLED_WrCmd(0xd5);//--set display clock divide ratio/oscillator frequency
- OLED_WrCmd(0x80);//--set divide ratio, Set Clock as 100 Frames/Sec
- OLED_WrCmd(0xd9);//--set pre-charge period
- OLED_WrCmd(0xf1);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
- OLED_WrCmd(0xda);//--set com pins hardware configuration
- OLED_WrCmd(0x12);
- OLED_WrCmd(0xdb);//--set vcomh
- OLED_WrCmd(0x40);//Set VCOM Deselect Level
- OLED_WrCmd(0x20);//-Set Page Addressing Mode (0x00/0x01/0x02)
- OLED_WrCmd(0x02);//
- OLED_WrCmd(0x8d);//--set Charge Pump enable/disable
- OLED_WrCmd(0x14);//--set(0x10) disable
- OLED_WrCmd(0xa4);// Disable Entire Display On (0xa4/0xa5)
- OLED_WrCmd(0xa6);// Disable Inverse Display On (0xa6/a7)
- OLED_WrCmd(0xaf);//--turn on oled panel
- OLED_Fill(0x00); //初始清屏
- OLED_Set_Pos(0,0);
- }
- /**********************************************************************************
- 函數名稱: void OLED_WrDat(unsigned char dat)
- 函數功能: 寫下點,每次寫8個,從上到下豎著寫,亮是1,滅是0
- 調用函數: 無
- 入口參數: dat//一般為0x**,8位,即8個點,亮或滅
- 出口參數: 無
- 返回值: 無
- 其他:
- **********************************************************************************/
- void OLED_WrDat(unsigned char dat)
- {
- unsigned char i=8;
- OLED_DC=1;;;;
- OLED_D0=0;;;;
- ;;;;
- while(i--)
- {
- if(dat&0x80)
- {
- OLED_D1=1;
- } //1.1
- else
- {
- OLED_D1=0;
- }
- OLED_D0=1;
- ;;;;;;
- //;;
- OLED_D0=0;;;;
- dat<<=1;
- }
- }
- /************************************************************************************
- 函數名稱: void OLED_Set_Pos(unsigned char x, unsigned char y)
- 函數功能: 確定點亮顯示屏的起始位置
- 調用函數: OLED_WrCmd
- 入口參數: x、y分別為起始位置的橫縱坐標
- 出口參數: 無
- 返回值: 無
- 其他:
- *************************************************************************************/
- void OLED_Set_Pos(unsigned char x, unsigned char y)
- {
- OLED_WrCmd(0xb0+y);
- OLED_WrCmd(((x&0xf0)>>4)|0x10);
- OLED_WrCmd((x&0x0f)|0x01);
- }
- /***********************************************************************************
- 函數名稱: void Show_En_small(unsigned charx,unsigned char y,unsigned char En[])
- 函數功能: 寫數字或字母,但建議用此函數寫字母或冒號等符號,調用例子見main函數,
- 后面有專門寫數字的函數。
- 調用函數: OLED_WrDat (); OLED_Set_Pos();
- 入口參數: x、y確定橫縱坐標,En[]確定顯示內容
- 出口參數: 無
- 返回值: 無
- 其他:
- *************************************************************************************/
- void Show_En_small (unsigned char x,unsigned char y,unsigned char En[])
- {
- unsigned char e=0,i=0,j=0;
-
- while (En[j] != '\0')
- {
- e = En[j] - 32;
- if(x>120)
- {x=0;y++;}
- OLED_Set_Pos(x,y);
- for (i=0; i<6; i++)
- {
- OLED_WrDat(EnSmallWord[e*6+i]);
- }
- x+=6;
- j++;
- }
- }
- /****************************************************************************************
- 函數名稱:void Show_Number (unsigned char x, unsigned char y,unsigned char data)
- 函數功能:通過前兩個參數給定寫坐標,第三個給一個數字,函數即可以在指定的位置寫下這個數
- 字,調用一次這個函數只能寫下一個數字。具體調用方法見mian函數。
- 調用函數:OLED_WrDat()
- 入口參數:要寫坐標x,y,小字庫第data行
- 出口參數:無
- 返回值: 無
- 其他: 無
- *****************************************************************************************/
- void Show_Number (unsigned char x,unsigned char y,unsigned char number)
- {
- unsigned char i=0;
- number*=6;
- if(x>120)
- {x=0;y++;}
- OLED_Set_Pos(x,y);
- for (i=0; i<6; i++)
- {
- OLED_WrDat(NumberSmallWord [number+i]);
- }
- }
復制代碼
|
-
-
OLED_base.zip
2016-6-28 11:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
37.68 KB, 下載次數: 25, 下載積分: 黑幣 -5
OLED底層代碼
評分
-
查看全部評分
|