新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > LCD1602液晶顯示屏顯示時鐘且能修改時間

        LCD1602液晶顯示屏顯示時鐘且能修改時間

        作者: 時間:2016-12-01 來源:網絡 收藏

        void display(uchar hour,uchar minutes,uchar seconds)//接收并發送數據到液晶屏幕
        {
        uchar hourge,hourshi,minutesshi,minutesge,secondsshi,secondsge;
        hourshi=hour/10;
        hourge=hour%10;
        write_command(0x80+0x40);
        write_date(hourshi+48);
        delay(1);
        write_date(hourge+48);
        delay(1);

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

        minutesshi=minutes/10;
        minutesge=minutes%10;
        write_command(0x80+0x43);
        write_date(minutesshi+48);
        delay(1);
        write_date(minutesge+48);
        delay(1);

        secondsshi=seconds/10;
        secondsge=seconds%10;
        write_command(0x80+0x46);
        write_date(secondsshi+48);
        delay(1);
        write_date(secondsge+48);
        delay(1);
        }
        void revise()
        {
        if(K1==0)
        {
        delay(5);
        if(K1==0)
        {
        cnt++;//計數第幾次按下
        TR0=0;
        }
        while(!K1);
        delay(5);
        while(!K1);
        }
        if(cnt==1)//第一次按下,調整秒鐘,調整時秒鐘有光標閃爍
        {
        write_command(0x80+0x46);
        write_command(0x0f);
        if(K2==0)
        {
        delay(5);
        if(K2==0)
        {
        seconds++;
        if(seconds==60)
        {
        seconds=0;
        }
        }
        while(!K2);
        delay(5);
        while(!K2);
        }
        if(K3==0)
        {
        delay(5);
        if(K3==0)
        {
        seconds--;
        if(seconds==-1)//here is a bug
        {
        seconds=59;
        }
        }
        while(!K3);
        delay(5);
        while(!K3);
        }
        }

        if(cnt==2)//第二次按下,調整分鐘,調整時秒鐘有光標閃爍
        {
        write_command(0x80+0x43);
        write_command(0x0f);
        if(K2==0)
        {
        delay(5);
        if(K2==0)
        {
        minutes++;
        if(minutes==60)
        {
        minutes=0;
        }
        }
        while(!K2);
        delay(5);
        while(!K2);
        }
        if(K3==0)
        {
        delay(5);
        if(K3==0)
        {
        minutes--;
        if(minutes==-1)//here is a bug
        {
        minutes=59;
        }
        }
        while(!K3);
        delay(5);
        while(!K3);
        }
        }
        if(cnt==3)//第三次按下,調整時鐘,調整時秒鐘有光標閃爍
        {
        write_command(0x80+0x40);
        write_command(0x0f);
        if(K2==0)
        {
        delay(5);
        if(K2==0)
        {
        hour++;
        if(hour==24)
        {
        hour=0;
        }
        }
        while(!K2);
        delay(5);
        while(!K2);
        }
        if(K3==0)
        {
        delay(5);
        if(K3==0)
        {
        hour--;
        if(hour==-1)//here is a bug
        {
        hour=23;
        }
        }
        while(!K3);
        delay(5);
        while(!K3);
        }
        }
        if(cnt==4)
        {
        TR0=1;
        cnt=0;
        }
        }
        void main()
        {
        LCDinit();
        Time0init();
        Clockinit();
        while(1)
        {
        revise();
        display(hour,minutes,seconds);
        }
        }
        void Time0() interrupt 1
        {
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        count++;
        if(count==20)
        {
        count=0;
        seconds++;
        if(seconds==60)
        {
        seconds=0;
        minutes++;
        if(minutes==60)
        {
        minutes=0;
        hour++;
        if(hour==24)
        {
        hour=0;
        }
        }
        }
        }
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 霍林郭勒市| 湖州市| 贵南县| 都昌县| 民县| 林甸县| 乃东县| 黄骅市| 仁化县| 花莲县| 和顺县| 信丰县| 铜陵市| 内黄县| 章丘市| 蒙阴县| 西昌市| 绥宁县| 英超| 九寨沟县| 甘洛县| 金溪县| 寿光市| 镇江市| 英超| 韶山市| 屏边| 惠来县| 靖宇县| 阿坝县| 孟村| 沁阳市| 拉萨市| 三门县| 忻城县| 安西县| 中阳县| 鸡东县| 哈尔滨市| 勃利县| 尚志市|