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

📄 lcd128_64.c

📁 CC2430多功能调试程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "app_ex_main.h"
#include "app_ex_util.h"
#include "RF04EB.h"
#include "hal.h"
#include "Font.h"

#define RECALIB_TIMEOUT     12000 // Every 2 minutes
#define MSG_PING           0x00
#define MSG_SEND           0x10
#define MSG_RECIVE         0x20
#define MSG_NEEDSEND       0x30


/****************************************************
* B) Command Table per device *
****************************************************/
#define 	DisplayOff 	0xAE
#define 	DisplayOn 	0xAF
#define 	DisplayStart 	0x40
#define 	PageAddr 	0xB0
#define 	ColAddrHi 	0x10
#define 	ColAddrLo 	0x00
#define 	SegRemapOff 	0xA0
#define 	SegRemapOn 	0xA1
#define 	NormalDisp 	0xA6
#define 	ReverseDisp 	0xA7
#define 	ExitEntireD 	0xA4
#define 	EntEntireD 	0xA5
#define 	EnterRMW 	0xE0
#define 	ExitRMW 	0xEE
#define 	SWRest 		0xE2
#define 	ComRemapOff 	0xC0
#define 	ComRemapOn 	0xC8
#define 	PwrCtrlReg 	0x28
#define 	OPampBuffer 	0x01
#define 	IntReg 		0x02
#define 	IntVolBstr 	0x04
#define 	IntRegRatio 	0x20
#define 	ContCtrlReg 	0x81
#define 	CmdMuxRatio 	0x48
#define 	CmdBiasRatio 	0x50
#define 	DispOffset 	0x44
#define 	IconModeOn 	0xA3
#define 	IconModeOff 	0xA2
#define 	NlineInver 	0x4C
#define 	DCDCconver 	0x64
#define 	PowersavStandby 0xA8
#define 	PowersavSleep 	0xA9
#define 	PowersavOff 	0xE1
#define 	InterOsc 	0xAB
#define 	Device SSD1821 			/* device under demo */
#define 	ColNo 		132 		/* number of Column/Seg on LCD glass*/
#define 	RowNo 		64		/* number of Row/Com/Mux */
#define 	PS 		1 		/* fixed to Parallel mode */
#define 	PageNo 		10 		/* Total no of RAM pages */
#define 	IconPage 	10 		/* Icon Page number */
#define 	All0 		6 		/* 3 for all 0, 4 for all 1 */
#define 	All1 		4
#define 	iIntRegValue 	1 		/*Internal Regulator Resistor Ratio Value */
#define 	iContCtrlRegValue 16 		/* Contrast Control Register Value */
#define 	iIntRegValuea 	1 		/*Internal Regulator Resistor Ratio Value */
#define 	iContCtrlRegValuea 16 		/* Contrast Control Register Value */
#define 	iIntRegValueb 	1 		/*Internal Regulator Resistor Ratio Value */
#define 	iContCtrlRegValueb 16 		/* Contrast Control Register Value */
#define 	MSGNo 		16
#define 	MSGLength 	22
#define 	SSLNameNo 	4
#define 	DevicePg 	0 		//RAM page for showing device name
#define 	FeaturePg 	1 		//RAM page for showing feature
#define 	GRAPHICNo 	13
#define 	xlogo 		38
#define 	ylogo 		5
#define 	xsolomon 	91
#define 	ysolomon 	2
#define 	xsystech 	81
#define 	ysystech 	2
#define 	xlimited 	70
#define 	ylimited 	2
#define 	xcc 		16
#define 	ycc 		2
#define 	xpageq 		128
#define 	ypageq 		4
#define 	horizonal 	0
#define 	d_time 		60
////////////////////////////////////////////////////////////////////////////////////////////


INT8U ContrastValue = 10;
INT8U BT_State;

void Print(INT8U y, INT8U x, INT8U ch[], INT16U yn);
void Print6(INT8U xx,INT8U  yy,INT8U ch1[],INT8U yn);
//void LoadICO(INT8U y , INT8U x , INT8U n);


/*******************************************************************************
//函数名:void delaylcd (int16u x)
//功能:廷时
//输入:时间
//输出:无
********************************************************************************/
void delaylcd (INT16U x)
{
	INT8U j;
	while (x--)
	{
		for (j=0;j<115;j++);
	}
}
/*******************************************************************************
//函数名:void fdelay(unsigned int n)
//功能:廷时
//输入:时间
//输出:无
********************************************************************************/
void fdelay(unsigned int n) /* wait n seconds*/
{
	INT16U i;
	INT16U j;
	for (i=0;i<5;i++)
	for (j=0;j<n*2;j++) ;
}


/*******************************************************************************
//函数名:void Lcdwritecom(int8u com)
//功能:lcd写指令
//输入:com指令
//输出:无
********************************************************************************/
void Lcdwritecom(INT8U com)
{
	INT8U i, temp;
	LCD_CLK = 0;
	LCD_CS = 0;
	LCD_RS = 0;
	temp = com;

	for(i=0; i<8; i++)
	{
		if(temp & 0x80)
		{
			LCD_SDO = 1;
		}
		else LCD_SDO = 0;
		temp <<= 1;
		LCD_CLK = 1;
//                asm("nop");
		LCD_CLK = 0;
//                asm("nop");
	}
	LCD_CS = 1;
//        asm("nop");	
}

