⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oled_ssd1339.c

📁 在KEIL环境下LPC214X的UCOS全部源代码
💻 C
字号:
#include <LPC214x.h>
#include "oled_ssd1339.h"

/**************************************************************************************
* 名    称: _Nop
* 功    能: 短暂的延时
* 参    数:	无
* 返 回 值: 无
*
* 修改历史:
*   版本    日期     作者     改动内容和原因
*   ----------------------------------------------------
*   1.0   2006.8.13  lcf	   基本的功能完成
**************************************************************************************/
void _Nop(void)
{
	uint i;
	for(i = 10;i > 0;i--);
}

/**************************************************************************************
* 名    称: WriCom
* 功    能: 发送显示数据函数,8080总线方式
* 参    数:	Dat	: 显示数据
* 返 回 值: 无
*
* 修改历史:
*   版本    日期     作者     改动内容和原因
*   ----------------------------------------------------
*   1.0   2006.8.13  lcf	   基本的功能完成
**************************************************************************************/
void WriData(uchar ch)
{
  	LCD_RS_1;

	LCD_CS_1;
	LCD_DS_1;
	LCD_WR_1;
  
	LCD_CS_0;
	LCD_DATA(ch);
	LCD_WR_0;

	LCD_CS_1;
}


/**************************************************************************************
* 名    称: WriCom
* 功    能: 发送显示指令函数,8080总线方式
* 参    数:	Com	: 显示指令
* 返 回 值: 无
*
* 修改历史:
*   版本    日期     作者     改动内容和原因
*   ----------------------------------------------------
*   1.0   2006.8.13  lcf	   基本的功能完成
**************************************************************************************/
void WriCom(uchar ch)
{
	
	LCD_RS_0;
   
	LCD_CS_1;
	LCD_DS_1;
	LCD_WR_1;
  
	LCD_CS_0;
	LCD_DATA(ch);
	LCD_WR_0;

	LCD_CS_1;
}


/**************************************************************************************
* 名    称: Oled_Init
* 功    能: OLED的初始化函数
* 参    数:	无
* 返 回 值: 无
*
* 修改历史:
*   版本    日期     作者     改动内容和原因
*   ----------------------------------------------------
*   1.0   2006.8.13  lcf	   基本的功能完成
**************************************************************************************/
void Oled_Init(void)
{
	//从main移过来的
	PINSEL0 = 0x00000000;
	PINSEL1 = 0x00000000;
	PINSEL2 = 0x00000000|(1<<2);

	IODIR1 = IODIR1 | 0x00ff0000;			
	IODIR0 = IODIR0 | 0x00ffff00;

	//==================================================================================

	LCD_RESET_0;	_Nop();	_Nop(); LCD_RESET_1;	_Nop();	_Nop();

	WriCom(0xAE);		//display off
	WriCom(0xCA);		//Set MUX ratio
	WriData(0x7F);	    //1/128 duty

	WriCom(0xA1);		//Display start line
	WriData(0x00);

	WriCom(0xA2);		//Set display offset
	WriData(0x00);

	WriCom(0xA0);		//Set re-map
	WriData(0x64);	  	//64

	WriCom(0xC7);		//Master current control
	WriData(0x09);

	WriCom(0xC1);		//Set contrast level for R,G,B
	WriData(0xCA);	    //Red
	WriData(0x66);		//Green
	WriData(0xA6);		//Blue

 	WriCom(0xB1);		//Phase adjust
	WriData(0x22);

 	WriCom(0xB3);		//Set frame rate
	WriData(0x10);		//85Hz

 	WriCom(0xBB);		//Set Pre-charge level for R,G,B
	WriData(0x00);		//Red
	WriData(0x00);		//Green
	WriData(0x00);		//Blue

 	WriCom(0xAD);		//Master configuration
	WriData(0x8E);

 	WriCom(0xB0);		//Current saving
	WriData(0x00);

 	WriCom(0xBE);		//VCOMH setting
	WriData(0x1D);

 	WriCom(0xA6);		//Normal display
	WriCom(0xD1);		
	WriData(0x02);

 	WriCom(0xAF);		//display on
}


/**************************************************************************************
* 名    称: Oled_DispOn
* 功    能: 开显示
* 参    数:	无
* 返 回 值: 无
*
* 修改历史:
*   版本    日期     作者     改动内容和原因
*   ----------------------------------------------------
*   1.0   2006.8.13  lcf	   基本的功能完成
**************************************************************************************/
void Oled_DispOn(void)
{
	WriCom(0xAF); 		//display on
}


/**************************************************************************************
* 名    称: Oled_DispOff
* 功    能: 关显示
* 参    数:	无
* 返 回 值: 无
*
* 修改历史:
*   版本    日期     作者     改动内容和原因
*   ----------------------------------------------------
*   1.0   2006.8.13  lcf	   基本的功能完成
**************************************************************************************/
void Oled_DispOff(void)
{
	WriCom(0xAE); 		//display off
}



