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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4205|回復: 4
打印 上一主題 下一主題
收起左側

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

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

電路原理圖如下:


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

評分

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

查看全部評分

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

使用道具 舉報

沙發
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 來自手機 | 只看該作者
謝謝分享,下載來學習下
回復

使用道具 舉報

5#
ID:385830 發表于 2021-12-5 12:31 | 只看該作者
樓主你是用立創EDA畫的原理圖吧?粗瘛!!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 男女免费网站 | 国产高清久久久 | 亚洲免费片 | 精品香蕉一区二区三区 | 亚洲国产日韩欧美 | 香蕉大人久久国产成人av | www.99精品 | 不卡一区 | 国产美女精品视频免费观看 | 成人精品一区二区三区中文字幕 | 三级黄视频在线观看 | av毛片在线播放 | 国产精品夜间视频香蕉 | 亚洲狠狠丁香婷婷综合久久久 | 亚洲国产成人av | 久久久久亚洲精品中文字幕 | 亚洲永久在线 | 91精品国产综合久久福利软件 | 国产在线精品一区二区 | 欧美精品久久久久 | 曰韩三级| 最新国产精品视频 | 久久一区二区三区四区 | 午夜一级大片 | 青久草视频 | 91久久精品日日躁夜夜躁国产 | 免费国产一区 | 国产精品久久久久久久久久久久冷 | 免费亚洲一区二区 | 国产ts人妖另类 | 欧美极品在线观看 | 国产精成人 | 色综合天天综合网国产成人网 | 91精品欧美久久久久久久 | 国产97久久 | 久久久爽爽爽美女图片 | 福利色导航 | 九九久久精品视频 | 欧美一区二区三区久久精品视 | 成人网址在线观看 | 精品欧美乱码久久久久久 |