久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4252|回復: 4
收起左側

自制PCB曝光定時器 附51單片機源程序+電路

  [復制鏈接]
ID:325624 發表于 2020-3-9 11:50 | 顯示全部樓層 |閱讀模式
因為DIY感光PCB老是失敗,所以模仿大佬制作一個定時器。功能鍵用于開始/停止計時,加/減按鍵只能在非計時模式下才能調時間。調節范圍是0~999秒。采用中斷計時應該沒問題,關于延時函數老是BUG,所以使用的下載器生成的延時代碼。版主是新手,程序問題多多包涵哈。當然也可以我詢問我,盡量回復,

電路原理圖如下:
感光膜曝光定時器.png

單片機源程序如下:
顯影曝光定時器工程.rar (46.69 KB, 下載次數: 37)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:325624 發表于 2020-3-9 11:51 | 顯示全部樓層
#include <REG52.H>
#include<intrins.h>


#define uint unsigned char
   
uint time = 100; //定時時間
uint time1;
uint num = 0;    //計時達1s標志位
bit state = 0;  //工作狀態標志位


unsigned char LED7Code[]={
        0x3F,                // 0
        0x06,                // 1
        0x5B,                // 2
        0x4F,                // 3
        0x66,                // 4
        0x6D,                // 5
        0x7D,                // 6
        0x07,                // 7
        0x7F,                // 8
        0x6F,                // 9
        0x77,                // A
        0x7C,                // B
        0x39,                // C
        0x5E,                // D
        0x79,                // E
        0x71                // F
};



sbit RELAY = P3^6;   //繼電器,高電平有效
sbit BUZY   = P3^6; //蜂鳴器,高電平有效

//按鍵聲明
sbit KeyFunction = P3^2;       //功能按鍵,開始/暫停
sbit KeyAdd      = P3^3;      //按鍵加
sbit KeyMinus    = P3^4;     //按鍵減

//數碼管位聲明 ----段選為P2口
sbit duan1 = P1^0;     //從左往右,第一位
sbit duan2 = P1^1;    //從左往右,第二位
sbit duan3 = P1^2;   //從左往右,第三位
sbit duan4 = P1^3;  //從左往右,第四位

//子函數聲明
void display(void);         //數碼管掃描函數
void Delay2ms(void);       //@12.000MHz,延時5ms
void Delay10ms(void);     //@12.000MHz,延時10ms
void Delay150ms(void);   //@12.000MHz,延時150ms
void Delay200ms(void);  //@12.000MHz,延時200ms
void testKey();        //按鍵檢測



void main()
{

   
    //中斷寄存器操作
    TMOD = 0x01;   //設置定時器0工作方式(M1,M0為0,1)
    TH0 = (65536-45872)/256;     //裝初值
    TL0 = (65536-45872)%256;   //裝初值
    EA = 1;     //開總中斷
    ET0 = 1;   //開定時器0中斷
        
    //開機音效
    BUZY = 1;
    Delay200ms();        ;
    BUZY = 0;
    Delay200ms();       
    BUZY = 1;
    Delay200ms();       
    BUZY = 0;
   
        while(1)
        {
        
        time1 = time;
        display();//數碼管顯示
        testKey(); //按鍵檢測
      
           //進入計時模式
          if(state)
          {   
              time1 = time;           
              TR0 = 1;     //開啟定時器0
              RELAY = 1;  //打開繼電器   
            
              while(state)
              {                  
                testKey();
                display();
                  //判斷計時是否完成
              if(time1 == 0)
              {
                  TR0 = 0;  //關閉定時器                  
                  state = 0;
                  //蜂鳴器響三聲,表示計時結束
                  BUZY = 1;
                  Delay200ms();Delay200ms();
                  BUZY = 0;
                  Delay200ms();Delay200ms();
                  BUZY = 1;
                  Delay200ms();Delay200ms();
                  BUZY = 0;
                  Delay200ms();Delay200ms();
                  BUZY = 1;
                  Delay200ms();Delay200ms();
                  BUZY = 0;
                  
              }
            
              }  
                    RELAY = 0;   
        }
    }
}


