No.5064 作者:liutie 邮件:sfe.555@netease.com ID:5426 登陆:1次 文章数:32篇 最后登陆IP: 最后登陆:2001/8/15 7:57:00 注册:2001/8/15 7:57:00 财富:131 发帖时间:2002/1/22 0:40:00 发贴者IP:202.106.8.71 标题:liutie:C51编程:请大侠指教液晶显示的问题: 摘要:No.5064C51编程:请大侠指教液晶显示的问题: 请教AVR单片机(90S515)液晶显示问题: 我在ICCAVR开发平台上,编了一段液晶显示程序,用AVR STUDIO仿真时 好象没有什么问题,可在实际电路中,一点也不管用,什么显示也没有。实在发现 不了问题,希望请做过液晶显示的大侠指点 ,不胜感激。(我的液晶显示模块是HY128*64B, 控制芯片是三星的KS0108B,我对照了其它128*64显示模块,接口大都差不多) #include<io8515.h> #define cs1 0x01 //B口PB0 #define cs2 0x02 //B口PB1 #define rst 0x04 //B口PB2 #define rw 0x08 //B口PB3 #define di 0x10 //B口PB4 #define ea 0x20 //B口PB5 #pragma data:eeprom unsigned char a[16]={0xff,0x00,0x00,0xff,0xaa,0xaa,0x55,0x55, 0xaa,0x55,0x55,0xaa,0xff,0xff,0x00,0x00}; unsigned char yu[32]= {0x20,0x20,0x20,0xFE,0x20,0x20,0xFE,0x20,0x20,0x20,0x20,0xFE,0x20,0x20,0x20,0x00 , 0x00,0x00,0x00,0x3F,0x20,0x20,0x27,0x22,0x22,0x22,0x22,0x27,0x30,0x20,0x00,0x00} ;//16*16汉字数组 unsigned char xin[32]= {0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0xFF,0xC9,0x49,0x49,0x49,0xFF,0x00,0x00,0x00 , 0x00,0x08,0x08,0x84,0x44,0x22,0x1D,0x00,0x00,0xFD,0x02,0x02,0x04,0x0C,0x04,0x00} ;//16*16汉字数组 void init8515(void) { DDRC=0xff;PORTC=0xff;//C口输出(液晶显示输入输出口) DDRB=0xff;PORTB=0xff;//B口输出(液晶显示模块控制位) } void delay(int dly) { while(dly--); } void waitidle1(void) //判断芯片1的状态 { PORTB&=~cs1;PORTB|=cs2; //低电平选中(cs1=0,cs2=1) PORTB&=~di;PORTB|=rw;PORTB|=ea; //di=0表示指令,1表示数据;rw=0表示写;1表示 读 for(;(PINC&0x80)==0x80;); //判断是READY OR BUSYING 如BUSYING,则等 待; } void waitidle2(void) //判断芯片1的状态 { PORTB|=cs1;PORTB&=~cs2; //低电平选中(cs1=1,cs2=0) PORTB&=~di;PORTB|=rw;PORTB|=ea; //di=0表示指令,1表示数据;rw=0表示写;1表示 读 for(;(PINC&0x80)==0x80;); //判断是READY OR BUSYING 如BUSYING,则等待 } void initlcm(void) { PORTB&=~rst;delay(2);PORTB|=rst;delay(8); PORTB&=~ea&~di&~rw;PORTB|=cs1|cs2; waitidle1(); //判断芯片1是否准备好?如准备好则继续,否则,等待 PORTB&=~cs1;PORTB|=cs2;PORTB&=~di&~rw;//di=0表示指令,1表示数据;rw=0表示写;1表示 读 PORTC=0x3f;PORTB|=ea;delay(2);PORTB&=~ea;delay(2); //控制指令0x3f表示正常显示 waitidle1();PORTB&=~cs1;PORTB|=cs2;PORTB&=~di&~rw; PORTC=0xc0;PORTB|=ea;delay(2);PORTB&=~ea;delay(2); //控制指令0xc0表示显示起始 位置从屏幕最顶端开始 PORTB|=cs1|cs2;waitidle2(); &nbs ......
>>返回讨论的主题
|