搜索
bottom↓
楼主: 153290557

936焊台用AVR模糊PID恒温控制,图

[复制链接]

出0入0汤圆

发表于 2009-4-13 14:49:35 | 显示全部楼层
PID 学习中

出0入0汤圆

发表于 2009-4-13 21:18:18 | 显示全部楼层
MARK!

出0入0汤圆

发表于 2009-4-29 20:45:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-4-29 22:27:03 | 显示全部楼层
你好,看了你的资料,我也准备做一个白光焊台,但是烙铁芯里的电热偶还不是很清楚,还有你那个电热偶软件我看了,里面有很多种类型,不知道这个烙铁芯里的电热偶是哪种类型的,希望向你请教,QQ314825127加我好吗·?

出0入42汤圆

发表于 2009-4-30 14:54:35 | 显示全部楼层
顶一下,别沉了。

出0入0汤圆

发表于 2009-4-30 15:00:02 | 显示全部楼层
jh

出0入0汤圆

发表于 2009-4-30 15:56:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-5-6 23:24:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-5-7 12:48:22 | 显示全部楼层
正要学习PID控制.顶一下

出0入0汤圆

发表于 2009-5-7 15:49:50 | 显示全部楼层
顶起!~正想学习下PID

出0入0汤圆

发表于 2009-6-8 21:26:13 | 显示全部楼层
兄弟 你的全部写好了吗 想参考下 能否传上面一起共享下

出0入0汤圆

发表于 2009-6-30 20:43:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-16 11:19:42 | 显示全部楼层
我也mark

出0入0汤圆

发表于 2009-9-16 16:19:04 | 显示全部楼层
我写了一个 设定部分的,但是怎么传啊??

出0入0汤圆

发表于 2009-9-20 14:12:52 | 显示全部楼层
m

出0入0汤圆

发表于 2009-9-20 14:23:55 | 显示全部楼层
马克

出0入0汤圆

发表于 2009-10-21 22:46:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-22 08:49:20 | 显示全部楼层
这好贴也被挖出来了?省了偶滴事儿咯,呵呵。

出0入0汤圆

发表于 2009-10-26 17:46:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-27 07:21:34 | 显示全部楼层
弄个开源的自动温度控制焊台,DIY套件供应如何.   QQ:332884364

出0入0汤圆

发表于 2009-10-27 09:07:06 | 显示全部楼层
楼主:你好

假设用你现在试验的PID控制,如果要自整定P、I、D三个数值值,应该怎么做?

出0入0汤圆

发表于 2009-12-13 09:27:22 | 显示全部楼层
记好

出0入0汤圆

发表于 2009-12-13 10:11:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-13 11:00:04 | 显示全部楼层
mark!

出0入0汤圆

发表于 2009-12-13 14:10:18 | 显示全部楼层
弄个RC滤波后直接用同相放大就可以了,
再说那个加热速度反映那么慢,
还有补偿可以在程序上加!

出0入0汤圆

发表于 2010-1-1 09:56:42 | 显示全部楼层
936焊台用的恒温控制,这个确实需要, 希望能搞个开源项目, 大家一起共享.

出0入0汤圆

发表于 2010-1-1 11:15:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-1 12:04:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-1 16:09:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-2 10:54:09 | 显示全部楼层
马克

出0入0汤圆

发表于 2010-1-4 00:28:11 | 显示全部楼层
我有几块拆下来的板子的呵呵

出0入0汤圆

发表于 2010-1-31 22:49:17 | 显示全部楼层
记号,学习PID

出0入0汤圆

发表于 2010-3-11 13:13:41 | 显示全部楼层
学习中

出0入0汤圆

发表于 2010-3-12 09:09:29 | 显示全部楼层
这个坛子自己做东西的强人很多,我很羡慕!

出0入0汤圆

发表于 2010-3-12 09:51:07 | 显示全部楼层
原理图打不开。

出0入0汤圆

发表于 2010-3-12 21:39:05 | 显示全部楼层
好象用个LM324就能完成一个PID控制电路了,原来的老式仪表都是用运放来做pid的可以实现比例积分微分,mcu可以用来测量显示和设定温度。当然了用mcu数字pid就更好了,可以参考下DCS或PLC中的pid模型,里面讲的还是很详细的

出0入0汤圆

发表于 2010-3-31 19:51:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-31 21:18:17 | 显示全部楼层
楼主周远锋:能把我做的焊台电路图和详细资料发给我吗?谢谢!(871958879@qq.com)

出0入0汤圆

发表于 2010-4-1 12:23:22 | 显示全部楼层
楼主周远锋:能把你做的焊台电路图和详细资料发给我吗?谢谢!(871958879@qq.com)

出0入0汤圆

发表于 2010-4-6 23:26:51 | 显示全部楼层
学习

出0入0汤圆

发表于 2010-5-14 10:46:33 | 显示全部楼层
楼主 能加下QQ吗?本人正在做相关毕业设计 希望得到指教 QQ 402174983

出0入0汤圆

发表于 2010-7-26 11:39:06 | 显示全部楼层
我有白光937的

出0入0汤圆

发表于 2010-7-26 11:41:00 | 显示全部楼层

就是这种,不过没源程序只有电路图,和HEX (原文件名:937.jpg)

出0入0汤圆

发表于 2010-7-26 20:07:06 | 显示全部楼层
谢谢分享~

出0入0汤圆

发表于 2010-7-26 21:14:55 | 显示全部楼层
VERY GOOD!!!

出0入0汤圆

发表于 2010-8-9 22:12:00 | 显示全部楼层
ddddd

出0入0汤圆

发表于 2010-8-13 12:12:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-4 00:04:35 | 显示全部楼层
PID控制,MARK

出0入0汤圆

发表于 2010-9-4 09:15:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-14 16:06:12 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-11-15 21:30:36 | 显示全部楼层
pid控制,我也将要学了,看来还是很重要的,在这预习一下!

出0入0汤圆

发表于 2011-4-11 21:09:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-13 14:09:50 | 显示全部楼层
标记

出0入0汤圆

发表于 2011-4-13 14:40:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-28 00:03:53 | 显示全部楼层
回复【楼主位】153290557 啊峰
-----------------------------------------------------------------------

MARK

出0入0汤圆

发表于 2011-5-13 17:02:42 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-6-4 11:33:58 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-6-4 20:53:37 | 显示全部楼层
现在才看到这个帖子。为了diy个白光在网上转了好久,
mark一下,慢慢看。

出0入0汤圆

