标题: 为啥ks0108(没字库)12864 仿真可以 实物只有光呢 [打印本页]

作者: 吾演读上琴漏    时间: 2020-4-27 13:26
标题: 为啥ks0108(没字库)12864 仿真可以 实物只有光呢
#include<reg52.h>
sbit EN=P0^3;
sbit RS=P0^1;
sbit RW=P0^2;
sbit CS1=P0^4;
sbit CS2=P0^5;
sbit RST=P0^6;
void Delay (unsigned int z)
{
unsigned int i,j;
for(i=z;i>0;i--)
for(j=2;j>0;j--);
}
void WriteCode(unsigned char com)
{
Delay(1);
RS=0;
RW=0;
P2=com;
EN=1;
EN=0;
    Delay(1);  
}
void WriteData(unsigned char dat)
{
    Delay(1);
RS=1;
RW=0;
P2=dat;
EN=1;
EN=0;
    Delay(1);  
}
unsigned char ReadData()
{
unsigned char save;     
    Delay(1);
RS=1;
RW=1;
EN=1;
save=P2;
EN=0;
return(save);
    Delay(1);
}
void LcdInitialize()
{
Delay(1);
CS1=0; CS2=0;
WriteCode(0x3e);
WriteCode(0xb8);
WriteCode(0xc0);
WriteCode(0x40);
WriteCode(0x3f);
}
void SetXy(unsigned char x,unsigned char y)
{
WriteCode(0xb8+x);
WriteCode(0x40+y);
    Delay(1);
}
void LcdClear()
{
unsigned char i,j;
CS1=0;CS2=0;
for(i=0;i<8;i++)
{
  SetXy(i,0);
  for(j=0;j<64;j++)
  WriteData(0x00);
}                                                            
}
void DrawPoint(unsigned char x,unsigned char y,unsigned char dat)
{
unsigned char he;
SetXy(x,y);
he=ReadData();
he=ReadData();
SetXy(x,y);
WriteData(dat+he);
}
void DrawHanzi(unsigned char x,unsigned char y,unsigned char code *dat)
{
unsigned char i=0,j=0;
for(i=0;i<2;i++)
{
  SetXy(x+i,y);
  for(j=0;j<16;j++)
   WriteData(dat[16*i+j]);
}
}
unsigned char code a[2][32]=
{
{
0xFF,0xFF,0x03,0xFB,0x9B,0xAB,0xBB,0x3A,0x81,0xBB,0xBB,0xAB,0x9B,0xBB,0xBB,0xFF,
0x7F,0x9F,0xE0,0xBF,0xDF,0x67,0x79,0xBE,0xB8,0xD6,0xEE,0xD6,0xBA,0x7C,0x7F,0xFF
},
{
0xBF,0xC3,0xEF,0x00,0xEF,0xEF,0xDF,0xEF,0x70,0x87,0xF7,0x07,0xF7,0x07,0xFF,0xFF,
0xFD,0xF9,0xFD,0x00,0xFE,0xFE,0xFB,0xBD,0xDE,0xE7,0xB9,0x7E,0xBF,0xC0,0xFF,0xFF
},
};
void main()
{
unsigned char i,j;
LcdInitialize();
LcdClear();
for(i=0;i<4;i++){DrawHanzi(2*i,16*j,a[0]);DrawHanzi(2*i,16*j+16,a[1]);}
for(i=0;i<4;i++){DrawHanzi(2*i,16*j+32,a[0]);DrawHanzi(2*i,16*j+16+32,a[1]);}
while(1);
}

作者: 吾演读上琴漏    时间: 2020-4-27 13:28
只有一个单片机最小系统(有P0的排阻)和一个Ks0108lcd12864其余没了。用的杜邦线
作者: 吾演读上琴漏    时间: 2020-4-27 13:29
用了20根杜邦线 vo vout 用的公对母的杜邦线焊住接vcc vss-gnd vdd-5v rst-5v
作者: xxpp2011    时间: 2020-4-27 15:44
调对比度看看
作者: man1234567    时间: 2020-4-27 17:07
查接线有无问题(错、松等),调整时序。
作者: 吾演读上琴漏    时间: 2020-4-27 18:10
man1234567 发表于 2020-4-27 17:07
查接线有无问题(错、松等),调整时序。

时序就是在E=0 E=1之间加上delay(1)吧
可能杜邦线会有点松 但是试了好多次了 什么都不显示
但是有一次有点偶然 出现了白格子(蓝屏)。。。。。。。。。。
作者: 吾演读上琴漏    时间: 2020-4-27 18:11
xxpp2011 发表于 2020-4-27 15:44
调对比度看看

我用了两根公母杜邦线连接了电位器的两端(焊住)
电位器的另一端接地 2k的电位器 调整了好像没啥用
作者: 黄youhui    时间: 2020-4-27 22:13
你把void LcdClear()
{
unsigned char i,j;
CS1=0;CS2=0;
for(i=0;i<8;i++)
{
  SetXy(i,0);
  for(j=0;j<64;j++)
  WriteData(0x00);
}                                                            
} 里面的  WriteData(0x00);换成0xff看一下会不会黑屏,如果不黑屏就是你函数或者硬件有问题,黑屏就是你函数有问题

作者: liuningning123    时间: 2020-4-27 23:14
硬件连线检查下,电源地
作者: yuweiya    时间: 2020-4-28 00:23
查看连线是否错接,漏接现象
作者: 吾演读上琴漏    时间: 2020-4-28 08:22
黄youhui 发表于 2020-4-27 22:13
你把void LcdClear()
{
unsigned char i,j;

嗯 今天试试 还有我那个电位器好像接错了
我是边上两个脚接了vo vout中间接地了
作者: 吾演读上琴漏    时间: 2020-4-28 12:01
请问bla blk 那个是干什么的 背光? 是不是不接这两个就不行
作者: 吾演读上琴漏    时间: 2020-4-28 12:05

有白格子了!!

作者: 吾演读上琴漏    时间: 2020-4-28 12:09
白各自代表0xff还是0x00
作者: 吾演读上琴漏    时间: 2020-4-28 14:26
感谢了 差不多解决了 可能是时序问题 delay没用
要用nop 程序也有点问题
作者: 我是caiji    时间: 2020-5-10 20:20
吾演读上琴漏 发表于 2020-4-28 14:26
感谢了 差不多解决了 可能是时序问题 delay没用
要用nop 程序也有点问题

楼主,我想问一下电位器三个角怎么接




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1