|
【簡(jiǎn)要說(shuō)明】 此工業(yè)級(jí)板的作用是,模塊供電后,數(shù)碼管顯示設(shè)定時(shí)間,倒計(jì)時(shí)開(kāi)始,當(dāng)數(shù)碼管倒計(jì)時(shí)到0時(shí),繼電器接通或者斷開(kāi),此模塊有三種工作模式,客戶可以根據(jù)自己的需要進(jìn)行選型。
三種工作形式分別是: 1、延時(shí)接通型:即,模塊通電后,繼電器保持通電前狀態(tài),當(dāng)延時(shí)時(shí)間到達(dá)數(shù)碼管設(shè)定時(shí)間值時(shí),繼電器吸合,并一直保持吸合狀態(tài),直到斷開(kāi)供電電源為止。 2、延時(shí)斷開(kāi)型:即,模塊通電后,繼電器立即吸合并保持吸合狀態(tài),當(dāng)延時(shí)時(shí)間達(dá)到數(shù)碼管設(shè)定值時(shí),繼電器斷開(kāi),并保持?jǐn)嚅_(kāi)狀態(tài),直到,模塊斷電在從新供電才重復(fù)工作。 3、連續(xù)通斷型:即,模塊通電后,繼電器根據(jù)數(shù)碼管設(shè)定時(shí)間,延時(shí)接通,然后再根據(jù)數(shù)碼管設(shè)定時(shí)間,延時(shí)斷開(kāi),一直連續(xù)循環(huán)下去。直到模塊斷開(kāi)電源才停止工作。 【簡(jiǎn)要說(shuō)明】 一、板子尺寸:長(zhǎng)72mmX寬32mmX高18mm
二、主要器件:?jiǎn)纹瑱C(jī)、數(shù)碼管、繼電器
三、工作電壓:有5V和12V兩種可供選擇
四、板子功耗:小于150mA
五、特點(diǎn):
1、具有繼電器輸出信號(hào)指示功能。
2、供電即可工作無(wú)需外部觸發(fā)。
3、三種工作模式,滿足各種模式。
4、如果您會(huì)單片機(jī),可以根據(jù)自己需要,任意編程,我們可提供參考程序和相關(guān)資料。
5、兩個(gè)按鍵任意調(diào)節(jié)延時(shí)時(shí)間。
6、最高響應(yīng)次數(shù) 每秒通斷一次。
7、可以和72MM卡槽板配合安裝在DIN導(dǎo)軌上。
8、繼電器觸點(diǎn)干接點(diǎn)輸出,可以控制交流或者直流250V以內(nèi)任何負(fù)載。 9、端子采用螺旋壓接端子
10、工作溫度-40度至 +70度 11、工作濕度 10% ~ 80%RH 12、四周有4個(gè)固定安裝孔
13、具有電磁抗干擾能力 14、板子穩(wěn)定工作可靠
數(shù)顯可編程延時(shí)接通或延時(shí)斷開(kāi)模塊的電路原理圖:
pcb圖:
元件清單:
實(shí)物圖與接線圖等資料:
延時(shí)斷開(kāi)再延時(shí)接通循環(huán)_通秒斷分單片機(jī)源程序如下:
- #include <reg52.h>
- #include "intrins.h"
- #define uchar unsigned char//宏定義無(wú)符號(hào)字符型
- #define uint unsigned int //宏定義無(wú)符號(hào)整型
- uchar T0RH = 0; //T0重載值的高字節(jié)
- uchar T0RL = 0; //T0重載值的低字節(jié)
- uchar i = 0;
- uchar j1 = 0; //百位時(shí)間調(diào)節(jié) 斷開(kāi)時(shí)間調(diào)節(jié)
- uchar j2 = 0; //十位時(shí)間調(diào)節(jié)
- uchar j3 = 9; //個(gè)位時(shí)間調(diào)節(jié)
- 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;
- /*掉電存儲(chǔ)*/
- sfr IAP_DATA = 0xC2; //IAP數(shù)據(jù)寄存器
- sfr IAP_ADDRH = 0xC3; //IAP地址寄存器高字節(jié)
- sfr IAP_ADDRL = 0xC4; //IAP地址寄存器低字節(jié)
- sfr IAP_CMD = 0xC5; //IAP命令寄存器
- sfr IAP_TRIG = 0xC6; //IAP命令觸發(fā)寄存器
- sfr IAP_CONTR = 0xC7; //IAP控制寄存器
- #define CMD_IDLE 0 //空閑模式
- #define CMD_READ 1 //IAP字節(jié)讀命令
- #define CMD_PROGRAM 2 //IAP字節(jié)編程命令
- #define CMD_ERASE 3 //IAP扇區(qū)擦除命令
- #define ENABLE_IAP 0x82 //if SYSCLK<20MHz
- #define IAP_ADDRESS 0x0400 //測(cè)試地址
- /***************************************/
- 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;
- //按鍵函數(shù)聲明
- /***************************************/
- void ConfigTimer0(uint ms)
- {
- unsigned long tmp; //臨時(shí)變量
-
- tmp = 11059200 / 12; //定時(shí)器計(jì)數(shù)頻率
- tmp = (tmp * ms) / 1000; //計(jì)算所需的計(jì)數(shù)值
- tmp = 65536 - tmp; //計(jì)算定時(shí)器重載值
- tmp = tmp + 33; //補(bǔ)償中斷響應(yīng)延時(shí)造成的誤差
- T0RH = (uchar)(tmp>>8); //定時(shí)器重載值拆分為高低字節(jié)
- T0RL = (uchar)tmp;
- AUXR &= 0x7f;
- TMOD = 0x00;
- TH0 = T0RH; //加載T0重載值
- TL0 = T0RL;
- ET0 = 1; //使能T0中斷
- TR0 = 1; //啟動(dòng)T0
- }
- /*掉電存儲(chǔ)*/
- void Delay(uchar n)
- {
- uint x;
- while (n--)
- {
- x = 0;
- while (++x);
- }
- }
- /*----------------------------
- 關(guān)閉IAP
- ----------------------------*/
- void IapIdle()
- {
- IAP_CONTR = 0; //關(guān)閉IAP功能
- IAP_CMD = 0; //清除命令寄存器
- IAP_TRIG = 0; //清除觸發(fā)寄存器
- IAP_ADDRH = 0x80; //將地址設(shè)置到非IAP區(qū)域
- IAP_ADDRL = 0;
- }
- /*----------------------------
- 從ISP/IAP/EEPROM區(qū)域讀取一字節(jié)
- ----------------------------*/
- uchar IapReadByte(uint addr)
- {
- uchar dat; //數(shù)據(jù)緩沖區(qū)
- IAP_CONTR = ENABLE_IAP; //使能IAP
- IAP_CMD = CMD_READ; //設(shè)置IAP命令
- IAP_ADDRL = addr; //設(shè)置IAP低地址
- IAP_ADDRH = addr >> 8; //設(shè)置IAP高地址
- IAP_TRIG = 0x5a; //寫觸發(fā)命令(0x5a
- IAP_TRIG = 0xa5; //寫觸發(fā)命令(0xa5
- _nop_(); //等待ISP/IAP/EEPROM操作完
- dat = IAP_DATA; //讀ISP/IAP/EEPROM數(shù)據(jù)
- IapIdle(); //關(guān)閉IAP功能
- return dat; //返回
- }
- /*----------------------------
- 寫一字節(jié)數(shù)據(jù)到ISP/IAP/EEPROM區(qū)域
- ----------------------------*/
- void IapProgramByte(uint addr, uchar dat)
- {
- IAP_CONTR = ENABLE_IAP; //使能IAP
- IAP_CMD = CMD_PROGRAM; //設(shè)置IAP命令
- IAP_ADDRL = addr; //設(shè)置IAP低地址
- IAP_ADDRH = addr >> 8; //設(shè)置IAP高地址
- IAP_DATA = dat; //寫ISP/IAP/EEPROM數(shù)據(jù)
- IAP_TRIG = 0x5a; //寫觸發(fā)命令(0x5a
- IAP_TRIG = 0xa5; //寫觸發(fā)命令(0xa5
- _nop_(); //等待ISP/IAP/EEPROM操作完
- IapIdle();
- }
- /*----------------------------
- 扇區(qū)擦除
- ----------------------------*/
- void IapEraseSector(uint addr)
- {
- IAP_CONTR = ENABLE_IAP; //使能IAP
- IAP_CMD = CMD_ERASE; //設(shè)置IAP命令
- IAP_ADDRL = addr; //設(shè)置IAP低地址
- IAP_ADDRH = addr >> 8; //設(shè)置IAP高地址
- IAP_TRIG = 0x5a; //寫觸發(fā)命令(0x5a
- IAP_TRIG = 0xa5; //寫觸發(fā)命令(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();
- }
- }
- /*數(shù)碼管顯示函數(shù),調(diào)用在主函數(shù)中*/
- void xianshi1(uint sec)
- {
- j3 = duan [sec%10];
- j2 = duan [sec/10%10];
- j1 = duan [sec/100%10];
- }
- /*數(shù)碼管掃描函數(shù),放到中斷中,中斷時(shí)間要是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)
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼 還包含以下單片機(jī)例程:
001、延時(shí)接通循環(huán)_通斷均為秒
002、延時(shí)斷開(kāi)再延時(shí)接通循環(huán)_分
003、延時(shí)斷開(kāi)再延時(shí)接通循環(huán)_秒
004、延時(shí)斷開(kāi)_分
005、延時(shí)斷開(kāi)_秒
007、延時(shí)接通循環(huán)_通分?jǐn)嗝?br />
延時(shí)接通_分
延時(shí)接通_秒
延時(shí)接通循環(huán)_通斷均為分
延時(shí)斷開(kāi)_前兩位分后一位秒
|