论坛风格切换切换到宽版
  • 5233阅读
  • 31回复

帮忙看下我的KS0108读字库程序(bg4uvr大哥) [复制链接]

上一主题 下一主题
离线lulei
 
发帖
47
只看楼主 倒序阅读 0楼 发表于: 2008-05-16
//清屏子程序
void clean_lcd(void)
{
     uchar      i,j=0;
  for(i=0;i<8;i++)
     {
        if(j<128)
           {
      printchar( i, j, "!");
              j=j+8;
           }

     }
}

void delay_ms(s)
{
unsigned i,j;
for(i=0;i<=s;i++)
{
  for(j=0;j<=1000;j++)
      {
        _nop_();
      }
}
}
void delay02s() //延时
{
unsigned i,j,k;
for(i=150;i>0;i--)
for(j=150;j>0;j--)
for(k=2;k>0;k--);

}
void main()
{      
       
            intrst();   //软件复位
          delay_ms(10);
            lcd_on(); //开显示
            _nop_(); //空操作
           _nop_();                  
           delay02s();
                clean_lcd();
           delay02s();
        while(1){
              printchar(0,0,"g");
           delay02s();
           }
           
}
这个是液晶子函数
void   intrst(void)
{
     rst=0;             //软件复位低有效
     _nop_();             //空指令
     _nop_();
     rst=1;     //软件复位

}
//左半屏写命令子程序
void      left_comsend(void)
{      
  cs2=0;cs1=1;
     lcd_write_byte(com,0);
     cs1=0;
}



//右半屏写命令子程序
void      right_comsend(void)
{
     cs1=0;cs2=1;
     lcd_write_byte(com,0);
     cs2=0;
}



//开lcd
void   lcd_on(void)
{
  com=0x3f;
  left_comsend();
  right_comsend();
}






//输入命令和数据函数
void lcd_write_byte(uchar wdata,uchar command)
{
  uchar temp;
     com=wdata;
  if(command==0)
     {
     
           rs=0;
           rw=1;    
    do {      
              p2=0xff;
           e=1;
                _nop_();
           temp=p2;
                e=0;
     } while((temp&0x80)==1);      //读busy信号
           rw=0;
           p2=com;
           e=1;
           _nop_();//nop            
           e=0;
     }
     else
     {
             rs=0;
           rw=1;
           do{p2=0xff;
              e=1;
              _nop_();
              temp=p2;
                    e=0;
              }while((temp&0x80)==1);            //读busy信号
              rs=1;
              rw=0;
              p2=wdata;
              e=1;
              _nop_();      //nop
              e=0;
     
     }

}
//定位坐标函数
void write_set_xy(uchar x,uchar y)
{
       if(y<64)
     {
        lcd_write_byte(x|0xb8,0); //页定位
        lcd_write_byte(y|0x40,0); //列定位
        left_comsend();
           
     }                                
     else
     {
        y=y-63;
        lcd_write_byte(x|0xb8,0); //页定位
        lcd_write_byte(y|0x40,0); //列定位
        right_comsend();
       
     }
       

}
//英文字符串显示函数
void printchar(uchar x,uchar y,uchar *str )
{
  write_set_xy(x,y);
     while(*str)
     {
           lcd_write_char(*str);
           str++;
                   
     }
}
//显示字符函数
void lcd_write_char(uchar c)
{
     uchar line;
     c-=32;
     for(line=0;line<8;line++)
     {
          lcd_write_byte(ziku[c][line],1);        
     }
}
我根据ouravr网站上的一个3310gps读字库程序改的,不知道为什么不行。各位大哥帮忙看下。bg4uvr大哥你应该知道用ks0108显示应该是什么细想给个思路啊
离线BG4UVR
发帖
11288
只看该作者 1楼 发表于: 2008-05-16
我现在电脑已经没有51的环境,建议你单独调试这个显示程序试一下。显示驱动ok后,再和gps的代码联合调试。

在你的代码中我没有看到字库,实际中使用的时候是必须有6×8点阵的英文字库才可以。

