標(biāo)題: 12864基本顯示 [打印本頁]

作者: 506282027    時(shí)間: 2017-8-6 12:47
標(biāo)題: 12864基本顯示
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int

sbit LCD_RS=P3^5;//數(shù)據(jù)命令選擇
sbit LCD_RW=P3^6;//讀寫選擇
sbit LCD_EN=P3^4;//使能端
sbit LCD_PSB=P3^7;//串并行選擇
sbit wela=P2^6;
sbit dula=P2^7;

uchar  code dis0[]={"謝謝大家看帖子"};
uchar  code dis1[]={"歡迎大家"};
uchar  code dis2[]={"早登高峰"};
uchar  code dis3[]={"感謝教程網(wǎng)"};
uchar i;

/*延時(shí)1ms*/
void delay(uint time)
{
        uint x,y;
        for(x=time;x>0;x--)
                for(y=114;y>0;y--);
}


/*寫指令到LCD函數(shù)*/
void write_cmd(uchar cmd)
{
        LCD_RS=0;
        LCD_RW=0;
        LCD_EN=0;
        P0=cmd;
        delay(5);
        LCD_EN=1;
        delay(5);
        LCD_EN=0;
}

/*寫數(shù)據(jù)到LCD函數(shù)*/
void write_dat(uchar dat)
{
        LCD_RS=1;
        LCD_RW=0;
        LCD_EN=0;
        P0=dat;
        delay(5);
        LCD_EN=1;
        delay(5);
        LCD_EN=0;
}       

/*設(shè)定顯示位置*/

void lcd_pos(uchar x,uchar y)
{
        uchar pos;
        if(x==0)
                {x=0x80;}
                else         if(x==1)
                        {x=0x90;}
                        else if(x==2)
                                {x=0x88;}
                                else if(x==3)
                                        {x=0x98;}
                                pos=x+y;
                                        write_cmd(pos);
}


/*LCD初始化*/
void lcd_init()
{
       
        LCD_PSB=1;                        //選擇為并行串口
        wela=0;
        dula=0;
        delay(10);
        write_cmd(0x30);
        delay(5);
        write_cmd(0x0C);
        delay(5);
}


main()
{

                        lcd_init();//LCD初始化
                        lcd_pos(0,0);//顯示在第一行第一格
                        i=0;
                        while(dis0[i]!='\0')
                        {
                        write_dat(dis0[i]);
                        i++;
                        }
                                lcd_pos(1,0);
                                i=0;
                                while(dis1[i]!='\0')
                                {
                                write_dat(dis1[i]);
                                i++;
                                }
                                        lcd_pos(2,0);
                                        i=0;
                                        while(dis2[i]!='\0')
                                        {
                                        write_dat(dis2[i]);
                                        i++;
                                        }
                                                        lcd_pos(3,0);
                                                        i=0;
                                                        while(dis3[i]!='\0')
                                                        {
                                                        write_dat(dis3[i]);
                                                        i++;
                                                        }

}







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1