本科毕业设计说明(论文)
第 31 页 共 38 页
开始 系统初始启动光电探测器 有人K是 快速开否 有人K是 否 到半处限位开关吗? 是 K慢速开否 有人K是 否 到开门限位开关吗? 是 K电机停延时2秒
有人K否 K快速关是 有人K否 是 有障碍吗? 否 否 到半处限位开关吗? 是 K慢速关是 有人K否 是 有障碍吗? 否 否 到关门限位开关吗? 是 电机停延时2秒 返回
31
本科毕业设计说明(论文)
第 32 页 共 38 页
附录Ⅲ:程序源代码
主程序:
//(1)函数声明及变量定义 #include
#define uchar unsigned char #define uint unsigned int
sbit s1=P1^0; //定义行程开关1 sbit s2=P1^1; //定义行程开关4 sbit s3=P1^2; //定义行程开关5 sbit s4=P1^3; //定义行程开关8 sbit s5=P1^4; //定义霍尔传感器2 sbit s6=P1^5; //定义霍尔传感器3 sbit s7=P1^6; //定义霍尔传感器6 sbit s8=P1^7; //定义霍尔传感器7 sbit D1=P2^0; //定义手动开按钮 sbit D2=P2^1; //定义手动关按钮
sbit ADS=P3^2;//光电传感器输入的检测端子 sbit CP1=P0^0;//电机脉冲
sbit DIR1=P0^1;//电机方向,0为开门。1为关门
#define uchar unsigned char #define uint unsigned int
bit int_flag=0; //中断0标志位
bit contrl(bit diret)
32
本科毕业设计说明(论文)
第 33 页 共 38 页
void delay(uint time1)
//(2)主函数main() void main(void) { P1=0Xff;//P1口初始化
P2=0Xff;//P2口初始化
P3=0X13;//P3口初始化 Uchar int_close; ip=0X01; // INT0 高优先级
ie=0X81; //INT0开中断,CUP开中断 TCON=0X04; //INT0边沿触发 while (1)
{ if (int0_flag==1) //检测到人 { int_flag=0;//标志位清零 Control(0);//门全打开
int_flag=0;//标志位清零
wait: while(ADS==0); //如果门前无人则等待 int_close=control(1) //门开始关闭 if(int_close==0) { int0_flag=0;//标志位清零 Go to wait;
}
}
} }
33
本科毕业设计说明(论文)
第 34 页 共 38 页
//(3) service_int0()系统外部中断0程序
viod service_int0() interrupt 0 using 2 //外部中断0,用第二组寄存器 { int0_flag=1; }
//(4) control()步进电机控制程序 bit control(bit diret) {
Uint k;
cp1=1; //脉冲置于高电平 DIR1=diret; //运行方向输出 While(diret==0) {
//开门
uint temp; temp=P1;;
if (temp==0Xf9) /*加速,直到遇上霍尔传感器3,6*/ {
K=10;
While(1) { cp1=0;
delay(2*k); //延时时间逐步减少,即加速
cp1=1;
delay(2*k); k--;
if(P1==0X9f) break; } }
If (temp==0X9f) //匀速,直到遇上霍尔传感器2,7
34
本科毕业设计说明(论文)
第 35 页 共 38 页
{ While(1) { CP1=0; delay(1); CP1=1;
delay(1);
if(P1==0X6f) break; } }
if (temp==0X6f) //减速,直到遇上行程开关1,8 {
K=0;
While(1) { k++; cp1=0;
delay(2*k); //延时时间逐步减少,即加速
cp1=1;
delay(2*k);
if(P1==0Xf6) break; } } } //关门
While(diret==1) {
if (temp==0Xf6)// 加速,直到遇到霍尔传感器2,7 {
35
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机的自动门控制系统设计_毕业论文(7)在线全文阅读。
相关推荐: