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

📄 ocm4_16a.c

📁 sch是原理图 7920的驱动程序 avr128
💻 C
📖 第 1 页 / 共 2 页
字号:
    for (i=0;i<16;i++)
    send_d (1,0,chn[j*16+i]);
  }
  send_c (0,1,0x80);
  for (j=4;j<8;j++)
  {
    for (i=0;i<16;i++)
    send_d (0,1,chn[j*16+i]);
  }
}
/*-----------------显示字符------------------*/
void chn_disp1 (void)
{
  uchar i;
  send_c (1,1,0x30);
  send_c (1,0,0x81);
  for (i=2;i<64;i++)
    send_d (1,0,i);
  send_c (0,1,0x80);
  for (i=64;i<128;i++)
    send_d (0,1,i);
}
/*-----------左半屏显示汉字或字符------------*/
void chn_disp2 (uchar const *chn)
{
  uchar i,j;
  send_c (1,1,0x30);
  send_c (1,0,0x80);
  j=0;
  for (i=0;i<16;i++)
  send_d (1,0,chn[j*16+i]);
  send_c (1,0,0x90);
  j=1;
  for (i=0;i<16;i++)
  send_d (1,0,chn[j*16+i]);
  
  send_c (0,1,0x80);
  j=2;
  for (i=0;i<16;i++)
  send_d (0,1,chn[j*16+i]);
  send_c (0,1,0x90);
  j=3;
  for (i=0;i<16;i++)
  send_d (0,1,chn[j*16+i]);
}
/*----------------显示图形-----------------*/
void img_disp (uchar const*img)
{
  uchar i,j;
  for(j=0;j<32;j++)
  {
    for(i=0;i<16;i++)
    {
      send_c (1,0,0x34);
      send_c (1,0,y+j);
      send_c (1,0,x1+i);
      send_c (1,0,0x30);
      send_d (1,0,img[j*32+i*2]);
      send_d (1,0,img[j*32+i*2+1]);
    }
  }
  for(j=32;j<64;j++)
  {
    for(i=0;i<16;i++)
    {
      send_c (0,1,0x34);
      send_c (0,1,y+j-32);
      send_c (0,1,x1+i);
      send_c (0,1,0x30);
      send_d (0,1,img[j*32+i*2]);
      send_d (0,1,img[j*32+i*2+1]);
    }
  }
  send_c (1,1,0x36);
}
/*--------------半屏画图形---------------*/
void img_disp1 (uchar jbdisp,uchar x,uchar const *img)
{
  uchar i,j;
  for(j=0;j<32;j++)
  {
    for(i=0;i<8;i++)
    {
      send_c (1,0,0x34);
      send_c (1,0,y+j);
      send_c (1,0,x+i);
      send_c (1,0,0x30);
      send_d (1,0,img[j*16+i*2]);
      send_d (1,0,img[j*16+i*2+1]);
    }
  }
  for(j=32;j<64;j++)
  {
    for(i=0;i<8;i++)
    {
      send_c (0,1,0x34);
      send_c (0,1,y+j-32);
      send_c (0,1,x+i);
      send_c (0,1,0x30);
      send_d (0,1,img[j*16+i*2]);
      send_d (0,1,img[j*16+i*2+1]);
    }
  }
  if(jbdisp==1)
  {
    send_c (1,1,0x36);
  }
}
/*--------------显示点阵------------------*/
void lat_disp (uchar data1,uchar data2)
{
  uchar i,j;
  for(j=0;j<16;j++)
  {
    for(i=0;i<16;i++)
    {
      send_c (1,1,0x34);
      send_c (1,1,y+j*2);
      send_c (1,1,x1+i);
      send_c (1,1,0x30);
      send_d (1,1,data1);
      send_d (1,1,data1);
    }
    for(i=0;i<16;i++)
    {
      send_c (1,1,0x34);
      send_c (1,1,y+j*2+1);
      send_c (1,1,x1+i);
      send_c (1,1,0x30);
      send_d (1,1,data2);
      send_d (1,1,data2);
    }
  }
    send_c (1,1,0x36);
}
/*--------------清DDRAM------------------*/
void clrram (void)
{
  send_c (1,1,0x30);
  send_c (1,1,0x01);
}
/*-----------------------------------------------*/
void send_c (uchar choe1,uchar choe2,uchar comm)
{
  chk_busy (choe1,choe2);
  CLR_LCD_RS ; 
  CLR_LCD_RW ; 
  if(choe1==1)
  {
    LCM_Data  = comm ; 
    SET_LCD_E1; 
    delay_nms(5); 
    CLR_LCD_E1 ; 
  }
  if(choe2==1)
  {
    LCM_Data  = comm ;
    SET_LCD_E2 ; 
    delay_nms(5); 
    CLR_LCD_E2 ; 
  }
}
void send_d (uchar choe1,uchar choe2,uchar dat)
{
  chk_busy (choe1,choe2);
  SET_LCD_RS; 
  CLR_LCD_RW; 
  if(choe1==1)
  {
    LCM_Data = dat ;
    SET_LCD_E1 ; 
    delay_nms(5); 
    CLR_LCD_E1 ; 
  }
  if(choe2==1)
  {
    LCM_Data  = dat ;
    SET_LCD_E2 ; 
    delay_nms(5); 
    CLR_LCD_E2 ; 
  }
}
void chk_busy (uchar choe1,uchar choe2)
{
  if(choe1==1)
  {
    DDRC = 0xFF; 
    CLR_LCD_RS; 
    SET_LCD_RW; 
    SET_LCD_E1; 
    while(Busy==1);
    CLR_LCD_E1; 
  }
  if(choe2==1)
  {
    DDRC = 0xFF; 
    CLR_LCD_RS; 
    SET_LCD_RW; 
    SET_LCD_E2; 
    while(Busy==1);
    CLR_LCD_E2; 
  }
}

/*------------------主程序--------------------*/
int main (void)
{
 
 DDRD = 0xFF;   
 DDRG = 0x1F;
 DDRC = 0XFF;       
 delay_nms(400);  
 init_lcd ();      
  
  while (1)
  {
    chn_disp (tab1);
    delay_nms (50000);
    clrram ();
    chn_disp1 ();
    delay_nms (50000);
    clrram();
    lat_disp (0xcc,0xcc);
    delay_nms (50000);
    clrram();
    lat_disp (0x00,0x00);
    chn_disp2 (tab2);
    img_disp1 (1,x2,tab3);
    delay_nms (50000);
    clrram();
    lat_disp (0xff,0x00);
    delay_nms (50000);
    img_disp1 (0,x1,tab3);
    img_disp1 (1,x2,tab4);
    delay_nms (50000);
    send_c (1,1,0x34);
  }
}

⌨️ 快捷键说明

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