沈阳航空航天大学北方科技学院课程设计论文 附录1 程序清单
#define true 1 #define false 0 #define on 0 #define off 1
sbit In=P3^0; //进入方向感应 sbit Out=P3^1;
//走出方向感应
sbit InLed=P3^2; //进入指示灯 sbit OutLed=P3^3;
//走出指示灯
sbit DU=P2^6;
//8段码段选择 sbit WE=P2^7;
//8段码位选择
unsigned char code LEDTable[]=
{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, //8段码显示0-9
0x0f,0x54,0x5c,0X3E,0X00
//8段码显示特殊字符
// I N O U
};
人行通道流量监测系统的设计
第 14 页
沈阳航空航天大学北方科技学院课程设计论文 人行通道流量监测系统的设计
void init_time(void);
//定时器1初始化
void refreshled(unsigned char seg0, //8段码显示内容更新
unsigned char seg1, unsigned char seg2, unsigned char seg3, unsigned char seg4, unsigned char seg5, unsigned char seg6, unsigned char seg7
);
unsigned char ledcount;
unsigned char idata leddata[8];
unsigned int idata countt1;
unsigned char NumIn,NumOut;
//数码管轮流显示控制
//6位数码管各自的显示内容
//定时1计数
//NumIn表示进入人数
//NumOut表示走出人数第 15 页
沈阳航空航天大学北方科技学院课程设计论文 人行通道流量监测系统的设计
bit InRealse,OutRealse;
void main(void) {
NumIn=0;
//进入人数初始化为0 //走出人数初始化为0
//显示 In00 Ou00
//定时器初始化
//主程序
init_time();
NumOut=0;
refreshled(10,11,0,0,12,13,0,0); while(true) {
InLed=In;
//进入方
向指示灯亮灭控制
OutLed=Out;
//走出方
向指示灯亮灭控制
if((In==0)&&(InRealse==1))
//判断进入方
向感应 增
InRealse=0;
//标志位
{
NumIn++;
//个数递
清零
refreshled(10,11,NumIn/10,NumIn,12,13,NumOut/10,NumOut); //更新
显示进入人数
} if(In==1) {
InRealse=1;
第 16 页
沈阳航空航天大学北方科技学院课程设计论文 人行通道流量监测系统的设计
}
if((Out==0)&&(OutRealse==1))
//判断走出方
向感应 增
OutRealse=0;
//标志位清零
{
NumOut++;
//个数递
refreshled(10,11,NumIn/10,NumIn,12,13,NumOut/10,NumOut); //更新显
示走出人数 }
}
}
if(Out==1) { }
OutRealse=1;
void init_time(void) {
第 17 页
TMOD=0x11; //定时器0,1工作方式1
沈阳航空航天大学北方科技学院课程设计论文 人行通道流量监测系统的设计
ET1=true; TH1=0xfb; TL1=0x80; TR1=true;
//定时器1触发位置位,开始定时
//定时器1开中断 //定时器th1,tl1初值输入
EA=1;
_nop_(); return; }
void refreshled(unsigned char seg0,
unsigned char seg1, unsigned char seg2, unsigned char seg3, unsigned char seg4, unsigned char seg5, unsigned char seg6,
unsigned char seg7
)
{
leddata[0]=LEDTable[seg0];
//开总中断
//查表更新数据
//每位需显示的数字换算段码
第 18 页