发表于 2011-6-5 19:31:29 | 显示全部楼层
MARK!

出0入0汤圆

发表于 2011-6-7 10:37:30 | 显示全部楼层
MARK下。

出0入0汤圆

发表于 2011-7-5 22:43:04 | 显示全部楼层
回复【1楼】lanshuitianxia 黑蚂蚁
-----------------------------------------------------------------------

好!MARK!

出0入0汤圆

发表于 2011-7-5 23:55:29 | 显示全部楼层
偶的936闲置了N久

出0入0汤圆

发表于 2011-7-6 00:00:38 | 显示全部楼层
观注中,

出0入0汤圆

发表于 2011-7-6 09:26:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-6 10:02:48 | 显示全部楼层
mark....

出0入0汤圆

发表于 2011-7-9 17:07:10 | 显示全部楼层
PID  很早就想学了  Mark下..

出0入0汤圆

发表于 2011-7-9 17:25:15 | 显示全部楼层
闭环控制不好搞呢,关键是参数不好调节!!我之前有搞过,但效果不理想

出0入0汤圆

发表于 2011-7-9 21:56:04 | 显示全部楼层
我觉得要快速升温,最好不要用PWM,直接持续加热,然后温度快接近设定温度了,再加pwm,PID控制主要用于热惯性大的对象,烙铁热熔那么小,就算持续加温到设定温度,也不会超过太多,更何况在焊接过程中温度波动肯定很大,这个时候可以加pwm,进行PID控制

出0入9汤圆

发表于 2011-7-9 22:36:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-14 08:36:45 | 显示全部楼层
支持

出0入0汤圆

发表于 2011-7-17 15:27:19 | 显示全部楼层
也在搞,加重感冒,头都大了,哎呀,,,

出0入0汤圆

发表于 2011-8-5 15:31:58 | 显示全部楼层
mark

出0入42汤圆

发表于 2011-8-5 16:08:53 | 显示全部楼层
回复【170楼】GDYJ  
我觉得要快速升温,最好不要用pwm,直接持续加热,然后温度快接近设定温度了,再加pwm,pid控制主要用于热惯性大的对象,烙铁热熔那么小,就算持续加温到设定温度,也不会超过太多,更何况在焊接过程中温度波动肯定很大,这个时候可以加pwm,进行pid控制
-----------------------------------------------------------------------

会的,真的会的,至少要P控制吧。
加温到接近比如差10度,切换到PID这样也不会引入太多早期的累积误差

出0入0汤圆

发表于 2011-8-6 14:39:31 | 显示全部楼层
好像不太适合吧。加热应该简单至上。

参考一下数显的969电路,效果可能更好一点。

那是成熟的产品了,不用自己浪费很多时间的。

出0入0汤圆

发表于 2011-8-8 13:18:36 | 显示全部楼层
标记

出0入0汤圆

发表于 2011-8-31 17:25:47 | 显示全部楼层
谢谢lz的贡献

出0入0汤圆

发表于 2011-8-31 21:32:48 | 显示全部楼层
MARK一下

出0入0汤圆

发表于 2011-9-24 16:41:27 | 显示全部楼层
今天刚淘了一个,哈哈,刚好改装一下

出0入0汤圆

发表于 2011-9-24 16:50:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-24 17:16:04 | 显示全部楼层
上传937源码有需要找我,可发一份参考
-----------------------------------------------------------------------

出0入0汤圆

发表于 2011-9-24 17:17:40 | 显示全部楼层
回复【182楼】zhu555
-----------------------------------------------------------------------

/****************************************************
This program was produced by the
CodeWizardAVR V1.24.1d Standard
Automatic Program Generator
?Copyright 1998-2004 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.ro
e-mail:office@hpinfotech.ro



Chip type           : ATmega8L
Program type        : Application
Clock frequency     : 1.000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/

#include <mega8.h>   

void SaveSetPara(void);
void ShowSetPara(void);
void ShowSetTemp(void);
void CheckReceive(void);                        
void ClosePowerProc(void);
void TempAdj(void);

unsigned char  cReadTime;        
unsigned char b40ms,c40ms,b500ms,c500ms,bHeatEn,bHeatDisable,cZphOld, cZphNew;         
unsigned char bt10ms = 0,b10ms = 0,c10ms = 0,b100ms,bUpLimit = 0;
unsigned char c200ms = 0,cDispBit = 0,cSetBit,cBlinkTime;
unsigned char cDispBuf[3],cKeyTime = 0,cKeyShiftTime = 0;
unsigned char bSetTemp = 0,bShowType,cKeyInputTime = 0;
unsigned char bInputAdjust = 0,bSetPara = 0,cSetParaNo = 0;
unsigned char cOldPINB,cDataPINB,cSpeakTime,bHeatOK = 0;
unsigned char bAlarm,bCloseCount,bClosePower = 0,bDownLimit = 0;
unsigned char cSpeakOnTimer = 0,bSleep = 0,bHeatError = 0;
unsigned char bShowAdjust = 0,cShowAdjustTime = 0;        
unsigned char cFirstOpen, bFirstOpen,cDownLimit,bTempDown;
unsigned int cSlpTimer = 0,cOldTemp;
unsigned int cMidleTime = 200;
unsigned int cSetPara[10],cControlTemp,cCloseTime = 0;
unsigned int cControlVal,cSampleVal;
unsigned int eeprom *ptr_to_eeprom;

//                                                        '0' '1'  '2'  '3'  '4'  '5'  '6'  '7'
const char cDispTab[21] = {0x81,0xdd,0x13,0x19,0x4d,0x29,0x21,0x9d,
//                          '8'  '9' '-'  '-1' 'C'  'F'  'S'
                                                        0x1,0x9,0x7f,0x5d,0xa3,0x27,0x29,
//                                                        'L'  'P'  'H' 'E'        ' '                                                
                                                        0xe3,0x7,0x45,0x23,0xff,0x00};
                 
#define RunLedBlink() PORTB ^= 0x20
#define HeatDisable() PORTB &= ~0x10
#define HeatEnable() PORTB |= 0x10
#define SpeakOn() PORTB &= ~ 0x80
#define SpeakOff() PORTB |= 0x80
#define SpeakBlink() PORTB ^= 0x80

interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
  HeatDisable();
  bHeatDisable = 1;


}




// Timer 1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
        // Reinitialize Timer 1 value   
        TCNT1H = 0xfc;
        TCNT1L = 0x17;
        // Place your code here
        if(++c10ms >= 10)
        {
                c10ms = 0;
                bt10ms = 1;
/*               
                if(--cMidleTime == 0)
                {
                        cMidleTime = 200;
                        if(cSlpTimer >= 50)
                        {
                                bCloseCount = 0;
                                cCloseTime = 0;
                        }
                        else
                                bCloseCount = 1;
                        cSlpTimer = 0;
                }                */
        }                  
        // Led display
       
                
        PORTD = 0xff;
        PORTB |= 0x7;
        if(bSetTemp)
        {
                if(cSetBit == cDispBit)
                {
                        if(cBlinkTime & 0x80)
                       
                                PORTD = cDispTab[cDispBuf[cDispBit]];        
                }
                else
                       
                        PORTD = cDispTab[cDispBuf[cDispBit]];
        }
        else   
       
                PORTD = cDispTab[cDispBuf[cDispBit]];
               
        if(cDispBit == 0)          //1
        {
                if(PORTB & 0x10)
                        PORTD &= 0xfe;        
                PORTB &= ~0x1;
        }
        else if(cDispBit == 1)        //10
                PORTB &= ~0x2;
        else if(cDispBit == 2)        //100
                PORTB &= ~0x4;               
        if(++cDispBit >= 3)
                cDispBit = 0;               
}

