久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1948|回復: 1
打印 上一主題 下一主題
收起左側

萬年歷

[復制鏈接]
跳轉到指定樓層
樓主
ID:125595 發表于 2016-6-13 11:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
**********************************************************/
#include "STC89.h"
#include "LCD.H"
#include "SHT11.H"
#include "DS1302.h"
#include <intrins.h>

#define uint  unsigned int
#define uchar unsigned char

uchar  set=1,K1_dat,K2_dat,VOUT1=12,VOUT2=12,VOUT3=12,VOUT4=12,VOUT5=12,VOUT6=12;          //狀態記時變量

uchar SHI,FEN,MAO,YAN,RE,YER,week,t,s;

sbit OUT1=P1^5;
sbit OUT2=P1^4;
sbit OUT3=P1^3;
sbit OUT4=P1^2;
sbit OUT5=P1^1;
sbit OUT6=P1^0;

sbit K1=P3^7;
sbit K2=P3^6;
sbit K3=P3^5;
sbit K4=P3^4;

void GJ()
{
        P0=0xff;
        cs2 = 1;
        cs1 = 1;
        EN  = 1;
        RW  = 1;
        RS  = 1;
        RGB_G=0;
        RGB_R=1;
        set=0;
        t=0;
        s=0;
}

void ZJM()
{
        InitLCD();
        Display0816(0,0,2,SZ0816);                //日期,星期圖標
        Display0816(0,1,0,SZ0816);
        Display0816(0,4,11,SZ0816);       
        Display0816(0,7,11,SZ0816);
        Display1616(0,5,3,HZ1616);
        Display1616(0,6,4,HZ1616);

        Display0816(6,2,10,SZ0816);            //溫濕度圖標
        Display1616(6,2,6,HZ1616);
        Display0816(6,12,10,SZ0816);
        Display1616(6,7,5,HZ1616);
        Display1632(2,5,10,SZ1632);
        Display1632(2,2,10,SZ1632);
}

void DSJM()                                                        //輸出控制界面
{
        set=1;

        Display1616(0,2,7,HZ1616);                //輸出控制
        Display1616(0,3,8,HZ1616);
        Display1616(0,4,9,HZ1616);
        Display1616(0,5,10,HZ1616);

        Display0816(2,0,12,SZ0816);            //
        Display0816(2,1,13,SZ0816);            //
        Display0816(2,2,14,SZ0816);            //
        Display0816(2,3,1,SZ0816);            //               

        Display0816(2,8,12,SZ0816);            //
        Display0816(2,9,13,SZ0816);            //
        Display0816(2,10,14,SZ0816);            //
        Display0816(2,11,2,SZ0816);            //               

        Display0816(4,0,12,SZ0816);            //
        Display0816(4,1,13,SZ0816);            //
        Display0816(4,2,14,SZ0816);            //
        Display0816(4,3,3,SZ0816);               

        Display0816(4,8,12,SZ0816);            //
        Display0816(4,9,13,SZ0816);            //
        Display0816(4,10,14,SZ0816);            //
        Display0816(4,11,4,SZ0816);            //               

        Display0816(6,0,12,SZ0816);            //
        Display0816(6,1,13,SZ0816);            //
        Display0816(6,2,14,SZ0816);            //
        Display0816(6,3,5,SZ0816);            //       

        Display0816(6,8,12,SZ0816);            //
        Display0816(6,9,13,SZ0816);            //
        Display0816(6,10,14,SZ0816);            //
        Display0816(6,11,6,SZ0816);            //       

        if(K1_dat==1&K2_dat==0)
        {
                F_Display1616(2,2,VOUT1,HZ1616);            //OUT1
        }
        else
        {
                Display1616(2,2,VOUT1,HZ1616);                   
        }
        if(K1_dat==1&K2_dat==1)
        {
                F_Display1616(2,6,VOUT2,HZ1616);            //OUT2
        }
        else
        {
                Display1616(2,6,VOUT2,HZ1616);                   
        }
        if(K1_dat==1&K2_dat==2)
        {
                F_Display1616(4,2,VOUT3,HZ1616);            //OUT3
        }
        else
        {
                Display1616(4,2,VOUT3,HZ1616);                   
        }
        if(K1_dat==1&K2_dat==3)
        {
                F_Display1616(4,6,VOUT4,HZ1616);            //OUT4
        }
        else
        {
                Display1616(4,6,VOUT4,HZ1616);          
        }
        if(K1_dat==1&K2_dat==4)
        {
                F_Display1616(6,2,VOUT5,HZ1616);            //OUT5
        }
        else
        {
                Display1616(6,2,VOUT5,HZ1616);          
        }
        if(K1_dat==1&K2_dat==5)
        {
                F_Display1616(6,6,VOUT6,HZ1616);            //OUT6
        }
        else
        {
                Display1616(6,6,VOUT6,HZ1616);          
        }
}

