STC 12864LCD驱动

/*---2010 PAST LCD测试小板通过显示---12:3------*/
/*----S1按下显示-蔡沁钰小朋友--------*/
/*----S2按下显示-百草园小学校--------*/
        #include <reg51.h>
        #include <intrins.h>
         /*定义管脚*/
        sbit RS = P1^7;
        sbit RW = P1^6;
        sbit E = P1^5;
        sbit RES = P0^6;
        sbit PSB = P0^7;
        sbit RED = P3^4;
        sbit GREEN= P3^5;
        sbit S1= P3^2;
        sbit S2= P3^3;
        #define Lcd_Bus P2        //MCU P2<------> LCM
/*------------------检查忙位-----------------------------*/
        void chk_busy()
            {
             RS=0;
             RW=1;
             E=1;
             Lcd_Bus=0xff;
             while((Lcd_Bus&0x80)==0x80);
             E=0;
            }
/*------------------延时子程序-----------------------------*/
         void delay(unsigned int t)
          {
             unsigned int i,j;
             for(i=0;i<t;i++)
             for(j=0;j<10;j++);
            }
/*------------------写命令到LCD------------------------------*/
          void write_com(unsigned char cmdcode)
           {
             chk_busy();
             RS=0;
             RW=0;
             E=1;
             Lcd_Bus=cmdcode;
             delay(5);在数据写入的时候加入适当的延时
             E=0;
             delay(5);
             }
/*-------------------写数据到LCD----------------------------*/
          void write_data(unsigned char Dispdata)
          {
            chk_busy();
            RS=1;
            RW=0;
            E=1;
            Lcd_Bus=Dispdata;
            delay(5);///在数据写入的时候加入适当的延时
            E=0;
            delay(5);
           }
/*------------------初始化LCD屏--------------------------*/
           void lcdreset()
            {
             PSB=0;
             delay(300);
             PSB=1;       
             RW=0;
             delay(2000);
             write_com(0x30);
             delay(10);             //选择基本指令集
             write_com(0x30);       //选择8bit数据流
             delay(5);
             write_com(0x0c);       //开显示(无游标、不反白)
             delay(10);
             write_com(0x01);       //清除显示,并且设定地址指针为00H
             delay(500);
             write_com(0x06);       //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
             delay(0);
            }
/*------------------显示1-蔡沁钰小朋友---*/
           void display1()
            {
                delay(2000);
                write_com(0x80);
                write_data(0xB2);
                write_data(0xCC);/*---------*/
                write_com(0x81);
                write_data(0xC7);
                write_data(0xDF);/*---------*/
                write_com(0x82);
                write_data(0xEE);
                write_data(0xDA);/*---------*/
                write_com(0x83);
                write_data(0xD0);
                write_data(0xA1);/*---------*/
                write_com(0x84);
                write_data(0xC5);
                write_data(0xF3);/*---------*/
                write_com(0x85);
                write_data(0xD3);
                write_data(0xD1);/*---------*/
                delay(30);
            }
/*------------------显示2--百草园小学校-----------*/
           void display2()
            {
                delay(2000);
                write_com(0x80);
                write_data(0xB0);
                write_data(0xD9);/*---------*/
                write_com(0x81);
                write_data(0xB2);
                write_data(0xDD);/*---------*/
                write_com(0x82);
                write_data(0xD4);
                write_data(0xB0);/*---------*/
                write_com(0x83);
                write_data(0xD0);
                write_data(0xA1);/*---------*/
                write_com(0x84);
                write_data(0xD1);
                write_data(0xA7);/*---------*/
                write_com(0x85);
                write_data(0xD0);
                write_data(0xA3);/*---------*/
            }
/*------------------主循环程序--------------------------*/     
           void   main()
          {
            lcdreset();
            while(1)
              {
                RED=0;
                GREEN=1;
                                    //初始化LCD屏
                if(!S1)
                {
                 display1();
                 }
                delay(6000);
                if(!S2)
                {
                 display2();
                 }
                RED=1;
                GREEN=0;
                delay(6000);
               }
            }


 

  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值