其他的我大体看了一下,应该没大问题。
离线lulei
发帖
47
只看该作者 2楼 发表于: 2008-05-16
我现在就是在单独调试这个程序的
这是字库
你看清屏的那个函数是不是有问题
!的ascll是33然后减去32等于1
就是去数组的第一个
但是我在调试的时候我把第一个数组里的0x00全部换成了0xff屏幕没点出现,还是和0x00一样,这就怪了,难道写指令和写数据有问题。那个写指令和写程序的程序原来是两个函数,我参考那个3310才合在一起的,现在不显示了。我单步的时候执行到清屏的时候p2口也显示了8个0,但是就是不起作用。也就是没起到清屏作用!在帮我看看啊。我的字符是8*8的
unsigned char code ziku[][8] =
{
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"0",0*/
 
{0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f},/*"!",0*/

{0x00,0x04,0x04,0x02,0x04,0x04,0x02,0x00},/*""",1*/

{0x28,0x78,0x2c,0x28,0x78,0x2c,0x28,0x00},/*"#",2*/

{0x00,0x6c,0x54,0xfe,0x54,0x64,0x00,0x00},/*"$",3*/

{0x1c,0x54,0x3c,0x10,0x78,0x54,0x70,0x00},/*"%",4*/

{0x20,0x5c,0x54,0x74,0x2c,0x58,0x48,0x40},/*"&",5*/

{0x00,0x06,0x02,0x00,0x00,0x00,0x00,0x00},/*"'",6*/

{0x00,0x00,0x00,0x38,0x44,0x82,0x00,0x00},/*"(",7*/

{0x00,0x82,0x84,0x44,0x38,0x00,0x00,0x00},/*")",8*/

{0x00,0x18,0x10,0x3c,0x10,0x18,0x00,0x00},/*"*",9*/

{0x08,0x08,0x08,0x3e,0x08,0x08,0x08,0x00},/*"+",10*/

{0x00,0xc0,0x40,0x00,0x00,0x00,0x00,0x00},/*",",11*/

{0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08},/*"-",12*/

{0x00,0x40,0x40,0x00,0x00,0x00,0x00,0x00},/*".",13*/

{0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02},/*"/",14*/

{0x00,0x38,0x44,0x44,0x44,0x44,0x38,0x00},/*"0",15*/

{0x00,0x48,0x48,0x7c,0x40,0x40,0x00,0x00},/*"1",16*/

{0x00,0x48,0x64,0x64,0x64,0x54,0x6c,0x00},/*"2",17*/

{0x00,0x28,0x44,0x4c,0x4c,0x54,0x34,0x00},/*"3",18*/

{0x00,0x10,0x28,0x24,0x64,0x7e,0x00,0x00},/*"4",19*/

{0x00,0x3c,0x54,0x54,0x54,0x54,0x24,0x00},/*"5",20*/

{0x00,0x38,0x54,0x54,0x54,0x54,0x20,0x00},/*"6",21*/

{0x00,0x0c,0x04,0x74,0x14,0x0c,0x04,0x00},/*"7",22*/

{0x00,0x2c,0x54,0x54,0x54,0x54,0x2c,0x00},/*"8",23*/

{0x00,0x08,0x54,0x54,0x54,0x74,0x38,0x00},/*"9",24*/

{0x00,0x00,0x00,0x48,0x48,0x00,0x00,0x00},/*":",25*/

{0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00},/*";",26*/

{0x00,0x10,0x10,0x28,0x48,0x44,0x00,0x00},/*"<",26*/

{0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x00},/*"=",27*/

{0x00,0x00,0x44,0x48,0x28,0x10,0x10,0x00},/*">",28*/

{0x00,0x04,0x06,0x42,0x52,0x0a,0x04,0x00},/*"?",29*/

{0x38,0x6c,0x74,0x6c,0x7c,0x64,0x18,0x00},/*"@",30*/

{0x40,0x60,0x78,0x2c,0x28,0x70,0x40,0x40},/*"a",31*/

{0x44,0x7c,0x4c,0x4c,0x4c,0x54,0x30,0x00},/*"b",32*/

{0x38,0x6c,0x44,0x44,0x44,0x44,0x24,0x00},/*"c",33*/

{0x44,0x7c,0x44,0x44,0x44,0x44,0x38,0x00},/*"d",34*/

{0x44,0x7c,0x4c,0x4c,0x5c,0x44,0x44,0x00},/*"e",35*/

{0x44,0x7c,0x4c,0x0c,0x1c,0x04,0x04,0x00},/*"f",36*/

{0x38,0x6c,0x44,0x44,0x64,0x24,0x20,0x00},/*"g",37*/

{0x44,0x7c,0x54,0x10,0x10,0x54,0x7c,0x44},/*"h"38*/

{0x00,0x44,0x44,0x7c,0x44,0x44,0x00,0x00},/*"i",39*/

{0x80,0x80,0x84,0x84,0xfc,0x04,0x04,0x00},/*"j",40*/

{0x44,0x7c,0x5c,0x1c,0x6c,0x64,0x44,0x00},/*"k",41*/

{0x44,0x7c,0x44,0x40,0x40,0x40,0x40,0x00},/*"l",42*/

{0x44,0x7c,0x1c,0x70,0x0c,0x7c,0x44,0x00},/*"m",43*/

{0x44,0x7c,0x4c,0x18,0x10,0x24,0x7c,0x04},/*"n",44*/

{0x38,0x44,0x44,0x44,0x44,0x44,0x38,0x00},/*"o",45*/

{0x44,0x7c,0x54,0x14,0x14,0x14,0x08,0x00},/*"p",46*/

{0x38,0x44,0x64,0x64,0x64,0xc4,0xb8,0x00},/*"q",47*/

{0x44,0x7c,0x4c,0x0c,0x1c,0x2c,0x64,0x40},/*"r",48*/

{0x00,0x68,0x54,0x54,0x54,0x54,0x24,0x00},/*"s",49*/

{0x04,0x04,0x44,0x7c,0x44,0x04,0x04,0x00},/*"t",50*/

{0x04,0x7c,0x44,0x40,0x40,0x44,0x7c,0x04},/*"u",51*/

{0x04,0x0c,0x34,0x40,0x20,0x1c,0x0c,0x04},/*"v",52*/

{0x1c,0x74,0x08,0x0c,0x30,0x64,0x1c,0x00},/*"w",53*/

{0x44,0x44,0x6c,0x74,0x54,0x6c,0x44,0x44},/*"x",54*/

{0x04,0x0c,0x4c,0x74,0x4c,0x0c,0x04,0x00},/*"y",55*/

{0x04,0x44,0x64,0x54,0x4c,0x44,0x40,0x00},/*"z",56*/

{0x00,0x00,0x00,0xfe,0x82,0x82,0x82,0x00},/*"[",57*/

{0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x99},/*"55",58*/                          

{0x00,0x82,0x82,0x82,0xfe,0x00,0x00,0x00},/*"]",59*/

{0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00},/*"^",60*/

{0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80},/*"_",61*/

{0x00,0x40,0x40,0x00,0x00,0x00,0x00,0x00},/*".",62*/

{0x00,0x68,0x58,0x58,0x58,0x58,0x78,0x40},/*"a",63*/

{0x04,0x7c,0x48,0x48,0x48,0x48,0x30,0x00},/*"b",64*/

{0x00,0x30,0x48,0x48,0x48,0x48,0x48,0x00},/*"c",65*/

{0x00,0x30,0x50,0x48,0x48,0x4c,0x7c,0x40},/*"d",66*/

{0x00,0x30,0x58,0x58,0x58,0x58,0x50,0x00},/*"e",67*/

{0x00,0x48,0x48,0x7c,0x4c,0x4c,0x0c,0x04},/*"f",68*/

{0x00,0xf8,0xb8,0xd8,0xd8,0xd8,0xc8,0x00},/*"g",69*/

{0x44,0x7c,0x48,0x08,0x08,0x48,0x78,0x40},/*"h",70*/

{0x00,0x48,0x4c,0x7c,0x40,0x40,0x00,0x00},/*"i",71*/

{0x00,0x80,0x80,0x88,0x8c,0x7c,0x00,0x00},/*"j",72*/

{0x44,0x7c,0x60,0x30,0x78,0x48,0x48,0x00},/*"k",73*/

{0x00,0x44,0x44,0x7e,0x40,0x40,0x00,0x00},/*"l",74*/

{0x48,0x78,0x48,0x08,0x78,0x48,0x08,0x78},/*"m",75*/

{0x48,0x78,0x48,0x08,0x08,0x48,0x78,0x40},/*"n",76*/

{0x00,0x30,0x48,0x48,0x48,0x48,0x30,0x00},/*"o",77*/

{0x88,0xf8,0xc8,0x48,0x48,0x48,0x30,0x00},/*"p",78*/

{0x00,0x30,0x48,0x48,0x48,0xc8,0xf8,0x80},/*"q",79*/

{0x48,0x48,0x78,0x50,0x48,0x08,0x08,0x00},/*"r",80*/

{0x00,0x58,0x58,0x68,0x68,0x68,0x68,0x00},/*"s",81*/

{0x00,0x08,0x08,0x7c,0x48,0x48,0x00,0x00},/*"t",82*/

{0x08,0x78,0x40,0x40,0x40,0x48,0x78,0x40},/*"u",83*/

{0x08,0x18,0x38,0x40,0x20,0x18,0x18,0x08},/*"v",84*/

{0x38,0x48,0x20,0x18,0x20,0x48,0x38,0x08},/*"w",85*/

{0x00,0x48,0x48,0x70,0x78,0x78,0x48,0x00},/*"x",86*/

{0x88,0x88,0x98,0x68,0x20,0x18,0x08,0x08},/*"y",87*/

{0x00,0x48,0x68,0x68,0x58,0x58,0x48,0x00},/*"z",88*/

{0x00,0x02,0x01,0x01,0x01,0x02,0x02,0x02} /*"~",89*/
};
离线lulei
发帖
47
只看该作者 3楼 发表于: 2008-05-16
unsigned char com;         //指令数据寄存器
unsigned char dat;         //显示数据寄存器
离线lulei
发帖
47
只看该作者 4楼 发表于: 2008-05-16
大家看贴帮忙看下程序啊!谢谢,小弟在做毕业设计,谢谢大家了!
离线BG4UVR
发帖
11288
只看该作者 5楼 发表于: 2008-05-16
晕啊,原来又是毕业设计。唉~
离线lulei
发帖
47
只看该作者 6楼 发表于: 2008-05-16
是毕业设计
怎么了,好像没必要要骗谁吧。请帮忙看下好吗?原来看过你的那个显示才想起来用ks0108.
离线BG4UVR
发帖
11288
只看该作者 7楼 发表于: 2008-05-16
目前常用液晶屏成功驱动,所必须的前提:
1、硬件接线正确。并且对比度调整正常。
2、4个基本的函数必须正确。即:写指令、写数据、读状态、读数据(某些串行屏可能用不到读状态和读数据)
3、上电初始化流程必须正确。
4、正常的供电。

