新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機設計LCD數字鐘(萬年歷)

        單片機設計LCD數字鐘(萬年歷)

        作者: 時間:2011-08-02 來源:網絡 收藏

        case 0xd0: //按下確認鍵
        {
        k=0;
        TR0=1;
        n=-3;
        m=-3;
        f=0;
        } break;
        case 0xb0: //按下加1鍵
        {
        if(k==1)
        {
        if(f==0)
        {
        if(n==0){year++;if(year==100) year=0;}
        else if(n==3) {month++;if(month==13) month=1;}
        else {day++;if(day==32) day=1;}
        dispd(); //調用第一行顯示函數
        lcd_w_cmd(0x0d); //光標閃爍
        lcd_w_cmd(0x86+n);//返回設置值顯示地址
        }
        else
        {
        if(m==0){hour++;if(hour==24) hour=0;}
        else if(m==3) {min++;if(min==60) min=0;}
        else if(m==6){sec++;if(sec==60) sec=0;}
        else {week++;if(week==7) week=0;}
        dispt(); //調用第二行顯示函數
        lcd_w_cmd(0x0d); //光標閃爍
        lcd_w_cmd(0xc4+m);//返回設置值顯示地址
        }
        }
        } break;
        case 0x70: //按下減1鍵
        {
        if(k==1)
        {
        if(f==0)
        {
        if(n==0){year--;if(year
        /*****定時中斷函數*****/
        void timer0() interrupt 1
        {
        TH0=0x3c;
        TL0=0xb0;
        count++;
        if(count==10)
        {
        count=0;
        sec++;
        if(sec==60)
        {
        sec=0;
        min++;
        if(min==60)
        {
        min=0;
        hour++;
        if(hour==24)
        {
        hour=0;
        week++;
        day++;
        if(week==7) week=0;
        if(day==29month==2year%4!=0) {day=1;month++;}
        else if(day==30month==2year%4==0) {day=1;month++;}
        else if(day==31(month==4||month==6||month==9||month==11)) {day=1;month++;}
        else if(day==32(month==1||month==3||month==5||month==7||month==8||month==10||month==12)) {day=1;month++;}
        if(month==13)
        {
        month=1;
        year++;
        if(year==100) year=0;
        }
        }
        }
        }
        }
        }
        /*按鍵掃描函數*/
        unsigned char keys()
        {
        unsigned char cod,del;
        P3=0xf0;
        cod=P30xf0; //讀入P3口鍵值
        if(cod!=0xf0) //先檢測有無按鍵按下
        {
        delay(100); //去抖
        if(cod!=0xf0)
        {
        cod=P30xf0; //讀入鍵值
        do //等待鍵釋放
        {
        P3=0xf0;
        del=P30xf0;
        }while(del!=0xf0);
        return(cod);//返回鍵值
        }
        }
        return(0xf0); //返回該值
        }
        /*第一行顯示日期函數*/
        void dispd()
        {
        lcd_w_cmd(0x0c); //設置光標不顯示、不閃爍
        delay(20);
        lcd_w_cmd(0x83); //第一行起始顯示地址0x80+0x03
        delay(20);
        lcd_w_dat('2');
        delay(2);
        lcd_w_dat('0');
        delay(2);
        lcd_w_dat(lcdd[year/10]);
        delay(2);
        lcd_w_dat(lcdd[year%10]);
        delay(2);
        lcd_w_dat('-');
        delay(2);

        lcd_w_dat(lcdd[month/10]);
        delay(2);
        lcd_w_dat(lcdd[month%10]);


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 扶风县| 中牟县| 嘉荫县| 涞源县| 尤溪县| 南宁市| 从江县| 元江| 大名县| 页游| 玉树县| 靖远县| 青龙| 错那县| 济南市| 行唐县| 平乐县| 葫芦岛市| 宽甸| 靖江市| 江安县| 保德县| 汶川县| 陵川县| 遂溪县| 崇信县| 乌拉特后旗| 鄂尔多斯市| 津市市| 永胜县| 祁连县| 互助| 高尔夫| 漾濞| 芮城县| 峨边| 温宿县| 尼玛县| 衡南县| 桃源县| 河曲县|