微机原理项目报告.docx
- 文档编号:4695597
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:12
- 大小:140.91KB
微机原理项目报告.docx
《微机原理项目报告.docx》由会员分享,可在线阅读,更多相关《微机原理项目报告.docx(12页珍藏版)》请在冰豆网上搜索。
微机原理项目报告
微
机
原
理
项
目
七
姓名:
李守烨
班级:
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感想
通过这次做微机原理实验项目,使我更加感性的认识了微机原理这门学科,对汇编语言和接口技术的认识也更加深刻了,同时也锻炼了自己的实践能力。
虽然是每人单独做一个项目,但是大家互相交流和学习的氛围很浓烈,每个人在这个过程都得到了提高。
在做项目的过程中,发现了许多的不足,提醒自己在以后的设计中,努力做到最好,尽量不要遗漏一些关键和细节部分。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 项目 报告