adc0804制作的温度控制器.txt

来自「自己写的ADC0804制作的温度控制器的C语言程序」· 文本 代码 · 共 96 行

TXT
96
字号


                            ADC0804制作的温度控制器, 设一个加热器p2.0一个制冷器p1.4
                        ;设定下限温度30度(设4bh)存31h上限温度60度(设96h)存30h
                        ;调整腾龙版的ad电位器可观察到p2.0,p1.4继电器端口的动作范围
                        ;此程序仅仅供演示,如果实际应用请另外扩展继电器以及温度/电压转换部分

                        程序及硬件端口分配:

                        ;//定义ADC的连接端口
                        ad_cs equ P3.6
                        ad_wr equ P3.2
                        ad_rd equ P3.7
                        ad_input equ p1
                        org 0000h
                        ajmp main
                        org 0030h
                        main:
                        lcall adc_demo
                        ajmp main
                        ;........启动AD转换.................
                        Adc_Start:
                        clr ad_cs
                        nop
                        clr ad_wr
                        nop
                        setb ad_wr
                        nop
                        setb ad_cs
                        nop
                        ret

                        ;.........读AD转换...................

                        Adc_Read:
                        mov ad_input,#0ffh
                        clr ad_cs
                        nop
                        clr ad_rd
                        nop
                        nop
                        mov a,AD_INPUT
                        nop
                        setb ad_rd
                        nop
                        setb ad_cs
                        ret
                        ;............. AD转换程序.............
                        Adc_Demo:
                        lcall Adc_Start
                        lcall delay1ms
                        lcall adc_read
                        mov 34h,a 现在的温度存34h
                        mov 31h,#4bh 下限温度30度存31h
                        mov 30h,#96h 上限温度60度存30h
                        clr c
                        subb a,32h 现在的温度和以前的温度相减
                        jc tdown c=0取入值较大,表示上升否则下降
                        tup:mov a,34h 取出现有温度
                        clr c c=0
                        subb a,30h 与上限温度比较,c=1则需要加热否则c=0则需要制冷
                        jnc poff
                        jmp loop
                        poff:clr p1.4 开始制冷
                        setb p2.0
                        jmp loop

                        tdown:mov a,34h 取出现有温度
                        clr c
                        subb a,31h 与下限温度比较,c=1则需要加热否则c=0则需要制冷
                        jc pon
                        jmp loop

                        pon: clr p2.0 开始加热
                        setb p1.4
                        jmp loop

                        loop:mov 32h,34h 把现有温度存32h
                        clr a 清除a
                        mov r4,#0ffh 延长时间
                        djnz r4,$
                        jmp Adc_Demo 继续监测温度

                        delay1ms: 延时子程序
                        mov r7,#10
                        MM:mov r6,#50
                        djnz r6,$ 
                        djnz r7,MM
                        ret
                        end





⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?