用stc12c和sd卡做的lcd12864显示屏显示乱码,请问这是为什么?如何解决?

2019-07-14 18:39发布

求救啊搞了一天了还是乱码这是lcd程序求大神看看哪里出错了

#include <reg52.h>
#include "intrins.h"

#define uchar unsigned char
#define uint unsigned int
sbit rs  =  P2^6;      //寄存器选择输入
sbit rw  =  P2^5;      //液晶读/写控制
sbit en  =  P2^7;      //液晶使能控制
sbit psb =  P3^2;      //串/并方式控制
sbit rst =  P3^4;      //液晶复位端口        

void lcd_com(uchar com);
void lcd_dat(uchar dat);
void lcd_busy();
void lcd_dis(uchar *table);
void lcd_int();



void delay(uint z)
{
        uchar i;
        while(z--)
        for(i=10;i>0;i--);
}

void lcd_busy(void)   //忙检测
{
        uchar busy;
rs=0; rw=1;
  do{
     en=1;
         _nop_();
         _nop_();
         busy=P0;
         _nop_();
         _nop_();
en=0;
         }while(busy & 0x80);         
}

void lcd_com(uchar com)
{
        lcd_busy();
        rs=0;//命令01
        rw=0;//写数据
        P0=com;
        en=1;
        _nop_();
        _nop_();
        en=0;

}

void lcd_dat(uchar dat)
{
        lcd_busy();
        rs=1;//数据1
        rw=0;//写方式
        P0=dat;
en=1;
        _nop_();
        _nop_();
        en=0;
        
}

void lcd_int()
{
        psb=1;
        rst=0;
        delay(5);
        rst=1;
        delay(5);        

  
   lcd_com(0x30);
   lcd_com(0x0c);
   lcd_com(0x01);
   lcd_com(0x02);
   lcd_com(0x80);
   delay(50);


}

void lcd_dis(uchar *table)
{
        uchar i,j;
for(i=0;i<32;i++)
  {
    lcd_com(0x80+i);    //先写入水平坐标值
    lcd_com(0x80);      //写入垂直坐标值
    for(j=16;j>0;j--)   //再写入两个8位元的数据   
    lcd_dat(*table++);  
        delay(1);   
  }

  for(i=0;i<32;i++)
  {
    lcd_com(0x80+i);
    lcd_com(0x88);
    for(j=16;j>0;j--)         
        lcd_dat(*table++);
        delay(1);   
  }
}





IMG_20180716_192542.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。