12864液晶不显示 求前辈 帮忙看看

2020-02-04 09:26发布

//串并行直接接串行   复位接高   片选信号接高
//小弟  检查了好几遍  思维定式了  求前辈 帮忙指点下
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit sid=P3^1;//数据口
sbit clk=P3^2;//时钟信号     void DelayMs(uchar n)   //延时

{
  uchar i;
  while(n--)
   {
     for(i=0; i<200; i++)
     _nop_();                        
  }

}  
void lcd_com(uchar dat,uchar str)
{
        uint i,j,temp;
        temp=str;
          DelayMs(1);
        //sid=0;
        clk=0;
        sid=1;
       
        for(i=0;i<5;i++)
        {               
                clk=1;
                clk=0;
        }
        sid=0;
        clk=1;
        clk=0;
        if(dat==1)
  sid = 1;              
else  sid= 0;      
   clk = 1;
   clk = 0;
        sid=0;
        clk=1;
        clk=0;

        for(j=0;j<2;j++)
                {
                        for(i=0;i<4;i++)
                        {
                                //temp=str;
                                temp <<=1;
                                sid=CY;
                                clk=1;
                                clk=0;       
                        }
                        sid=0;
                        for(i=0;i<4;i++)
                        {
                               
                                clk=1;
                                clk=0;
                        }

                }
        //sid=0;
}
void init()
{
lcd_com(0,0x30);
lcd_com(0,0x0c);
lcd_com(0,0x01);
lcd_com(0,0x02);
lcd_com(0,0x80);
}
void Lcd_DisplayString(uchar x,uchar y,uchar *str)
{
         unsigned char temp;
         switch(y)
         {
          case 1:x|=0x80;break;
          case 2:x|=0x90;break;
          case 3:x|=0x88;break;
          case 4:x|=0x98;break;
          default:break;
         };
        // lcd_com(0,0x90);//行地址:首行地址:0x80,第二行地址:0x90,第三行地址:0x88,第四行0x98
             lcd_com(0,x);      
             temp= *str;
        while(temp!=0)
        {
                lcd_com(1,temp);
                temp=*(++str);
       
        }
}
void main()
{
        init();
        Lcd_DisplayString(0,2,"大连民族学院");
        while(1);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。