找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3909|回复: 10
收起左侧

12864显示问题

  [复制链接]
ID:85129 发表于 2015-7-31 21:08 | 显示全部楼层 |阅读模式
我的12864显示的问题,
程序如下:
#include <reg52.h>
#include"intrins.h"
#define LCD12864DataPort P0
#define  uchar unsigned char
#define  uint  unsigned  int
// LCD128*64 I/O
//信号管脚
  
sbit rs =P2^0;   // //数据\//指令//选择
sbit rw =P2^1;   // //读\写选择
sbit en =P2^2;   // 读\写使能  
sbit cs1 =P2^4;  // 片选1,低有效(前64列)
sbit cs2 =P2^5;  // 片选2,低有效(后64列)

void    lcdstate()
{
  
uchar  lcd=0x00; /*设置初值为0,全部为低,方便后面的判忙*/
rs=0; /*根据时序图拉低,选择写指令*/
rw=1; /*根据时序图拉低,选择写模式*/
do
{
en=1; /*使能,使液晶输出信号,检查是否忙*/
_nop_();_nop_();_nop_();_nop_();/*延时4US*/
lcd=P0; /*把P0口的状态值读回来给lcd*/
en=0; /*使能端跳变*/;
}while(lcd&0x80); /*结果的高位保留,如果高位DB7为一,则表示忙*/

}
void delay(uchar  ms)
{ uchar   i;
   uchar   j;
  for(i=0;i<100;i++)
   for(j=0;j<ms;j++);
}
void   write_command(uchar   command)
{
lcdstate();
  rs=0;    //RS=0;为往MCU进行指令操作
  rw=0;    //RW=0;为往MCU写入操作
  en=0;
  _nop_();_nop_();_nop_();_nop_();/*延时4US*/
  en=1;
  _nop_();_nop_();_nop_();_nop_();/*延时4US*/
  P0=command;
  _nop_();_nop_();_nop_();_nop_();/*延时4US*/
  en=0;
}
void   write_data(uchar   datas)
{  
   lcdstate();
   rs=1;
   rw=0;  
   en=0;
   _nop_();_nop_();_nop_();_nop_();/*延时4US*/
   en=1;
   _nop_();_nop_();_nop_();_nop_();/*延时4US*/
   P0=datas;
   _nop_();_nop_();_nop_();_nop_();/*延时4US*/
   en=0;
}



void   lcdinit()
{
    delay(100);      //
    cs1=1;
cs2=1;
delay(100);
  lcdstate();     //
write_command(0x3e);   //
write_command(0xb8+0);    //
write_command(0xc0+0);   //
write_command(0x40+0);   //
write_command(0x3f);   



}
void clearScreen(  )

{   uchar i,j;
    lcdstate();
    cs1=1;
cs2=1;
write_command(0x3f);   //设置显示开
write_command(0xb8);      //Y 设置第0页;
write_command(0x40);    // 设置第0列
   for(i=0;i<8;i++)
   {
     write_command(0xb8+i);
     for(j=0;j<64;j++)
     {
    //write_command(0x40+j);
   
       write_data(0x00);
   
     }
   }
}

uchar code    xms[16]= {
0xee,0xef,0xee,0xee,0xee,0xff,0xff,0xff,0xff,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,


};


void hz_display16(unsigned char pag, unsigned char col, unsigned char code *hzk)
{
uchar j=0;
uchar i=0;
for(j=0;j<1;j++)
{
  write_command(0xb8+pag+j);
  write_command(0x40+col);
  for(i=0;i<16;i++)
  write_data(hzk[16*j+i]);
}
}
void main()
{
lcdinit();

clearScreen(  );
    cs1=1;
    cs2=0;
while(1)
{

  delay(2);
// hz_display16(0,0,xms[]);
  hz_display16(0,0,xms);

}

}
0xee,0xef,0xee,0xee,0xee,0xff,0xff,0xff,0xff,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,这里的第六个0XFF,在液晶上显示的是0XEF,第十个0X1F,显示的是0X0F,百思不得其解,液晶是KS0108芯片。显示1,3,5,7,9,B,D,F,都有类似问题,求帮助!先谢谢大家了!
IMG_20150729_200649.jpg
回复

使用道具 举报

ID:85129 发表于 2015-8-2 09:07 | 显示全部楼层
没有人回复,我搞明白了,是因为上拉电阻没有焊好。
回复

使用道具 举报

ID:86380 发表于 2015-8-3 15:07 | 显示全部楼层
qhdfnftyzt 发表于 2015-8-2 09:07
没有人回复,我搞明白了,是因为上拉电阻没有焊好。

可怜.............
回复

使用道具 举报

ID:87562 发表于 2015-8-3 18:51 | 显示全部楼层
看是不是 引脚插错了
回复

使用道具 举报

ID:85129 发表于 2015-8-4 12:32 | 显示全部楼层
qiujie1996 发表于 2015-8-3 18:51
看是不是 引脚插错了

上拉电阻没有焊好,多谢!
回复

使用道具 举报

ID:87639 发表于 2015-8-4 20:13 | 显示全部楼层
虚焊了吧
回复

使用道具 举报

ID:143203 发表于 2016-11-17 11:27 | 显示全部楼层
这个怎么接?
回复

使用道具 举报

ID:200028 发表于 2017-5-14 14:14 | 显示全部楼层
按照你的接法,你的程序显示不出来啊。
回复

使用道具 举报

ID:194276 发表于 2017-5-14 15:58 | 显示全部楼层
是不是虚焊了
回复

使用道具 举报

ID:198608 发表于 2017-5-16 13:49 来自手机 | 显示全部楼层
同样,我想请教一下那csq与cs2口是什么
回复

使用道具 举报

ID:85129 发表于 2017-8-10 14:15 | 显示全部楼层
梁光阳 发表于 2017-5-16 13:49
同样,我想请教一下那csq与cs2口是什么

CS1与CS2是左半边屏和右半边屏选择使能。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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