資源簡介
通過2路紅外對射,檢測紅外感應的順序來判斷人員進出,并由此判斷進出方向、人員數量

代碼片段和文件信息
/*************************************
STC15W201S??僅有T0?T2兩個定時器,僅有一個串口
*************************************/
//#include????
#include “STC15Fxxxx.H“
/******************************************/
sbit????P_LED?=?P1^3; //LED閃爍輸出
//?STC15F101W???1K?flash128?SRAM
/*************IO?配置************
M1???M0
0????0???準雙向口
0????1???推挽輸出
1????0???高阻輸入
1????1???開漏
****************************/
/**********30MHZ****1T***********/
/*******************************************
38K?時,在30MHZ?1T模式下,計時次數26.3us--對應789.47,分解成低電平263次,高電平526次
IO?輸出低電平紅外發射
//#define?T1MS?(65536-FOSC/1000)?????? //1T模式
//#define?T1MS?(65536-FOSC/12/1000)? //12T模式
********************************************/
/****************************************
1Hz下,1/4時間量,3/4時間不亮,以節約電能
T0計時,12T模式?每10毫秒中斷一次
******************************************/
#define?LEDT_TH??0x9E
#define?LEDT_TL??0x58
#define?LEDLMAX??10//25????//250毫秒亮
#define?LEDHMAX??250//75 ???//750毫秒不亮
/*******************串口相關*****************************/
typedef?unsigned?char?BYTE;
typedef?unsigned?int?WORD;
#define?FOSC?30000000L??????????//系統頻率?30M
#define?BAUD?9600???????????????//串口波特率
#define?NONE_PARITY?????0???????//無校驗
#define?ODD_PARITY??????1???????//奇校驗
#define?EVEN_PARITY?????2???????//偶校驗
#define?MARK_PARITY?????3???????//標記校驗
#define?SPACE_PARITY????4???????//空白校驗
//#define?PARITYBIT?EVEN_PARITY???//定義校驗位
#define?PARITYBIT?NONE_PARITY???//定義校驗位
#define?S1_S0?0x40??????????????//P_SW1.6
#define?S1_S1?0x80??????????????//P_SW1.7
bit?busy;
void?SendData(BYTE?dat);
void?SendString(char?*s);
/*volatile unsigned?char bdata?COM1flag;
sbit Fs1Rbufempty?=?COM1flag^0;
sbit Fs1Rbufffull?=?COM1flag^1;
sbit Fs1Rstart?=? ??COM1flag^2;
sbit Fs1Rdofinish?=?COM1flag^3;*/
/*************led燈處理*****************/
volatile?unsigned?char?ledTimeNum;
void?do_led(void);
/****************io中斷處理控制************************/
sbit P_first =?P3^2; ??//INT0 進
sbit????P_last??=?P3^3; ??//INT1 出
volatile unsigned?char bdata?iovalue;
volatile?unsigned?char?iovaluereadbkiovaluebeforeiovaluereadnum;???//為防止干擾,定為讀4次,機40毫秒的數據保持,否則認定為干擾
bit?ioupdateflag;? ? ?//數據有變化,則更新標志
/*************數據處理*****************/
#define IOOUTMAX 16
//volatile?unsigned?char?iobuf[IOOUTMAX]={23101320320};
volatile?unsigned?char?iobuf[IOOUTMAX];
volatile?unsigned?char?ioheadiotail;//=11;
//unsigned?char?iobufdo[IOOUTMAX];???//將數據處理用
bit?iofullflag;?? //0??數據已經滿了??;1?則為空
#define DIRECTION_MANIN 0x01//0x02 //人進去的區分
#define DIRECTION_MANOUT 0x02//0x01 //人出來的區分
unsigned?char?judgenumjudgeStartjudgemiddlejudgerearjudgeresult;?? //數據判斷用
bit?judgesomeonejudgesomeonefinishi;?? //門口中間有人標志
/************************************
2?3?1?0?進的正常流程??1?3?2?0,出的正常流程???現在判斷規,出現非零50毫秒,就認為有人,再判斷人是出來還是進去,0后第一個數字,作為
方向參考,主要是判斷3后的數據,如果為3后的數據,與第一個相等,則是退出,不增減人數,在0之前的數據是2,則是出,是1,則是進,如果3后為0,則以3之前的為參考,
**********************************/
/*************
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????5858??2018-08-31?10:16??infraT.c
?????文件???????15957??2018-08-30?19:48??infraR.c
- 上一篇:erp表結構
- 下一篇:Keymaker_Xilinx_ISE_7_1.exe
評論
共有 條評論