#define ADC_VREF_TYPE 0xc0
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
        ADMUX=adc_input|ADC_VREF_TYPE;
        // Start the AD conversion
        ADCSRA|=0x40;
        // Wait for the AD conversion to complete
        while ((ADCSRA & 0x10)==0);
        ADCSRA|=0x10;
        return ADCW;
}

void TimeProc(void)
{                    
        b10ms = 0;         
        b100ms = 0;
        b40ms = 0;
        if(bt10ms)
        {
                bt10ms = 0;
                b10ms = 1;
                if( ++c40ms > 4 )
                {
                        c40ms = 0;
                        b40ms = 1;
                }  
                if(++c500ms > 12)
                {
                        c500ms = 0;
                        b500ms = 1;
                        if((bHeatOK == 1)&&(bTempDown == 0)&&(bDownLimit == 0))
                        {
                                if(bHeatEn == 0)
                                        bHeatEn = 1;
                                else
                                        bHeatEn = 0;
                        }
                        else
                                bHeatEn = 1;
                }
                if(++c200ms > 20)
                {
                        b100ms = 1;
                        if(cFirstOpen > 0)
                                {
                                               cFirstOpen--;
                                        if(cFirstOpen == 0)
                                               {
                               
                                                       bFirstOpen = 0;
                                               
                                       
                                       
                                               }
                                  }
                        cBlinkTime = ~ cBlinkTime;
                        c200ms = 0;
                        RunLedBlink();
                        //if(bAlarm || bHeatError)
                        if(bHeatError)
                                SpeakBlink();
                        else if((!(bAlarm || bHeatError)) && (cSpeakTime == 0))
                                SpeakOff();                       
                        if(cShowAdjustTime > 0)
                        {
                                if((--cShowAdjustTime) == 0)
                                        bShowAdjust = 0;
                        }      
                }                    
                if(cSpeakTime > 0)
                {
                        cSpeakTime--;
                        if(cSpeakTime == 0)
                        {
                                SpeakOff();
                                if(cSpeakOnTimer > 0)
                                {                  
                                        cSpeakOnTimer--;
                                        cSpeakTime = 20;
                                        if((cSpeakOnTimer % 2) == 1)
                                                SpeakOn();
                                }
                        }
                }            
        }
}     


void KeyUpProc(void)
{                    
        if(bSetTemp)
        {
                if((cSetBit == 2) && (bSetPara == 0))
                {
                        if(bShowType == 1)        
                        {                 
                                if(bInputAdjust == 1)
                                {
                                        if(cDispBuf[cSetBit] == 0)
                                                cDispBuf[cSetBit] = 10 ;        // display '-'
                                        else if(cDispBuf[cSetBit] == 10)
                                                cDispBuf[cSetBit] = 11 ;                                               
                                        else if(cDispBuf[cSetBit] == 11)
                                                cDispBuf[cSetBit] = 1 ;                                               
                                        else if(cDispBuf[cSetBit] == 1)
                                                cDispBuf[cSetBit] = 0 ;                                               
                                }
                                else
                                {
                                        cDispBuf[cSetBit]++;
                                        if(cDispBuf[cSetBit] > 8)
                                                cDispBuf[cSetBit] = 3;
                                }                                       
                        }
                        else
                        {
                                if(bInputAdjust == 1)
                                {
                                        if(cDispBuf[cSetBit] == 0)
                                                cDispBuf[cSetBit] = 10 ;        // display '-1'
                                        else
                                                cDispBuf[cSetBit] = 0 ;                                               
                                }
                                else
                                {
                                        cDispBuf[cSetBit]++;
                                        if(cDispBuf[cSetBit] >= 5)
                                                cDispBuf[cSetBit] = 2 ;                                       
                                }
                        }
                }
                else                 
                {
                        cDispBuf[cSetBit]++;
                        if(cDispBuf[cSetBit] >= 10)
                                cDispBuf[cSetBit] = 0;
                }
        }
        else if(bSetPara == 1)
        {
                switch(cSetParaNo)
                {
                        case 0:   
                                cSetPara[2 + cSetParaNo]++;
                                cSetPara[2 + cSetParaNo] &= 0x1;                               
                                break;
                        case 3:   
                                cSetPara[2 + cSetParaNo]++;
                                cSetPara[2 + cSetParaNo] &= 0x1;                               
                                break;
                        case 1:   
                                cSetPara[2 + cSetParaNo]++;
                                if(cSetPara[2 + cSetParaNo] >= 3)
                                        cSetPara[2 + cSetParaNo] = 0;
                                break;                               
                        default :
                                break;
                }       
                ShowSetPara();
        }
}                  

