首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

关于ST7567 12864串口液晶屏不现实有关问题

2012-10-20 
关于ST7567 12864串口液晶屏不现实问题小弟用PIC 18F4620控制 ST7567 12864串口液晶,一直都不显示。。考虑了

关于ST7567 12864串口液晶屏不现实问题
小弟用PIC 18F4620控制 ST7567 12864串口液晶,一直都不显示。。考虑了很多原因,但还是不行,硬件方面也找过,也一切ok,测屏的端口,时钟,片选。RS端都正常,可还是不显示。。8MHZ晶振。各位大哥看到了帮小弟分析分析。

[解决办法]
给你思路,先抛开 PIC的影响,直接连到PC上,用串口调试工具发数据试试。
[解决办法]

C/C++ code
//串行模式发送数据void data_send(unsigned char dat) {     unsigned char s,temp;     int i;     sclk=0;    waittime();     s=dat;     for(i=8;i>0;i--){        sclk=0;         waittime();         waittime();         temp=s & 0x80;         if(temp){            di=1;        }else{            di=0;        }         sclk=1;        waittime();         s=s<<1;     }} /*************************************************///写命令,串行模式/*************************************************/void w_coms(unsigned char x) {     a0=0;     cs1=0;     data_send(x);} /*************************************************///写数据,串行模式/*************************************************/void wdatas(unsigned char dat) {     a0=1;     cs1=0;     data_send(dat); } /*************************************************/ //写命令,通过P3.0 和P3.1 选择用何种驱动程序/*************************************************/ void w_com(unsigned char x){     c86=0;        //串口模式下无效     ps=0;        //串口方式     w_coms(x); } /*************************************************///写数据/*************************************************/void wdata(unsigned char dat) {    c86=0;     ps=0;     wdatas(dat);} void display_map(void){     unsigned int i=0;    unsigned char page=0;    unsigned char colh=0;    unsigned char coll=0;    page=0xB0;     for(i=0;i<1024;i++) // 写页地址共8 页0xb0----0xb8     {        w_com(page);        w_com(0x10|colh); // 列地址,高低字节两次写入,从第0 列开始        w_com(coll);         wdata(niu[i]);         coll++;        if(coll>15){            coll=0;            colh++;            if(colh>=8){                colh=0;                page++;            }        }    }}void waittime(void){    nop();}//清屏操作void LCD_CLS(void){    unsigned char seg;     unsigned char page;     for(page=0xb0;page<0xb9;page++) // 写页地址共8 页0xb0----0xb8     {         w_com(page);         w_com(0x10); // 列地址,高低字节两次写入,从第0 列开始        w_com(0x00);         for(seg=0;seg<128;seg++)//写128 列         {            wdata(0x00);        }    } }//设置屏幕void LCD_Set(unsigned char page,unsigned char col,unsigned char newData){    unsigned char ColH=0x10;    unsigned char tempH=0;    unsigned char ColL=0x00;    unsigned char tempL=0;    unsigned char temppage;     unsigned char i;     tempH=col;    for(i=0;i<4;i++)        tempH=tempH>>1;    tempL=col;    for(i=0;i<4;i++)        tempL=tempL<<1;    for(i=0;i<4;i++)        tempL=tempL>>1;    ColH=ColH|tempH;    ColL=ColL|tempL;    temppage=0xB0;    temppage=temppage|page;        w_com(temppage);     w_com(ColH); // 列地址,高低字节两次写入,从第0 列开始    w_com(ColL);     wdata(newData);}/*************************************************/ /*主程序/*************************************************/ void LCD_Initialize(void) {     rst=0;    waittime();    waittime();     rst=1;     w_com(0xAF); //ON DISPLAY     w_com(0x40); //STAR DISPLAY     w_com(0xA0); //ADC NORMAL     w_com(0xA6); //     w_com(0xA4); //CLEAR     w_com(0xA2); //1/9BIAS     w_com(0xC8); //COMMON OUTPUT DIRECTION     w_com(0x2F); //POWER CONTROL     w_com(0x24); //RESISTER RATIO     w_com(0x81); //VOLUM MODE SET     w_com(0x24); //RESISTER RATIO        display_map(); // 显示一副SCH 图案 }
[解决办法]
你没初始化

热点排行