void display(void)
{
   uint j, ge, shi, bai;
//       個位  十位  百位
        ge = time1%10;
        shi = time1%100/10;
        bai = time1/100;
   
        
    //數碼管動態掃描
    for(j=0;j<4;j++)
    {

        switch(j)
        {
            //個位顯示
            case 0:
                    duan1 = 0;
                    duan2 = 0;
                    duan3 = 0;
                    duan4 = 1;
                    P2 = LED7Code[ge];
                    break;
            //十位顯示
            case 1:
                    duan1 = 0;
                    duan2 = 0;
                    duan3 = 1;
                    duan4 = 0;
                    P2 = LED7Code[shi];
                    break;
            //百位顯示
            case 2:
                    duan1 = 0;
                    duan2 = 1;
                    duan3 = 0;
                    duan4 = 0;
                    P2 = LED7Code[bai];
                    break;
            //第四位顯示
            case 3:
            //設置模式顯示C
                if(state)
                    {
                        duan1 = 1;
                        duan2 = 0;
                        duan3 = 0;
                        duan4 = 0;
                        P2 = LED7Code[14];
                    }
            //計時模式顯示E        
                    else
                    {
                        duan1 = 1;
                        duan2 = 0;
                        duan3 = 0;
                        duan4 = 0;
                        P2 = LED7Code[12];
                    }
                    
                    break;
                    
        }   
                        Delay2ms();                //@12.000MHz  ,延時5ms
                        P2 = 0x00;
                        duan1 = 0;
                        duan2 = 0;
                        duan3 = 0;
                        duan4 = 0;
    }            
}   


//按鍵檢測函數
void testKey()
{
    //功能鍵檢測
    if(~KeyFunction)
    {
        Delay10ms();       
        
         if(~KeyFunction)
         {
            state = ~state;
             BUZY = 0;
         }
        while(~KeyFunction);
    }
//按鍵加檢測
    if(~KeyAdd)
    {
        Delay10ms();               
        
         if(~KeyAdd)
         {
            if(~state && time<999)
            {                              
                    time++;
               
            }
            Delay10ms();
                if(~KeyAdd)
                   Delay150ms();
         }
        
    }
//按鍵減檢測
      if(~KeyMinus)
    {
        Delay2ms();       
        
         if(~KeyMinus)
         {
             if(~state && time>0)
             {
                 
                   time--;
                 
             }
             Delay10ms();
              if(~KeyMinus)            
                 Delay150ms();                           
         }
        
    }         
}




void Delay2ms()                //@12.000MHz
{
        unsigned char i, j;

        _nop_();
        i = 32;
        j = 40;
        do
        {
                while (--j);
        } while (--i);
}

void Delay10ms()                //@12.000MHz
{
        unsigned char i, j;

        _nop_();
        _nop_();
        i = 156;
        j = 213;
        do
        {
                while (--j);
        } while (--i);
}

void Delay150ms()                //@12.000MHz
{
        unsigned char i, j, k;

        i = 10;
        j = 34;
        k = 160;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}


void Delay200ms()                //@12.000MHz
{
        unsigned char i, j, k;

        _nop_();
        _nop_();
        i = 13;
        j = 45;
        k = 214;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}








//中斷函數
void T0time() interrupt 1
{
    TH0 = (65536-45872)/256;     //裝初值
    TL0 = (65536-45872)%256;   //裝初值
   
    //5毫秒一次中斷,滿20次表示1秒已到
    num++;
    if(num == 20)
    {
        num = 0;
        time1--;
    }
   
   
   
}
回復

使用道具 舉報

ID:295154 發表于 2020-6-12 14:30 | 顯示全部樓層
好,學習了
回復

使用道具 舉報

ID:774631 發表于 2020-6-13 07:41 來自觸屏版 | 顯示全部樓層
謝謝分享,下載來學習下
回復

使用道具 舉報

ID:385830 發表于 2021-12-5 12:31 | 顯示全部樓層
樓主你是用立創EDA畫的原理圖吧。看著像。。。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人精品在线观看 | 蜜桃官网 | 欧美一区二 | 青青久在线视频 | 久久机热 | 亚洲精品18 | 亚洲精品视频在线看 | 亚洲国产日韩欧美 | 三级在线免费 | 久久亚洲国产 | 国产一区二区三区精品久久久 | 欧美一二三四成人免费视频 | 91视频正在播放 | 看av在线 | 日韩一区二区三区视频在线播放 | 欧美天堂在线观看 | 亚洲欧洲成人 | 色在线免费视频 | 亚洲精品一区二区三区四区高清 | 国产精品国产三级国产aⅴ原创 | 久久久精品 | 日韩免费高清视频 | 精品一区二区久久久久久久网精 | 欧美一区二区网站 | 国产精品亚洲精品日韩已方 | 在线视频 中文字幕 | 欧美激情精品久久久久久免费 | 精品国产乱码久久久久久88av | 日韩第一区 | wwwxx在线观看 | 亚洲性视频 | 欧美视频免费在线 | 玖草资源 | 亚洲人成人网 | 国产精品免费视频一区 | 久久精品 | 91久久国产综合久久 | 国产一区二区在线播放视频 | 久久在线免费 | 在线观看中文字幕 | 一区二区三区四区在线视频 |