微机原理项目报告.docx

上传人:b****6 文档编号:4695597 上传时间:2022-12-07 格式:DOCX 页数:12 大小:140.91KB
下载 相关 举报
微机原理项目报告.docx_第1页
第1页 / 共12页
微机原理项目报告.docx_第2页
第2页 / 共12页
微机原理项目报告.docx_第3页
第3页 / 共12页
微机原理项目报告.docx_第4页
第4页 / 共12页
微机原理项目报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

微机原理项目报告.docx

《微机原理项目报告.docx》由会员分享,可在线阅读,更多相关《微机原理项目报告.docx(12页珍藏版)》请在冰豆网上搜索。

微机原理项目报告.docx

微机原理项目报告

 

姓名:

李守烨

班级:

08级机电2班

指导老师:

史艳国

学号:

080101010398

时间:

2011/5/21

目录

1题目及要求2

2过程示意图2

3总体设计思路3

3.1步进电机的模拟3

3.2控制系统的启停控制3

3.3指示灯的控制3

3.4数码管静态显示3

4系统流程框图4

5系统接线示意图5

6程序部分6

7实验结果及分析12

7.1实验结果12

7.2实验分析12

8结论12

9感想12

1题目及要求

瓶装饮料生产线传送控制系统某厂生产瓶装保健品饮品,每10瓶装一箱,要求箱满时,启动送箱装置,先送走满箱到位(延时一定时间),再送来空箱到位(延时一定时间),满箱和空箱分别在两个不同的传送带上传送。

能人为控制生产线的启动和停止(比如键盘上,按某一键启动,启动后按任意键停止)。

能在数码管上显示当时已装满送出的箱数。

2过程示意图

图2.1

3总体设计思路

3.1步进电机的模拟

用步进电机的正反转来模拟送来空箱和送走满箱。

