設(shè)計(jì)一個(gè)聲、光、紅外同時(shí)控制的門燈系統(tǒng):
1、光敏控制燈在白天不亮,只在晚上聲控檢測到聲音或者紅外檢測到人靠近時(shí)燈亮;
2、聲音消失或人離開后延時(shí)30秒燈熄滅。
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit ADCLK= P1^0;//時(shí)鐘,初始狀態(tài)為0
sbit ADDI= P1^1;//數(shù)據(jù)輸入
sbit ADDO = P1^2; // 數(shù)據(jù)輸出
sbit ADCS= P1^3;
sbit led=P3^3;//燈
sbit man=P3^2;//人體
sbit voice=P3^1;//聲音
uint miao=0;//計(jì)時(shí)
//將AD轉(zhuǎn)換來的二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)
unsigned int zhuanhuan() //AD轉(zhuǎn)換,返回結(jié)果
{
unsigned char i = 0,channel=2;
unsigned char j;
unsigned int dat = 0;
unsigned char ndat = 0;
ADDI = 1;//輸入引腳拉高
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCS = 0;//片選
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 1;//拉高時(shí)鐘
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 0;//拉低時(shí)鐘
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 1;//拉高時(shí)鐘
ADDI = channel & 0x1;
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 0;//拉低時(shí)鐘
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 1;//拉高時(shí)鐘
ADDI = (channel >> 1) & 0x1;
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 0;//拉低時(shí)鐘
ADDI = 1;//輸出1
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
dat = 0; //存儲(chǔ)清零
for (i = 0; i < 8; i++) //循環(huán)8次
{
dat |= ADDO;//讀取引腳
ADCLK = 1; //拉高時(shí)鐘
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
ADCLK = 0;//拉低時(shí)鐘
_nop_();//延時(shí)1us
_nop_();//延時(shí)1us
dat <<= 1;//左移
if (i == 7) dat |= ADDO;//讀取引腳
}
?
閱讀全文