void KeyDownProc(void)
{       
        if(bSetTemp)
        {
                if((cSetBit == 2) && (bSetPara == 0))
                {
                        if(bShowType == 1)
                        {
                                if(bInputAdjust == 1)
                                {
                                        if(cDispBuf[cSetBit] == 0)
                                                cDispBuf[cSetBit] = 1 ;        // display '1'
                                        else if(cDispBuf[cSetBit] == 1)
                                                cDispBuf[cSetBit] = 11 ;// display '-1'
                                        else if(cDispBuf[cSetBit] == 11)
                                                cDispBuf[cSetBit] = 10 ;                                               
                                        else if(cDispBuf[cSetBit] == 10)
                                                cDispBuf[cSetBit] = 0 ;                                               
                                }
                                else
                                {
                                        cDispBuf[cSetBit]--;
                                        if(cDispBuf[cSetBit] < 3)
                                                cDispBuf[cSetBit] = 8 ;       
                                }
                        }
                        else
                        {
                                if(bInputAdjust == 1)
                                {
                                        if(cDispBuf[cSetBit] == 0)
                                                cDispBuf[cSetBit] = 10 ;        // display '-'
                                        else
                                                cDispBuf[cSetBit] = 0 ;                                               
                                }
                                else
                                {                        
                                        cDispBuf[cSetBit]--;                       
                                        if(cDispBuf[cSetBit] <= 1)
                                                cDispBuf[cSetBit] = 4 ;                                       
                                }
                        }
                }
                else                 
                {
                        cDispBuf[cSetBit]--;
                        if(cDispBuf[cSetBit] == 255)
                                cDispBuf[cSetBit] = 9;
                }
        }
        else if(bSetPara == 1)
        {
                switch(cSetParaNo)
                {
                        case 0:   
                                cSetPara[2 + cSetParaNo]--;
                                cSetPara[2 + cSetParaNo] &= 0x1;
                                break;
                        case 3:   
                                cSetPara[2 + cSetParaNo]--;
                                cSetPara[2 + cSetParaNo] &= 0x1;                               
                                break;
                        case 1:   
                                cSetPara[2 + cSetParaNo]--;
                                if(cSetPara[2 + cSetParaNo] >= 3)
                                        cSetPara[2 + cSetParaNo] = 2;
                                break;                               
                        default :
                                break;
                }       
                ShowSetPara();
        }
}

void KeyShiftProc(void)
{                                 
        unsigned int i;

        if(bSetTemp)
        {     
                cSetBit--;
                if(cSetBit == 255)
                {
                        cSetBit = 2;
                        if(bInputAdjust == 1)
                        {
//                                bHeatOK = 0;
                                if(cDispBuf[2] == 10)
                                        i = 1000;
                                else if(cDispBuf[2] == 11)
                                        i = 1100;
                                else if(cDispBuf[2] == 1)
                                        i = 100;
                                else
                                        i = 0;
                                cSetPara[1] = cDispBuf[0] + (unsigned int)cDispBuf[1] * 10;
                                if(((cDispBuf[2] & 0x1) == 0) || (((cDispBuf[2] & 0x1) == 1) && (cSetPara[1] <= 78)))
                                {                                                          
                                        cSetPara[1] += i;
                                        bSetTemp = 0;
                                        bInputAdjust = 0;         
                                        ptr_to_eeprom = 2;
                                        *ptr_to_eeprom = cSetPara[1];                       
                                        bHeatOK = 0;                                       
                                }
                        }
                        else if(bSetPara == 1)
                        {
                                cSetPara[4] = cDispBuf[0] + (unsigned int)cDispBuf[1] * 10
                                                         + (unsigned int)cDispBuf[2] * 100;
                                if(((cSetPara[4] <= 150) && (cSetPara[4] >= 30) && (bShowType == 0))
                                        || ((cSetPara[4] <= 300) && (cSetPara[4] >= 50) && (bShowType == 1)))
                                {
                                        bSetTemp = 0;
                                        cSetParaNo++;
                                        ptr_to_eeprom = 8;
                                        *ptr_to_eeprom = cSetPara[4];
                                        ShowSetPara();
                                }
                                                       
                        }
                        else
                        {
                                cSetPara[0] = cDispBuf[0] + (unsigned int)cDispBuf[1] * 10
                                                         + (unsigned int)cDispBuf[2] * 100;
                                if((cSetPara[2] == 0) && (cSetPara[0] >= 200) && (cSetPara[0] <= 450)
                                        || ((cSetPara[2] == 1) && (cSetPara[0] >= 392) && (cSetPara[0] <= 842)))
                                {
                                        bSetTemp = 0;
                                        bHeatOK = 0;
                                        ptr_to_eeprom = 0;
                                        *ptr_to_eeprom = cSetPara[0];
                                }
                        }
                }               
        }
        else if(bSetPara == 1)
        {
                if(bShowType != cSetPara[2])
                {
                        //bHeatOK = 0;
                        if(cSetPara[2] == 0)
                        {
                                i = (cSetPara[0] - 32)*5 / 9;
                                cSetPara[0] = i;
                                i = cSetPara[4]*5 / 9;
                                cSetPara[4] = i;
                                if(cSetPara[1] >= 1000)
                                {                  
                                        cSetPara[1] -= 1000;
                                        i = cSetPara[1]*5 / 9;
                                        cSetPara[1] = i + 1000;
                                }
                                else
                                {
                                        i = cSetPara[1]*5 / 9;
                                        cSetPara[1] = i;
                                }
                        }
                        else
                        {
                                i = (cSetPara[0] *9)/5 + 32;
                                cSetPara[0] = i;
                                i = cSetPara[4]*9 / 5;
                                cSetPara[4] = i;
                                if(cSetPara[1] >= 1000)
                                {                  
                                        cSetPara[1] -= 1000;
                                        i = cSetPara[1]*9 / 5;
                                        cSetPara[1] = i + 1000;
                                }
                                else
                                {
                                        i = cSetPara[1]*9 / 5;
                                        cSetPara[1] = i;
                                }
                        }
                        ptr_to_eeprom = 0;
                        *ptr_to_eeprom = cSetPara[0];
                        ptr_to_eeprom = 2;
                        *ptr_to_eeprom = cSetPara[1];
                }
                SaveSetPara();
                bShowType = cSetPara[2];
                cSetParaNo++;
                if(cSetParaNo == 2)
                {
                        cSetBit = 2;
                        bSetTemp = 1;
                }
                if(cSetParaNo >= 4)
                {
                        cSetParaNo = 0;
                        bSetPara = 0;
                        ShowSetTemp();
                }
                else
                        ShowSetPara();       
        }
        else
                cKeyShiftTime = 0;
}