void desplay_WNL()
{
        v_W1302(0x8f, 0);
        MAO = bcdtodec(uc_R1302(0x81));           //讀出DS1302中的秒
        v_W1302(0x8f, 0);
        FEN = bcdtodec(uc_R1302(0x83));           //讀出DS1302中的分
        v_W1302(0x8f, 0);
        SHI = bcdtodec(uc_R1302(0x85));    //讀出DS1302中的小時
        v_W1302(0x8f, 0);
        week = bcdtodec(uc_R1302(0x8b));   //讀出DS1302中的小時
        v_W1302(0x8f, 0);
        RE = bcdtodec(uc_R1302(0x87));           //讀出DS1302中的日
        v_W1302(0x8f, 0);
        YER = bcdtodec(uc_R1302(0x89));    //讀出DS1302中的月
        v_W1302(0x8f, 0);
        YAN = bcdtodec(uc_R1302(0x8d));    //讀出DS1302中的年

        Display0816(0,2,YAN/10%10,SZ0816);              //年
        Display0816(0,3,YAN%10,SZ0816);
        Display0816(0,5,YER/10%10,SZ0816);        //月                               
        Display0816(0,6,YER%10,SZ0816);
        Display0816(0,8,RE/10%10,SZ0816);         //日
        Display0816(0,9,RE%10,SZ0816);

        Display1616(0,7,week%10,XQ1616);              //星期幾

        Display0816(6,0,temp%1000/100,SZ0816);    //溫度                               
        Display0816(6,1,temp%100/10,SZ0816);
        Display0816(6,3,temp%10,SZ0816);
        Display0816(6,10,humi%1000/100,SZ0816);   //濕度                               
        Display0816(6,11,humi%100/10,SZ0816);
        Display0816(6,13,humi%10,SZ0816);
        Display1632(2,0,SHI/10%10,SZ1632);              //時間
        Display1632(2,1,SHI%10,SZ1632);
        Display1632(2,3,FEN/10%10,SZ1632);
        Display1632(2,4,FEN%10,SZ1632);
        Display1632(2,6,MAO/10%10,SZ1632);
        Display1632(2,7,MAO%10,SZ1632);

        F_Display1616(6,3,s,SJ);
        F_Display1616(6,4,s+1,SJ);
           t++;
        if(t==3)
        {
                t=0;
                s++;
            if(s==9)
                        s=0;
        }
}

void desplay_TS()
{
        set=1;
        if(K1_dat==2&K2_dat==0)
        {
                F_Display0816(0,2,YAN/10%10,SZ0816);           //年
                F_Display0816(0,3,YAN%10,SZ0816);
        }
        else
        {
                Display0816(0,2,YAN/10%10,SZ0816);               //年
                Display0816(0,3,YAN%10,SZ0816);
        }
        if(K1_dat==2&K2_dat==1)
        {
                F_Display0816(0,5,YER/10%10,SZ0816);      //月                               
                F_Display0816(0,6,YER%10,SZ0816);
        }
        else
        {
                Display0816(0,5,YER/10%10,SZ0816);        //月                               
                Display0816(0,6,YER%10,SZ0816);
        }
        if(K1_dat==2&K2_dat==2)
        {
                F_Display0816(0,8,RE/10%10,SZ0816);       //日
                F_Display0816(0,9,RE%10,SZ0816);
        }
        else
        {
                Display0816(0,8,RE/10%10,SZ0816);         //日
                Display0816(0,9,RE%10,SZ0816);
        }
        if(K1_dat==2&K2_dat==3)
        {
                F_Display1616(0,7,week%10,XQ1616);               //星期幾
        }
        else
        {
                Display1616(0,7,week%10,XQ1616);               //星期幾
        }
        if(K1_dat==2&K2_dat==4)
        {       
                F_Display1632(2,0,SHI/10%10,SZ1632);           //時間
                F_Display1632(2,1,SHI%10,SZ1632);
        }
        else
        {
                Display1632(2,0,SHI/10%10,SZ1632);               //時間
                Display1632(2,1,SHI%10,SZ1632);
        }
        if(K1_dat==2&K2_dat==5)
        {
                F_Display1632(2,3,FEN/10%10,SZ1632);
                F_Display1632(2,4,FEN%10,SZ1632);
        }
        else
        {
                Display1632(2,3,FEN/10%10,SZ1632);
                Display1632(2,4,FEN%10,SZ1632);
        }

        Display1632(2,6,0,SZ1632);
        Display1632(2,7,0,SZ1632);

        Display0816(6,0,temp%1000/100,SZ0816);    //溫度                               
        Display0816(6,1,temp%100/10,SZ0816);
        Display0816(6,3,temp%10,SZ0816);

        Display0816(6,10,humi%1000/100,SZ0816);   //濕度                               
        Display0816(6,11,humi%100/10,SZ0816);
        Display0816(6,13,humi%10,SZ0816);       

        F_Display1616(6,3,s,SJ);
        F_Display1616(6,4,s+1,SJ);
           t++;
        if(t==30)
        {
                t=0;
                s++;
            if(s==9)
                        s=0;
        }
}

void Write_DS1302()
{
        v_W1302(0x8e,0x00);        //寫保護關閉
        v_W1302(0x80,0x80);        //暫停
        v_W1302(0x8e,0x00);        //寫保護關閉
        v_W1302(0x8c,dectobcd(YAN)); //寫入年
        v_W1302(0x8e,0x00);        //寫保護關閉
        v_W1302(0x88,dectobcd(YER));        //寫入月
        v_W1302(0x8e,0x00);        //寫保護關閉
        v_W1302(0x86,dectobcd(RE));        //寫入日
        v_W1302(0x8e,0x00);        //寫保護關閉
        v_W1302(0x8a,dectobcd(week));//寫入星期
        v_W1302(0x8e,0x00);        //寫保護關閉
        v_W1302(0x84,dectobcd(SHI));        //寫入小時
        v_W1302(0x8e,0x00);        //寫保護關閉
        v_W1302(0x82,dectobcd(FEN));        //寫入分
        v_W1302(0x8e,0x00);        //寫保護關閉
        v_W1302(0x80,0x00);        //寫入秒
        v_W1302(0x8e,0x80);                                //寫保護開啟
}

void Write_DS1302Init(void)
{
        v_W1302(0x8e,0);
        v_W1302(0x90,0xA9);        //涓流充電開
        v_W1302(0x8e,0x80);        //寫保護       
}

void wenshidu()
{
        error=0;                                            //初始化error=0,即沒有錯誤
        error+=s_measure((uchar*)&temp_val.i,&checksum,TEMP); //溫度測量
        error+=s_measure((uchar*)&humi_val.i,&checksum,HUMI); //濕度測量
        if(error!=0) s_connectionreset();                 ////如果發生錯誤,系統復位
        else
        {
                humi_val.f=(float)humi_val.i;                   //轉換為浮點數
                temp_val.f=(float)temp_val.i;                   //轉換為浮點數
                calc_sth10(&humi_val.f,&temp_val.f);            //修正相對濕度及溫度
                temp=temp_val.f*10;
                humi=humi_val.f*10;
        }  
}

