|
3黑幣
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit DQ1=P2^0; //傳感器A定義使用單片機(jī)P20端口
sbit DQ2=P2^1; //傳感器B定義使用單片機(jī)P21端口
sbit DQ3=P2^2; //傳感器C定義使用單片機(jī)P22端口
sbit DQ4=P2^3; //傳感器D定義使用單片機(jī)P23端口
sbit DQ5=P2^4; //傳感器E定義使用單片機(jī)P24端口
unsigned char car_num=0; //車位數(shù)值
unsigned char Set_car_H=5; //設(shè)置車數(shù)數(shù)值
signed char s_car_num=0; //剩余車位數(shù)值
uchar flag1,flag2; //設(shè)置 2 個標(biāo)志位
uchar flag3,flag4; //設(shè)置 2 個標(biāo)志位
uchar flag5,flag6; //設(shè)置 2 個標(biāo)志位
uchar flag7,flag8; //設(shè)置 2 個標(biāo)志位
uchar flag9,flag10; //設(shè)置 2 個標(biāo)志位
uchar N1=0,N11=0; //有車或者沒有標(biāo)志
uchar N2=0,N22=0;
uchar N3=0,N33=0;
uchar N4=0,N44=0;
uchar N5=0,N55=0;
#include"nrf905.c"
void jishu();
void campare_display();
void delay_us(uint z) //延時
{
uint a,b;
for(a=z;z>0;z--)
for(b=110;b>0;b--);
}
///////////////////////////////////////////////////////////////
/******************主函數(shù)************************/
void main()
{
uchar num;
nRF905Init(); //NRF905的初始化
Config905(); //配置無線模塊NRF905
TxBuf[0]=1; //模塊
while(1)
{
jishu(); //車位統(tǒng)計
campare_display(); //車位號識別
TxBuf[1]=car_num/10;//十位
TxBuf[2]=car_num%10;//個位
num++;
if(num==2){ //模塊
num=0;
TX(); //發(fā)送
}
}
}
void campare_display() //比較
{
if((N1==1)||(N2==1)||(N3==1)||(N4==1)||(N5==1)) {
if(N1==1){
TxBuf[3]='A';
}
else{
TxBuf[3]=0;
}
if(N2==1){
TxBuf[4]='B';
} else{
TxBuf[4]=0;
}
if(N3==1){
TxBuf[5]='C';
} else{
TxBuf[5]=0;
}
if(N5==1){
TxBuf[6]='D';
} else{
TxBuf[6]=0;
}
if(N4==1){
TxBuf[7]='E';
} else{
TxBuf[7]=0;
}
} else{
// Lcd_ShowSring(1,0," ");
}
}
//****************************************************
void jishu() //統(tǒng)計車位數(shù)函數(shù)
{
if(DQ1==0) //車位1
{
delay_us(5); //類似于去抖
if(DQ1==0)
{
flag1=1; //標(biāo)志位flag1
}
}
if(flag1==1)// flag1=1 傳感器A 紅外對管檢測到 說明有車
{
delay_us(5);
if(N1==0){
car_num++; //車位數(shù)值加1
N1=1;
} //
flag1=0; //清標(biāo)志位
flag2=1; //啟動標(biāo)志
N11=0;
}
if(DQ1==1&&flag2==1) { //否則檢測不到車
if(N11==0){
car_num--; //車位數(shù)值減1
TxBuf[3]=0;
N11=1;
}
N1=0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(DQ2==0) //車位2
{
delay_us(5); //類似于去抖
if(DQ2==0)
{
flag3=1; ////標(biāo)志位flag3
}
}
if(flag3==1)// 傳感器B 紅外對管檢測到 說明有車
{
delay_us(5);
if(N2==0){
car_num++; //車位數(shù)值加1
N2=1;
}
flag3=0; //清空標(biāo)志位
flag4=1; //啟動標(biāo)志
N22=0;
}
if(DQ2==1&&flag4==1) { //否則檢測不到車
if(N22==0){
car_num--; //車位數(shù)值減1
TxBuf[4]=0;
N22=1;
}
N2=0;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
if(DQ3==0) //車位3
{
delay_us(5); //類似于去抖
if(DQ3==0)
{
flag5=1; ////標(biāo)志位flag5
}
}
if(flag5==1)// 傳感器C 紅外對管檢測到 說明有車
{
delay_us(5);
if(N3==0){
car_num++; //車位數(shù)值加1
N3=1;
} //
flag5=0; //清空標(biāo)志位
flag6=1; //啟動標(biāo)志
N33=0;
}
if(DQ3==1&&flag6==1) { //否則檢測不到車
if(N33==0){
car_num--;
TxBuf[5]=0; //車位數(shù)值減1
N33=1;
}
N3=0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(DQ4==0) //車位4
{
delay_us(5); //類似于去抖
if(DQ4==0)
{
flag7=1; ////標(biāo)志位flag7
}
}
if(flag7==1)// 傳感器D 紅外對管檢測到 說明有車
{
delay_us(5);
if(N4==0){
car_num++; //車位數(shù)值加1
N4=1;
} //
flag7=0; //清空標(biāo)志位
flag8=1; //啟動標(biāo)志
N44=0;
}
if(DQ4==1&&flag8==1) { //否則檢測不到車
if(N44==0){
car_num--; //車位數(shù)值減1
TxBuf[7]=0;
N44=1;
}
N4=0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(DQ5==0) //車位5
{
delay_us(5); //類似于去抖
if(DQ5==0)
{
flag9=1; //
}
}
if(flag9==1)// 傳感器E 紅外對管檢測到 說明有車
{
delay_us(5);
if(N5==0){
car_num++;
N5=1;
} //
flag9=0; //清空標(biāo)志位
flag10=1; //啟動標(biāo)志
N55=0;
}
if(DQ5==1&&flag10==1) { //否則檢測不到車
if(N55==0){
car_num--; //車位數(shù)值減1
TxBuf[6]=0;
N55=1;
}
N5=0;
}
}
|
|