用8255的PC0~PC3作为输出给步进电机A~D口,选用单双八拍工作方式(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.1

5系统接线示意图

图5.1

6程序部分

stacsegmentstack

db1024dup(0)

stacends

datasegment

;定义数据段

z8279equ0bf01h;8279命令字、状态字地址8279连cs5

d8279equ0bf00h;8279读写数据口的地址

leddb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,080h,90h;段码

counterdw0

numdb10

temporarydb?

dataends

codesegment'code'

assumecs:

code,ds:

data,ss:

stac

start:

movax,data

movds,ax

start1:

moval,10000010b;对8255进行初始化

movdx,0f003h

outdx,al

movdx,0f001h

inal,dx

andal,80h

cmpal,0

jnzstart1

jzstart2

start2:

callinit8279;8279写入方式控制字,初始化

calllightoff;系统刚启动指示灯全灭

callleddisp;系统刚启动数码管显示为0

calldelay

;主程序

start3:

callstep_motor1;电动机正转,送来空箱

calldelay;延时一段时间

callyellowlight;装箱过程,黄灯亮

calldelay;延时

callStep_motor2;电动机反转,送走满箱,且计数并显示

calldelay

callstop;检测是否按下停止键

jmpstart3;如果没按停止键,则程序系统继续工作

movax,4c00h

int21h

;8279初始化

init8279proc

movdx,z8279;cmd_8279为写命令地址、读状地址

moval,34h

outdx,al;可编程时钟设置,设置分频系数(20分频)

moval,0;8*8字符显示,左边输入,外部译码键扫描方式

outdx,al

moval,0a0h;显示禁止/熄灭命令

outdx,al

callinit8279_1

ret

init8279endp

init8279_1proc

callclear

moval,90h;从第一个数码管开始移位显示

outdx,al

ret

init8279_1endp

;清除命令

clearproc

movdx,z8279

moval,0deh

outdx,al

wait1:

inal,dx

testal,80h

jnzwait1;显示ram清除完毕吗?

ret

clearendp

;段码编写

writeproc

divnum;cx=ax,把计数值除十,取出余数存入ah,;商存入al,显示余数

movtemporary,al商暂存在temporary

moval,ah;余数存入al

movbx,offsetled

xlat;换码即al=ds:

[bx+al]

outdx,al;输出段码

movah,0;ax高位复0

moval,temporary;把商又赋给al,即商存入到ax里,为下一次

;除法做准备

ret

writeendp

leddispproc;显示子程序

movdx,d8279

movax,counter

pushcx

movcx,8;往8279里面写8次

again:

callwrite

loopagain

popcx

ret

leddispendp

delayproc;延时子程序

pushbx

pushcx

movbx,8

delay1:

movcx,0

delay2:

loopdelay2

decbx

jnzdelay1

popcx

popbx

ret

delayendp

motor_delayproc;步进电机延时子程序

pushbx

pushcx

movbx,5

motor_delay1:

movcx,500

motor_delay2:

loopmotor_delay2

decbx

jnzmotor_delay1

popcx

popbx

ret

motor_delayendp

redlightproc;红灯亮子程序

movdx,0f000h

moval,11011111b

outdx,al

ret

redlightendp

greenlightproc;绿灯亮子程序

movdx,0f000h

moval,01111111b

outdx,al

ret

greenlightendp

Yellowlightproc;黄灯亮子程序

movdx,0f000h

moval,10111111b

outdx,al

ret

yellowlightendp

lightoffproc;程序开始指示灯全灭

movdx,0f000h

moval,0ffh

outdx,al

ret

lightoffendp

step_motor1proc;电动机正转子程序

pushcx

movcx,6

callgreenlight

again1:

movdx,0f002h

moval,00000001b

outdx,al

callmotor_delay

moval,00000011b

outdx,al

callmotor_delay

moval,00000010b

outdx,al

callmotor_delay

moval,00000110b

outdx,al

moval,00000100b

outdx,al

callmotor_delay

moval,00001100b

outdx,al

callmotor_delay

moval,00001000b

outdx,al

callmotor_delay

moval,00001001b

outdx,al

callmotor_delay

loopagain1

popcx

ret

step_motor1endp

Step_motor2proc;电动机反正子程序

callredlight;送走满箱红灯亮

inccounter;计数值加1

callleddisp;显示送走箱子个数

pushcx

movcx,8

again2:

movdx,0f002h

moval,00001000b

outdx,al

callmotor_delay

moval,00001100b

outdx,al

callmotor_delay

moval,00000100b

outdx,al

callmotor_delay

moval,00000110b

outdx,al

callmotor_delay

moval,00000010b

outdx,al

callmotor_delay

moval,00000011b

outdx,al

callmotor_delay

moval,00000001b

outdx,al

callmotor_delay

moval,00001001b

outdx,al

callmotor_delay

loopagain2

popcx

ret

Step_motor2endp

;暂停子程序

stopproc

movdx,0f001h

inal,dx

andal,40h

cmpal,0

jzprostop

jnzreturn

prostop:

movdx,0f001h

inal,dx

andal,80h

cmpal,0

jzreturn

jnzprostop

return:

ret

stopendp

codeends

endstart;程序结束

7实验结果及分析

7.1实验结果

通过对程序的调试,基本上能模拟出该控制系统。

启动程序,按下启动开关,系统才开始工作。

首先步进电机正转(送来空箱子)并且绿灯亮,然后延时一段时间并且黄灯亮(装箱过程),最后步进电机反转(送走满箱)并且红灯亮,送满箱的过程中LED数码管显示的计数值加1,再延时一段时间后进电机正转(送来空箱子)并且绿灯亮,如此循环。

如果拨动停止开关,系统则暂停,再拨动启动开关,系统又恢复工作。

7.2实验分析

刚开始用的是8255接数码管,但是调试的时候数码管不能静态显示,后来选用8279接数码管,通过调试能够静态显示所记录的个数。

而且通过对实验的调试发现,在每拍之间加一个延时的程序,可以改变步进电机的转速。

8结论

该实验基本上能模拟出项目所要求的控制系统,但是仍有许多不足之处。

比方说忽略了装箱过程,没有具体指明多少瓶饮料装一箱;没有检测部分,如果装箱质量不合格就必须重新装箱;而且该系统的停止控制只能在送走满箱后才有效,应该设计成在整个装箱过程中都有效。

9感想

通过这次做微机原理实验项目,使我更加感性的认识了微机原理这门学科,对汇编语言和接口技术的认识也更加深刻了,同时也锻炼了自己的实践能力。

虽然是每人单独做一个项目,但是大家互相交流和学习的氛围很浓烈,每个人在这个过程都得到了提高。

在做项目的过程中,发现了许多的不足,提醒自己在以后的设计中,努力做到最好,尽量不要遗漏一些关键和细节部分。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1