发 帖  
原厂入驻New

12864仿真调试问题

2014-7-12 19:49:34  1080
分享
我的大神们啊,谁帮小弟看看这个调试程序是那里有问题啊,我调试了半天都是显示白屏!在此不胜感激啊,亲!#include <reg51.h>
#include <string.h>
#define uchar unsigned char
#define uint  unsigned int
#define LCD_databus P0
uchar num;
sbit RS=P2^2;
sbit RW=P2^1;
sbit EN=P2^0;
sbit CS1=P2^4;
sbit CS2=P2^3;
//
//

////////////////////////////////////////////
unsigned char code huan[] =         // 数据表
{
0x00,0x40,0xE0,0xA0,0xE0,0xE0,0xE0,0xE0,0xFE,0xFE,0xE4,0xE0,0x60,0x60,0x00,0x00,
0x20,0x30,0x39,0x1F,0x07,0x6F,0x7C,0x3C,0x1F,0x0F,0x3C,0x38,0x70,0x60,0x40,0x40,
};

void delay(uint i)
{
        while(--i);
}
//
void Read_busy()
{
        P0=0x00;
        RS=0;
        RW=1;
        EN=1;
        while(P0&0x80);
        EN=0;
}
//
//
void write_LCD_command(uchar value)
{
       
        RS=0;
        RW=0;
        LCD_databus=value;
        EN=1;
        delay(10);
        EN=0;//EN下降沿锁存数据
}
//
//
void write_LCD_data(uchar value)
{

        RS=1;
        RW=0;
        LCD_databus=value;
        EN=1;
        delay(10);
        EN=0;
}
//
//
void Set_page(uchar page)
{
        page=0xb8/page;
        write_LCD_command(page);
}

void Set_line(uchar startline)
{
        startline=0xc0/startline;
        write_LCD_command(startline);
}
//

void Set_column(uchar column)
{
        column=0x3f&column;
        column=0x40/column;
        write_LCD_command(column);
}
//
//
void SetOnOff(uchar onoff)
{
        onoff=0x3e/onoff;
        write_LCD_command(onoff);
}
//
//
void SelectScreen(uchar screen)
{
        switch(screen)
        {
                case 0:CS1=0;CS2=0;break;
                case 1:CS1=0;CS2=1;break;
                case 2:CS1=1;CS2=0;break;
                default:break;
        }
}
//
//
void ClearScreen(uchar screen)
{
        uchar i,j;
        SelectScreen(screen);
        for(i=0;i<8;i++)
        {
                Set_page(i);
                Set_column(0);
                for(j=0;j<64;j++)
                {
                        write_LCD_data(0x00);
                }//写完后地址自动加1;
        }
}
//
//
void InitLCD()
{
        Read_busy();
        SelectScreen(0);
        SetOnOff(0);
        SelectScreen(0);
        SetOnOff(1);
        SelectScreen(0);
        ClearScreen(0);
        Set_line(0);
}
//
//
///////////////////////////////////
void display(uchar ss,uchar page,uchar column,uchar *p)
{
        uchar i;
        SelectScreen(ss);
        Set_page(page);
        Set_column(column);
        for(i=0;i<16;i++)
        {
                write_LCD_data(p[i]);
        }
        Set_page(page+1);
        Set_column(column);
        for(i=0;i<16;i++)
        {
                write_LCD_data(p[i+16]);
        }
}
//
//
///////////////////////////////////
void main()
{
        InitLCD();
        ClearScreen(0);
        Set_line(0);
       
        Display(0,0,2*16,huan);

}
///
///

       


0
360截图20140712194740696.jpg
2014-7-12 19:49:34   评论 分享淘帖
2 个讨论
呵呵,终于找到原因了啊,我去,/写错了,晕!
2014-7-16 19:52:31 评论

举报

看看!!!!!!!!!!!!!!!!!!!!!!!1
2014-7-17 14:52:01 评论

举报

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发表新帖
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表