/*******************************************************************************
//函数名:void Lcdwritedata(int8u dat)
//功能:lcd写数据
//输入:dat数据
//输出:无
********************************************************************************/
void Lcdwritedata(INT8U dat)
{
	INT8U i, temp;
	LCD_CS = 0;
	LCD_RS = 1;
	temp = dat;

	for(i=0; i<8; i++)
	{
		if(temp & 0x80)
		{
			LCD_SDO = 1;
		}
		else LCD_SDO = 0;
		temp <<= 1;
		LCD_CLK = 1;
		LCD_CLK = 0;
	}
	LCD_CS = 1;
}

/*******************************************************************************
//函数名:void Prog_Reset(void)
//功能:lcd复位
//输入:无
//输出:无
********************************************************************************/
void Prog_Reset(void)
{
	LCD_RST = 0;
	delaylcd(100);
	LCD_RST = 1;
}
/*******************************************************************************
//函数名:void Resetchip(void)
//功能:lcd软件复位
//输入:无
//输出:无
********************************************************************************/
void Resetchip(void)
{
	Prog_Reset();
	Lcdwritecom(0xe2);
}

/*******************************************************************************
//函数名:void SetRamAddr (INT8U Page, INT8U Col)
//功能:lcd位置选择
//输入:Page-页,Col-列
//输出:无
********************************************************************************/
void SetRamAddr (INT8U Page, INT8U Col)
{
	INT8U temp;
	temp = 0x0f & Page;
	Lcdwritecom(PageAddr | temp);
	temp = 0x0f & (Col >> 4);
	Lcdwritecom(ColAddrHi | temp);			//高位
	temp = 0x0f & Col;
	Lcdwritecom(ColAddrLo | temp);			//低位
}
/*******************************************************************************
//函数名:void SetContrast(INT8U Gain, INT8U Step)
//功能:lcd对比度设定
//输入:Page-页,Col-列
//输出:无
********************************************************************************/
void SetContrast(INT8U Gain, INT8U Step)
{
	Lcdwritecom(IntRegRatio | (0x0f & Gain)); 	//设定内部电阻
	Lcdwritecom(ContCtrlReg); 			//设定内部对比控制器
	Lcdwritecom((0x3f & Step));
}
/*******************************************************************************
//函数名:void InitDisplay(void)
//功能:lcd设定为正常显示状态
//输入:无
//输出:无
********************************************************************************/
void InitDisplay(void)
{
	Lcdwritecom(DisplayOff);			//关显示
	Lcdwritecom(SegRemapOn);    			//ks0713/ssd1815
	Lcdwritecom(ComRemapOn);    			//ssd1815
	SetContrast(iIntRegValue, iContCtrlRegValue); 	//设定缺省对比度
	Lcdwritecom(PwrCtrlReg | IntVolBstr | IntReg | OPampBuffer); //turn on booster, regulator & divider
	Lcdwritecom(DisplayOn);				//开显示
}


/*******************************************************************************
//函数名:void contrastctrl(INT8U start,stop)
//功能:lcd对比度调整
//输入:无
//输出:无
********************************************************************************/
void contrastctrl(INT8U start, INT8U stop)
{
	INT8U i;
	if (start < stop)
	{
		for (i=start; i<stop; i+=1)
		{
			SetContrast(iIntRegValue, i); //slowly turn on display
			fdelay(80);
		}
	}
	else
	{
		for (i=start; i>stop; i-=1)
		{
			SetContrast(iIntRegValue, i); //slowly turn off display
			fdelay(120);
		}
	}
}

void LcdPortInit(void)
{
  IO_DIR_PORT_PIN(1, 4, IO_OUT);
  IO_DIR_PORT_PIN(2, 0, IO_OUT);
  IO_DIR_PORT_PIN(1, 1, IO_OUT);
  IO_DIR_PORT_PIN(1, 5, IO_OUT);
  IO_DIR_PORT_PIN(1, 6, IO_OUT);
}


/*******************************************************************************
//函数名:void InitLcd(void)
//功能:lcd初始化
//输入:无
//输出:无
********************************************************************************/
void InitLcd(void)
{
	LcdPortInit();
        LCD_CS = 1;
	LCD_RS = 1;
	LCD_RST = 1;
	Resetchip();
	Lcdwritecom(InterOsc);
	Lcdwritecom(0x67);

	InitDisplay();       // initialize normal display environment
	Lcdwritecom(DisplayOff);
	Lcdwritecom(0x40);
	contrastctrl(10,iContCtrlRegValue);
	Lcdwritecom(0x24);
//	iDispStLn=0;
	Lcdwritecom(DisplayOn);   // blank display update RAM

	Lcdwritecom(0xa6);
	SetContrast(iIntRegValuea,ContrastValue);

	delaylcd(20);
	SetRamAddr(1,15);
}
/*******************************************************************************
//函数名:void LoadICO(INT8U y , INT8U x , INT8U Ico[])
//功能:打开一个指定指针的图标
//输入:x,y坐标      Ico[]图片
//输出:无
********************************************************************************
void LoadICO(INT8U y , INT8U x , INT8U n)
{

	INT8U adder = 0;
	INT8U wm;

	SetRamAddr(y , x);
	for(wm = 0;wm < 16;wm++)
	{
		Lcdwritedata(ICOBattery[n][adder]);
		adder += 1;
	}
}
*/

/*******************************************************************************
//函数名:void LoadICO(INT8U y , INT8U x , INT8U Ico[])
//功能:打开一个指定指针的图标
//输入:x,y坐标      Ico[]图片
//输出:无
********************************************************************************/
void LoadICO(void)
{

	INT8U i,j;
        for(i=0; i<8; i++)
        {

⌨️ 快捷键说明

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