void KeyInputProc(void)
{
        unsigned int i;
       
        if((bSetTemp == 0) && (bSetPara == 0)&&(bHeatDisable == 0))
        {
                cShowAdjustTime = 10;
                bShowAdjust = 1;
                if(cSetPara[1] >= 1100)
                {
                        i = cSetPara[1] - 1100;
                        cDispBuf[2] = 11;
                }
                else if(cSetPara[1] >= 1000)
                {                        
                        i = cSetPara[1] - 1000;                                               
                        cDispBuf[2] = 10;
                }
                else if(cSetPara[1] >= 100)
                {                        
                        i = cSetPara[1] - 100;                                               
                        cDispBuf[2] = 1;
                }
                else           
                {
                        cDispBuf[2] = 0;
                        i = cSetPara[1];
                }     
                if(i != 0)
                {
                        cDispBuf[0] = i % 10;
                        cDispBuf[1] = i / 10;
                }
                else
                {
                        cDispBuf[0] = 0;
                        cDispBuf[1] = 0;                                               
                }
        }
}

void SaveSetPara(void)
{
        ptr_to_eeprom = 4 + 2 * cSetParaNo;
        *ptr_to_eeprom = cSetPara[cSetParaNo + 2];
}

void ShowSetPara(void)
{            

        switch(cSetParaNo)
        {
                case 0:                  
                        cDispBuf[2] = 1;
                        cDispBuf[1] = 19;
                        if((cSetPara[cSetParaNo + 2]) == 0)
                                cDispBuf[0] = 12;
                        else
                                cDispBuf[0] = 13;
                        break;
                case 1:                  
                        cDispBuf[2] = 2;
                        if((cSetPara[cSetParaNo + 2]) == 2)
                        {
                                cDispBuf[1] = 3;
                                cDispBuf[0] = 0;
                        }
                        else if((cSetPara[cSetParaNo + 2]) == 1)
                        {
                                cDispBuf[1] = 1;
                                cDispBuf[0] = 0;
                        }
                        else               
                        {
                                cDispBuf[1] = 19;
                                cDispBuf[0] = 0;
                        }
                        break;
                case 2:   
                        cDispBuf[2] = cSetPara[2+ cSetParaNo] / 100;
                        cDispBuf[1] = (cSetPara[2+ cSetParaNo] % 100) / 10;
                        cDispBuf[0] = cSetPara[2+ cSetParaNo] % 10;
                        break;
                case 3:        
                        cDispBuf[2] = 4;               
                        cDispBuf[1] = 19;
                        if((cSetPara[cSetParaNo + 2]) == 0)
                                cDispBuf[0] = 0;
                        else
                                cDispBuf[0] = 1;
                        break;               
                default :
                        break;
        }
}

void CheckReceive(void)
{                    
        if(b10ms)
        {
                cOldPINB = cDataPINB;
                cDataPINB = PINB;
                /*if((bSetTemp == 0) && (cOldPINB & 0x8) && (!(cDataPINB & 0x8))
                        && (bSetPara == 0))
                {
//                        bHeatOK = 0;
                        bSetTemp = 1;
                        cSetBit = 2;
                        ShowSetTemp();               
                }*/
                if((bSetTemp == 0) && (cOldPINB & 0x8) && (!(cDataPINB & 0x8))
                        && (bSetPara == 0))
                //if(((bSetTemp == 0) && ((PINB & 0x8) == 0 )&&(cOldPINB != cDataPINB)
                //        && (bSetPara == 0)))
                {        
                     
                                    bHeatOK = 0;
                                    bSetTemp = 1;
                                    cSetBit = 2;
                                  //cCheckTimeA = 0;
                                  //SpeakOn();
                                     //cSpeakTime = 20;
                                  ShowSetTemp();
                                //  return;
                       
                         
                                        
                }
               
               /*   if(((bSetTemp == 1)&& (cOldPINB & 0x8)&&(!(cDataPINB & 0x8)))||((bSetPara ==1)
                  &&(cOldPINB & 0x8)&&(!(cDataPINB & 0x8))))
                {         
                                 
                                   bSetTemp = 0;
                                   bSetPara = 0;
                                   cSetParaNo = 0;
                                   bInputAdjust = 0;
                                   //cCheckTimeB = 0;
                                   SpeakOn();
                                   cSpeakTime =20;
                                   ShowSetTemp();
                                 
                                   
                          
                }*/
        }
}

void CheckKey(void)
{
        unsigned char key;           
        unsigned int i;
       
        key = ~PINC;
        key &= 0x3c;
        if(key != 0)
        {
                if(cKeyTime == 0x80)       
                {           
                        if((bSetTemp == 1) || (bSetPara == 1) || (bInputAdjust == 1))
                                return;
                        if((key == 0x10) && (bSetTemp == 0)&& ((PINB & 0x8) == 0))
                        {
                                if(b10ms)
                                        if(++cKeyShiftTime > 100)
                                        {
//                                                bHeatOK = 0;
                                                bSetTemp = 1;
                                                cSetBit = 2;
                                                ShowSetTemp();
                                        }
                        }
                        if((key == 0x20) && (bInputAdjust != 1))
                        {
                                if(b10ms)
                                        if(++cKeyInputTime > 100)
                                        {
                                                if((cSetPara[5] == 0) && ((PINB & 0x8) == 0) ||
                                                        (cSetPara[5] == 1))
                                                {
//                                                        bHeatOK = 0;
                                                        bSetTemp = 1;
                                                        cSetBit = 2;
                                                        bInputAdjust = 1;
                                                        if(cSetPara[1] >= 1100)
                                                        {
                                                                i = cSetPara[1] - 1100;
                                                                cDispBuf[2] = 11;
                                                        }
                                                        else if(cSetPara[1] >= 1000)
                                                        {                        
                                                                i = cSetPara[1] - 1000;                                               
                                                                cDispBuf[2] = 10;
                                                        }
                                                        else if(cSetPara[1] >= 100)
                                                        {                        
                                                                i = cSetPara[1] - 100;                                               
                                                                cDispBuf[2] = 1;
                                                        }
                                                        else           
                                                        {
                                                                cDispBuf[2] = 0;
                                                                i = cSetPara[1];
                                                        }     
                                                        if(i != 0)
                                                        {
                                                                cDispBuf[0] = i % 10;
                                                                cDispBuf[1] = i / 10;
                                                        }
                                                        else
                                                        {
                                                                cDispBuf[0] = 0;
                                                                cDispBuf[1] = 0;                                               
                                                        }
                                                }
                                        }
                        }
                        return;
                }
                if(b10ms)
                {
                        if(++cKeyTime >= 8)
                        {                     
                                cKeyTime = 0x80;
                                if(bSleep == 1)
                                {
                                        bSleep = 0;
                                        cCloseTime = 0;
                                        bHeatOK = 0;
                                        return;
                                }
                                if(key == 0x4)
                                        KeyUpProc();
                                else if(key == 0x8)
                                        KeyDownProc();
                                else if(key == 0x10)
                                        KeyShiftProc();
                                else if(key == 0x20)
                                        KeyInputProc();
                                else
                                        cKeyTime = 0;
                        }
                }
        }
        else
        {
                cKeyTime = 0;
                cKeyShiftTime = 0;                           
                cKeyInputTime = 0;
        }
}        // unsigned char CheckKey(void)

