⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12864-----c8051f单片机论坛 - xhlbbs.txt

📁 c8051+12864液晶程序 刚开始单片机 网上找的
💻 TXT
字号:
C8051F单片机论坛 - XHLBBS- C8051F单片机论坛 ( http://www.xhl.com.cn/Default.asp )
      -- CPU/Crossbar/GPIO/JTAG/Package ( 
      http://www.xhl.com.cn/ShowForum.asp?forumid=8 )
      --- [求助]我用F040怎么也无法在带字库的12864液晶上正常显示! ( 
      http://www.xhl.com.cn/bbs/ShowPost.asp?id=3972 ) 




      作者:ts2341
      发表时间:2007-3-17 15:11:23


      我用C8051F047驱动带字库的12864液晶模块(RT12864M),用F047怎么也无法正常显示,但是用常规的5V的51单片机,显示非常正常,我这里主要有这样几个问题想请教
      1.   用上拉电阻接5V,要用多大的电阻;
      2.   检测忙状态需要做些什么设置?
      附上部分程序,请大家帮我看看哪里有问题,非地址复用方式,液晶D0-D7接到P2口,P1.5_RS(指令数据选择),P1.6_R/W(读写),P1.7_E(使能),P3.0_PSB(并/串行选择),P3.2_/RST(复位),P2口通过上拉电阻3K接5V。
      sbit rs=P1^5;//寄存器选择
      sbit rw=P1^6;//读写控制
      sbit e=P1^7;//使能控制
      sbit psb=P3^0;//串/并传输控制
      sbit ret=P3^2;//液晶复位控制
      sbit busy=P2^7;//液晶模块忙标志
      void Config (void) {
      //看门狗禁止
          WDTCN = 0x07; 
          WDTCN = 0xDE;   
          WDTCN = 0xAD;
          SFRPAGE = 0x0F;
          XBR0 = 0x00; 
          XBR1 = 0x00; 
          XBR2 = 0x40; //交叉开关使能,使得P0-P3口能输出
          XBR3 = 0x00;     
          SFRPAGE = 0x0F;
          P0MDOUT = 0x00; //端口配置
          P1MDOUT = 0xE0; 
          P2MDOUT = 0x00; 
          P3MDOUT = 0x05;
          P1MDIN = 0xFF;
          P2MDIN = 0xFF;
          P3MDIN = 0xFF;   P0 = 0x00;
       P1 = 0x00;
       P2 = 0x00;
       P3 = 0x00;
          SFRPAGE = 0x0F;
          CLKSEL = 0x00;  
          OSCXCN = 0x00; 
          OSCICN = 0x84; 
          //采用内部晶振,为24.5MHZ8分频
      }   //***********检查是否LCD忙碌的子程序********************** 
      void check_busy(void) 
      { 
        P2=0xFF; 
        rs=0; 
        rw=1; 
        e =1;
        while (busy==1);
        e =0; 
      } 
      void sendc(uchar c){//送命令
       check_busy(); 
       rs=0;
       rw=0;
       P2=c;
       e=1;
       delay1ms(1);
          e=0;
      }
      //**********数据写命令*************************** 
      void send_com(unsigned char command ) 
      { 
        check_busy(); 
        rs=1; 
        rw=0; 
        P2=command; 
        e =1; 
       delay1ms(1);
        e =0; 
      } 
      void dispini(){ //lcd显示初始化
       ret=0;
       delay1ms(40);
       ret=1;
       delay1ms(1);
       psb=1;
       delay1ms(1);
       sendc(0x34);//扩充指令操作
       //delay1ms(10);
       sendc(0x30);//基本指令操作
       //delay1ms(10);
       sendc(0x01);//清除显示
       //delay1ms(10);
       sendc(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM 的地址计数器(AC)加1
       //delay1ms(10);
       sendc(0x0c);//开显示,关光标,不闪烁
      }
      运行的现象是一直是忙状态,busy=1(5V)。
      程序仿真后,就一直定在   while (busy==1); 这句语句上了。
      请问这个怎么解决。
      这个程序在51上运行正常。



      作者:711022027
      发表时间:2007-3-17 15:48:01


      好象除了数据线要接上拉电阻,控制线也要接上拉电阻!  3K可以的.我用的是3.7K.



      作者:ts2341
      发表时间:2007-3-17 16:18:21

      试了,没用



      作者:zzyat
      发表时间:2007-3-17 18:20:40

      将上拉电阻改为串联电阻即可,别忘了谢谢我.



      作者:chenjianquan
      发表时间:2007-3-17 19:32:45


       我的更惨,把芯片接上去之后,开漏,没有上拉电阻时,数据口测电压都为零,是不是非得要上拉电阻呢?
      但是我上拉10K电阻也不能正常显示,高电平就不到三伏,到底怎么样才能解决这个问题?



      作者:chenjianquan
      发表时间:2007-3-17 19:39:42


      还有一点,我调节灰度的时候有四分之一的地方没有变黑,是不是片子坏了。
      是不是非得要用电平转换芯片才能让液晶显示,特别是液晶没有上电时,数据口的电压就降到了1.4伏去了,上电之后,就是零伏,或者2点几伏的样子



      作者:ts2341
      发表时间:2007-3-18 16:44:47


      还是不行啊。。那位大侠能否指教一下。



      作者:wfzdy
      发表时间:2007-3-18 20:21:23


      接了上拉电阻还不能正常显示,一般问题是出在c8051速度过快,液晶速度慢造成的。
      在rs=0; 
      delay(xx);
        rw=1; 
      delay(xx);
        e =1;
      根据时序增加延时。试试看吧!




      作者:711022027
      发表时间:2007-3-21 19:11:08


      同意 wfzdy 的意见,频率快上拉电阻取小点,频率慢上拉电阻取大点.上拉电阻小点功耗大,也不能太小要看IO口参数,3~5K是可以的,10K太大了!

       



      作者:ts2341
      发表时间:2007-3-22 11:03:41


      谢谢了。
      根据时序增加延时后,可以了!!
      原来速度快也不一定好啊!!



            Copyright xhl.com.cn
            C8051F单片机论坛 XHLBBS © 2005-2008
            Script Execution Time:46ms 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -