欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
51單片機(jī)控制繼電器通斷多模式切換,求思路
[打印本頁]
作者:
許許許
時間:
2020-2-25 17:01
標(biāo)題:
51單片機(jī)控制繼電器通斷多模式切換,求思路
第一個模式設(shè)置單片機(jī)控制繼電器通斷時間50ms,確定執(zhí)行,50ms后繼電器斷開。按鍵可以切換下一個模式通斷時間為100ms,以此類推可以到1000ms。請問各位大神這程序要怎么弄啊感覺要很長。
作者:
wulin
時間:
2020-2-25 20:58
給你寫一個50~1000ms遞進(jìn)延時繼電器示例,按鍵與定時器互鎖。繼電器延時期間鎖按鍵
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit key=P1^0;
sbit OUT=P1^7;
uchar num=0;//鍵值變量
uchar flag=0;//中斷標(biāo)志
/***********定時器初始化****************/
void Timer0Init() //50毫秒@12.000MHz
{
TMOD |= 0x01; //設(shè)置定時器模式
TH0 = 0x3C; //設(shè)置定時初值
TL0 = 0xB0; //設(shè)置定時初值
TF0 = 0; //清除TF0標(biāo)志
// TR0 = 1; //定時器0開始計時
EA = 1; //開總中斷
ET0 = 1; //開T0中斷
}
/***********按鍵掃描程序****************/
void keyscan()
{
static uchar count=0; //消抖計數(shù)變量
static bit sign=0; //按鍵自鎖標(biāo)志
if(key==0) //檢測鍵按下
{
if(++count>=100 && sign==0 && TR0==0)//消抖/自鎖/與定時器互鎖
{
sign=1;
num++;
if(num>20)
num=0;
if(num!=0)
{
TR0=1;//開定時器
OUT=0;//閉合繼電器
}
}
}
else //松手
{
count=0; //消抖計數(shù)變量清0
sign=0; //按鍵自鎖標(biāo)志清0
}
}
/***********主函數(shù)****************/
void main()
{
Timer0Init();
while(1)
{
keyscan();
}
}
/***********中斷服務(wù)程序****************/
void Timer0Interrupt() interrupt 1
{
TH0 = 0x3C;
TL0 = 0xB0;
flag++;
if(flag>=num)//50~1000ms遞進(jìn)
{
flag=0;
OUT=1;//斷開繼電器
TR0=0;//關(guān)定時器
}
}
復(fù)制代碼
作者:
banalsheep
時間:
2020-2-25 21:03
100行以內(nèi)吧?
作者:
jmkl128
時間:
2020-2-26 08:07
設(shè)置一個變量mode,存儲于單片機(jī)內(nèi),作為默認(rèn)的繼電器通電時間,通過按鈕改變mode的數(shù)值(50,60,70,,1000ms),
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1