void WatchDog(void)
{
        // Watchdog Timer initialization
        // Watchdog Timer Prescaler: OSC/2048k
        WDTCR = 0x1F;
        WDTCR = 0x0F;
}

void ShowSetTemp(void)
{
        cDispBuf[0] = cSetPara[0] % 10;
        cDispBuf[1] = (cSetPara[0] %100) / 10;
        cDispBuf[2] = cSetPara[0] / 100;
}

void ClosePowerProc(void)
{        
        static unsigned char cHeatTime = 0;

        if((bCloseCount == 1) && (b100ms == 1) && (cSetPara[3] != 0))  
        {                               
                cCloseTime++;
                if(cSetPara[3] == 2)
                {
                        if((cCloseTime >= 8500) && (bClosePower == 0))
                        {
                                HeatDisable();
                                bClosePower = 1;
                                SpeakOn();
                                cSpeakTime = 20;
                                cSpeakOnTimer = 6;
                        }
                }
                else if(((cSetPara[0] >= 300) && (cSetPara[2] == 0))
                        || ((cSetPara[0] >= 600) && (cSetPara[2] == 1)))
                {
                        if((cCloseTime >= 4300) && (bSleep == 0))
                        {
                                bSleep = 1;
                                SpeakOn();
                                cSpeakTime = 20;
                                cCloseTime = 0;
                        }
                }
        }
}

void InitEEPROM(void)
{
        unsigned int m,k;  
       
        for(m = 0; m++;m < 1000)
                for(k = 0; k++;k < 1000);
       
        ptr_to_eeprom = 30;
        m = *ptr_to_eeprom;
        ptr_to_eeprom = 32;
        k = *ptr_to_eeprom;

        ptr_to_eeprom = 30;
        m = *ptr_to_eeprom;
        ptr_to_eeprom = 32;
        k = *ptr_to_eeprom;
       
        if((m != 0x11) && (k != 0x22))
        {
                ptr_to_eeprom = 30;
                *ptr_to_eeprom = 0x11;
                ptr_to_eeprom = 32;
                *ptr_to_eeprom = 0x22;
               
                ptr_to_eeprom = 0;
                *ptr_to_eeprom = 350;
                ptr_to_eeprom = 2;
                *ptr_to_eeprom = 0;
                ptr_to_eeprom = 4;
                *ptr_to_eeprom = 0;
                ptr_to_eeprom = 6;
                *ptr_to_eeprom = 0;
                ptr_to_eeprom = 8;
                *ptr_to_eeprom = 150;
                ptr_to_eeprom = 10;
                *ptr_to_eeprom = 0;
        }       
}  

void TempAdj(void)
{
   
      
                switch( cSetPara[0]/10)
                {
                         case 20:
                                cSampleVal -= 209;
                                break;
                        
                        
                         case 21:
                                cSampleVal -= 201;
                                break;
                        
                         case 22:
                                cSampleVal -= 197;
                                break;
                        
                         case 23:
                                cSampleVal -= 190;
                                break;
                        
                         case 24:
                                cSampleVal -= 182;
                                break;
                           
                        case 25:
                                cSampleVal -= 170;
                                break;
                        
                         case 26:
                                cSampleVal -= 162;
                                break;
                        
                        
                         case 27:
                                cSampleVal -= 159;
                                break;
                        
                         case 28:
                                cSampleVal -= 150;
                                break;
                        
                         case 29:
                                cSampleVal -= 141;
                                break;
                        
                         case 30:
                                cSampleVal -= 132;
                                break;
                           
                        case 31:
                                cSampleVal -= 121;
                                break;
                        
                        
                        
                        
                        
                                             
                        case 32:
                                cSampleVal -= 112;
                                break;
                        
                        case 33:
                                cSampleVal -= 101;
                                break;
                        
                        case 34:
                                cSampleVal -= 91;
                                break;
                        
                        case 35:
                                cSampleVal -= 82;
                                break;
                        
                        case 36:
                                cSampleVal -= 75;
                                break;   
                        case 37:
                                cSampleVal -= 68;
                                break;
                        
                        case 38:
                                cSampleVal -= 60;
                                break;
                        
                        case 39:
                                cSampleVal -= 50;
                                break;
                        
                        case 40:
                                cSampleVal -= 40 ;
                                break;
                        
                        case 41:
                                cSampleVal -= 37;
                                break;
                        case 42:
                                cSampleVal -= 25;
                                break;
                        
                        case 43:
                                cSampleVal -= 18;
                                break;
                        
                        case 44:
                                cSampleVal -= 11;
                                break;
                        
                        case 45:
                                cSampleVal += 1;
                                break;
                        
                        default:
                                break;         
                }
      
}


