新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51驅動1602液晶+按鍵 protues仿真

        51驅動1602液晶+按鍵 protues仿真

        作者: 時間:2016-11-25 來源:網絡 收藏
        51驅動1602液晶+按鍵 protues仿真



        程序:

        本文引用地址:http://www.104case.com/article/201611/321330.htm

        #include
        #define uchar unsigned char
        #define uint unsigned int
        unsigned char Trg;
        unsigned char Cont;
        sbit lcdrs=P0^4;
        sbit lcden=P0^6;

        uchar code table1[]="20121029SAT12:00";
        uchar code table2[]="0123456789";
        void delay(uint z)
        {
        uint x,y;
        for(x=0;x for(y=0;y<110;y++)
        ;
        }
        void KeyRead( void )
        {
        unsigned char ReadData = P1^0xff; // 1
        Trg = ReadData & (ReadData ^ Cont); // 2
        Cont = ReadData; // 3
        }


        void write_com(uchar com)
        {
        lcdrs=0;
        P2=com;
        delay(2);
        lcden=1;
        lcden=0;
        }
        void write_data(uchar dat)
        {
        lcdrs=1;
        P2=dat;
        delay(2);
        lcden=1;
        lcden=0;
        }
        void lcd1602_inti()
        {
        write_com(0x38);
        delay(5);
        write_com(0x0c);
        delay(5);
        write_com(0x06);
        delay(5);
        write_com(0x01);//清屏
        delay(5);
        }
        void main()
        {
        uchar i,x,y,z,w,p=0,m,a,s,d;
        lcd1602_inti();
        write_com(0x01);
        while(1)
        { KeyRead();
        write_com(0x80+0x00);
        for(i=0;i<4;i++)
        {
        write_data(table1[i]);
        delay(5);
        }
        write_com(0x80+0x40);
        write_data(table2[x]);
        delay(10);
        write_data(table2[y]);
        delay(10);
        write_com(0x80+0x43);
        write_data(table2[z]);
        delay(10);
        write_data(table2[w]);
        delay(10);
        write_com(0x80+0x46);
        write_data(table2[d]);
        delay(10);
        write_com(0x80+0x48);
        write_data(table2[m]);
        delay(10);
        if(Trg==0x01)
        {
        switch(p%4)
        { case 1: { a++;
        if(a==21)
        a=0;
        } break;
        case 2:{s++;
        if(s==39)
        s=0;
        } break;
        case 3: {d++;
        if(d==9)
        d=0;
        } break;
        }
        x=a/10;y=a;
        z=s/10;w=s;
        }

        if(Trg==0x02)
        {
        switch(p%4)
        { case 1: { a--;
        if(a==0)
        a=20;
        } break;
        case 2:{s--;
        if(s==0)
        s=38;
        } break;
        case 3: {d--;
        if(d==0)
        d=8;
        } break;
        }
        x=a/10;y=a;
        z=s/10;w=s;
        }

        if(Trg==0x04)
        {p++;
        if(p==9)
        {p=0;}
        if(p%4==0)
        {m=1;}else m=0;
        }

        delay(50);
        if((Trg==0x00)&&(Cont==0x01))
        { switch(p%4)
        { case 1: {a++;delay(60);
        if(a==21)
        a=0;
        } break;
        case 2: {s++;delay(60);
        if(s==39)
        s=0;
        } break;
        case 3: {d++; delay(60);
        if(d==9)
        d=0;
        }break;
        }
        x=a/10;y=a;
        z=s/10;w=s;
        }

        if((Trg==0x00)&&(Cont==0x02))
        {
        { switch(p%4)
        { case 1: {a--;delay(60);
        if(a==0)
        a=20;
        } break;
        case 2: {s--;delay(60);
        if(s==0)
        s=38;
        } break;
        case 3: {d--; delay(60);
        if(d==0)
        d=8;
        }break;
        }
        x=a/10;y=a;
        z=s/10;w=s;
        }
        }
        }
        }
        按鍵部分功能:

        P1.2:功能鍵

        p1.1:減

        p1.0:加

        p1.2按一下,開始設置液晶左下方00,然后可按鍵加減(00-20);

        p1.2再按一下,開始設置液晶第二個00,然后可按鍵加減(00-38);

        p1.2再按一下,開始設置液晶第三個參數0,然后可按鍵加減(0-8);

        p1.2再按一下,最后一位編程1,表示設置完成;

        可長時間按加減鍵,連續加減;

        以上操作可重復。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 郴州市| 乃东县| 广平县| 道真| 贵州省| 满洲里市| 绥江县| 安康市| 东乡县| 安阳市| 马山县| 随州市| 鹤峰县| 浦城县| 克山县| 托里县| 江川县| 郴州市| 东阳市| 刚察县| 连平县| 嘉荫县| 盐源县| 襄汾县| 北海市| 航空| 合阳县| 武乡县| 冷水江市| 襄垣县| 东海县| 郁南县| 米林县| 视频| 射阳县| 赣榆县| 金门县| 长泰县| 芜湖县| 晋城| 安新县|