void KEY()
{
        if(K1==0)                                           //設置
        {
                delay(10);
                if(K1==0&&set>0)
                {       
                        K1_dat++;                                  //界面標示變量
                           ClearScreen(0);//清屏
                        if(K1_dat>1)
                        {
                                t=0;
                                s=0;
                                K1_dat=0;
                                K2_dat=0;
                                Write_DS1302();
                                ZJM();
                        }
                }
                while(!K1&&set>0);
        }
        if(K2==0)                                          //切換
        {
                delay(10);
                if(K2==0&&(K1_dat==2||K1_dat==1))                                   //調時切換
                {
                        K2_dat++;
                        if(K2_dat==6)
                        {
                                K2_dat=0;
                        }
                }
                while(!K2&&set==1);
        }
        if(K3==0)                                            //減
        {
                delay(10);
            if(K1_dat==1&&K2_dat==0&&set==1)
                {
                        VOUT1=12;
                        OUT1=0;       
                }
                if(K1_dat==1&&K2_dat==1&&set==1)
                {
                        VOUT2=12;
                        OUT2=0;       
                }
                if(K1_dat==1&&K2_dat==2&&set==1)
                {
                        VOUT3=12;
                        OUT3=0;       
                }
                if(K1_dat==1&&K2_dat==3&&set==1)
                {
                        VOUT4=12;
                        OUT4=0;       
                }
                if(K1_dat==1&&K2_dat==4&&set==1)
                {
                        VOUT5=12;
                        OUT5=0;       
                }
                if(K1_dat==1&&K2_dat==5&&set==1)
                {
                        VOUT6=12;
                        OUT6=0;       
                }

                if(K1_dat==2&&K2_dat==0&&set==1)
                {
                        YAN--;
                        if(YAN==255)
                                YAN=0;
                }
                if(K1_dat==2&&K2_dat==1)
                        YER--;
                        if(YER==255)
                                YER=0;
                if(K1_dat==2&&K2_dat==2)
                        RE--;
                        if(RE==255)
                                RE=0;
                if(K1_dat==2&&K2_dat==3)
                        week--;
                        if(week==0)
                                week=1;
                if(K1_dat==2&&K2_dat==4)
                        SHI--;
                        if(SHI==255)
                                SHI=0;
                if(K1_dat==2&&K2_dat==5)
                        FEN--;
                        if(FEN==255)
                                FEN=0;

                while(!K3&&set==1);
        }
        if(K4==0)                                                //加
        {
                delay(10);
                if(K4==0&&set==0)
                {
                        set=1;
                           ClearScreen(0);//清屏
                        ZJM();                               
                }

            if(K1_dat==1&&K2_dat==0&&set==1)
                {
                        VOUT1=11;
                        OUT1=1;       
                }
                if(K1_dat==1&&K2_dat==1&&set==1)
                {
                        VOUT2=11;
                        OUT2=1;       
                }
                if(K1_dat==1&&K2_dat==2&&set==1)
                {
                        VOUT3=11;
                        OUT3=1;       
                }
                if(K1_dat==1&&K2_dat==3&&set==1)
                {
                        VOUT4=11;
                        OUT4=1;       
                }
                if(K1_dat==1&&K2_dat==4&&set==1)
                {
                        VOUT5=11;       
                        OUT5=1;
                }
                if(K1_dat==1&&K2_dat==5&&set==1)
                {
                        VOUT6=11;
                        OUT6=1;       
                }


                if(K1_dat==2&&K2_dat==0&&set==1)
                YAN++;
                if(YAN==100)
                        YAN=99;
                if(K1_dat==2&&K2_dat==1)
                YER++;
                if(YER==13)
                        YER=12;
                if(K1_dat==2&&K2_dat==2)
                RE++;
                if(RE==32)
                        RE=31;
                if(K1_dat==2&&K2_dat==3)
                week++;
                if(week==8)
                        week=7;
                if(K1_dat==2&&K2_dat==4)
                SHI++;
                if(SHI==24)
                        SHI=23;
                if(K1_dat==2&&K2_dat==5)
                FEN++;
                if(FEN==60)
                        FEN=59;


                if(K4==0&&set>1)
                {
                        K1_dat=2;
                        while(!K4);
                }


                while(!K4&&set==1);
        }

}


void main()
{  
        P1=0x00;
        RGB_B=0;
        Write_DS1302Init();
        s_connectionreset();                        //啟動連接復位
        InitLCD();
        desplay_bmp(FC_DZ);
        delay(5000);
        wenshidu();
        ZJM();
        while(1)
        {   
                if(set>0&&K1_dat==0)                   //時間顯示界面
                {
                        desplay_WNL();
                        wenshidu();
                        set++;
                        if(set==190)
                        {
                                set=0;
                                GJ();
                        }
                }

                if(set>0&&K1_dat==1)                   //定時設置主界面
                {
                        DSJM();
                }

                if(set>0&&K1_dat==2)                   //時間設置界面
                {
                        desplay_TS();
                }

                if(set==0)
                {
                        RGB_B=~RGB_B;
                        delay(300);       
                }
                else
                        RGB_B=~RGB_B;

                KEY();
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:211632 發表于 2017-6-15 18:00 | 只看該作者
試過了 但是有錯誤 還沒有糾正完
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久免费免费 | 天天综合国产 | 在线欧美亚洲 | 国产中文字幕在线观看 | 亚洲草草视频 | 国产成都精品91一区二区三 | 夜夜艹天天干 | 小早川怜子xxxxaⅴ在线 | 国产视频在线观看一区二区三区 | 久久免费视频在线 | 精品国产不卡一区二区三区 | 久久久久久国产精品久久 | 久久综合久色欧美综合狠狠 | 欧美日韩精品一区二区三区视频 | 日韩综合一区 | av资源网站 | 国产在线精品一区二区三区 | 欧美综合久久 | 在线观看亚洲精品视频 | 欧美在线视频网 | 91精品在线播放 | 一区二区三区在线观看免费视频 | 久久亚洲视频网 | 在线亚洲欧美 | 国产精品小视频在线观看 | 黄免费观看| 国产清纯白嫩初高生视频在线观看 | aaaaaa大片免费看最大的 | 午夜私人影院 | 九九热精品视频在线观看 | 久久久久久女 | av午夜激情| 中文字幕一区二区三区精彩视频 | 91精品国产色综合久久 | 精品欧美乱码久久久久久1区2区 | 国产欧美一区二区三区在线看 | 亚洲精品国产偷自在线观看 | 高清av在线 | 第一av | 久久视频精品 | 日韩精品视频在线播放 |