资源描述
课程名称 单片机原理与应用 课题名称 机械手顺序控制器设计 任 务 书设计内容与设计要求设计内容:用单片机设计一个机械手顺序控制器,用来对某一机械手作业的8个工序按时间节拍进行顺序控制,并有合适键盘操作和的工序指示功能。设计要求:1)确定系统设计方案; 2)进行系统的硬件设计;3)完成必要的参数计算与元器件选择;4)完成应用程序设计;*5)进行部分单元电路及应用程序的调试;主 要 设 计 条 件机械手控制系统的工作时间节拍为5秒,设作业工序流程如下: 1、22、33、44、55、66、77、88、1说 明 书 格 式1. 课程设计任务书2. 目录3. 系统总体方案选择与说明4. 系统结构框图与工作原理5. 各单元硬件设计说明及计算方法6. 软件设计与说明(包括流程图)7. 调试结果与必要的调试说明8. 使用说明9. 程序清单10、总结11、参考文献附录附录A 系统原理图附录B 程序清单进 度 安 排设计时间为两周第一周星期一、上午:布置课题任务,讲课及课题介绍 下午:借阅有关资料,总体方案讨论星期二、确定总体设计方案星期三、硬件模块方案设计星期四、软件模块方案设计星期五、各硬件模块设计第二周星期一、各硬件模块设计星期二、各软件模块设计星期三、各软件模块设计星期四、写说明书星期五、上午:写说明书,整理资料下午:交设计资料,答辩参 考 文 献参考文献1、 教材单片微型计算机技术 刘国荣 编 机械工业出版社2、 单片微型计算机原理、应用及接口技术 张迎新 编 国防工业出版社3、 单片机实用系统设计技术 房小翠 编 国防工业出版社4、单片机应用系统设计 何立民 编 北航出版社5、单片机原理及接口技术 曹琳琳编 国防科技大学出版社 机械手顺序控制器设计前 言计算机的出现使人类的生活发生了翻天覆地的变化。单片机也是伴随着计算机的产生而产生和发展的。也可以毫不夸张地说,单片机技术的出现给现代工业测控领域带来了一次新的技术革命。它使原来用分立元件进行的控制,转变到用程序进行控制,使控制的可靠性增加了,功能增多了,成本降低了,控制更灵活了。最重要的是,使学习和掌握测控技术变得更加容易。许多非自动化控制专业的人员也能毫不费力地、甚至通过自学单片机技术而成为此专业的控制专家。因单片机技术的应用而产生了许多新兴的专业,它开辟了更多的单片机应用领域,如工业控制、自动化设备、机床、数据采集和处理、智能化仪器仪表、办公自动化、家电、汽车、医疗器械等。越来越多的人在关心、学习、从事单片机应用技术。单片微型计算机是把组成微型计算机的各功能部件,既中央处理器CPU、随机存储器RAM、只读存储器ROM,I/O接口电路、定时/计数器以及串行通讯接口等部件制作在一块集成芯片中,简称单片机。它是随微型计算机的发展而产生和发展的,在智能化仪表、检测和控制系统领域中有着广泛的应用。目 录一 系统总体设计 . 31.1 设计内容 . 31.2 设计要求. 31.3 设计思路.31.4 系统结构.3二 硬件电路设计与框图 . 42.1 单片机的选择 . 42.2 按键电路设计与器件选择 . 52.3 LED显示电路设计 . 62.4 一位显示器电路 . 72.5 时钟与复位电路 . 8三 系统软件设计 . . 93.1 主程序模块 . . 93.2 数码显示模块 . . 113.3 延时子程序 . . 123.4 数据表 . 12四 调试说明与调试结果. 13五 系统功能及操作说明. 135.1 系统功能 . . 135.2 操作说明 . 13六 总结与体会 . 14七 附录 . 15附录1 显示模块流程图 . 15附录2 主程序流程图 . 16附录3 硬件电路原理图 . 17八 参考文献. 18一、系统的总体设计1.1 设计内容该课题是用MCS51单片机实现机械手的控制。要求机械手完成五种加工方法,用相应按键选择;每种加工方法有八道工序,用高低电平信号表示,并用发光二极管模拟,同时用数码管显示工序步数。1.2 设计要求1)确定系统设计方案; 2)进行系统的硬件设计;3)完成必要的参数计算与元器件选择;4)完成应用程序设计;*5)进行部分单元电路及应用程序的调试;1.3 设计思路根据设计要求,初步思路如下:1)将各种加工方法的八道工序对应的高低电平模拟信号用十六进制表示,存入五个数据表中。2)五种加工方法各有一按键控制,通过单片机的一端口输入控制信号,同时在端口的一位设置一停止按钮,作为一种加工方法的结束。3)用八个LED模拟加工工序,接于单片机的一个端口,作为输出口。4)将工序步数18对应的数码显示字形存入一数表,用查表方式在串行口输出要数码显示的工序步数字形,然后并行输入到七段显示器。1.4 系统结构硬件:实验室提供的MCS51单片机、七个开关按钮、八个LED灯、一片数码管、一片74LS164。 单片机接口分配和接线:P1口作为数据输出端,P1.0P1.7分别接LED1LED8作为工序信号模拟显示;P2口作为控制输入端,P2.0P2.4分别接按钮K1K5作为加工方法选择键;P2.5接按钮STOP作为停止按键;RXD作为串行数据输出端接74LS164的DATA端,TXD作为时钟脉冲输出端接CLK。寄存器分配:R2作为工序控制寄存器,R0作为输出显示间接寻址寄存器,79H作为输出显示缓冲区。R4、R5、R6、R7在延时子程序中使用。二、硬件电路设计与框图根据设计要求与设计思路,确定该系统的设计方案,图1为该系统设计方案的硬件电路设计框图。硬件电路有四部分组成,即单片机按键输入电路、LED显示驱动电路、一位显示器电路和时钟与复位电路。系统总框图见图1。下面我们将分别对硬件电路的设计作详细介绍。 图1 系统总框图2.1 单片机的选择根据初步设计方案的分析,设计这样一个简单的应用系统可以选择采用HM0S制造工艺制造的MCS51单片机,都采用40管脚双列直插式封装,因此可以选用8031或8051,应用程序直接存放在片内,不用在内部扩展程序存储器,电路简化,使整个硬件电路体积小,物美价廉,经济实用。下面对8051的主要特点作简要说明。P0口(3239脚) 8路漏极开路型双向并行I/O口。在访问外部存储器时,P0口作为低8位地址数据总线复用口,可分时操作,先传送低8位地址,利用ALE信号的下降沿将地址锁存,然后作为8位双向数据总线使用,用来传送8位数据。外部不扩展而芯片应用时,作双向I/O口使用,P0口能以吸收电流的方式驱动8个LSTTL负载。 P1口(18脚) 具有内部上拉电阻的8位准双向I/O口,在对片内EPROM编程及校验时,它接收低8位地址,P1口能驱动4个LSTTL负载。 P2口(2128脚) 8位具有内部上拉电阻的准双向I/O口,在外接存储器时,P2口作为高8位地址总线,在对片内EPROM编程及校验时,它接收高位地址。P2口能驱动4个LSTTL负载。 P3口(1017脚) 8位带有内部上拉电阻的准双向I/O口。每一位又具有如下特殊功能(或称第二功能): P3.0(RXD):串行输入端。 P3.1(TXD):串行输出端。 P3.2(INTO):外部中断0输入端,低电平有效。 P3.3(INT1): 外部中断1输入端,低电平有效。 P3.4(TO):定时/计数器0外部事件计数输入端。 P3.5(T1): 定时/计数器1外部事件计数输入端。 P3.6(WR):外部数据存储器写选通信号,低电平有效。 P3.7(RD):外部数据存储器读选通信号,低电平有效。2.2 按键电路设计与器件选择(1) 键盘结构的选择 键盘结构可以分为独立式键盘和行列式键盘(矩阵式)两类。本系统只需要六个按键,因此选择独立式键盘。电路有按键和六个电阻组成,按键可以采用轻触开关,按键分别命名为K1、K2、K3、K4、K5和STOP键,电阻阻值为6×1欧。 图2 键盘电路(2) 键盘与单片机的接口电路设计 将键盘直接与单片机的P2口连接,作为I/O口使用,用P2.0P2.4分别通过电阻与K1K5连接,作为加工方法选择按键;P2.5通过电阻与STOP连接,作为工序循环停止按键。(3) 按键去抖动的处理 由于机械触点的弹性作用,在闭合及断开的瞬间均伴随有一连串的抖动,而按键稳定闭合时间的长短开始有键闭合吗?有键闭合吗?等待松键延时10ms子程序NNYY 图3 去按键抖动程序流程图则是由操作人员的按键动作决定的,一般为几秒至数秒。键抖动会引起一次按键被误读为多次,为了确保CPU对键的一次闭合仅作一次处理,我们用软件去抖动的方法,程序流程图如图2,程序见程序清单。2.3 LED显示电路设计 图4 LED显示电路用单片机的P1口作为I/O口,输出工序模拟信号,P1.0P1.7分别通过电阻与LED1LED8连接,电阻可用8×1欧。当数据在P1口输出时,将驱动二极管发光。2.4 一位显示器电路本系统只需显示工序进行步数,故只需一位数码管显示器,我们用串行口方式0输出18的显示字形码,但显示器的驱动需八位并行数据,故采用一片74164作为一位数码显示器的静态连接端口,74164的低电平输出电流8mA,可直接驱动共阳极七段LED。2.4.1 174LS164的介绍 我们使用74164作为串行输入并行输出的转换。 功能表: 2.4.2 LED数码管 LED数码管是单片机控制系统中最常用的显示器件之一,LED数码管在单片机系统中的地位类似于CRT(阴极射线管)显示器在台式微机系统中的地位(CRT显示器是台史微机系统的标准输出设备)。LED数码管用ag段显示数字和字符的笔画,dp显示小数点,一英寸以下的LED数码管内,每一笔段含有一只LED发光二极管,导通压降为1.22.5v。根据LED数码管内各笔段LED发光二极管的连接方式,可以将LED数码管分为共阴极和共阳极两大累。本实验中所用的是共阳极接法。根据LED的结构,不同笔段的组合就可以构成不同的字符,7段可以显示128种不同的字符,起字符表如下。LED显示器十六进制数的字形代码字形 段g f e d c b a共阳极代码 0暗 亮 亮 亮 亮 亮 亮 03H 1暗 暗 暗 暗 亮 亮 暗 9FH 2亮 暗 亮 亮 暗 亮 亮 25H 3亮 暗 暗 亮 亮 亮 亮 0DH 4亮 亮 暗 暗 亮 亮 暗 99H 5亮 亮 暗 亮 亮 暗 亮 49H 6亮 亮 亮 亮 亮 暗 亮 41H 7暗 暗 暗 暗 亮 亮 亮 1FH 8亮 亮 亮 亮 亮 亮 亮 01H采用软件查表向74164输出字形代码,有单片机的RXD端输出数据到74164的DATA端,同时TXD端输出移位脉冲接74164的CLK作为时钟。由于显示器工作是静态的,主程序可不必扫描显示器,从而节省了主程序的时间。 图5 数码显示电路2.5 时钟与复位电路 单片机工作的时间基准是由时钟电路提供的。在单片机的XTAL1和XTAL2两个管脚,接一只晶振和两只电容就构成了单片机的时钟电路。电路中电容器C1、C2对振荡电路起微调作用,通常的取值范围为(2040)pF。石英晶体选择12MHz。单片机的RST管脚为为主机提供一个外部复位信号输入端口,复位信号是高电平有效,高电平有效的持续时间应为2个机器周期以上。在此,我们选择手动复位组合电路,复位以后,单片机各内部件恢复到初始状态。RST按键可以选择专门的复位按键也可以选择轻触开关。 图6 时钟与复位电路系统硬件原理图见附录表。 三、 系统软件设计3.1 主程序模块程序开始首先将工序控制寄存器R2清零,将工序模拟显示灯清零即将P1口清零。然后在程序段STA检测P2口的输入情况,如果某一位假设P2.2为高电平,就转到该位对应的按键所控制的下一段程序NEXT2处执行,先调用一延时10ms子程序,然后重新判断该位是否还为高电平,否,就返回STA重新检测,是,就继续执行下一步,判断该为是否变为低电平,否,就在此等待松键,是,就将该加工方法的工序模拟信号所在的表格标号TAB2送查表基址DPTR,然后转到主程序端LOOP执行。将工序控制寄存器R2的值给累加器A,然后查表,将查出的值送A到中,再在P1口输出,即驱动了LED灯显示,将R2加一准备执行下一道工序,然后将R2的值存入显示缓冲区79H,将DPTR入栈保护,调用数码显示子程序,将工序步数在数码管同步显示,然后将DPTR出栈恢复现场,调用延时5s子程序作为工序间隔。再判断八道工序是否全部执行完,若否就转回LOOP执行下一步工序,若已完就判断停止按钮是否按下,按下就返回主程序开始处重新开始,没按下就将R2清零进行下一个工序循环。其程序流程图见附录。主程序清单如下: ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV R2,#00H ;将工序控制寄存器零 MOV P1,#00H ;将P1口清零 MOV R0,#00H ;将寄存器R0清零 STA: JB P2.0,NEXT1 ;判断哪个按键被按下就 JB P2.1,NEXT2 转到应程序段处执行 JB P2.2,NEXT3 JB P2.3,NEXT4 JB P2.4,NEXT5 LJMP STA NEXT1:LCALL DLS10MS ;调用延时10ms子程序 JNB P2.0, STA ;P2.0=0就返回重新判断 JB P2.0, $ ;P2.0=1等待松键 MOV DPTR, #TAB1 ;将表首址给查表基址DPTR LJMP LOOP ;转到LOOP程序段 NEXT2:LCALL DLS10MS JNB P2.1, STA JB P2.1, $ MOV DPTR, #TAB2 LJMP LOOP NEXT3:LCALL DLS10MS JNB P2.2, STA JB P2.2, $ MOV DPTR, #TAB3 LJMP LOOP NEXT4:LCALL DLS10MS JNB P2.3,STA JB P2.3,$ MOV DPTR,#TAB4 LJMP LOOP NEXT5:LCALL DLS10MS JNB P2.4,STA JB P2.4,$ MOV DPTR,#TAB5 LJMP LOOP LOOP:MOV A,R2 ;将R2的值给A MOVC A,A+DPTR ;查表将查出的值送到A中 MOV P1,A ;将A中的数送P1口输出 INC R2 ;R2自加一 MOV 79H,R2 ;将R2的值送输出缓冲79H PUSH DPH ;保护现场 PUSH DPL LCALL DISP ;调用数码显示子程序 LCALL DLS5S ;调用延时5s子程序 POP DPL ;恢复现场 POP DPH CJNE R2,#08H,LOOP ;八步未完成就返回LOOP JB P2.5,MAIN ;停止按钮按下就返回MAIN MOV R2,#00H ;将R2清零 LJMP LOOP ;转到LOOP3.2 数码显示模块程序开始设置串行口输出控制字SCON为方式0发送,然后将显示缓冲区79H送R0,将08字形代码表的标志SEGPT送查表基址DPTR,用寄存器间接寻址把要显示的数送到A中,查表将查出的字形代码送到A中,然后将其写入发送缓冲器SBUF,八位数据开始从RXD端串行发送到74164中,当八位数据发送完毕时,数据和移位脉冲停止发送,并自动将发送中断标志位TI置1,因此设置一检测指令,判断TI是否已为1,为1就是已发送完毕,用软件将其清零,然后返回主程序。其程序流程图见附录。显示子程序清单如下:DISP:MOV SCON,#00H ;置串行方式0 MOV R0,#79H ;将显示缓冲区中值送R0 MOV DPTR,#SEGPT ;字形表首址送DPTR MOV A,R0 ;取出要显示的数送A MOVC A,A+DPTR ;查出字形 MOV SBUF,A ;字形送串行口WAIT:JNB TI,WAIT ;输出完否 CLR TI ;完,清中断标志 RET ;返回3.3 延时子程序我们采用软件延时,根据指令占用的机器周期,用寄存器控制次数的多重循环来实现。程序清单如下:延时10ms:DLS10MS:MOV R7,#10 ;1T DL1:MOV R6,#249 ;1T DL2:NOP ;1T NOP ;1T DJNZ R6,DL2 ;2T R6-10转到DL2 DJNZ R7,DL1 ;2T R7-10转到DL1 RET ;2T延时5s:DLS5S:MOV R6,#20 ;1T DL3:MOV R5,#251 ;1T DL4:MOV R4,#248 ;1T DL5:NOP ;1T NOP ;1T DJNZ R4,DL5 ;2T R4-10转到DL5 DJNZ R5,DL4 ;2T R5-10转到DL4 DJNZ R6,DL3 ;2T R6-10转到DL3 RET ;2T3.4 数据表TAB1:DB 03H,04H,05H,06H,07H,08H,09H,0AH TAB2:DB 18H,27H,53H,30H,45H,06H,07H,08H TAB3:DB 10H,12H,13H,14H,15H,16H,17H,18H TAB4:DB 78H,34H,5AH,16H,04H,25H,8EH,23H TAB5:DB 12H,45H,67H,09H,6CH,6BH,98H,26HSEGPT:DB 03H,9FH,25H,0DH,99H DB 49H,41H,1FH,01H ;字形“08” END ;结束四、调试说明与调试结果用软件U51编辑好程序后,汇编、下载然后运行,选择一种加工方法的按钮按下程序停止在等待松键处,松键后程序继续运行,工序模拟灯间隔5秒依次点亮工作相应的灯,同时数码管显示工序步数。按下停止按钮,在工序完成第八道工序后自动停止,若不按下,则工序继续循环进行。五、系统功能及操作说明5.1 系统功能本设计能够控制机械手完成五种加工方法。它有五个按键,每个按键代表一种加工方法,每一种加工方法都包括八道加工工序,执行工序时,LED灯能够模拟其工作情况,灯亮表示该项工作进行,灯灭表示该项工作停止,同时显示器同步显示工序进行的步数,每道工序间隔5秒钟。当一种加工方法的八道工序进行完后,若停止按钮已按下,则机械手的工作停止,未按下则该加工方法继续循环执行。5.2 操作说明(1)选择要进行的加工方法按钮按下。(2)机械手就开始依次执行该加工方法的八道工序,通过LED灯的显示可观察机械手的工作情况,同时通过显示器可看到工序的进度。(3)按下停止按钮可控制该加工方法在八道工序完成后自动停止。若未按下将继续循环执行八道工序。六、总结与体会紧张与忙碌使两周的时间不知不觉地从身边走过,回想两周以来的设计过程,期间值得回味的有很多。从接到课题的那一刻起,就感觉到任务的艰巨,心中不免有些茫然,这从一开始就体现出来。由于课题所要求使用的软件是我们从未接触过的,并且要在两周内熟悉并能熟练使用,所以在设计过程中遇到了不小的困难。但人在压力下往往会有超长表现,在经过这段困难时期后,经过查阅大量的参考书籍,同学之间不断的探讨以及老师的细心,及时的指导后,设计的思路终于有了眉目。接下来就是了解各种芯片的功能,然后画出设计草图,在分析了其可行性后便在电脑上通过软件进行仿真,当然,一开始总是有错的,比如有时某个设计并不合理,又或者器件的连线不正确等等,这样的问题在设计过程中有很多,但大部分被我们克服了。虽然最终出来的结果并不是十分完整和正确,但毕竟是两个星期辛苦劳动的结果,我仍然感到欣慰。课程设计结束了,但期间同学之间的团队合作和老师的耐心指导,让我体会良深,在此我要感谢队友以及指导老师的帮助。七、附录 我们在附录中收集了该机械手控制系统的硬件电路原理图主程序模块和显示器模块的程序流程图。开始N将显示器缓冲区末地址送RoWAITY输出完否送出显示查字形表将字型表首地址送DPTR取出要显示的数送A显示模块流程图清除中断标志TI返回YYYMAINSTANNNNNK1=1?NYNEXT5NEXT1同上检测LOOPNNYK1=1?取查表基址TAB1取查表基址TAB1K1=1?YYY将Ro清0停止?R2=8?调用显子程序延时5s将R2H送工序缓冲区将A从P1口输出查表得数送AR2内容送A工序控制寄存器R2清0K1=0?延时10ms方法5.延时10msK1=0?方法1LDoLD7全暗开始主程序模块流程图 系统硬件原理图八、参考文献1 刘国荣,单片微型计算机技术. 北京. 机械工业出版社.19962. 王迎旭,单片机原理与应用. 北京.机械工业出版社.20043. 沈庆阳,郭庭吉等 . 8051单片机实践与应用 . 北京 . 清华大学出版社4. 胡汉才,单片机原理及系统设计.清华大学出版社.2002.15. 先锋工作室.单片机程序设计实例. 清华大学出版社.2002.16
展开阅读全文