/**************************************************************************************
* 名    称: Oled_DispOneColor
* 功    能: 全屏显示某种颜色
* 参    数:	Color	: 颜色值
* 返 回 值: 无
*
* 修改历史:
*   版本    日期     作者     改动内容和原因
*   ----------------------------------------------------
*   1.0   2006.8.13  lcf	   基本的功能完成
**************************************************************************************/
void Oled_DispOneColor(int Color)
{
	int i;

	WriCom(0x75);
	WriData(0x00);
	WriData(127);

	WriCom(0x15);
	WriData(0x00);
	WriData(127);

	WriCom(0x5c);

	for (i=0;i<16384;i++)
	{
		WriData((uchar)(Color>>8&0xff));
		WriData((uchar)(Color&0x00ff));
	}
}


/**************************************************************************************
* 名    称: Oled_DispClear
* 功    能: 清除显示屏的显示内容
* 参    数: 无
* 返 回 值: 无
*
* 修改历史:
*   版本    日期     作者     改动内容和原因
*   ----------------------------------------------------
*   1.0   2006.8.13  lcf	   基本的功能完成
**************************************************************************************/
void Oled_DispClear(void)
{
	Oled_DispOneColor(BLACK);
}

/**************************************************************************************
* 名    称: DrawLine
* 功    能: 画直线
* 参    数: pPoint0		: 直线的起点坐标
*			pPoint0		: 直线的终点坐标
*			LineColor   : 直线的颜色
* 返 回 值: 无
*
* 修改历史:
*   版本    日期     作者     改动内容和原因
*   ----------------------------------------------------
*   1.0   2006.8.13  lcf	   基本的功能完成
**************************************************************************************/
void Oled_DrawLine(Oled_Type_Point *pPoint0, Oled_Type_Point *pPoint1,uint LineColor)
{
	 WriCom(0x83);
	 WriData(pPoint0->y);
	 WriData(pPoint0->x);
	 WriData(pPoint1->y);
	 WriData(pPoint1->x);
	 WriData((uchar)(LineColor>>8&0xff));
	 WriData((uchar)(LineColor&0x00ff));	
}


/**************************************************************************************
* 名    称: DrawRect
* 功    能: 画矩形
* 参    数: pRect		: 矩形的四角坐标
*			LineColor   : 矩形边缘线的颜色
*  			FillColor	: 矩形内部的填充颜色
*			FillFlag	:矩形内是(非0)否(0)要填充颜色
* 返 回 值: 无
*
* 修改历史:
*   版本    日期     作者     改动内容和原因
*   ----------------------------------------------------
*   1.0   2006.8.13  lcf	   基本的功能完成
**************************************************************************************/
void Oled_DrawRect(Oled_Type_Rect *pRect,uint LineColor,uint FillColor,uchar FillFlag)
{
	 WriCom(0x92);
	 if (FillFlag > 0)
	 {
	 	WriData(0x01);
	 }
	 else
	 {
	 	WriData(0x00);
	 }

	 WriCom(0x84);
	 WriData(pRect->y0);
	 WriData(pRect->x0);
	 WriData(pRect->y1);
	 WriData(pRect->x1);
	 WriData((uchar)(LineColor>>8&0xff));
	 WriData((uchar)(LineColor&0x00ff));
	 WriData((uchar)(FillColor>>8&0xff));
	 WriData((uchar)(FillColor&0x00ff));
}


/**************************************************************************************
* 名    称: DrawCircle
* 功    能: 画圆
* 参    数: pPoint		: 圆心坐标
*			Radius	    : 圆阿半径
*			LineColor   : 圆边缘线的颜色
*  			FillColor	: 圆内部的填充颜色
*			FillFlag	:圆内是(非0)否(0)要填充颜色
* 返 回 值: 无
*
* 修改历史:
*   版本    日期     作者     改动内容和原因
*   ----------------------------------------------------
*   1.0   2006.8.13  lcf	   基本的功能完成
**************************************************************************************/
void Oled_DrawCircle(Oled_Type_Point *pPoint,uchar Radius,uint LineColor,uint FillColor,uchar FillFlag)
{
	 WriCom(0x92);
	 if (FillFlag > 0)
	 {
	 	WriData(0x01);
	 }
	 else
	 {
	 	WriData(0x00);
	 }

	 WriCom(0x86);
	 WriData(pPoint->y);
	 WriData(pPoint->x);
	 WriData(Radius);
	 WriData((uchar)(LineColor>>8&0xff));
	 WriData((uchar)(LineColor&0x00ff));
	 WriData((uchar)(FillColor>>8&0xff));
	 WriData((uchar)(FillColor&0x00ff));
}


/**************************************************************************************
* 名    称: DispPic65K
* 功    能: 全屏显示一张65K色的128*128图片
* 参    数: str		: 图片数组名
* 返 回 值: 无
*
* 修改历史:
*   版本    日期     作者     改动内容和原因
*   ----------------------------------------------------
*   1.0   2006.8.13  lcf	   基本的功能完成
**************************************************************************************/
void Oled_DispPic65K(uchar *str)
{
	uchar i,j;
	
	WriCom(0x75);		
	WriData(0x00);		
	WriData(127);	

	WriCom(0x15);	
	WriData(0x00);	
	WriData(127);	

	WriCom(0x5c);
			
	for(i=0;i<128;i++)
	{
		for(j=0;j<128;j++)
		{
			WriData(*(str+1));
			WriData(*str);
			str++;
			str++;
		}		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -