關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 電腦可調溫度控制器源程序

        電腦可調溫度控制器源程序

        作者: 時間:2011-05-18 來源:網絡 收藏


        if (SetTF) IntNum2 = IntNum2 + 1; //用于閃爍計數
        if (IntNum2 > 50 ) IntNum2 = 0;
        if (KeyTF) IntNum3 = IntNum3 + 1; //用于防止按鍵連按
        if (IntNum3 > 25)
        {
        IntNum3 = 0;
        KeyTF = 0;
        }

        if ((SetTF) (IntNum2 25)) goto InitEnd; //計數在后半段時顯示
        LEDPort = LED_One;
        LEDOneC = 0;
        Delay_510();
        LEDOneC = 1; //顯示百位數
        LEDPort = LED_Two;
        LEDTwoC = 0;
        Delay_510();
        LEDTwoC = 1; //顯示十位數
        LEDPort = LED_Three;
        LEDThreeC = 0;
        Delay_510();
        LEDThreeC = 1; //顯示個位數
        }
        InitEnd:;
        }

        void V2ToV(void) //數值轉換
        {
        TLV = TLV >> 4;
        THV = THV 4; //讀出的高低位數值移位
        TMV = TLV | THV; //合并高低位放入TM為實際溫度值
        Sign = 0;
        if (SetTF || !Key_SET)
        Sign = TMSetV >> 7; //取符號
        else
        Sign = TMV >> 7;

        if (Sign)
        {
        if (SetTF || !Key_SET)
        {
        LED_One = (~(TMSetV-1)) / 100; //SET狀態下顯示設定值
        LED_Two = ((~(TMSetV-1)) - LED_One * 100)/10;
        LED_Three = (~(TMSetV-1)) - LED_One * 100 - LED_Two * 10;
        }
        else
        {
        LED_One = (~TMV) / 100; //轉換百位值
        LED_Two = ((~TMV) - LED_One * 100)/10;
        LED_Three = (~TMV) - LED_One * 100 - LED_Two * 10;
        }
        }
        else
        {
        if (SetTF || !Key_SET)
        {
        LED_One = (TMSetV) / 100; //SET狀態下顯示設定值
        LED_Two = (TMSetV - LED_One * 100)/10;
        LED_Three = TMSetV - LED_One * 100 - LED_Two * 10;
        }
        else
        {
        LED_One = (TMV) / 100; //轉換百位值
        LED_Two = (TMV - LED_One * 100)/10;
        LED_Three = TMV - LED_One * 100 - LED_Two * 10;
        }
        }

        //轉LED字段
        if (LED_One) //超過百時十位的處理
        LED_Two = LEDDis[LED_Two];
        else
        {
        if (LED_Two == 0)
        LED_Two = LEDDis[10];
        else
        LED_Two = LEDDis[LED_Two];
        }
        if (Sign)
        LED_One = LEDDis[11];
        else
        {
        if (LED_One == 0)
        LED_One = LEDDis[10];
        else
        LED_One = LEDDis[LED_One];
        }
        LED_Three = LEDDis[LED_Three];
        }

        void InitDS1820(void) //初始化DS1820
        {
        TMPort = 1; //拉高TMPort
        _nop_(); //保持一個周期
        TMPort = 0; //拉低TMPort
        Delay_510(); //延時 DS1820復位時間要500us的低電平
        TMPort = 1; //拉高TMPort
        _nop_(); //保持
        _nop_();
        _nop_();

        Delay_110(); //延時110us 等待DS1820回應
        if (!TMPort) //回應信號為低電平
        DS1820ON = 1;
        else
        DS1820ON = 0;
        Delay_110(); //延時
        Delay_110();
        TMPort = 1; //拉高TMPort
        }

        void ROMDS1820(void) //跳過ROM匹配
        {
        #pragma asm
        MOV A,#0CCH
        MOV R2,#8
        CLR C
        WR1:
        CLR P3_7
        MOV R3,#6
        DJNZ R3,$
        RRC A
        MOV P3_7,C
        MOV R3,#23
        DJNZ R3,$
        SETB P3_7
        NOP
        DJNZ R2,WR1
        SETB P3_7
        #pragma endasm
        }

        void TMVDS1820(void) //溫度轉換指令
        {
        #pragma asm
        MOV A,#44H
        MOV R2,#8
        CLR C
        WR2:
        CLR P3_7
        MOV R3,#6
        DJNZ R3,$
        RRC A
        MOV P3_7,C
        MOV R3,#23
        DJNZ R3,$
        SETB P3_7
        NOP
        DJNZ R2,WR2
        SETB P3_7
        #pragma endasm
        }

        void TMRDS1820(void) //讀出溫度指令
        {
        #pragma asm
        MOV A,#0BEH
        MOV R2,#8
        CLR C
        WR3:
        CLR P3_7
        MOV R3,#6
        DJNZ R3,$
        RRC A
        MOV P3_7,C
        MOV R3,#23
        DJNZ R3,$
        SETB P3_7
        NOP
        DJNZ R2,WR3
        SETB P3_7
        #pragma endasm
        }


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 财经| 彭泽县| 荔波县| 延川县| 濮阳市| 霍林郭勒市| 武宁县| 芷江| 伊宁市| 乳山市| 宁蒗| 中超| 正宁县| 五寨县| 榕江县| 西贡区| 昌平区| 兴义市| 新泰市| 福安市| 东辽县| 宁海县| 贡嘎县| 彰化县| 芜湖县| 若羌县| 高安市| 富源县| 玉环县| 青海省| 康乐县| 六安市| 新昌县| 涟源市| 庄河市| 襄城县| 蓬溪县| 黎平县| 师宗县| 文昌市| 白玉县|