基于单片机机械手的毕业设计内容摘要:
当复位脚由高电平变为低电平时,芯片为 ROM的 00H处开始运行程序。 复位外部的复位电路来实现的。 片内复位电路是复位引脚 RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的 S5P2,由复位电路采样一次。 复位 - 18 - 电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。 当时钟频率选用 6MHz 时, C 取 22μ F,Rs约为 200Ω, Rk约为 1K。 复位操作不会对内部 RAM有所影响。 4 软件系统设计 流程图 本设计系统流程图如图 11所示。 - 19 - 图 11 主程序流程图 源程序 系统源程序如下: /********************************************************/ /* 名称:机械手控制和计数系统的设计与实现 */ /* 功能:按下 S1启动机械手 */ /* 按下 S2停止机械手 */ /* 按下 S3计数器清零 */ /********************************************************/ include define uchar unsigned char define uint unsigned int uint count,a,ge,shi,bai,qian,wan。 uchar code 开始 软件初始化 键盘扫描程序 2s 键盘处理程序 电磁阀扫描 2s 电磁阀处理 否 是 是 否 显示程序 运行机械手 是 - 20 - led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。 /********************************************************//* 定义接口信息 */ /********************************************************/ sbit sled=P1^1。 //启动状态 sbit uled=P1^2。 //上升状态 sbit dled=P1^3。 //下降状态 sbit lled=P1^4。 //左行状态 sbit rled=P1^5。 //右行状态 sbit cled=P1^6。 //夹紧状态 sbit sbym1=P2^0。 sbit sbym2=P2^0。 sbit sbym3=P2^0。 sbit up=P2^3。 //上升电磁阀 sbit down=P2^4。 //下降电磁阀 sbit left=P2^5。 //左行电磁阀 sbit right=P2^6。 //右行电磁阀 sbit clamp=P2^7。 //夹紧电磁阀 sbit s1=P3^0。 //启动 sbit s2=P3^1。 //停止 sbit s3=P3^2。 //计数器清零 sbit ulimit=P3^3。 //上限 位信号 sbit dlimit=P3^4。 //下限位信号 sbit llimit=P3^5。 //左限位信号 sbit rlimit=P3^6。 //右限位信号 /********************************************************/ /* 函数声明 */ - 21 - /********************************************************/ void delay(uint t)。 //延时函数 void delay_1s(uchar t)。 //延时函数 void keyscan()。 //按键扫描 void display()。 //LED 数码管显示函数 void carry()。 //传送物体 void return0()。 //返回原位 /********************************************************/ /* 主程序 */ /********************************************************/ void main()// 主函数 { count=12345。 while(1) { keyscan()。 display()。 } } /********************************************************/ /* 传送物体函数 */ /********************************************************/ void carry() { sled=0。 //开启状态 down=1。 //开下降电磁阀 dled=0。 //下降状态 亮 while(dlimit)display()。 //等待下限为发送信号 if(dlimit==0)//机械手向下运动时是否触及下限位 { - 22 - down=0。 //关闭下降电磁阀 dled=1。 //下降状态 灭 clamp=1。 //开启夹紧电磁阀 cled=0。 //夹紧状态 亮 delay_1s(2)。 //延时 2S up=1。 //开启上升电磁阀 uled=0。 //上升状态 亮 while(ulimit)display()。 //等待上限位输入信号 if(ulimit==0)//机械手向上运动时是否触及上限位 { up=0。 //关闭上升电磁阀 uled=1。 //上升状态 灭 right=1。 //开启右行电磁阀 rled=0。 //右行状态 亮 while(rlimit)display()。 //等待右限位输入信号 if(rlimit==0)//机械手向右运动时是否触及右限位 { right=0。 //关闭右行电磁阀 rled=1。 //右行状态 灭 down=1。 //开启下降电磁阀 dled=0。 //下降状态 亮 while(dlimit)display()。 //等待下限为输入信号 if(dlimit==0)//机械手向下运动时是否触及下限位 { down=0。 //关闭下降电磁阀 dled=1。 //下降状态 灭 clamp=0。 //关闭夹紧电磁阀,讲物体放在指定位置 count++。 //计数器加 1 delay_1s(2)。 //延时 2S cled=1。 //夹紧状态 灭 } } - 23 - } } return0()。 } /********************************************************/ /* 返回原位函数 */ /********************************************************/ void return0() { up=1。 //开启 上升电磁阀 uled=0。 //上升状态 亮 while(ulimit)display()。 //等待上限位输入信号 if(ulimit==0)//机械手向上运动时是否触及上限位 { up=0。 //关闭上升电磁阀 uled=1。 //上升状态 灭 left=1。 //开启左行电磁阀 lled=0。 //左行状态 亮 while(llimit)display()。 //等待左限位输入信号 if(llimit==0) { left=0。 //关闭左行电磁阀 lled=1。 //左行状态 灭 ,此时机械手已经回到原位 } } carry()。 } /********************************************************/ /* LED数码管显示函数 */ /********************************************************/ void display() - 24 - { wan=count%100000/10000。 //显示万位 qian=count%10000/1000。 //显示千位 bai=count%1000/100。 //显示百位 shi=count%100/10。 //显示十位 ge=count%10。 //显示个位 P2=0。 P0=led[wan]。 //显示 wan 位 delay(1)。 P2=1。 P0=led[qian]。 //显示千位 delay(1)。 P2=2。 P0=led[bai]。 //显示百位 delay(1)。 P2=3。 P0=led[shi]。 //显示十位 delay(1)。 P2=4。 P0=led[ge]。 //显示个位 delay(1)。 } /********************************************************/ /* 延时函数 */ /********************************************************/ void delay(uint t) { uint i,j。 for(i=0。 it。 i++) for(j=0。 j500。 j++)。 } - 25 - /*******************************************************/ /* 1s 延时函数 */ /********************************************************/ void delay_1s(uchar t) { uint i,j,k。 for(i=0。 it。 i++) for(j=0。 j。基于单片机机械手的毕业设计
相关推荐
,有些 PLC 厂家如施耐德,它开发一种网桥装置,一边接串口设备,一边接 PLC 的现场总线 MB+。 它有两种,一种支持同一种开放的协议如 MODBUS,不需编程,另一种支持各个串口协议可以不同,但需要编程。 参见结构图三。 6 串口设备经转换(不经 PLC)上网 前面几种方法都直接或间接通过 PLC 接入智能设备。 现在,通过一种串口以太网转换器装置,它的一侧接入串口设备
客户中,彼此差别很大。 不仅各自的性质不同,而且经营规模也相差径庭。 因此,在订货或进货时,不同的用户对于货物的种类、规格、数量会提出不同的要求。 针对这种情况,为了有效地进行配送,即为了同时向不同的用户配送多种货物,配送中心必须采取适当的方式对组织来的货物进行拣选,并且在此基础上,按照配送计划分装和配装货物。 这样,在商品流通实践中,配送中心就又增加了分拣货物的功能,发挥分拣中心的作用。 ○
9) 式中: λ c 1 -导热覆盖基板有效热导率; λ c2 -导流片的有效热导率; λ c3-电偶臂有效热导率; l c1-导热覆盖基板厚度; l c2-导流片厚度; lc3-电偶臂厚度; A c1-导热覆盖基板的面积; A c2-导流片的面积; A c3-电偶臂面积; K c1-导热覆 盖基板导热率; K c2-导流层导热率; K c3-电偶臂导热率。 导热覆盖基板的材料是氧化铝陶瓷
般的 I/O 口线外,更重要的用途是它的第二功能。 P3 口还接收一些用于 Flash 闪速存储器编程和程序校验的控制信号。 RST:复位输入。 当振荡器工作时, RST 引脚出现两个机器周期以上高电平将使单片机复位。 ALE/PROG: 当访问外部程序存储器或数据存储器时 , ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。 一般情况下 , ALE 仍以时钟振荡频率的 1/6 输出
温 度与湿度两个数据,这就使得在两个 MSComm 中分别显示温度与湿度成为泡影,因为只有一个串口上传,但又要很明显的区分出来,而不能将两者紧挨着显示以免误看,故将 MSComm控件的 MultiLine 属性设置为 Ture 即可,这样方框就调整为刚好在两行分别显示数据的形式便达到了目的。 MSComm 的代码: Private Sub MSComm1_OnComm() Dim rec As
刻度校准。 6 工作温度范围为40~+85摄氏度。 7 低功耗,约15mW。 (2)内部结构 ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近。 ADC0809内部结构图(3)外部特性(引脚功能) ADC0809各脚功能如下:D7D0:8位数字量输出引脚。 IN0IN7:8位模拟量输入引脚。