导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[liutie]C51编程:请大侠指教液晶显示的问题:



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 ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:31毫秒 最大:5186毫秒 查询6次