void ReadADCSample(void)
{
        unsigned int i,adc_data;
               
//        cOldTemp = cSampleVal;
        if(bHeatOK == 0)
        {
                if(b100ms == 1)
                {
                        HeatDisable();
                        adc_data = read_adc(0);  
                        adc_data = 0;
                        for(i = 0;i < 2; i++)
                                adc_data += read_adc(0) + 190;  
                        cSampleVal = (adc_data >> 1);
                        if(bHeatDisable == 0)
                        HeatEnable();               
                }   
                else
                        return;
        }
        else                                                
        {   
                if(b40ms == 1)
                {
                        HeatDisable();      
                        adc_data += read_adc(0);                         
                        adc_data = 0;
                        for(i = 0;i < 2; i++)
                                adc_data += read_adc(0);  
                        cSampleVal = (adc_data >> 1) + 190;
                        if(cSampleVal > 190)
                                TempAdj();
                        
                        
                }
                else
                        return;
        }                 
        if(cSampleVal > 720)
        {        bAlarm = 1;
                    HeatDisable();       
        }
        else
                bAlarm = 0;  
       
         
       
           //if(cSetPara[2] == 0)
           if(bShowType == 0)
           {
                cSampleVal *= 5;
                cSampleVal /= 7;
                  cControlVal = 1;
          }
           else
           {
            cSampleVal *= 9;
                cSampleVal /= 7;
             cSampleVal += 32;
                   cControlVal = 2;            
        }
        if(cSampleVal <= (cControlTemp - 32))
        {
                
                bTempDown = 1;
        }
        if(bTempDown == 1)
        {
                cControlTemp = cControlTemp + 10;
               // cControlTemp = cControlTemp ;
                if(cSampleVal > cControlTemp)
                {
                        bTempDown = 0;
                }
        }
           if((cSampleVal <= (cControlTemp - cControlVal)) && (bClosePower == 0)
                     && ((bSetTemp == 0) ||
                     ((bSetTemp == 1)&& (bSetPara ==1))||
                     ((bSetTemp == 1)&& (bInputAdjust == 1))))
           {                                       
                   if((!(PORTB & 0x10)) && (bAlarm == 0)&&(bHeatEn == 1)&&(bHeatDisable == 0))
                   {
                           cSlpTimer++;
                             HeatEnable();
                   }
           }  
           if(((bSetTemp == 1)&&(bSetPara == 0)&&(bInputAdjust == 0))||(cSampleVal >= cControlTemp))
                     HeatDisable();
          
          
        if(cSampleVal <= (cControlTemp - 30))
        {
                bCloseCount = 0;
                cCloseTime = 0;
        }
        else
                bCloseCount = 1;
               
        if((bHeatOK == 1) && (bSleep == 0) && (bClosePower == 0))
        {
                if((cSampleVal < (cControlTemp - cSetPara[4])))
                {        bHeatError = 1;                                  
                          HeatEnable();
                }
                   else
                           bHeatError = 0;
           }
}

// Declare your global variables here
void main(void)
{
        // Declare your local variables here
    unsigned char i;
   
        // Input/Output Ports initialization
        // Port B initialization
        // Func7=In Func6=In Func5=Out Func4=Out Func3=In Func2=Out Func1=Out Func0=Out
        // State7=P State6=P State5=1 State4=1 State3=P State2=1 State1=1 State0=1
        PORTB = 0xF7;
        DDRB = 0xb7;

        // Port C initialization
        // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=In
        // State6=P State5=P State4=P State3=P State2=P State1=1 State0=P
        PORTC = 0x7F;
        DDRC = 0x0;

        // Port D initialization
        // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
        // State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
        PORTD = 0xFF;
        DDRD = 0xFF;

        // Timer/Counter 0 initialization
        // Clock source: System Clock
        // Clock value: Timer 0 Stopped
        TCCR0 = 0x00;
        TCNT0 = 0x00;

        // Timer/Counter 1 initialization
        // Clock source: System Clock
        // Clock value: 1000.000 kHz
        // Mode: Normal top=FFFFh
        // OC1A output: Discon.
        // OC1B output: Discon.
        // Noise Canceler: Off
        // Input Capture on Falling Edge
        TCCR1A=0x00;
        TCCR1B=0x01;
        TCNT1H = 0xFC;
        TCNT1L = 0x17;
        ICR1H=0x00;
        ICR1L=0x00;
        OCR1AH=0x00;
        OCR1AL=0x00;
        OCR1BH=0x00;
        OCR1BL=0x00;

        // Timer/Counter 2 initialization
        // Clock source: System Clock
        // Clock value: Timer 2 Stopped
        // Mode: Normal top=FFh
        // OC2 output: Disconnected
        ASSR = 0x00;
        TCCR2 = 0x00;
        TCNT2 = 0x00;
        OCR2 = 0x00;

        // External Interrupt(s) initialization
        // INT0: Off
        // INT1: Off
        MCUCR = 0x00;

        // Timer(s)/Counter(s) Interrupt(s) initialization
        TIMSK = 0x04;

        ACSR=0x80;
        SFIOR=0x00;

        // ADC initialization
        // ADC Clock frequency: 62.500 kHz
        // ADC Voltage Reference: AREF pin
        // ADC High Speed Mode: Off
        ADMUX=ADC_VREF_TYPE;
        ADCSRA=0x87;
        SFIOR&=0xEF;
/*
        // Analog Comparator initialization
        // Analog Comparator: Off
        // Analog Comparator Input Capture by Timer/Counter 1: Off
        // Analog Comparator Output: Off
        ACSR=0x80;
        SFIOR=0x00;

        // ADC initialization
        // ADC Clock frequency: 62.500 kHz
        // ADC Voltage Reference: AREF pin
        // ADC High Speed Mode: Off
        ADMUX=ADC_VREF_TYPE;
        ADCSRA=0x84;
        SFIOR&=0xEF;
*/       
        WatchDog();  
               
        InitEEPROM();
        #asm("WDR");
       
        for(i = 0; i < 10; i++)
        {
                ptr_to_eeprom = (i << 1);
                cSetPara = *ptr_to_eeprom;
        }
        cZphOld = cZphNew;
        cZphNew = PINC.1;
        if(PINC.1 == 0)
        {                  
            HeatDisable();     
          bHeatDisable = 1;
                     
        }                                 
        if(cSetPara[2] >1)
                cSetPara[2] = 0;
        if((cSetPara[0] > 450) && (cSetPara[2] == 0))
        {
                cSetPara[0] = 350;
                cSetPara[1] = 0;
        }
        else if((cSetPara[0] > 842) && (cSetPara[2] == 1))
        {
                cSetPara[0] = 700;
                cSetPara[1] = 0;       
        }
        if(((PINB & 0x8) == 0)&&(PINC.2 == 0)&&(PINC.3 == 0))
//        if((~PINC) & 0xc)
        {                             
                cSetParaNo = 0;
                bSetPara = 1;
                ShowSetPara();
        }
        else
                ShowSetTemp();
        bShowType = cSetPara[2];
        HeatDisable();   
        cSampleVal = 25;
        cFirstOpen = 7;   
        bFirstOpen = 1;                       

        // Global enable interrupts
        #asm("sei")

        while (1)
    {
             // Place your code here
                #asm("WDR");
             TimeProc();
        ClosePowerProc();                                     
             CheckKey();
             CheckReceive();
        if(cSetPara[1] >= 1000)            
                  cControlTemp = 1000 + cSetPara[0] - cSetPara[1];
        else
                  cControlTemp = cSetPara[0] + cSetPara[1];                                       
        if(bSleep == 1)     
        {
                  if(cSetPara[2] == 0)            
                            cControlTemp = 200;
                  else
                            cControlTemp = 400;
        }
        ReadADCSample();                            
             if((bSetTemp == 0) && (bSetPara == 0) && (bShowAdjust == 0)
                     && (b100ms == 1))
             {  
                     if(bClosePower == 1)
                     {
                             // display "- - -"
                                   cDispBuf[2] = 10;
                                   cDispBuf[1] = 10;
                                   cDispBuf[0] = 10;                    
                     }
                     else if(bFirstOpen == 1)
                           {      
                         //display"8.8.8."
                        cDispBuf[2] = 20;
                           cDispBuf[1] = 20;
                           cDispBuf[0] = 20;                    
                         }
                 else if (PINC.1 == 0)
                         {
                          bHeatDisable = 1;
                          
                         SpeakOn();  
                           //display"H.S.E."
                           if(cBlinkTime & 0x80)
                                 {
                                cDispBuf[2] = 17;
                                   cDispBuf[1] = 14;
                                   cDispBuf[0] = 18;
                                   }
                                   else
                                    {
                                cDispBuf[2] = 19;
                                   cDispBuf[1] = 19;
                                   cDispBuf[0] = 19;
                                   }
                           }
                     else if (PINB.6 == 1)
                           // display"C-E"  
                     {      
                             SpeakOn();
                             if(cBlinkTime & 0x80)
                                 {
                                     cDispBuf[2] = 12;
                                   cDispBuf[1] = 10;
                                   cDispBuf[0] = 18;
                               }
                                       else
                                   {
                                           cDispBuf[2] = 19;
                                           cDispBuf[1] = 19;
                                           cDispBuf[0] = 19;                                  
                                   }
                }
                     else if(bAlarm == 1)
                           {     
                           SpeakOff();   
                                   if(cBlinkTime & 0x80)
                                   {            
                                           // display "S - E"
                                           cDispBuf[2] = 14;
                                           cDispBuf[1] = 10;
                                           cDispBuf[0] = 18;
                                   }
                                   else
                                   {
                                           cDispBuf[2] = 19;
                                           cDispBuf[1] = 19;
                                           cDispBuf[0] = 19;                                  
                                   }
                           }
                     else if(bHeatError == 1)
                     {                     
                                   if(cBlinkTime & 0x80)
                                   {            
                                     // display "H - E"
                                           cDispBuf[2] = 17;
                                           cDispBuf[1] = 10;
                                           cDispBuf[0] = 18;                    
                                   }
                                   else
                                   {
                                           cDispBuf[2] = 19;
                                           cDispBuf[1] = 19;
                                           cDispBuf[0] = 19;                                  
                                   }
                     }  
                    
                else if(bSleep == 1)
                {
                                   // display "S L P"
                                   cDispBuf[2] = 14;
                                   cDispBuf[1] = 15;
                                   cDispBuf[0] = 16;                                                       
                }
                     else if((bHeatOK == 0) || (bDownLimit == 1) || (bUpLimit == 1))
                     {
                             cDispBuf[2] = cSampleVal / 100;
                             cDispBuf[1] = cSampleVal % 100/10;
                             cDispBuf[0] = cSampleVal % 10;
                     }   
                     else
                     {
                                   ShowSetTemp();
                                   //cDispBuf[2] = cSampleVal / 100;
                                   //cDispBuf[1] = cSampleVal % 100/10;
                                   //cDispBuf[0] = cSampleVal % 10;
                   }
             }
             if(cSampleVal < (cControlTemp - 30*(cSetPara[2]+1)))
             {      
                     if(b100ms)
                     {
                             if(++cDownLimit >= 2)
                             {
                                     bDownLimit = 1;
                                     cDownLimit = 0;
                             }
                     }
              }                   
                    
             else
                     bDownLimit = 0;
             if(cSampleVal > (cControlTemp + 30*(cSetPara[2]+1)))
                     bUpLimit = 1;
             else
                     bUpLimit = 0;       
          if((bHeatOK == 0) && (bSetTemp == 0) && (bAlarm == 0)
                           && (cSampleVal >= cControlTemp))
                   {                       
                           bDownLimit = 0;
                           bHeatOK = 1;
                           SpeakOn();
                           cSpeakTime = 20;
                           ShowSetTemp();
                   }
    }
}

