搜索
bottom↓
回复: 6

ST7920 打点总是存在问题,感觉读数据状态有问题?有没有...

[复制链接]

出0入0汤圆

发表于 2012-5-11 09:08:41 | 显示全部楼层 |阅读模式
以下是网上关于 ST7920 打点 的代码,但我把它拷贝到我这里,总是显示不了点 显示一条线!有没有高手遇到过这样的问题?求解!
//读函数
unsigned char LcdRdata(void)
{
unsigned char LcdData;
lcd_data=0xff;     //释放 我发现的问题:这里写入什么值,读出来的就是什么值
RW=1;
RS=1;   
E=1;
delay(1);        //延长延时不起作用
LcdData = lcd_data;  
E=0;
return (LcdData);   
}
//打点函数
void GUI_Point(unsigned char x,unsigned char y,unsigned char color)
{     
unsigned char x_Dyte,x_byte;     
unsigned char y_Dyte,y_byte;   
unsigned char GDRAM_hbit,GDRAM_lbit;

LcdWcom(0x36);        
x_Dyte=x/16;        
x_byte=x&0x0f;        
y_Dyte=y/32;      
y_byte=y&0x1f;        
  
LcdWcom(0x80+y_byte);   
LcdWcom(0x80+x_Dyte+8*y_Dyte);   
   
LcdRdata();
GDRAM_hbit=LcdRdata();      //上面 lcd_data==0xff 返回就是0xff
GDRAM_lbit=LcdRdata();  
delay(1);
  
LcdWcom(0x80+y_byte);      
LcdWcom(0x80+x_Dyte+8*y_Dyte);  
delay(1);

if(x_byte<8)        
{
  if(color==1)
  {
   LcdWdata(GDRAM_hbit|(0x01<<(7-x_byte))); //0xff | dat ==oxff  显示一条线 不是一个点
  }
  else
   LcdWdata(GDRAM_hbit&(~(0x01<<(7-x_byte))));  
  LcdWdata(GDRAM_lbit);        
}
else
{
  LcdWdata(GDRAM_hbit);
  if(color==1)
   LcdWdata(GDRAM_lbit|(0x01<<(15-x_byte)));
  else
   LcdWdata(GDRAM_lbit&(~(0x01<<(15-x_byte))));
}
LcdWcom(0x30);        
}

GUI_Fill_GDRAM(0x00);
GUI_Point(64,32,1);  //应该在中央显示一个点  确是一条线?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-5-11 22:45:49 | 显示全部楼层
检查下rw信号线,看是否在读数据的时候被置1。

出0入0汤圆

发表于 2012-7-30 21:11:23 | 显示全部楼层
我的也是。这样,求高手解救

出0入0汤圆

发表于 2013-1-8 17:22:22 | 显示全部楼层
你好,请问你那个12864读数据的问题解决了吗?

出0入0汤圆

 楼主| 发表于 2013-1-20 20:41:37 | 显示全部楼层
wallacer 发表于 2013-1-8 17:22
你好,请问你那个12864读数据的问题解决了吗?

你好,不好意思,这个问题还没解决(后来用了彩屏取代了12864),所以就没有去研究它,你有什么好的方法呢,学习学习。

出0入0汤圆

发表于 2013-5-7 23:00:33 | 显示全部楼层
以下程序来自《暑假培训做的一个12864打点程序(测试通过)》,我抄过来给你看看,应该可以解决你的问题。

//函数功能:读取GDRAM的数值,存于全局变量GDRAMH8bit和GDRAML8bit中
//全局变量
//static uchar idata GDRAMH8bit; //读取的GDRAM数据高8位,文件私有
//static uchar idata GDRAML8bit; //读取的GDRAM数据低8位,文件私有

void lcm_r_data(uchar x,uchar y)
{uchar temp;
// lcm_test(0,0x34); //先关闭图形显示功能
  send_com(0x34);
// lcm_test(0,y);  //设定垂直坐标
  send_com(y);
// lcm_test(0,x);  //设定水平坐标
  send_com(x);
E = 0;
  E = 0;
//  DataPort = 0xff;   //输入前置1
  DATA=0xff;
    RS = 1;      //数据
    RW = 1;      //读模式
    RS = 1;      //数据
    RW = 1;      //读模式
  E = 1;    //使能
  E = 1;    //使能
  E = 1;    //使能
   delay(8);
//  temp = DataPort;      //P0口的内容放到变量中,读回的正确值
  temp=DATA;
  E = 0;
  E = 0;
  E = 0;
  E = 0;


//DataPort = 0xff;   //输入前置1
   DATA=0xff;
    RS = 1;      //数据
    RW = 1;      //读模式
    RS = 1;      //数据
    RW = 1;      //读模式
   E = 1;    //使能
   E  = 1;    //使能
   E  = 1;    //使能
   delay(8);
// GDRAMH8bit = DataPort;   //P0口的内容放到变量中,读回的正确值
   GDRAMH8bit = DATA;
   E  = 0;
   E = 0;
   E  = 0;
   E = 0;


// DataPort = 0xff;   //输入前置1
  DATA=0xff;
    RS = 1;      //数据
    RW = 1;      //读模式
    RS = 1;      //数据
    RW = 1;      //读模式
   E = 1;    //使能
  E = 1;    //使能
  E = 1;    //使能
   delay(8);
   GDRAML8bit =DATA;   //P0口的内容放到变量中,读回的正确值
  E = 0;
  E = 0;
  E = 0;
  E = 0;

}

出0入0汤圆

发表于 2013-5-8 22:27:38 | 显示全部楼层
这个程序应该是51的,AVR的应该改一下temp=PINx;
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 18:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表