如果清屏功能不能正常完成,高级点阵操作是肯定无法完成的,所以你需要按以上4点逐项检查。
离线lulei
发帖
47
只看该作者 8楼 发表于: 2008-05-16
调试两天了没发现到底错在哪。单步也执行了,初始化保证绝对没问题。写指令和写函数的程序也应该没问题。应为都是我之前程序截取下来改的。所以不会有问题,所以现在就错在细节方面。我看不到,所以请大家看看的!
离线BG4UVR
发帖
11288
只看该作者 9楼 发表于: 2008-05-16
'
调试两天了没发现到底错在哪。单步也执行了,初始化保证绝对没问题。写指令和写函数的程序也应该没问题。应为都是我之前程序截取下来改的。所以不会有问题,所以现在就错在细节方面。我看不到,所以请大家看看的!
'

如果真如你所说,“绝对没有问题”、“不会有问题”,相信你的代码应该已经工作了。我刚才又看了一下,发现据你所说“绝对没有问题”的初始化代码,竟然连扫描启始行都没有设置。兄弟,还是对照屏的说明,仔细检查一下时序吧。我估计不会有很多人真的去详细看你帖的那一大段代码的……
离线lulei
发帖
47
只看该作者 10楼 发表于: 2008-05-16
扫描的时候我那个定义坐标函数定义 了。到那个函数里定义扫描,然后在清屏扫描的。这样不可以吗?难道。
离线BG4UVR
发帖
11288
只看该作者 11楼 发表于: 2008-05-16
你需要仔细看一下你屏幕的说明书。