出0入0汤圆

发表于 2011-9-24 22:35:42 | 显示全部楼层
学习。

出0入0汤圆

发表于 2011-9-24 23:24:25 | 显示全部楼层
楼主强大我跟楼主学习

出0入0汤圆

发表于 2011-10-10 23:53:11 | 显示全部楼层
学习。。。。。。。。
真的成品焊台很可能没用PID控制

出0入0汤圆

发表于 2011-10-11 10:03:13 | 显示全部楼层
回复【186楼】wangyj173
学习。。。。。。。。
真的成品焊台很可能没用pid控制
-----------------------------------------------------------------------

是的,至少热风抢没有,直接可控硅控制.

出0入0汤圆

发表于 2011-10-11 10:43:18 | 显示全部楼层
mark!hao tie zi

出0入0汤圆

发表于 2011-12-19 13:03:42 | 显示全部楼层
马克!

出0入0汤圆

发表于 2011-12-19 23:46:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-17 10:15:00 | 显示全部楼层
太好了

出0入0汤圆

 楼主| 发表于 2012-1-18 21:14:48 | 显示全部楼层
大家注意:这个是我刚学单片机弄的,问题特多!有很多错误,时间太长,很多忘了,无法修正!

出0入0汤圆

发表于 2012-1-19 13:39:51 | 显示全部楼层
mark  mark

出0入0汤圆

发表于 2012-2-13 19:37:20 | 显示全部楼层
不管怎么样,先留着

出0入0汤圆

发表于 2012-2-14 11:04:11 | 显示全部楼层
回复【30楼】153290557 啊峰
-----------------------------------------------------------------------

你这样的PWM 是乱控制可控硅的,可控硅要有过零起始为标记来开启角度达到控制电压,做控制下马达或灯泡你就发现问题了。

出0入0汤圆

发表于 2012-2-23 15:13:29 | 显示全部楼层
回复【145楼】he969240
-----------------------------------------------------------------------

学习中,能把937电路图和HEX资料发给我吗?谢谢!(QQ:413903466)

出0入0汤圆

发表于 2012-3-1 01:35:56 | 显示全部楼层
收藏

出0入0汤圆

发表于 2012-3-1 02:31:47 | 显示全部楼层
make

出0入0汤圆

发表于 2012-3-1 09:41:01 | 显示全部楼层
make

出0入0汤圆

发表于 2012-3-1 10:12:17 | 显示全部楼层
最好用mos管,效率高

出0入0汤圆

发表于 2012-3-1 12:12:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-1 15:44:55 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 00:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表