找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1920|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

分享一個(gè)焊臺(tái)節(jié)電的單片機(jī)代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:101869 發(fā)表于 2021-9-13 12:08 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
適合各種沒有休眠功能的焊臺(tái),輸出用繼電器控制,原理是在烙鐵手柄內(nèi)裝滾珠開關(guān),烙鐵長(zhǎng)時(shí)間不動(dòng)關(guān)閉電源。代碼如下


#include "STC15F104E.H"             //單片機(jī)頭文件
#define uint unsigned int           //宏定義無(wú)符號(hào)整型數(shù)據(jù)
#define uchar unsigned char        //宏定義無(wú)符號(hào)字符型數(shù)據(jù)

sbit jy=P3^4;                  //烙鐵繼電器
sbit zd=P3^2;                  //震動(dòng)開關(guān)

uint xs,xms,cs;       //中斷計(jì)時(shí)變量
bit  ZT=0,dj=0,zd_sign=0;
void Timer0Init();        

                    void jc()//次數(shù)檢測(cè)

{
    static uint count=0;
    if (zd==1&&zd_sign==0)

    {
                count++;                                       
                if(count>=10000)                        
                {                        
                       count=0;
                      if(zd==1)
                      zd_sign=1;
                }
      }      
             if(zd==0&&zd_sign==1)   
             {
                 zd_sign=0;
                 cs++;xs=0;//cs是動(dòng)作次數(shù)

             }


            if(cs>=5&&xs==60) //一分鐘內(nèi)動(dòng)作超過5次
            { cs=0;ZT=0;xs=0;}//次數(shù)歸零重新計(jì)數(shù)
               if(cs<=4&&xs==60) //一分鐘內(nèi)動(dòng)作低于4次
               {ZT=1;cs=0;}
               if(ZT==1&&xs==400)//400秒無(wú)動(dòng)作
               {jy=0;cs=0;}//關(guān)閉電源
               if(jy==0&&cs>=2)//拿起手柄
               jy=1;//恢復(fù)供電
        }
void Timer0Init(void)                //1毫秒@11.0592MHz
{
        AUXR |= 0x80;                //定時(shí)器時(shí)鐘1T模式
        TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
        TL0 = 0xCD;                //設(shè)置定時(shí)初始值
        TH0 = 0xD4;                //設(shè)置定時(shí)初始值
        TF0 = 0;                //清除TF0標(biāo)志
        TR0 = 1;                //定時(shí)器0開始計(jì)時(shí)
}


/***************主程序****************/
void main()
{       Timer0Init();
                                       //定時(shí)器初始化
        EA=1;                                                        //開總中斷
        ET0=1;
        cs=0;


        xms=0;                                       
        xs=0;                                             
        jy=1;

        P3M1=0x00;
        P3M0=0x30;

        while(1)
        {   
            jc();



        }
}      





void timer0() interrupt  1
{        
      xms++;                                       //中斷變量Cnt50ms自+1
        if(xms>=1000)                                //1秒
        {     
              xms=0;                                //中斷變量Cnt50ms清0
               xs++;                                     //計(jì)數(shù)清0
        }            


}



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表