液晶啥也不显示

2019-07-16 03:18发布

#include<reg52.h>
sbit rs=P1^0;
sbit rw=P1^1;
sbit e=P2^5;
#define uchar unsigned char
#define io P0
//#define w_data(x) rs=1;rw=0;e=0;io=x;e=1;e=0          //写数据
//#define w_command(x) rs=0;rw=0;e=0;io=x;e=1;e=0 //写命令字
bit bit_busy;
uchar table1[]="yang ping";           //第一行要显示的字符组
uchar table2[]="is just my lover";  //第二行要显示的字符组
bit busy()                   //提取忙信号位
{
        bit Bit;
        rs=0;
        rw=1;
        e=0;
    e=1;
        if (io&0x80)
        Bit=1;
        else
        Bit=0;
        return Bit;

}
void  w_data(uchar x)
{
        rs=1;rw=0;e=0;io=x;e=1;e=0;
}
void w_command(uchar x)
{
         rs=0;rw=0;e=0;io=x;e=1;e=0;
}
void delayms(unsigned int dly)
{
        unsigned int  x,y;
        for(x=dly;x>0;x--)
                for(y=124;y>0;y--);
}
/*void  delayms(uchar n)
{
        uchar a,j;
        while(n--)
        {
                for(a=0;a<6;a++)
                for(j=0;j<100;j++);
        }
}  */
void init()           //初始化
{
        delayms(15);
        w_command(0x38);
        delayms(5);
        w_command(0x38);
        delayms(5);
        w_command(0x38);       
//        while(bit_busy=busy());
        w_command(0x38);
//        while(bit_busy=busy());
    w_command(0x08);
//        while(bit_busy=busy());
    w_command(0x01);
//        while(bit_busy=busy());
    w_command(0x06);
//        while(bit_busy=busy());
    w_command(0x0C);
}
void main()
{
        uchar i;
        init();         
//        while(bit_busy=busy());
    w_command(0x80);  //写第一行首地址       
        for(i=0;i<16;i++)                 //写入数值
        {
//                while(bit_busy=busy());
        w_data(table1[i]);                
        }
//        while(bit_busy=busy());
    w_command(0x80+0x40);   //写第二行首地址       
        for(i=0;i<16;i++)                           //写入数值
        {
//                while(busy());
        w_data(table2[i]);                
        }
        while(1);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。