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

📄 lcddrv.c

📁 mc9s08aw60 RTC LCD PWM
💻 C
📖 第 1 页 / 共 2 页
字号:
//
/*************************************************************************************/
void init_oled(void)
{
	WriteCommand(0xAE); //Display off
	WriteCommand(0xAD); //Internal DC-DC off
	WriteCommand(0x8A); // Second byte
	WriteCommand(0xA8); //MUX Ratio
	WriteCommand(0x3F); //64 duty
	WriteCommand(0xD3); //Display offset
	WriteCommand(0x00); //Second byte
	WriteCommand(0x40); //Start line
	WriteCommand(0xA0); //Segment remap		//a0
	WriteCommand(0xC8); //COM remap
	WriteCommand(0xA6); //Set normal/inverse display (0xA6:Normal display)
	WriteCommand(0xA4); //Set entire display on/off (0xA4:Normal display)
	WriteCommand(0x81); //Contrast setting
	WriteCommand(0x5C); //Second byte
	WriteCommand(0xD5); //Frame rate
	WriteCommand(0x60); // 85 Hz
	WriteCommand(0xD8); //Mode setting
	WriteCommand(0x00); //Mono mode
	WriteCommand(0xD9); //Set Pre-charge period
	WriteCommand(0x84); // Second byte
	WriteCommand(0xAF); //Display on
}
/************************************************************************************/
//
/************************************************************************************/
void set_position(uint8 page1,uint8 p1,uint8 col1)
{
	uint8 temp_col;
	uint8 temp_col2;
	temp_col=col1>>4;
	temp_col2=col1&0x0f;
	WriteCommand(0xb0+page1+p1);
	WriteCommand(0x02+temp_col2);
	WriteCommand(0x10+temp_col);
}
/***********************************************************************************/
//
/***********************************************************************************/
void display_prog(uint8 line,uint8 column,uint8 nn) //显示程序
{
		unsigned char m,col,p,q,r;
		unsigned char k=0 ;
		page=line;		//字符启示页  0--8
		if (nn==1)
		{
			q=48;       //字符的总字节数  12*8 字符--16字节
			r=16;		//                16*16汉字--32字节
						//                24*16数字--48字节
		}
		else if (nn==2)
		{
			q=32;
			r=16;		//r字符的宽度
			}
		else if (nn==3)
		{
			q=16;
			r=8;
			}
		else
		{
			q=12;
			r=8;
			};
		column=column*8;		//列的宽度和字符的宽度
		col=column;
		for (m=0; m<q; m++)	//
		{
			p=m/r;				//换行
			switch (p)
			{
				case 0:
					if (k==0){
						set_position(page,p,col);
						k=1;
						break;
					}
					else
						break;
			   	case 1:
					if (k==1){
						set_position(page,p,col);
						k=2;
						break;
					}
					else
						break;
				case 2:
					if (k==2){
						set_position(page,p,col);
						k=3;
						break;
					}
					else
						break;
				case 3:
					if (k==3){
						set_position(page,p,col);
						k=4;
						break;
					}
					else
						break;
				case 4:
					if (k==4){
						set_position(page,p,col);
						k=5;
						break;
					}
					else
						break;
				case 5:
					if (k==5){
						set_position(page,p,col);
						k=6;
						break;
					}
					else
						break;					
			}
			if (nn==1)
				dat=NUM_48[jj].Msk[m] ; //(1-64 行)取数据 jiu1
			else if(nn==2)
				dat=GB_16[jj].Msk[m] ;
			else if(nn==3)
				dat=CHAR_12[jj].Msk[m];
			else
				dat=0;
			if (w_or_b==BLACK)
				dat=~dat;
			 WriteData(dat);
		}
}
/*********************************************************************************/
//
/*********************************************************************************/
void dprintf_CHAR12 (uint8 line,uint8 column,char str[20])
{
	uint8 i=0;
	uint8 c1;
	unsigned char ulen;
	ulen = (unsigned char)sprintf(dispbuff,"%s",str);
	
	while(i<ulen)
	{
		c1 = dispbuff[i];
		for(jj=0;jj<sizeof(CHAR_12)/sizeof(CHAR_12[0]);jj++)//寻找字库
			{
				if(c1 == CHAR_12[jj].Index[0])
					break;
			}
		display_prog(line,column,3);
		column++;

	 	i++;
	 }
}
/********************************************************************************/
// 显示汉字程序
/********************************************************************************/
void dprintf_WORD16 (uint8 line,uint8 column,char str[20])
{
	uint8 i=0;
	uint8 c1;
	uint8 c2;
	uint8 ulen;
	ulen = (unsigned char)sprintf(dispbuff,"%s",str);
	
	while(i<ulen)
	{
		c1 = dispbuff[i];
		c2 = dispbuff[i+1];
		for(jj=0;jj<sizeof(GB_16)/sizeof(GB_16[0]);jj++)//寻找字库
			{
				if(c1 == GB_16[jj].Index[0] && c2 == GB_16[jj].Index[1])
					break;
			}
		display_prog(line,column,2);
		column++;
		column++;

	 	i++;
		i++;
	 }
}
/**********************************************************************************/
//
/**********************************************************************************/
void dprintf_NUM48(uint8 line,uint8 column,char str[20])
{
	uint8 i=0;
	uint8 c1;
	uint8 ulen;
	ulen = (unsigned char)sprintf(dispbuff,"%s",str);
	
	while(i<ulen)
	{
		c1 = dispbuff[i];
		for(jj=0;jj<sizeof(NUM_48)/sizeof(NUM_48[0]);jj++)//寻找字库
			{
				if(c1 == NUM_48[jj].Index[0])
					break;
			}
		display_prog(line,column,1);
		column++;
		column++;
	 	i++;
	 }
}  
/***********************************************************************************/
//	显示浮点 
/***********************************************************************************/
void disp_float(uint8 row,uint8 col,float x)
{
  unsigned char temp;
	//sprintf(dispbuff,"%-4.1f",x);		 //左对齐
	temp=(unsigned char)sprintf(dispbuff,"%4.1f",x);		 //左对齐
	dprintf_CHAR12(row,col,dispbuff);	
}
/***********************************************************************************/
//	显示整数
/***********************************************************************************/
void disp_int(unsigned char row,unsigned char col,unsigned char x)
{
    unsigned char len;
	  len=(unsigned char)sprintf(dispbuff,"%d",x);
	  dprintf_CHAR12(row,col,dispbuff);	
}

⌨️ 快捷键说明

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