还可以参考下面这个网页
http://blog.ednchina.com/pulan/45087/message.aspx
离线radiolee
发帖
6050
只看该作者 12楼 发表于: 2008-05-16
又见毕业设计。。。而且貌似lz是专门为了毕业设计而上。net的。。。
离线lulei
发帖
47
只看该作者 13楼 发表于: 2008-05-16
好的。谢谢,麻烦你了!
离线lulei
发帖
47
只看该作者 14楼 发表于: 2008-05-16
如果毕业设计大家都做的很好bg4uvr 我觉得功劳很大的!难道不是吗》
离线BG4UVR
发帖
11288
只看该作者 15楼 发表于: 2008-05-16
晕……  
离线radiolee
发帖
6050
只看该作者 16楼 发表于: 2008-05-16
'
如果毕业设计大家都做的很好bg4uvr 我觉得功劳很大的!难道不是吗》
'

额。。。如果找到了好工作,记得每月将工资的50%汇给uvr,他的功劳是很大的。
离线lulei
发帖
47
只看该作者 17楼 发表于: 2008-05-16
这样的啊。你的想法是不是有点他过分了,毕业设计好像和找到好工作没关系!
离线radiolee
发帖
6050
只看该作者 18楼 发表于: 2008-05-16
lz,我敢跟你打赌,如果你在楼主位说明这是毕业设计,我肯定r不会回你的贴子
http://www.hellocq.net/forum/showthread.php?t=152981

所以r的意思不是说你没骗他,而是你的lz贴骗了他。呵呵。。
离线lulei
发帖
47
只看该作者 19楼 发表于: 2008-05-16
我晕,你的意思你很瞧不起毕业生了是吧,毕业生怎么了,毕业设计就该死吗?
毕业生就一定差吗?