课程设计宠物自动喂食机设计Word格式文档下载.docx
《课程设计宠物自动喂食机设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《课程设计宠物自动喂食机设计Word格式文档下载.docx(30页珍藏版)》请在冰豆网上搜索。
,
。
([2]P355表15-1)
综合系数的计算
由
经直线插入,知道因轴肩而形成的理论应力集中为
([2]P38附表3-2经直线插入)
轴的材料敏感系数为
([2]P37附图3-1)
故有效应力集中系数为
查得尺寸系数为
,扭转尺寸系数为
([2]P37附图3-2)([2]P39附图3-3)
轴采用磨削加工,表面质量系数为
([2]P40附图3-4)
轴表面未经强化处理,即
,则综合系数值为
a)碳钢系数的确定
碳钢的特性系数取为
b)安全系数的计算
轴的疲劳安全系数为
故轴的选用安全。
3行程开关旋转件的设计
图3-1行程开关旋转件
由示意图可知,两旋转件在旋转时有一个90度角的角度差,通过行程开关输出的信号的不同来分辨料口的开合处于什么样的状态,然后通过单片机系统的处理,输出相应的信号,带动电机的旋转,来控制料口的开合。
料口的状态有完全关闭和完全打开两种状态,
(1)两行程开关都输出信号时,料口处于关闭状态,
(2)两行程开关有一个闭合输出信号时,料口处于完全打开状态。
4减速电动机的选择:
直流齿轮减速电动机由于其结构简单,性能可靠,故选择直流齿轮减速电动机。
ZGA25R-310式直流齿轮减速电动机产品数据:
ZGA25R-310使用电压:
DC-6V
转速:
20rpm
外径:
25mm
总长:
51mm
伸出轴长:
10mm
扭力:
1-3KG
5控制系统设计
5.1系统方案设计构成
本系统包括机械部分和伺服电机控制两部分。
根据所给的要求,拟用开环控制结构设计方案,其开环系统结构原理如下:
图5-1开环系统结构原理图
具体原理:
编写单片机指令,通过扫描键盘输入的数字记录需要转动的角度,然后计算需要输出的脉冲,用软件的方法实现脉冲的输出,然后由光电耦合电路减小外部的干扰,由功率放大电路实现功率的放大,然后接减速电动机,通过联轴器把力矩传到主轴。
带动料口的开关。
5.2单片机的选用
本设计选用ATS9S51芯片,片内无ROM或者EPROM,使用时必须配置外部的程序存储器EPROM。
本设计选用了2764扩展其空间,8031的引脚分3大功能:
5.2.1I/O口线
P0,P1,P2,P3共4个八位口。
5.2.2控制口线
PSEN(片外取指控制)、ALE(地址锁存控制)、EA(片外存储器选择)、RESET(复位控制)。
5.2.3电源和时钟
ATS9S51最小应用系统。
ATS9S51内部不带ROM,需要外接EPROM作为外部程序存储器。
又因为8031在外接程序存储器或数据存储器时地址的低8位信息和数据信息分时送出,故还需要采用一片74LS373来锁存低8为地址信息。
这样,一片2764EPROM和一片74LS373组成了一个最小的计算机应用系统。
如图
MCS-51的程序存储器空间与数据存储器空间是相互独立的。
用户可最多扩展到64kb的程序存储器几64kb的数据存储器,编址为0000H~FFFFH。
片内8kb单元地址要求地址线13根(A0~A12)。
它由P0和P2.0~P2.4组成。
地址锁存器的锁存信号为ALE。
程序存储器的取地址消耗为PSEN。
由于程序存储器芯片只有一片,所以其片选端(31)直接接地。
8031芯片本身的连接31必须接地来表明选择外部存储器外,还必须有复位和时钟电路。
在此系统中有P1、P3口作为用户I/O口使用;
74LS373为地址锁存器,他是一片三态输出8D触发器,当OE=1时三态门导通,输出线上为8为锁存器的状态。
当OE=1时输出为高住抗转台。
G为锁存信号输入线,G=1时锁存器输出等于D端输入,G输入短跳变将输入信息锁存到8为锁存器中。
当8031在访问外部程序存储器时,P2口输入高8为地址:
P6口分时传送底8为地址和指令字节。
在ALE为高电平时,P0口输出的地址有效,并由ALE的下降沿锁存到地址锁存器中,此时外部程序存储器宣统信号线PSEN出现低电平,选通相应的外部。
EPROM存储器;
相应的指令字节出现在EPROM的数据线(O0~O7)上,输入到P0口,CPU将指令字节读入指令寄存器。
6程序编写
6.1连线图:
图6-1连线图
6.2程序设计:
单片机:
AT89S51,F=6MHz,影响第0组的R1,R2,R3,R4,R5,R6,R7,
20H,21H,30H,31H,32H,35H,36H,37H,38H,39H,3AH,3BH,3CH,3DH,3EH。
ORG00H;
程序从这里开始
SJMPMAIN;
主程序
ORG0BH;
定时器0中断入口
LJMPGOTO
ORG40H;
初始化
MAIN:
MOVSP,#5FH;
设堆栈
MOV30H,#12H;
存放小时,设初值
MOV31H,#00H;
存放分钟,设初值
MOV32H,#00H;
存放秒,设初值
MOV35H,#06H;
第一个闹钟的小时位,设初值
MOV36H,#30H;
第一个闹钟的分钟位,设初值
MOV37H,#09H;
第二个闹钟的小时位,设初值
MOV38H,#00H;
第二个闹钟的分钟位,设初值
MOV39H,#06H;
存放年
MOV3AH,#11H;
存放月
MOV3BH,#05H;
存放日
MOV3CH,#00H;
显示缓存,第1,2位
MOV3DH,#00H;
显示缓存,第3,4位
MOV3EH,#00H;
显示缓存,第5,6位
CLR00H;
秒闪烁暂存20H.0
SETB01H;
闹钟1输出位20H.1
SETB02H;
闹钟2输出位20H.2
CLR03H;
按键2是否有效标致位20H.3
CLR04H;
按键3是否有效标致位20H.4
CLR05H;
按键2是否有效标致位20H.5
CLR06H;
闹钟开关标致20H.6"
0"
为开"
1"
为关
SETB07H;
显示缓存,小数点1
SETB08H;
显示缓存,小数点2
SETB09H;
时钟加减标致位"
为小时,"
为分钟
SETB0AH;
闹钟1加减标致位"
SETB0BH;
闹钟2加减标致位"
MOVR2,#2;
设定时次数
MOVR3,#50
MOVR4,#25
MOVTMOD,#02H;
设定时器0工作方式为方式2
MOVTH0,#56;
设初始值
MOVTL0,#56
SETBTR0;
启动定时器和中断
SETBET0
SETBEA
MMAIN:
JNBP2.0,MMAIN;
时钟主程序
MMAIN2:
LCALLXIAN;
显示
LCALLCS;
按键秒清零
LCALLDAT;
是否显示年月日
LCALLDSQ;
定时器
LCALLT1T2;
闹钟开关
CLRP2.6;
按键有效
JNBP2.0,MENU1
SJMPMMAIN2
MENU1:
JNBP2.0,$;
时钟调整
SETBP1.0
MOV3CH,30H;
将暂存的数转成字形显示30H
MOV3DH,31H;
将暂存的数转成字形显示31H
MOV3EH,#0ABH;
将暂存的数转成字形显示"
t"
CLR07H;
显示小数点1
不显示小数点2
LCALLMXIAN;
显示菜单1
LCALLADDM1;
按键加一分钟
LCALLADDH1;
按键加一小时
LCALLDECMH;
减一分钟/一小时
CLRP2.6
JNBP2.0,MENU2
SJMPMENU1
MENU2:
日期调整
MOV3CH,39H;
将暂存的数转成字形显示39H
MOV3DH,3AH;
将暂存的数转成字形显示3AH
MOV3EH,3BH;
将暂存的数转成字形显示3BH
CLR08H;
显示小数点2
显示菜单2
LCALLDATEN;
年份+1
LCALLDATEM;
月份+1
LCALLDATED;
+1日
JNBP2.0,MENU3
SJMPMENU2
MENU3:
闹钟1
MOV3CH,35H;
将暂存的数转成字形显示35H
MOV3DH,36H;
将暂存的数转成字形显示36H
MOV3EH,#0A1H;
1"
显示菜单3
LCALLT1M1;
闹钟1分钟+1
LCALLT1H1;
闹钟1小时+1
LCALLDECT1;
闹钟1减1小时/1分钟
JNBP2.0,MENU4
SJMPMENU3
MENU4:
闹钟2
MOV3CH,37H;
将暂存的数转成字形显示37H
MOV3DH,38H;
将暂存的数转成字形显示38H
MOV3EH,#0A2H;
2"
显示菜单4
LCALLT2M1;
闹钟2分钟+1
LCALLT2H1;
闹钟2小时+1
LCALLDECT2;
闹钟减2小时/1分钟
JNBP2.0,MENU5
SJMPMENU4
MENU5:
LJMPMMAIN
中断处理
GOTO:
PUSHA;
保护现场
DJNZR3,GOTO1
DJNZR4,GOTO1
CPL00H;
20H.0用于秒闪烁
DJNZR2,GOTO1
MOVR2,#02H;
配合定时器定时一秒
MOVA,32H;
秒位是否为59秒,是:
秒清零,分钟+1,判断分钟
CJNEA,#59H,M1;
否:
跳转到秒+1
MOV32H,#00H
MOVA,31H;
分钟位同上
CJNEA,#59H,M2
MOV31H,#00H
MOVA,30H;
小时位同上
CJNEA,#23H,M3
MOV30H,#00H
LCALLADDD
SJMPGOTO1
M1:
ADDA,#01;
秒+1
DAA
MOV32H,A
M2:
分钟+1
MOV31H,A
M3:
小时+1
MOV30H,A
GOTO1:
POPA;
恢复现场
RETI
时钟显示专用子程序
XIAN:
MOVA,32H;
将暂存的数转成字形
SWAPA
MOVB,#10H
DIVAB
LCALLZH
MOVP0,A;
LED显示秒位
MOVP2,#0FEH
LCALLDELAY
MOVA,B
MOVP0,A
MOVP2,#0FDH
LED显示分钟位
MOVC,00H
MOVP0.7,C;
秒闪烁
MOVP2,#0FBH
SETBP0.7;
取消显示小数点
MOVP2,#0F7H
LED显示小时位
CLRP0.7;
显示小数点
MOVP2,#0EFH
取消显示小数点
MOVP2,#0DFH
RET
DELAY:
MOVR5,#0AH;
延时1mS(6MHz)
L1:
MOVR6,#19H
L2:
DJNZR6,L2
DJNZR5,L1
ZH:
MOVDPTR,#TAB;
字形转换
MOVCA,@A+DPTR
MOVP2,#0FFH;
消影
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;
字形0~9
DB0FFH,87H,0C8H,0A1H,86H,8EH;
字形A="
"
B="
t"
C="
n"
F="
F"
-hsz
TAB2:
DB30H,31H,28H,31H,30H,31H,30H,31H,31H,30H,31H,30H,31H;
每个月的天数,平年
TAB3:
DB30H,31H,29H,31H,30H,31H,30H,31H,31H,30H,31H,30H,31H;
每个月的天数,闰年
显示子程序结束
菜单显示子程序
MXIAN:
MOVA,3EH;
LED显示5,6位
MOVA,3DH;
LED显示3,4位
MOVC,08H
是否显示小数点2
MOVA,3CH;
LED显示1,2位
MOVC,07H
是否显示小数点1
按键子程序开始
CS:
MOVP0,#0FFH;
秒清零
MOVP2,#10111111B
JBP2.1,CS1
CS1:
SETBP2.6
-------------------------------------------------------------------
ADDM1:
加一分钟
JNBP2.2,ADDM11
按键2是否有效
ADDM11:
JB03H,ADDM12
JBP2.2,ADDM12
这四个为去抖动
MOVP0,#0FFH
SETB03H;
时钟加减标致位
分钟+1
CJNEA,#59H,M21
SJMPADDM12
M21:
ADDA,#01
ADDM12:
ADDH1:
加一小时
JNBP2.3,ADDH11
按键3是否有效
ADDH11:
JB04H,ADDH12
JBP2.3,ADDH12
SETB04H;
CLR09H;
小时+1
CJNEA,#23H,H31
SJMPADDH12
H31:
ADDH12:
DECMH:
JNBP2.1,DECM11
按键1是否有效
DECM11:
JB05H,DECM12
JBP2.1,DECM12
SETB05H;
JNB09H,DECMH3
分钟-1
CJNEA,#00H,DECMH4
MOV31H,#59H
SJMPDECM12
DECMH4:
LCALLDECA
DECMH3:
MOVA,30H;
小时-1
CJNEA,#00H,DECMH5
MOV30H,#23H
DECMH5:
DECM12:
十进制减法子程序
DECA:
CJNEA,#10H,DECA1;
运算范围为1~50
MOVA,#09H
DECA1:
CJNEA,#20H,DECA2
MOVA,#19H
DECA2:
CJNEA,#30H,DECA3
MOVA,#29H
DECA3:
CJNEA,#40H,DECA4
MOVA,#39H
DECA4:
CJNEA,#50H,DECA5
MOVA,#49H
DECA5:
DECA
闹钟按键子程序
T1M1:
闹钟1加一分钟
JNBP2.2,T1M11
T1M11:
JB03H,T1M12
JBP2.2,T1M12
SETB0AH