這個仿真圖是模擬熱釋電傳感器使燈泡發光的,F在想在里面加一個開關,模擬壓力傳感器開關,當檢測到壓力,開關閉合,使燈泡發光,并延時20s左右,請問這個開關應該加在哪? 然后程序可以請幫忙改一下嗎?
紅外傳感仿真圖
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit XinHao =P1^0;
sbit Light =P2^0;
void Delay(void)
{
uint x, y;
for(x=100;x>0;x--)
for(y=100;y>0;y--);
}
void delay1(void) //定時器延時兩分鐘
{
uchar count=180;
TMOD=0x01; //定時器0工作方式1
TR0=1; //啟動定時器
TH0=0;
do{
TF0=0;
TL0=0x0F;
while(!TF0); //定時是否溢出
} while((count--) > 0);
TR0=0;
TF0=0;
}
void dianliang(void)
{
Light = 1; //點亮燈泡
XinHao = 1;
if(XinHao == 1) //判斷是否無信號
{
Delay(); //延時防抖動
XinHao = 1;
if(XinHao == 1) //再次確定無信號
{
delay1(); //利用定時器延時兩分鐘
Light = 0; //熄滅燈泡
}
}
}
void main(void)
{
Light = 0; //初始時燈泡熄滅
while(1)
{
XinHao = 1;
if(XinHao == 0) //檢測是否有信號
{
Delay(); //延時防信號抖動
XinHao = 1;
if(XinHao == 0)
{
dianliang(); //有,點亮燈泡
}
}
}
}
|