【簡要說明】 此工業級板的作用是,模塊供電后,數碼管顯示設定時間,倒計時開始,當數碼管倒計時到0時,繼電器接通或者斷開,此模塊有三種工作模式,客戶可以根據自己的需要進行選型。
三種工作形式分別是: 1、延時接通型:即,模塊通電后,繼電器保持通電前狀態,當延時時間到達數碼管設定時間值時,繼電器吸合,并一直保持吸合狀態,直到斷開供電電源為止。 2、延時斷開型:即,模塊通電后,繼電器立即吸合并保持吸合狀態,當延時時間達到數碼管設定值時,繼電器斷開,并保持斷開狀態,直到,模塊斷電在從新供電才重復工作。 3、連續通斷型:即,模塊通電后,繼電器根據數碼管設定時間,延時接通,然后再根據數碼管設定時間,延時斷開,一直連續循環下去。直到模塊斷開電源才停止工作。 【簡要說明】 一、板子尺寸:長72mmX寬32mmX高18mm
二、主要器件:單片機、數碼管、繼電器
三、工作電壓:有5V和12V兩種可供選擇
四、板子功耗:小于150mA
五、特點:
1、具有繼電器輸出信號指示功能。
2、供電即可工作無需外部觸發。
3、三種工作模式,滿足各種模式。
4、如果您會單片機,可以根據自己需要,任意編程,我們可提供參考程序和相關資料。
5、兩個按鍵任意調節延時時間。
6、最高響應次數 每秒通斷一次。
7、可以和72MM卡槽板配合安裝在DIN導軌上。
8、繼電器觸點干接點輸出,可以控制交流或者直流250V以內任何負載。 9、端子采用螺旋壓接端子
10、工作溫度-40度至 +70度 11、工作濕度 10% ~ 80%RH 12、四周有4個固定安裝孔
13、具有電磁抗干擾能力 14、板子穩定工作可靠
數顯可編程延時接通或延時斷開模塊的電路原理圖:
0.jpg (27.94 KB, 下載次數: 63)
下載附件
2018-2-8 01:13 上傳
pcb圖:
0.png (468.47 KB, 下載次數: 68)
下載附件
2018-2-8 01:14 上傳
元件清單:
0.png (426.77 KB, 下載次數: 52)
下載附件
2018-2-8 01:13 上傳
實物圖與接線圖等資料:
應用舉例延時斷開.JPG (125.11 KB, 下載次數: 55)
下載附件
2018-2-8 00:27 上傳
應用舉例延時接通.JPG (130.81 KB, 下載次數: 53)
下載附件
2018-2-8 00:27 上傳
延時斷開再延時接通循環_通秒斷分單片機源程序如下:
- #include <reg52.h>
- #include "intrins.h"
- #define uchar unsigned char//宏定義無符號字符型
- #define uint unsigned int //宏定義無符號整型
- uchar T0RH = 0; //T0重載值的高字節
- uchar T0RL = 0; //T0重載值的低字節
- uchar i = 0;
- uchar j1 = 0; //百位時間調節 斷開時間調節
- uchar j2 = 0; //十位時間調節
- uchar j3 = 9; //個位時間調節
- uchar x1 = 0;
- uchar x2 = 0;
- uint x3 = 0;
- uint x4 = 0;
- uchar x5 = 0;
- uint js = 0;
- uint js1 = 0;
- uchar code duan [] ={0,1,2,3,4,5,6,7,8,9};
- bit d1 = 1;
- bit d2 = 1;
- bit d3 = 1;
- sfr AUXR = 0x8e;
- sfr P5 = 0xc8;
- sfr P5M0 = 0xc9;
- sfr P5M1 = 0XCA;
- sfr P3M0 = 0xb2;
- sfr P3M1 = 0Xb1;
- sfr P1M0 = 0x92;
- sfr P1M1 = 0X91;
- /*掉電存儲*/
- sfr IAP_DATA = 0xC2; //IAP數據寄存器
- sfr IAP_ADDRH = 0xC3; //IAP地址寄存器高字節
- sfr IAP_ADDRL = 0xC4; //IAP地址寄存器低字節
- sfr IAP_CMD = 0xC5; //IAP命令寄存器
- sfr IAP_TRIG = 0xC6; //IAP命令觸發寄存器
- sfr IAP_CONTR = 0xC7; //IAP控制寄存器
- #define CMD_IDLE 0 //空閑模式
- #define CMD_READ 1 //IAP字節讀命令
- #define CMD_PROGRAM 2 //IAP字節編程命令
- #define CMD_ERASE 3 //IAP扇區擦除命令
- #define ENABLE_IAP 0x82 //if SYSCLK<20MHz
- #define IAP_ADDRESS 0x0400 //測試地址
- /***************************************/
- sbit out = P5^4;//out
- sbit pa = P1^0; //a
- sbit pb = P3^2; //b
- sbit pc = P3^7; //c
- sbit pd = P1^3; //d
- sbit pe = P1^2; //e
- sbit pf = P1^4; //f
- sbit pg = P3^3; //g
- sbit p1 = P1^1; //1
- sbit p2 = P3^6; //2
- sbit p3 = P5^5; //3
- sbit in1 = P3^0;
- sbit in2 = P3^1;
- //按鍵函數聲明
- /***************************************/
- void ConfigTimer0(uint ms)
- {
- unsigned long tmp; //臨時變量
-
- tmp = 11059200 / 12; //定時器計數頻率
- tmp = (tmp * ms) / 1000; //計算所需的計數值
- tmp = 65536 - tmp; //計算定時器重載值
- tmp = tmp + 33; //補償中斷響應延時造成的誤差
- T0RH = (uchar)(tmp>>8); //定時器重載值拆分為高低字節
- T0RL = (uchar)tmp;
- AUXR &= 0x7f;
- TMOD = 0x00;
- TH0 = T0RH; //加載T0重載值
- TL0 = T0RL;
- ET0 = 1; //使能T0中斷
- TR0 = 1; //啟動T0
- }
- /*掉電存儲*/
- void Delay(uchar n)
- {
- uint x;
- while (n--)
- {
- x = 0;
- while (++x);
- }
- }
- /*----------------------------
- 關閉IAP
- ----------------------------*/
- void IapIdle()
- {
- IAP_CONTR = 0; //關閉IAP功能
- IAP_CMD = 0; //清除命令寄存器
- IAP_TRIG = 0; //清除觸發寄存器
- IAP_ADDRH = 0x80; //將地址設置到非IAP區域
- IAP_ADDRL = 0;
- }
- /*----------------------------
- 從ISP/IAP/EEPROM區域讀取一字節
- ----------------------------*/
- uchar IapReadByte(uint addr)
- {
- uchar dat; //數據緩沖區
- IAP_CONTR = ENABLE_IAP; //使能IAP
- IAP_CMD = CMD_READ; //設置IAP命令
- IAP_ADDRL = addr; //設置IAP低地址
- IAP_ADDRH = addr >> 8; //設置IAP高地址
- IAP_TRIG = 0x5a; //寫觸發命令(0x5a
- IAP_TRIG = 0xa5; //寫觸發命令(0xa5
- _nop_(); //等待ISP/IAP/EEPROM操作完
- dat = IAP_DATA; //讀ISP/IAP/EEPROM數據
- IapIdle(); //關閉IAP功能
- return dat; //返回
- }
- /*----------------------------
- 寫一字節數據到ISP/IAP/EEPROM區域
- ----------------------------*/
- void IapProgramByte(uint addr, uchar dat)
- {
- IAP_CONTR = ENABLE_IAP; //使能IAP
- IAP_CMD = CMD_PROGRAM; //設置IAP命令
- IAP_ADDRL = addr; //設置IAP低地址
- IAP_ADDRH = addr >> 8; //設置IAP高地址
- IAP_DATA = dat; //寫ISP/IAP/EEPROM數據
- IAP_TRIG = 0x5a; //寫觸發命令(0x5a
- IAP_TRIG = 0xa5; //寫觸發命令(0xa5
- _nop_(); //等待ISP/IAP/EEPROM操作完
- IapIdle();
- }
- /*----------------------------
- 扇區擦除
- ----------------------------*/
- void IapEraseSector(uint addr)
- {
- IAP_CONTR = ENABLE_IAP; //使能IAP
- IAP_CMD = CMD_ERASE; //設置IAP命令
- IAP_ADDRL = addr; //設置IAP低地址
- IAP_ADDRH = addr >> 8; //設置IAP高地址
- IAP_TRIG = 0x5a; //寫觸發命令(0x5a
- IAP_TRIG = 0xa5; //寫觸發命令(0xa5
- _nop_(); //等待ISP/IAP/EEPROM操作完
- IapIdle();
- }
- /************************************************/
- void s0()
- {
- pa = 1;
- pb = 1;
- pc = 1;
- pd = 1;
- pe = 1;
- pf = 1;
- pg = 0;
- }
- void s1()
- {
- pb = 1;
- pc = 1;
- pa = 0;
- pg = 0;
- pd = 0;
- pe = 0;
- pf = 0;
- }
- void s2()
- {
- pa = 1;
- pb = 1;
- pg = 1;
- pe = 1;
- pd = 1;
- pf = 0;
- pc = 0;
- }
- void s3()
- {
- pa = 1;
- pb = 1;
- pg = 1;
- pc = 1;
- pd = 1;
- pf = 0;
- pe = 0;
- }
- void s4()
- {
- pb = 1;
- pg = 1;
- pc = 1;
- pf = 1;
- pa = 0;
- pd = 0;
- pe = 0;
- }
- void s5()
- {
- pa = 1;
- pg = 1;
- pc = 1;
- pd = 1;
- pf = 1;
- pe = 0;
- pb = 0;
- }
- void s6()
- {
- pa = 1;
- pg = 1;
- pc = 1;
- pd = 1;
- pf = 1;
- pe = 1;
- pb = 0;
- }
- void s7()
- {
- pa = 1;
- pb = 1;
- pc = 1;
- pf = 0;
- pe = 0;
- pd = 0;
- pg = 0;
- }
- void s8()
- {
- pa = 1;
- pb = 1;
- pg = 1;
- pc = 1;
- pd = 1;
- pf = 1;
- pe = 1;
- }
- void s9()
- {
- pa = 1;
- pb = 1;
- pg = 1;
- pc = 1;
- pd = 1;
- pf = 1;
- pe = 0;
- }
- void s10()
- {
- pa = 0;
- pb = 0;
- pc = 0;
- pf = 0;
- pe = 0;
- pd = 0;
- pg = 0;
- }
- void key()
- {
- static uchar saomiaozhi[] = {1,1,1,1};
- saomiaozhi[0] = (saomiaozhi[0]<<1) | in1;
- saomiaozhi[1] = (saomiaozhi[1]<<1) | in2;
- if(saomiaozhi[0] == 0x00)
- {
- d1 = 0;
- }
- if(saomiaozhi[0] == 0xff)
- {
- d1 = 1;
- }
- if(saomiaozhi[1] == 0x00)
- {
- d2 = 0;
- d3 = 0;
- }
- if(saomiaozhi[1] == 0xff)
- {
- d2 = 1;
- d3 = 1;
- }
- }
- void xuaze(uchar j)
- {
- if(j == 0)
- {
- s0();
- }
- else if(j == 1)
- {
-
- s1();
- }
- else if(j == 2)
- {
-
- s2();
- }
- else if(j == 3)
- {
-
- s3();
- }
- else if(j == 4)
- {
-
- s4();
- }
- else if(j == 5)
- {
-
- s5();
- }
- else if(j == 6)
- {
-
- s6();
- }
- else if(j == 7)
- {
-
- s7();
- }
- else if(j == 8)
- {
-
- s8();
- }
- else if(j == 9)
- {
- s9();
- }
- }
- /*數碼管顯示函數,調用在主函數中*/
- void xianshi1(uint sec)
- {
- j3 = duan [sec%10];
- j2 = duan [sec/10%10];
- j1 = duan [sec/100%10];
- }
- /*數碼管掃描函數,放到中斷中,中斷時間要是1ms*/
- void ssmg()
- {
- s10();
- switch (i)
- {
- case 0: p1 = 0;p2 = 1;p3 = 1; i++; s10(); xuaze(j1); break;
- case 1: p1 = 1;p2 = 0;p3 = 1; i++; s10(); xuaze(j2); break;
- case 2: p1 = 1;p2 = 1;p3 = 0; i=0; s10(); xuaze(j3); break;
- default: break;
- }
- }
- void QL()
- {
- if(js<=1)js=1;
- if(js1<=1)js1=1;
- }
- void tm0_isr() interrupt 1 using 1
- {
- TH0 = T0RH; //重新加載重載值
- TL0 = T0RL;
- ssmg();
- key();
- if(x2 == 1)
- {
- x3++;
- if(x3>=4000)
- {
- x3 = 0;
- x1++;
- if(x1>1)
- {
- x1 = 0;
- }
- }
- }
- if((x1 == 0)&&(x5 == 0))
- {
- x4++;
- if(x4>=1000)
- {
- x4 = 0;
- js--;
- if(js==0)
- {
- js = 0;
- x4 = 0;
- x1 = 1;
- out = 1;
- js = IapReadByte(2)*256+IapReadByte(1);
- QL();
- }
- }
- }
- if((x1 == 1)&&(x5 == 0))
- {
- x4++;
- if(x4>=60000)
- {
- x4 = 0;
- js1--;
- if(js1==0)
- {
- js1 = 0;
- x1 = 0;
- out = 0;
- js1 = IapReadByte(4)*256+IapReadByte(3);
- QL();
- }
- }
- }
- }
- void cun()
- { if(js<=1) js=1;
- if(js1<=1) js1=1;
- IapEraseSector(0);
- IapProgramByte(1, js);
- IapProgramByte(2, js>>8);
- IapProgramByte(3, js1);
- IapProgramByte(4, js1>>8);
- }
- void main()
- {
- bit q1 = 1;
- bit q2 = 1;
- EA = 1;
- ConfigTimer0(1);
- P3M0 = 0xcc;
- P3M1 = 0X00;
- P1M0 = 0x1f;
- P1M1 = 0X00;
- out = 0;
- js = IapReadByte(2)*256+IapReadByte(1);
- js1 = IapReadByte(4)*256+IapReadByte(3);
- QL();
-
- /***************************************/
- while(1)
- {
- /************************************************************************************************/
- if(d1 != q1)
- {
- q1 = d1;
- if(d1 == 0)
- {
- x5 = 1;
- if(x1 == 0)
- {
- js = (js+1)%999;
- cun();
-
- }
- if(x1 == 1)
- {
- js1 = (js1+1)%999;
- cun();
- }
-
-
- }
- }
- if(d2 != q2)
- {
- q2 = d2;
- if(d2 == 0)
- {
- x5 = 1;
- if(x1 == 0)
- {
- if(js > 0)
- {
- js--;
- if(js==0) js=1;
- cun();
- }
- }
- if(x1 == 1)
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼 還包含以下單片機例程:
001、延時接通循環_通斷均為秒
002、延時斷開再延時接通循環_分
003、延時斷開再延時接通循環_秒
004、延時斷開_分
005、延時斷開_秒
007、延時接通循環_通分斷秒
延時接通_分
延時接通_秒
延時接通循環_通斷均為分
延時斷開_前兩位分后一位秒
|