微机原理项目报告.doc_第1页
微机原理项目报告.doc_第2页
微机原理项目报告.doc_第3页
微机原理项目报告.doc_第4页
微机原理项目报告.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理项目报告微机原理项目七 姓 名:李守烨班 级:08级机电2班指导老师:史 艳 国学 号:080101010398 时 间:2011/5/21目录1题目及要求22过程示意图23总体设计思路33.1步进电机的模拟33.2控制系统的启停控制33.3指示灯的控制33.4数码管静态显示34系统流程框图45系统接线示意图56程序部分67实验结果及分析127.1实验结果127.2实验分析128结论129感想121题目及要求瓶装饮料生产线传送控制系统某厂生产瓶装保健品饮品,每10瓶装一箱,要求箱满时,启动送箱装置,先送走满箱到位(延时一定时间),再送来空箱到位(延时一定时间),满箱和空箱分别在两个不同的传送带上传送。能人为控制生产线的启动和停止(比如键盘上,按某一键启动,启动后按任意键停止)。能在数码管上显示当时已装满送出的箱数。2过程示意图图2. 13总体设计思路3.1步进电机的模拟用步进电机的正反转来模拟送来空箱和送走满箱。用8255的PC0PC3作为输出给步进电机AD口,选用单双八拍工作方式(A-AB-B-BC-C-CD-D-DA-A)。步进电机的驱动原理是通过它每相线圈的电流的顺序切换来使电机作步进式旋转,驱动电路由脉冲来控制,所以调节脉冲的频率便可改变步进电机的转速,微控制器最适合控制步进电机。3.2控制系统的启停控制用8255的PC7和PC6作为输入采集开关信号控制系统的启停。首先设置8255的工作方式为0方式,C口的高4位设为输入,然后把PC7和PC6和开关相连。系统通过采集开关信号来判别是否启动和暂停系统。3.3指示灯的控制用8255的A口作为输出来控制指示灯。绿灯代表送来空箱子,黄灯代表装箱过程,红灯代表送走满箱。3.4数码管静态显示选用8279连接数码管来静态显示所记录的箱数。8279自身有刷新数码管的频率,较之8255能更稳定地显示数字。4系统流程框图图4. 15系统接线示意图图5. 16程序部分stac segment stack db 1024 dup(0)stac endsdata segment;定义数据段z8279equ0bf01h;8279命令字、状态字地址8279连cs5d8279equ0bf00h;8279读写数据口的地址led db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,080h,90h ;段码counter dw 0num db 10temporary db ?data endscode segment code assume cs:code,ds:data,ss:stacstart: mov ax,data mov ds,ax start1: mov al,10000010b ;对8255进行初始化 mov dx,0f003h out dx,al mov dx,0f001h in al,dx and al,80h cmp al,0 jnz start1 jz start2 start2: call init8279 ;8279写入方式控制字,初始化 call lightoff ;系统刚启动指示灯全灭 call leddisp ;系统刚启动数码管显示为0 call delay;主程序start3: call step_motor1 ;电动机正转,送来空箱 call delay ;延时一段时间 call yellowlight ;装箱过程,黄灯亮 call delay ;延时 call Step_motor2 ;电动机反转 ,送走满箱,且计数并显示 call delay call stop ;检测是否按下停止键 jmp start3 ;如果没按停止键,则程序系统继续工作 mov ax,4c00h int 21h ;8279初始化 init8279 proc mov dx,z8279 ;cmd_8279为写命令地址、读状地址 mov al,34h out dx,al ;可编程时钟设置,设置分频系数(20分频) mov al,0 ;8*8字符显示,左边输入,外部译码键扫描方式 out dx,al mov al,0a0h ;显示禁止/熄灭命令 out dx,al call init8279_1 ret init8279 endp init8279_1 proc call clear mov al,90h ;从第一个数码管开始移位显示 out dx,al retinit8279_1 endp ;清除命令clear proc mov dx,z8279 mov al,0deh out dx,al wait1: in al,dx test al,80h jnz wait1 ; 显示ram清除完毕吗? retclear endp;段码编写write proc div num ;cx=ax,把计数值除十,取出余数存入ah, ;商存入al,显示余数 mov temporary,al 商暂存在temporary mov al,ah ;余数存入al mov bx,offset led xlat ;换码即al=ds:bx+al out dx,al ;输出段码 mov ah,0 ;ax高位复0 mov al,temporary ;把商又赋给al,即商存入到ax里,为下一次 ;除法做准备 ret write endp leddisp proc ;显示子程序 mov dx,d8279 mov ax,counter push cx mov cx,8 ;往8279里面写8次again: call write loop again pop cx retleddisp endpdelay proc ;延时子程序 push bx push cx mov bx,8delay1:mov cx,0delay2:loop delay2 dec bx jnz delay1 pop cx pop bx retdelay endp motor_delay proc ;步进电机延时子程序 push bx push cx mov bx,5motor_delay1: mov cx,500motor_delay2: loop motor_delay2 dec bx jnz motor_delay1 pop cx pop bx retmotor_delay endp redlight proc ;红灯亮子程序 mov dx,0f000h mov al,11011111b out dx,al ret redlight endpgreenlight proc ;绿灯亮子程序 mov dx,0f000h mov al,01111111b out dx,al ret greenlight endpYellowlight proc ;黄灯亮子程序 mov dx,0f000h mov al,10111111b out dx,al ret yellowlight endp lightoff proc ;程序开始指示灯全灭 mov dx,0f000h mov al,0ffh out dx,al retlightoff endp step_motor1 proc ;电动机正转子程序 push cx mov cx,6 call greenlight again1: mov dx,0f002h mov al,00000001b out dx,al call motor_delay mov al,00000011b out dx,al call motor_delay mov al,00000010b out dx,al call motor_delay mov al,00000110b out dx,al mov al,00000100b out dx,al call motor_delay mov al,00001100b out dx,al call motor_delay mov al,00001000b out dx,al call motor_delay mov al,00001001b out dx,al call motor_delay loop again1 pop cx ret step_motor1 endpStep_motor2 proc ;电动机反正子程序 call redlight ;送走满箱 红灯亮 inc counter ;计数值加1 call leddisp ;显示送走箱子个数 push cx mov cx,8 again2: mov dx,0f002h mov al,00001000b out dx,al call motor_delay mov al,00001100b out dx,al call motor_delay mov al,00000100b out dx,al call motor_delay mov al,00000110b out dx,al call motor_delay mov al,00000010b out dx,al call motor_delaymov al,00000011b out dx,al call motor_delay mov al,00000001b out dx,al call motor_delay mov al,00001001b out dx,al call motor_delay loop again2 pop cx retStep_motor2 endp;暂停子程序stop proc mov dx,0f001h in al,dx and al,40h cmp al,0 jz prostop jnz return prostop: mov dx,0f001h in al,dx and al,80h cmp al,0 jz return jnz prostop return: retstop endp code ends end start ;程序结束7实验结果及分析7.1实验结果通过对程序的调试,基本上能模拟出该控制系统。启动程序,按下启动开关,系统才开始工作。首先步进电机正转(送来空箱子)并且绿灯亮,然后延时一段时间并且黄灯亮(装箱过程),最后步进电机反转(送走满箱)并且红灯亮,送满箱的过程中LED数码管显示的计数值加1,再延时一段时间后进电机正转(送来空箱子)并且绿灯亮,如此循环。如果拨动停止开关,系统则暂停,再拨动启动开关,系统又恢复工作。7.2实验分析刚开始用的是8255接数码管,但是调试的时候数码管不能静态显示,后来选用8279接数码管,通过调试能够静态显示所记录的个数。而且通过对实验的调试发现,在每拍之间加一个延时的程序,可以改变步进电机的转速。8结论该实验基本上能模拟出项目所要求的控制系统,但是仍有许多不足之处。比方说忽略了装箱过程,没有具体指明多少瓶饮料装

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论