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

📄 main.c

📁 OCM4X8C液晶显示在凌阳单片机上的驱动程序
💻 C
字号:
#include"SPCE061V004.H"
//extern unsigned int char_table[];
void delay1ms(void);
void delay1ms(void);


int start,number,i,data_out;
unsigned int Table_Index=0;	
unsigned int  char_table[]={
//--  调入了一幅图像:D:\3033B\3033.bmp  --
//--  宽度x高度=128x64  --
//-总共52行数据,每行16个数据--
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7F,0x80,0x00,0x00,0x00,0x00,0x18,0x0C,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x01,0xFF,0x80,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x13,0x10,0x03,0xFE,0x00,
0x03,0xFF,0xC0,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x3F,0x30,0x1F,0xFF,0xC0,
0x03,0xFF,0xE0,0x00,0x00,0x00,0x00,0x8C,0x03,0xF0,0x00,0x7F,0xE0,0x7C,0x01,0xE0,
0x03,0xFF,0xF0,0x00,0x00,0x00,0x01,0x36,0x06,0xC0,0x00,0x5F,0xC0,0xFF,0xFC,0x60,
0x01,0xFF,0xF0,0x00,0x00,0x00,0x02,0x1B,0x0F,0x80,0x00,0xFF,0x01,0xFE,0x0F,0x30,
0x00,0xEF,0xF0,0x00,0x00,0x00,0x02,0x6D,0x9F,0x00,0x00,0x3E,0x03,0xFF,0xF1,0x90,
0x00,0xFF,0xF8,0x00,0x00,0x00,0x04,0x36,0xFE,0x00,0x01,0xFF,0x07,0xFF,0xFC,0x90,
0x00,0xEF,0xFF,0xFF,0x80,0x00,0x04,0xDB,0x7E,0x00,0x03,0xFF,0x87,0xFF,0xFC,0xD0,
0x00,0x0F,0xFF,0xFF,0xC0,0x00,0x04,0x6D,0xFC,0x00,0x07,0xFF,0x8F,0xFF,0xFE,0x50,
0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x04,0x36,0xFC,0x10,0x07,0xFF,0x8F,0xFF,0xFE,0x90,
0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x04,0x1B,0xF8,0x10,0x07,0xFF,0xCF,0xFF,0xFE,0x80,
0x00,0x0F,0xFF,0xFF,0xF0,0x00,0x04,0x0F,0xF8,0x10,0x07,0xFF,0xFF,0xFF,0xFA,0x00,
0x00,0x07,0xFF,0xFF,0xF0,0x00,0x04,0x07,0xF0,0x10,0x07,0xFF,0xFF,0xFF,0xFA,0x00,
0x00,0xFF,0xFF,0xFF,0xF8,0x00,0x02,0x03,0xF0,0x20,0x07,0xFF,0xFF,0xFF,0xBA,0x00,
0x00,0xFD,0xFF,0xFF,0xFC,0x00,0x02,0x03,0xF0,0x20,0x03,0xFF,0xFF,0xDF,0xB8,0x00,
0x00,0xC1,0xC0,0x3F,0xFC,0x00,0x01,0x01,0xE0,0x40,0x00,0xFF,0xFF,0xDF,0xB0,0x00,
0x00,0x81,0xC0,0x3F,0xCE,0x00,0x00,0x81,0xE0,0x80,0x00,0x7F,0xFF,0xDF,0xA0,0x00,
0x00,0x81,0x80,0x1D,0xCF,0x00,0x00,0x41,0xE1,0x00,0x00,0x3F,0xFF,0x9B,0x00,0x00,
0x01,0x83,0x80,0x1F,0xC7,0x80,0x00,0x21,0xE2,0x00,0x00,0x1F,0xFD,0xB6,0x00,0x00,
0x01,0xC3,0x00,0x0E,0xE6,0x80,0x00,0x19,0xEC,0x00,0x00,0x07,0xFE,0x20,0x00,0x00,
0x00,0xC3,0x00,0x07,0x67,0x40,0x00,0x07,0xF0,0x00,0x00,0x03,0x3E,0x00,0x00,0x00,
0x00,0x02,0x00,0x03,0xE7,0xA0,0x00,0x00,0x00,0x00,0x00,0x02,0x8E,0x00,0x00,0x00,
0x00,0x06,0x00,0x03,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x00,0x00,0x00,
0x00,0x06,0x00,0x07,0x03,0x00,0x77,0x46,0x74,0x24,0x80,0x06,0x04,0x00,0x00,0x00,
0x00,0x1C,0x00,0x06,0x00,0x00,0x55,0x45,0x54,0x57,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x1C,0x00,0x0E,0x00,0x00,0x45,0x45,0x74,0x57,0x80,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1C,0x00,0x00,0x55,0x45,0x44,0x74,0x80,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x38,0x00,0x00,0x77,0x76,0x47,0x54,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
    

  init_io()
{  
    *P_IOA_Data=0x780f;    //A口低位设置    //IOA 15 为电源指示
    *P_IOA_Dir=0xffff;
    *P_IOA_Attrib=0xffff;   
    data_out=0x7800;    //初始化A口数据
}

void send_data(unsigned int data)     //高8位为待送数据
{ 
int i=8,j,data1;
data=data>>6;       //IO9为数据输入端
  while (i--)
{
data1=data&0x0200;
  if (data1)
   {data_out|=data1;
   *P_IOA_Data=data_out;}
  else
    {data_out&=0xfdff;
    *P_IOA_Data=data_out;}
                                                                                                                                                                                                                                                                                                                            
data_out|=0x0400;     //set sclk to high  IO10
*P_IOA_Data=data_out;

data_out&=0xfbff;     //set sclk to low   IO10
*P_IOA_Data=data_out;
data=data<<1;
}


}
void write_dat(unsigned char data)              //低八位是待写入数据
{ 
unsigned int data1=0xfa00,data2,data3;   //data2中存放高4位数据,data3中存放低4位数据
data_out=data_out|0x0100;                 //cs set to high
*P_IOA_Data=data_out;
data2=data&0x00f0;      //取高4位数据
data2=data2<<8;
data3=data&0x000f;      //取低4位数据
data3=data3<<12;
send_data(data1);
send_data(data2);
send_data(data3);
data_out=data_out&0xfeff;
*P_IOA_Data=data_out;                    //cs set to low
}


void write_com(unsigned char data)    //低八位是待写入数据

{ unsigned int data1=0xf800,data2,data3;
data_out=data_out|0x0100;                 //cs set to high
*P_IOA_Data=data_out;
data2=data&0x00f0;      //取高4位数据
data2=data2<<8;
data3=data&0x000f;      //取低4位数据
data3=data3<<12;
send_data(data1);
send_data(data2);
send_data(data3);
data_out=data_out&0xfeff;
*P_IOA_Data=data_out;                    //cs set to low
}



void delay1ms(void)
  {
   int i;
   for (i=0;i<0x57;i++);
  }
  
void delay40ms(void)
  {
   int i;
   for (i=0;i<0x15c0;i++);
  }
  
  
  void OCM_DrawBitMap(int resource[])
{
	int i,j;
	write_com(0x34);
	write_com(0x34);
	write_com(0x36);
	for(i=0;i<8;i++)
		for(j=0;j<32;j++)
		{
			write_com(0x80+j);
		//	write_dat(char_table[i*2+j*16]);
			write_com(0x80+i);
	     	write_dat(char_table[i*2+j*16]);
			write_dat(char_table[i*2+1+j*16]);
			*P_Watchdog_Clear=0x0001;
			write_com(0x80+j);
	//		write_dat(char_table[i*2+(j+32)*16]);
			write_com(0x80+i+8);
			write_dat(char_table[i*2+(j+32)*16]);
			write_dat(char_table[i*2+1+(j+32)*16]);
			*P_Watchdog_Clear=0x0001;
		}
	write_com(0x36);
}


void chn_disp(unsigned char  *chn)
{
  int  i,j;
write_com(0x30);
write_com(0x80);    
 for (j=0;j<4;j++)
  {
    for (i=0;i<16;i++)
    write_dat(chn[j*16+i]);
  }
}
/*-----------上半屏显示汉字或字符------------
void chn_disp1 (uchar code *chn)
{
  uchar i,j;
  wr_lcd (comm,0x30);
  wr_lcd (comm,0x80);
  j=0;
  for (i=0;i<16;i++)
  wr_lcd (dat,chn[j*16+i]);
  wr_lcd (comm,0x90);                    //字符的显示地址变化
  j=1;
  for (i=0;i<16;i++)
  wr_lcd (dat,chn[j*16+i]);
}
----------------------------------*/

/*void Disp_Img()
{  unsigned int j=0;
   unsigned char x,y,i;
       for(i=0;i<9;i+=8)
       for(y=0;y<32;y++)/*原来 为 y<26 ,上下两个半屏不能正常对接显示,导致显示的图片中间有空隙
       for(x=0;x<8;x++)
         {  write_com(0x36);//功能设置---8BIT控制界面,扩充指令集
            write_com(y+0x80);        //行地址
            write_com(x+0x80+i);     //列地址
            write_com(0x30);
            write_dat(img[j++]);
            write_dat(img[j++]);
         }   
           
}*/
  
main()
{
   int k;
   unsigned char tab1[]={"科技大学信息学院"};
    init_io();   
    delay40ms();
     write_com(0x30);/*30---基本指令动作*/   
     write_com(0x30);
  // write_com(0x34);//扩充指令集动作
     write_com(0x0c); /*开显示,关游标*/
     write_com(0x01);/*清屏,地址指针指向00H*/
     delay40ms();
     write_com(0x06);
     delay1ms();
     chn_disp(tab1);                      // 显示汉字
   // OCM_DrawBitMap(char_table);           //显示图像
   while(1)
    {
     *P_Watchdog_Clear=1; 
     }
} 

⌨️ 快捷键说明

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