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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機數顯可編程延時接通或延時斷開模塊原理圖與源程序

  [復制鏈接]
跳轉到指定樓層
樓主
【簡要說明】
此工業級板的作用是,模塊供電后,數碼管顯示設定時間,倒計時開始,當數碼管倒計時到0時,繼電器接通或者斷開,此模塊有三種工作模式,客戶可以根據自己的需要進行選型。
三種工作形式分別是:
1、延時接通型:即,模塊通電后,繼電器保持通電前狀態,當延時時間到達數碼管設定時間值時,繼電器吸合,并一直保持吸合狀態,直到斷開供電電源為止。
2、延時斷開型:即,模塊通電后,繼電器立即吸合并保持吸合狀態,當延時時間達到數碼管設定值時,繼電器斷開,并保持斷開狀態,直到,模塊斷電在從新供電才重復工作。
3、連續通斷型:即,模塊通電后,繼電器根據數碼管設定時間,延時接通,然后再根據數碼管設定時間,延時斷開,一直連續循環下去。直到模塊斷開電源才停止工作。
【簡要說明】
一、板子尺寸:長72mmX32mmX18mm
二、主要器件:單片機、數碼管、繼電器
三、工作電壓:有5V12V兩種可供選擇
四、板子功耗:小于150mA
五、特點:
         1、具有繼電器輸出信號指示功能。
         2供電即可工作無需外部觸發。
         3三種工作模式,滿足各種模式。
         4如果您會單片機,可以根據自己需要,任意編程,我們可提供參考程序和相關資料。
         5、兩個按鍵任意調節延時時間。
         6、最高響應次數 每秒通斷一次。
         7、可以和72MM卡槽板配合安裝在DIN導軌上
         8、繼電器觸點干接點輸出,可以控制交流或者直流250V以內任何負載。     9、端子采用螺旋壓接端子           
         10、工作溫度-40度至 +70度
         11、工作濕度 10%  ~ 80%RH
         12、四周有4個固定安裝孔
         13、具有電磁抗干擾能力
         14、板子穩定工作可靠

數顯可編程延時接通或延時斷開模塊的電路原理圖:


pcb圖:


元件清單:


實物圖與接線圖等資料:



延時斷開再延時接通循環_通秒斷分單片機源程序如下:
  1. #include <reg52.h>
  2. #include "intrins.h"
  3. #define uchar unsigned char//宏定義無符號字符型
  4. #define uint unsigned int  //宏定義無符號整型
  5. uchar T0RH = 0;  //T0重載值的高字節
  6. uchar T0RL = 0;  //T0重載值的低字節
  7. uchar i = 0;


  8. uchar j1 = 0;           //百位時間調節                        斷開時間調節
  9. uchar j2 = 0;           //十位時間調節
  10. uchar j3 = 9;           //個位時間調節
  11. uchar x1 = 0;
  12. uchar x2 = 0;
  13. uint  x3 = 0;
  14. uint  x4 = 0;
  15. uchar x5 = 0;
  16. uint js = 0;
  17. uint js1 = 0;

  18. uchar code duan [] ={0,1,2,3,4,5,6,7,8,9};
  19. bit d1 = 1;
  20. bit d2 = 1;
  21. bit d3 = 1;
  22. sfr AUXR = 0x8e;
  23. sfr P5 = 0xc8;
  24. sfr P5M0 = 0xc9;
  25. sfr P5M1 = 0XCA;
  26. sfr P3M0 = 0xb2;
  27. sfr P3M1 = 0Xb1;
  28. sfr P1M0 = 0x92;
  29. sfr P1M1 = 0X91;

  30. /*掉電存儲*/
  31. sfr  IAP_DATA     =   0xC2;            //IAP數據寄存器
  32. sfr  IAP_ADDRH    =   0xC3;            //IAP地址寄存器高字節
  33. sfr  IAP_ADDRL    =   0xC4;            //IAP地址寄存器低字節
  34. sfr  IAP_CMD      =   0xC5;            //IAP命令寄存器
  35. sfr  IAP_TRIG     =   0xC6;            //IAP命令觸發寄存器
  36. sfr  IAP_CONTR    =   0xC7;            //IAP控制寄存器

  37. #define        CMD_IDLE     0                //空閑模式
  38. #define CMD_READ     1                //IAP字節讀命令
  39. #define        CMD_PROGRAM  2                 //IAP字節編程命令
  40. #define        CMD_ERASE    3                 //IAP扇區擦除命令
  41. #define ENABLE_IAP   0x82             //if SYSCLK<20MHz
  42. #define IAP_ADDRESS  0x0400                          //測試地址
  43. /***************************************/

  44. sbit out = P5^4;//out
  45. sbit pa = P1^0;        //a
  46. sbit pb = P3^2;        //b
  47. sbit pc = P3^7;        //c
  48. sbit pd = P1^3;        //d
  49. sbit pe = P1^2;        //e
  50. sbit pf = P1^4;        //f
  51. sbit pg = P3^3;        //g
  52. sbit p1 = P1^1;        //1
  53. sbit p2 = P3^6;        //2
  54. sbit p3 = P5^5;        //3
  55. sbit in1 =   P3^0;  
  56. sbit in2 =   P3^1;  

  57.                //按鍵函數聲明
  58. /***************************************/
  59. void ConfigTimer0(uint ms)
  60. {
  61.     unsigned long tmp;  //臨時變量
  62.    
  63.     tmp = 11059200 / 12;      //定時器計數頻率
  64.     tmp = (tmp * ms) / 1000;  //計算所需的計數值
  65.     tmp = 65536 - tmp;        //計算定時器重載值
  66.     tmp = tmp + 33;           //補償中斷響應延時造成的誤差
  67.     T0RH = (uchar)(tmp>>8);  //定時器重載值拆分為高低字節
  68.     T0RL = (uchar)tmp;
  69.         AUXR &= 0x7f;
  70.         TMOD  = 0x00;
  71.     TH0 = T0RH;     //加載T0重載值
  72.     TL0 = T0RL;
  73.     ET0 = 1;        //使能T0中斷
  74.     TR0 = 1;        //啟動T0
  75. }
  76. /*掉電存儲*/
  77. void Delay(uchar n)
  78. {
  79.      uint x;
  80.      while (n--)
  81.      {
  82.           x = 0;
  83.           while (++x);
  84.      }
  85. }
  86. /*----------------------------

  87. 關閉IAP

  88. ----------------------------*/

  89. void IapIdle()

  90. {
  91.      IAP_CONTR  = 0;                     //關閉IAP功能
  92.      IAP_CMD  = 0;                       //清除命令寄存器
  93.      IAP_TRIG  = 0;                     //清除觸發寄存器
  94.      IAP_ADDRH  = 0x80;                  //將地址設置到非IAP區域
  95.      IAP_ADDRL  = 0;
  96. }
  97. /*----------------------------

  98. 從ISP/IAP/EEPROM區域讀取一字節

  99. ----------------------------*/

  100. uchar IapReadByte(uint addr)

  101. {
  102.      uchar dat;                          //數據緩沖區
  103.      IAP_CONTR = ENABLE_IAP;           //使能IAP
  104.      IAP_CMD = CMD_READ;               //設置IAP命令
  105.      IAP_ADDRL = addr;                 //設置IAP低地址
  106.      IAP_ADDRH = addr >> 8;            //設置IAP高地址
  107.      IAP_TRIG = 0x5a;                   //寫觸發命令(0x5a
  108.      IAP_TRIG = 0xa5;                   //寫觸發命令(0xa5
  109.      _nop_();                           //等待ISP/IAP/EEPROM操作完
  110.      dat = IAP_DATA;                    //讀ISP/IAP/EEPROM數據
  111.      IapIdle();                         //關閉IAP功能
  112.      return dat;                        //返回
  113. }
  114. /*----------------------------

  115. 寫一字節數據到ISP/IAP/EEPROM區域

  116. ----------------------------*/

  117. void IapProgramByte(uint addr, uchar dat)

  118. {
  119.      IAP_CONTR = ENABLE_IAP;           //使能IAP
  120.      IAP_CMD = CMD_PROGRAM;            //設置IAP命令
  121.      IAP_ADDRL = addr;                 //設置IAP低地址
  122.      IAP_ADDRH = addr >> 8;            //設置IAP高地址
  123.      IAP_DATA = dat;                    //寫ISP/IAP/EEPROM數據
  124.      IAP_TRIG = 0x5a;                   //寫觸發命令(0x5a
  125.      IAP_TRIG = 0xa5;                   //寫觸發命令(0xa5
  126.      _nop_();                           //等待ISP/IAP/EEPROM操作完
  127.      IapIdle();
  128. }
  129. /*----------------------------

  130. 扇區擦除

  131. ----------------------------*/

  132. void IapEraseSector(uint addr)
  133. {
  134.      IAP_CONTR = ENABLE_IAP;           //使能IAP
  135.      IAP_CMD = CMD_ERASE;              //設置IAP命令
  136.      IAP_ADDRL = addr;                 //設置IAP低地址
  137.      IAP_ADDRH = addr >> 8;           //設置IAP高地址
  138.      IAP_TRIG = 0x5a;                   //寫觸發命令(0x5a
  139.      IAP_TRIG = 0xa5;                   //寫觸發命令(0xa5
  140.      _nop_();                           //等待ISP/IAP/EEPROM操作完
  141.      IapIdle();
  142. }
  143. /************************************************/

  144. void s0()
  145. {
  146.    pa = 1;
  147.    pb = 1;
  148.    pc = 1;
  149.    pd = 1;
  150.    pe = 1;
  151.    pf = 1;
  152.    pg = 0;
  153. }
  154. void s1()
  155. {
  156.    pb = 1;
  157.    pc = 1;
  158.    pa = 0;
  159.    pg = 0;
  160.    pd = 0;
  161.    pe = 0;
  162.    pf = 0;
  163. }
  164. void s2()
  165. {
  166.    pa = 1;
  167.    pb = 1;
  168.    pg = 1;
  169.    pe = 1;
  170.    pd = 1;
  171.    pf = 0;
  172.    pc = 0;
  173. }
  174. void s3()
  175. {
  176.    pa = 1;
  177.    pb = 1;
  178.    pg = 1;
  179.    pc = 1;
  180.    pd = 1;
  181.    pf = 0;
  182.    pe = 0;
  183. }
  184. void s4()
  185. {
  186.    pb = 1;
  187.    pg = 1;
  188.    pc = 1;  
  189.    pf = 1;
  190.    pa = 0;
  191.    pd = 0;
  192.    pe = 0;

  193. }
  194. void s5()
  195. {
  196.    pa = 1;
  197.    pg = 1;
  198.    pc = 1;
  199.    pd = 1;
  200.    pf = 1;
  201.    pe = 0;
  202.    pb = 0;
  203. }
  204. void s6()
  205. {
  206.    pa = 1;
  207.    pg = 1;
  208.    pc = 1;
  209.    pd = 1;
  210.    pf = 1;
  211.    pe = 1;
  212.    pb = 0;
  213. }
  214. void s7()
  215. {
  216.    pa = 1;
  217.    pb = 1;
  218.    pc = 1;
  219.    pf = 0;
  220.    pe = 0;
  221.    pd = 0;
  222.    pg = 0;
  223. }
  224. void s8()
  225. {
  226.    pa = 1;
  227.    pb = 1;
  228.    pg = 1;
  229.    pc = 1;
  230.    pd = 1;
  231.    pf = 1;
  232.    pe = 1;
  233. }
  234. void s9()
  235. {
  236.    pa = 1;
  237.    pb = 1;
  238.    pg = 1;
  239.    pc = 1;
  240.    pd = 1;
  241.    pf = 1;
  242.    pe = 0;
  243. }
  244. void s10()
  245. {
  246.    pa = 0;
  247.    pb = 0;
  248.    pc = 0;
  249.    pf = 0;
  250.    pe = 0;
  251.    pd = 0;
  252.    pg = 0;
  253. }

  254. void key()
  255. {
  256.         static uchar saomiaozhi[] = {1,1,1,1};
  257.         saomiaozhi[0] = (saomiaozhi[0]<<1) | in1;
  258.         saomiaozhi[1] = (saomiaozhi[1]<<1) | in2;
  259.         if(saomiaozhi[0] == 0x00)
  260.         {
  261.                 d1 = 0;
  262.         }
  263.         if(saomiaozhi[0] == 0xff)
  264.         {
  265.                 d1 = 1;
  266.         }
  267.         if(saomiaozhi[1] == 0x00)
  268.         {
  269.                 d2 = 0;
  270.                 d3 = 0;
  271.         }
  272.         if(saomiaozhi[1] == 0xff)
  273.         {
  274.                 d2 = 1;
  275.                 d3 = 1;
  276.         }
  277. }
  278. void xuaze(uchar j)
  279. {
  280.         if(j == 0)
  281.         {
  282.            s0();
  283.         }
  284.         else if(j == 1)
  285.         {
  286.        
  287.                 s1();
  288.         }
  289.         else if(j == 2)
  290.         {
  291.        
  292.                 s2();
  293.         }
  294.         else if(j == 3)
  295.         {
  296.        
  297.                 s3();
  298.         }
  299.         else if(j == 4)
  300.         {
  301.        
  302.                 s4();
  303.         }
  304.         else if(j == 5)
  305.         {
  306.        
  307.                 s5();
  308.         }
  309.         else if(j == 6)
  310.         {
  311.        
  312.                 s6();
  313.         }
  314.         else if(j == 7)
  315.         {
  316.        
  317.                 s7();
  318.         }
  319.         else if(j == 8)
  320.         {
  321.        
  322.                 s8();
  323.         }
  324.         else if(j == 9)
  325.         {
  326.                 s9();
  327.         }
  328. }
  329. /*數碼管顯示函數,調用在主函數中*/
  330. void xianshi1(uint sec)
  331. {
  332.                j3 = duan [sec%10];
  333.                    j2 = duan [sec/10%10];
  334.                    j1 = duan [sec/100%10];
  335. }
  336. /*數碼管掃描函數,放到中斷中,中斷時間要是1ms*/
  337. void  ssmg()
  338. {
  339.            s10();
  340.    switch (i)
  341.    {
  342.              case 0: p1 = 0;p2 = 1;p3 = 1; i++; s10(); xuaze(j1);     break;
  343.           case 1: p1 = 1;p2 = 0;p3 = 1; i++; s10(); xuaze(j2);     break;
  344.           case 2: p1 = 1;p2 = 1;p3 = 0; i=0; s10(); xuaze(j3);     break;
  345.           default: break;
  346.    }
  347. }

  348. void QL()
  349. {
  350.                                  if(js<=1)js=1;
  351.                      if(js1<=1)js1=1;
  352. }
  353. void tm0_isr() interrupt 1 using 1
  354. {
  355.           TH0 = T0RH;  //重新加載重載值
  356.       TL0 = T0RL;
  357.           ssmg();
  358.           key();
  359.           if(x2 == 1)
  360.           {
  361.                     x3++;
  362.                   if(x3>=4000)
  363.                   {
  364.                           x3 = 0;
  365.                             x1++;
  366.                           if(x1>1)
  367.                           {
  368.                                    x1 = 0;
  369.                           }
  370.                   }
  371.           }
  372.           if((x1 == 0)&&(x5 == 0))
  373.           {  
  374.                   x4++;
  375.                   if(x4>=1000)
  376.                   {          
  377.                    x4 = 0;
  378.                             js--;
  379.                           if(js==0)
  380.                           {
  381.                                  js = 0;
  382.                                  x4 = 0;
  383.                                    x1 = 1;
  384.                                  out = 1;
  385.                                  js = IapReadByte(2)*256+IapReadByte(1);
  386.                                  QL();
  387.                           }
  388.                   }
  389.           }

  390.           if((x1 == 1)&&(x5 == 0))
  391.           {
  392.                    x4++;
  393.                  if(x4>=60000)
  394.                  {
  395.                         x4 = 0;
  396.                         js1--;
  397.                         if(js1==0)
  398.                           {
  399.                                  js1 = 0;
  400.                                    x1 = 0;
  401.                                  out = 0;
  402.                                  js1 = IapReadByte(4)*256+IapReadByte(3);
  403.                                  QL();
  404.                           }
  405.                  }
  406.           }
  407. }                 
  408. void cun()
  409. {                                         if(js<=1) js=1;
  410.                      if(js1<=1) js1=1;
  411.                                          IapEraseSector(0);
  412.                                          IapProgramByte(1, js);
  413.                                      IapProgramByte(2, js>>8);
  414.                                          IapProgramByte(3, js1);
  415.                                      IapProgramByte(4, js1>>8);
  416. }

  417. void main()
  418. {


  419.         bit q1 = 1;
  420.     bit q2 = 1;
  421.         EA = 1;
  422.         ConfigTimer0(1);

  423.          P3M0 = 0xcc;
  424.          P3M1 = 0X00;
  425.          P1M0 = 0x1f;
  426.          P1M1 = 0X00;
  427.          out = 0;

  428.           js = IapReadByte(2)*256+IapReadByte(1);
  429.           js1 = IapReadByte(4)*256+IapReadByte(3);
  430.       QL();
  431.          
  432.           /***************************************/
  433.         while(1)
  434.         {


  435.          /************************************************************************************************/  
  436.              if(d1 != q1)
  437.                   {
  438.                           q1 = d1;
  439.                         if(d1 == 0)
  440.                         {
  441.                                  x5 = 1;
  442.                                 if(x1 == 0)
  443.                                 {
  444.                                             js = (js+1)%999;
  445.                      cun();
  446.                                   
  447.                                 }
  448.                                 if(x1 == 1)
  449.                                 {
  450.                                             js1 = (js1+1)%999;
  451.                      cun();
  452.                                 }
  453.                                   
  454.                                
  455.                         }
  456.                   }
  457.                 if(d2 != q2)
  458.                   {
  459.                           q2 = d2;
  460.                         if(d2 == 0)
  461.                         {
  462.                                     x5 = 1;
  463.                            if(x1 == 0)
  464.                                 {
  465.                                    if(js > 0)
  466.                                    {
  467.                                             js--;
  468.                                          if(js==0) js=1;
  469.                                          cun();
  470.                                    }
  471.                                 }
  472.                                 if(x1 == 1)
  473. ……………………

  474. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
還包含以下單片機例程:
001、延時接通循環_通斷均為秒
002、延時斷開再延時接通循環_分
003、延時斷開再延時接通循環_秒
004、延時斷開_分
005、延時斷開_秒
007、延時接通循環_通分斷秒
延時接通_分
延時接通_秒
延時接通循環_通斷均為分
延時斷開_前兩位分后一位秒



DSC_0093.JPG (131.25 KB, 下載次數: 59)

DSC_0093.JPG

DSC_0094.JPG (109.03 KB, 下載次數: 46)

DSC_0094.JPG

標示圖.JPG (92.28 KB, 下載次數: 49)

標示圖.JPG

接線圖.JPG (89.7 KB, 下載次數: 50)

接線圖.JPG

輸入輸出同電壓接線圖應用舉例延時接通.JPG (116.56 KB, 下載次數: 61)

輸入輸出同電壓接線圖應用舉例延時接通.JPG

0.png (10.11 KB, 下載次數: 66)

0.png

GYJ-0055_數顯可編程延時模塊產品循環通斷調節說明.doc

594.04 KB, 下載次數: 22, 下載積分: 黑幣 -5

數顯可編程延時模塊設計資料包含例程原理圖及PCB圖.doc

1.75 MB, 下載次數: 21, 下載積分: 黑幣 -5

數顯可編程延時模塊設計資料包含例程原理圖及PCB圖.pdf

799.11 KB, 下載次數: 21, 下載積分: 黑幣 -5

最新整理配套例程.rar

1.6 MB, 下載次數: 38, 下載積分: 黑幣 -5

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

使用道具 舉報

沙發
ID:95509 發表于 2018-2-8 09:58 | 只看該作者
謝謝樓主分享!
回復

使用道具 舉報

板凳
ID:269211 發表于 2018-2-8 15:05 | 只看該作者
謝謝樓主分享!
回復

使用道具 舉報

地板
ID:336666 發表于 2018-5-24 11:35 | 只看該作者

謝謝樓主分享!這段時間在找這種類型的資料
回復

使用道具 舉報

5#
ID:149318 發表于 2018-7-7 21:23 | 只看該作者
謝謝樓主分享!
回復

使用道具 舉報

6#
ID:272609 發表于 2018-9-16 06:55 | 只看該作者
謝謝樓主的分享,正是我想找的資料
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线国产 | 午夜寂寞福利视频 | 99pao成人国产永久免费视频 | 爱爱视频日本 | 欧洲免费视频 | 国产精品一区二区视频 | 综合色婷婷| 国产精品18久久久 | 一级午夜aaa免费看三区 | 资源首页二三区 | 日本免费在线 | 中文字幕视频三区 | 久久宗合色 | 国产精品久久久久久一区二区三区 | a久久| 青青草综合 | 在线国产一区二区 | 亚洲综合色婷婷 | 青娱乐一区二区 | 麻豆视频在线看 | 在线观看中文字幕一区二区 | 免费一区二区 | 中文字幕日韩一区 | 色黄网站 | 婷婷丁香综合网 | 久久国产精品一区二区三区 | 亚洲精品高清视频 | 亚洲精品日韩在线 | 亚洲视频一区二区三区 | 欧洲亚洲一区二区三区 | 国产一区二区不卡 | wwww.xxxx免费 | 欧美精| 亚洲精品乱码久久久久久久久久 | 久久精品网| 精品欧美 | 丁香色婷婷| 精品日韩 | 伊人国产精品 | 9191av | 国产高清视频在线播放 |