新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 電動車充電控制器制作

        電動車充電控制器制作

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

        ///////////////////////////////////////////////////
        void P_HC_weihu(void)
        {
        //顯示緩存顯示數據元素維護函數,負責維護和更新各組定時器的顯示數據
        int y,z;
        for(z=0;z<4;z++)
        {
        y=0;
        if(TIME[z]>=1000)
        {
        if(TIME[z]%10000==0)
        P_HC_fuzhi(z,y,0); //如此位為0則直接填0避免造成除0錯誤
        else
        P_HC_fuzhi(z,y,(TIME[z]%10000/1000)); //更新千位值
        }else
        {
        P_HC_fuzhi(z,y,10);//如無此位則填空
        }
        y++;
        if(TIME[z]>=100)
        {
        if(TIME[z]%1000==0)
        P_HC_fuzhi(z,y,0); //如此位為0則直接填0避免造成除0錯誤
        else
        P_HC_fuzhi(z,y,(TIME[z]%1000/100)); //更新百位值
        }else
        {
        P_HC_fuzhi(z,y,10); //如無此位則填空
        }
        y++;
        if(TIME[z]>=10)
        {

        if(TIME[z]%100==0)
        P_HC_fuzhi(z,y,0); //如此位為0則直接填0避免造成除0錯誤
        else
        P_HC_fuzhi(z,y,(TIME[z]%100/10));//更新十位值
        }else
        {
        P_HC_fuzhi(z,y,10); //如無此位則填空
        }
        y++;
        if(TIME[z]>0)
        {
        P_HC_fuzhi(z,y,(TIME[z]%10)); //更新個位值
        }else
        {
        P_HC_fuzhi(z,y,0);
        }
        }
        }

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

        ///////////////////////////////////////////////////
        void key(void)
        {
        //按鍵選擇控制函數
        TB=1;shu1=1;shu2=1;shu3=1;shu4=1;
        if(shu4!=1||shu3!=1||shu2!=1||shu1!=1||TB!=1)
        {
        delay(20);
        TB=1;shu1=1;shu2=1;shu3=1;shu4=1;
        if(shu4!=1||shu3!=1||shu2!=1||shu1!=1||TB!=1)
        {
        if(TB!=1)//投幣鍵按下彈起一次后TOUBI變量加1,1投幣值可轉為240定時器值
        {
        for(;TB!=1;){_nop_();} //取上升沿,避免出現多次掃描的現象
        TOUBI+=1;
        }else if(shu1!=1) //選通第一組充電接口,定時器值加240
        {
        for(;shu1!=1;){_nop_();} //取上升沿,避免出現多次掃描的現象
        if(TOUBI>0&&TIME[0]<2400)
        {
        TIME[0]+=240;
        TOUBI-=1;
        }
        }else if(shu2!=1) //選通第二組充電接口,定時器值加240
        {
        for(;shu2!=1;){_nop_();} //取上升沿,避免出現多次掃描的現象
        if(TOUBI>0&&TIME[1]<2400)
        {
        TIME[1]+=240;
        TOUBI-=1;
        }
        }else if(shu3!=1) //選通第三組充電接口,定時器值加240
        {
        for(;shu3!=1;){_nop_();} //取上升沿,避免出現多次掃描的現象
        if(TOUBI>0&&TIME[2]<2400)
        {
        TIME[2]+=240;
        TOUBI-=1;
        }
        }else if(shu4!=1) //選通第四組充電接口,定時器值加240
        {
        for(;shu4!=1;){_nop_();} //取上升沿,避免出現多次掃描的現象
        if(TOUBI>0&&TIME[3]<2400)
        {
        TIME[3]+=240;
        TOUBI-=1;
        }
        }
        }
        }
        }
        ///////////////////////////////////////////////////
        void out(void)
        {
        //更新輸出狀態
        if(TIME[0]>0)out1=1; else out1=0;
        if(TIME[1]>0)out2=1; else out2=0;
        if(TIME[2]>0)out3=1; else out3=0;
        if(TIME[3]>0)out4=1; else out4=0;
        }
        ///////////////////////////////////////////////////
        void init (void)
        {
        //上電初始化
        TMOD = 0x11; // 定時/計數器0,1工作于方式1
        TH0 = 0x3c; // 預置產生50ms時基信號
        TL0 = 0xb0;
        EA = 1; // 開總中斷
        ET0 = 1; // 定時/計數器0允許中斷
        TR0 = 1; // 開閉定時/計數器0
        //TIME_HH=22;時
        //TIME_MM=13; 分
        //TIME_SS=40; 秒
        }
        ///////////////////////////////////////////////////
        void tiem0(void) interrupt 1
        { // T/C0中斷服務程序(產生50ms時基信號)
        cou++; // 軟計數器加1
        if(cou > 19){ // 計數值到100(1s)
        cou = 0; // 軟計數器清零
        TIME_SS++; // 秒計數器加1(進位10ms*100=1s)
        /////////////////////////////////////////////////////////
        //按秒扣除定時器值
        if(TIME[0]>0)TIME[0]-=1;
        if(TIME[1]>0)TIME[1]-=1;
        if(TIME[2]>0)TIME[2]-=1;
        if(TIME[3]>0)TIME[3]-=1;
        /////////////////////////////////////////////////////////
        if(TIME_SS > 59){ // 秒計數值到60
        TIME_SS = 0; // 秒計數器清零
        TIME_MM++; // 分計數器加1(進位60s=1m)
        if(TIME_MM > 59){ // 分計數到60
        TIME_MM = 0; // 分計數器清零
        TIME_HH++; // 時計數器加1(進位60m=1h)
        if(TIME_HH > 23){ // 時計數到23
        TIME_HH = 0; // 時計數器清零
        }
        }
        }
        }
        TH0 = 0x3c; // 重置定時常數
        TL0 = 0xb0;
        }
        ///////////////////////////////////////////////////
        void main(void) //主函數
        {
        /////////////////////////////////
        //初始化
        out1=0;
        out2=0;
        out3=0;
        out4=0;
        /////////////////////////////////
        init();
        //主循環
        while(1)
        {
        key();
        P_HC_weihu();
        print();
        out();
        }
        }


        上一頁 1 2 下一頁

        關鍵詞: 電動車充電控制

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 军事| 修文县| 库伦旗| 隆安县| 防城港市| 广昌县| 五寨县| 福建省| 称多县| 宝坻区| 阿尔山市| 惠安县| 方正县| 翁牛特旗| 伊春市| 灌云县| 塔河县| 阿拉尔市| 昔阳县| 延庆县| 盐源县| 贡嘎县| 安福县| 英超| 四川省| 铁岭县| 鹤庆县| 绩溪县| 三台县| 克什克腾旗| 鄯善县| 吴川市| 囊谦县| 怀柔区| 安远县| 浮梁县| 弋阳县| 贵溪市| 望江县| 浙江省| 玉环县|