基于单片机的自动分拣机控制系统设计(6)

2019-08-30 19:02

徐刚:基于单片机的自动分拣机控制系统设计

4.3 软件程序设计

本次软件设计的I/O分配如下:

对于步进电机:四相分别接到单片机P1.0,P1.1,P1.2,P1.3口

对于数码管:本文主要利用数码管显示拨码器的拨码值,数码管连接到单片机P0口。 对于蜂鸣器报警模块:本文主要利用蜂鸣器对出错邮件报警提示,蜂鸣器报警时,指示绿灯L1熄灭,出错指示红灯L2亮。蜂鸣器接到单片机P1.7口,指示绿灯接到单片机P2.7,指示红灯接到单片机P2.6。

#include // 1个拨码器 、6个光电开关 、6个步进电机 、2个LED灯 、1

个数码管 、1个蜂鸣器

#define uchar unsigned char #define uint unsigned int unsigned int i,j;

code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //共阳数码管字段 sbit P00=P0^0; //数码管输入口 sbit P01=P0^1; sbit P02=P0^2; sbit P03=P0^3; sbit P04=P0^4; sbit P05=P0^5; sbit P06=P0^6; sbit P07=P0^7;

sbit P10=P1^0; //步进电机口 sbit P11=P1^1; sbit P12=P1^2; sbit P13=P1^3; sbit P14=P1^4; sbit P15=P1^5; sbit P16=P1^6;

sbit P17=P1^7; //蜂鸣器口 sbit P20=P2^0; //拨码器口 sbit P21=P2^1; sbit P22=P2^2; sbit P23=P2^3;

16

华东交通大学理工学院毕业设计

sbit P24=P2^4;

sbit P26=P2^6; //LED灯口 sbit P27=P2^7;

sbit P32=P3^2; //外部中断0和1 sbit P33=P3^3;

void delay(int t) //延时程序子函数1ms {

int i,j;

for(i=0;i

void main() {

EA=1; //开中断 EX0=1; IT0=1;

while(1) {

P16=1;P15=0;P14=1; //选中电机6 P10=0;P11=1;P12=1;P13=0; //电机正转

P27=0; //绿灯L1亮 if(P24==0) //1号邮件

{

P0=tab[1]; //数码管显示1 if(S1==0) //光电开关1

P10=1;P11=1;P12=1;P13=1; //电机停转 P32=0; //进入外部中断0 } }

if(P23==0) //2号邮件 P0=tab[2]; //数码管显示2 if(S2==0) //光电开关2 {

17

{

P16=0;P15=0;P14=0; //选中电机1

{

徐刚:基于单片机的自动分拣机控制系统设计

}

P10=1;P11=1;P12=1;P13=1; //电机停转 P32=0; //进入外部中断0

P16=0;P15=0;P14=1; //选中电机2

}

if(P22==0) //3号邮件 {

P0=tab[3]; //数码管显示3 if(S3==0) //光电开关3 { }

if(P21==0) //4号邮件 P0=tab[4]; //数码管显示4 if(S4==0) //光电开关4 { }

if(P20==0) //5号邮件 {

P0=tab[5]; //数码管显示5 if(S5==0) //光电开关5 {

P10=1;P11=1;P12=1;P13=1; //电机停转 }

P32=0; //进入外部中断0

P10=1;P11=1;P12=1;P13=1; //电机停转 P32=0; //进入外部中断0

P10=1;P11=1;P12=1;P13=1; //电机停转 P32=0; //进入外部中断0

P16=0;P15=1;P14=0; //选中电机3

}

{

P16=0;P15=1;P14=1; //选中电机4

}

P16=1;P15=0;P14=0; //选中电机5

}

if(P24!=0&&P23!=0&&P22!=0&&P21!=0&&P20!=0)

18

华东交通大学理工学院毕业设计

}

{ }

P0=tab[15]; //数码管显示F if(S6==0) //光电开关6 {

P27=1;P26=0; //绿灯L1灭,红灯L2亮 P10=1;P11=1;P12=1;P13=1; //电机停转 P17=1; //蜂鸣器报警 }

}

void exter0() interrupt 0 {

while(1) {

P10=0;P11=1;P12=1;P13=0; //电机正转 delay(3000);

P10=1;P11=1;P12=1;P13=1; //电机停转 delay(500); }

P10=1;P11=0;P12=0;P13=1; //电机反转 delay(3000);

P10=1;P11=1;P12=1;P13=1; //电机停转 P10=0;P11=1;P12=1;P13=0; //电机正转 if(P16==1&&P15==0&&P14==1) { }

break;

P16=1;P15=0;P14=1; //选中电机6

}

19

徐刚:基于单片机的自动分拣机控制系统设计

第五章 结 论

通过几个月的努力,在导师蒋英钰的悉心指导下,本人较好地完成了基于单片机控制的自动邮件分拣控制系统的设计。首先,我借此机会在此感谢蒋老师的耐心指导,使我学习到了许多新知识、新方法、新技巧。

本文是通过拨码器模拟邮政编码信息,通过光电传感器检测邮件的到来,产生脉冲信号传输给单片机,继而通过单片机硬件和软件编程控制步进电机分拣动作,已达到自动分拣的功能。

本文设计的单片机自动邮件分拣控制系统主要有以下特点: (1)、能够快速准确地分拣不同区域的邮件; (2)、实现了可视化操作、成本低;

(3)、通过单片机控制的步进电机可以准确地执行分拣动作;

路漫漫其修远兮,吾将上下而求索。我深知由于本人思维格局及专业知识有限,取得以上成绩还远远不够,但我一定会在以后的学习过程中不断进取、不断创新,做一名合格的专业人才。

20


基于单片机的自动分拣机控制系统设计(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:骞挎湰闆呴榿杞胯溅浣跨敤璇存槑涔 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: