Proteus仿真LCD602怎么不行啊

2019-07-18 11:27发布

求助,为什么我的proteus仿真LCD1602滚动显示程序也没错误没警告怎么就是不出来啊?
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS=P2^6;
sbit RW=P2^5;
sbit EP=P2^7;
uchar code dis1[]={"     hello       "};
uchar code dis2[]={ "  2014.08.01 " };
uchar code dis3[]={"qi xi kuai le ha "};
uchar code dis4[]={"WU LI KAN LUAN  "};
uchar code dis5[]={"NI HAO BNAG AO"};
void delay(uint k )
{
        uint m,n;
        for(m=0;m<k;m++)
        {
                for(n=0;n<120;n++);
        }
}
void delay1(uchar b)
{
        for(b=0;b<4;b++)
        {
                _nop_();               
        }
}         
uchar Busy_check(void)
{
        uchar LCD_Status;
        RS=0;
        RW=1;
        EP=1;       
        delay1(4);
        LCD_Status=P0&0x80;
        EP=0;
        return LCD_Status;
               
}
void lcd_wcmd(uchar cmd)
{
        while(Busy_check());
        RS=0;                 //选择指令寄存器
        RW=0;                  //写指令操作
        EP=0;
        _nop_();
        _nop_();
        P0=cmd;
        delay1(4);
        EP=1;
        delay1(4);
        EP=0;
}
void lcd_pos(uchar pos)
{
        lcd_wcmd(pos|0x80);
}
void lcd_wdat(uchar dat)
{
        while(Busy_check());
        RS=1;                          //选择数据寄存器
        RW=0;                           //写数据操作
        EP=0;
        P0=dat;                                //数据送到P0口
        delay1(4);
        EP=1;                                //给一个高电平
        delay1(4);
        EP=0;
}
void LCD_disp(void)                                                        //向上滚动
{
         uchar i;
         lcd_pos(1);                                                //设置第一行的第二个字符
         i=0;
         while (dis1!='')
         {
                   lcd_wdat(dis1);                         //在第一行显示字符串”hello“ 1
                  i++;
         }
         delay(1200);
         lcd_pos(0x41);
         i=0;
         while(dis2!='')
         {
                 lcd_wdat(dis2);                                //在第二行显示字符串“        2
                i++        ;
         }
         delay(200);
         lcd_wcmd(0x01);                                          //清除显示
         delay(1);
         lcd_pos(1);                                                    //第二屏开始
         i=0;
         while(dis2!='')
         {
                 lcd_wdat(dis2);                                  //第二屏第一行显示字符串2
                i++;

         }
         delay(1200);
         lcd_pos(0x41) ;
         i=0 ;
         while(dis3!='')
         {
                 lcd_wdat(dis3);                                 //        第二屏第一行显示字符串3
                i++;
         }
         delay(200);
         lcd_wcmd(0x01);         //清除显示
         delay(1);
         lcd_pos(1);
         i=0;
         while(dis3!='' )
         {
                 lcd_wdat(dis3);                         // 第3屏第一行显示字符串3
                i++;
         }
         delay(1200);  
         lcd_pos(0x41);
         i=0;
         while(dis4!='' )
         {
                 lcd_wdat(dis4);                         // 第3屏第一行显示字符串4
                i++;
         }
         delay(200);
         lcd_wcmd(0x01);
         delay(1);
         lcd_pos(1);
         i=0;
         while(dis4!='')
         {
                 lcd_wdat(dis4);                                    // 第4屏第一行显示字符串4
                i++;
         }
         delay(1200);
         lcd_pos(0x41);
         i=0;
         while(dis5!='')                                 // 第4屏第一行显示字符串5
         {
                 lcd_wdat(dis5);
                i++;
         }
         delay(200);
         lcd_wcmd(0x01);
         lcd_pos(1);
         i++;
         while(dis5!='')
         {
                 lcd_wdat(dis5);                                            // 第5屏第一行显示字符串5
                i++;
         }
         delay(1200);
         lcd_pos(0x41);
         i=0;
         while(dis1!='')
         {
                 lcd_wdat(dis1);                                // 第5屏第一行显示字符串1
                i++;
         }
         delay(200);
         lcd_wcmd(0x01);
         delay(1);

}
void lcd_init()
{            
        lcd_wcmd(0x38);
        delay(1);
        lcd_wcmd(0x3c);
        delay(1);
        lcd_wcmd(0x06);
        delay(1);
        lcd_wcmd(0x01);
        delay(1);
}
void main(void)
{
        lcd_init();
        delay(10);
        while(1)
        {
                LCD_disp();
        }
}


proteus仿真图 proteus仿真图
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。