[官方资料] LCD驱动波形A类与B类的区别
3812 查看
2 回复
 楼主 | 发布于 2019-11-20 | 只看楼主
分享到:
        前两天,与同事讨论了一下关于LCD A类,B类驱动波形,结果发现当时理解错了。并而MC33P116上面画的图不是很明白。特意找了点资料重新学习了一下。现把几张波形图上传,供大家讨论:
发现我最近用IO模拟最多的波形就是1/2偏压,1/2占空比较的A类波形。




HC05核一段模拟lLCD驱动的代码。lcd_buffer[0]--lcd_buffer[3]为四个COM端需要显示的内容

switch(lcd_state)
{
  case 0:

             //com0 正亮

             P2 |=lcd_buffer[0]>>4;

             P1 =lcd_buffer[0]>>2;

             //将4个COM设置output

             COM0=0;

             reg_temp = P0CONH;   设置其它COM端口为高阻

             reg_temp &=0xfc;

             reg_temp |=0x02;

             P0CONH=reg_temp;
   break;
  case 1:

              //com0 负亮

               reg_temp =~lcd_buffer[0];

               P2 |=reg_temp>>4;

              P1 =reg_temp>>2;

             //将COM设置output

             COM0=1;

             reg_temp = P0CONH;

             reg_temp &=0xfc;

            reg_temp |=0x02;

            P0CONH=reg_temp;

   break;  case 2:

            //com1 a

            //com0 正亮

           P2 |=lcd_buffer[1]>>4;

           P1 =lcd_buffer[1]>>2;

          //将COM设置output

         COM1=0;
          P0CONL |=0X80; 

  break;
  case 3:

            //com1 负亮

           reg_temp =~lcd_buffer[1];

          P2 |=reg_temp>>4;

             P1 =reg_temp>>2;

            //将COM设置output

           COM1=1;
           P0CONL |=0X80;
  break;
  case 4:

          //com2 正亮

          P2 |=lcd_buffer[2]>>4;

          P1 =lcd_buffer[2]>>2;

         //将4个COM设置output

         COM2=0;

         reg_temp = P2CONH;

          reg_temp &=0xf3;

         reg_temp |=0x08;

         P2CONH=reg_temp; 
  break;
  case 5:

            //com2 负亮,

             reg_temp =~lcd_buffer[2];

           P2 |=reg_temp>>4;

           P1 =reg_temp>>2;

          //将COM设置output

           COM2=1;

           reg_temp = P2CONH;

           reg_temp &=0xf3;

            reg_temp |=0x08;

             P2CONH=reg_temp;

  break;
  case 6:

          //com3 正亮

         P2 |=lcd_buffer[3]>>4;

           P1 =lcd_buffer[3]>>2;

           //将4个COM设置output

            COM3=0;

         reg_temp = P2CONH;

            reg_temp &=0xfc;

          reg_temp |=0x02;

          P2CONH=reg_temp;
  break;
  case 7:

          //com3 负亮

          reg_temp =~lcd_buffer[3];

          P2 |=reg_temp>>4;

            P1 =reg_temp>>2;

          //将COM设置output

          COM3=1;

           reg_temp = P2CONH;

          reg_temp &=0xfc;

          reg_temp |=0x02;

            P2CONH=reg_temp;

  break;
  case 8:

         //将4个COM设置为LOW  
            COM0=0;        
           COM1=0;
           COM2=0;
           COM3=0;
          reg_temp = P2CONH;
          reg_temp &=0xf0;
           reg_temp |=0x0a;
          P2CONH=reg_temp;      
          COM3=0;     
          COM2=0;
          reg_temp = P0CONH;

          reg_temp &=0xfc;
          reg_temp |=0x02;
          P0CONH=reg_temp;

          COM0=0;

          reg_temp = P0CONL;
          reg_temp &=0x3f;
          reg_temp |=0x80;

          P0CONL=reg_temp;
          COM1=0;
         //P2 &=0XF0; //SEG LOW
           P1 =0;
           //lcd_set_buff(2,3);
   break;
  default:
    break;
}
if(lcd_state>=7)
       lcd_state=0;
else
      lcd_state++;

(0 ) (0 )
回复 举报

回复于 2019-11-21 沙发

谢谢分享
(0 )
评论 (0) 举报

回复于 2020-03-05 2#

谢谢分享
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部