• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

51单片机驱动12864(st7567驱动)

lxb 2015-11-03 浏览量:4372

我用51驱动12864(内部驱动芯片是st7567)总是不显示是为什么?

void transfer_command(int data1)   
{
char i;
cs1=0;
rs=0;
for(i=0;i<8;i++)
{
sclk=0;
if(data1&0x80) sid=1;
else sid=0;
sclk=1;
data1=data1<<=1;
}
cs1=1;
}

//Write data to LCM(LCD MODULE)
void transfer_data(int data1)
{
char i;
cs1=0;
rs=1;
for(i=0;i<8;i++)
{
sclk=0;
if(data1&0x80) sid=1;
else sid=0;
sclk=1;
data1=data1<<=1;
}
cs1=1;
}

//Delay
void delay(int i)               
{
 int j,k;
 for(j=0;j  for(k=0;k<110;k++);
}


//wait a key, there is a key between P2.0 and GND in my mainboard
void waitkey()
{
repeat:
if(key==1)goto repeat;
else delay(500);
}

//LCD模块初始化
void initial_lcd()
{
cs1=0;
reset=0;         //低电平复位
delay(100);
reset=1;    //复位完毕
delay(50);        
transfer_command(0xe2); //软复位
delay(5);
transfer_command(0x2c);  //升压步聚1
delay(5);
transfer_command(0x2e);  //升压步聚2
delay(5);
transfer_command(0x2f);  //升压步聚3
delay(5);
transfer_command(0x22);  //粗调对比度,可设置范围0x20~0x27
transfer_command(0x81);  //微调对比度
transfer_command(0x15);  //0x1a,微调对比度的值,可设置范围0x00~0x3f
transfer_command(0xa2);  //1/7偏压比(bias)
transfer_command(0xc8);  //行扫描顺序:从上到下
transfer_command(0xa0);  //列扫描顺序:从左到右
transfer_command(0x40);  //起始行:第一行开始
transfer_command(0xaf);  //开显示

}

//set the page address and column address of LCD
void lcd_address(char page,char column)
{
cs1=0;
column=column-1;   //Because column address is from 0 to 127,so column=column-1
page=page-1;
transfer_command(0xb0+page);   //set page address,LCD panel is divided to 8 pages,1 page is include 8 lines. 
transfer_command(((column>>4)&0x0f)+0x10); //set the upper 4 bits of column address
transfer_command(column&0x0f); //set the lower 4 bits of column address
}


//clear lcd screen
void clear_screen()
{
unsigned char i,j;
  for(i=0;i<9;i++)
{
lcd_address(1+i,1);
for(j=0;j<132;j++)
{
transfer_data(0x00); //send "0x00" to lcm,clear all dots
}
}
}


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 软件上查找方向,写命令 写数据函数的是否可行,时钟是否满足要求,是否需要一定的延时,再就是检查 命令数据等,等等 要结合芯片手册,很基本的调试能力,多动手,多尝试

    • 发布于 2015-11-03
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:2
  • 帮顶一下,没玩过12864 ,只玩过1602,静等大神吧
    • 发布于2015-11-07
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

51单片机驱动12864(st7567驱动)