饮料生产线的计算机控制技术的实现 微机原理项目Word文档下载推荐.docx
《饮料生产线的计算机控制技术的实现 微机原理项目Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《饮料生产线的计算机控制技术的实现 微机原理项目Word文档下载推荐.docx(33页珍藏版)》请在冰点文库上搜索。
3.2实验设备
设备
数量
8088CPU
1
8255A芯片
8155芯片
发光二极管
2
数码管
8
步进电机
12864液晶显示屏
3.3设计流程
注:
绿灯亮时空瓶到位并灌装
红灯亮时说明有次品
四、控制程序
4.1连线原理
8255
B4区:
CS,A0,A1
A3区:
CS2,A0,A1
JP56(A口)
G5区:
JP41
JP53(B口)
JP42
D0-D7
G6区:
DS35-DS42
8155
B4区:
CS,O/IM
CS1,A8
JP56
JP51
电动机
E1区:
A,B,C,D
P1.7,P1.6,P1.5,P1.4
蜂鸣器
D1区:
ctr
D5
液晶显示屏
A1区:
CS1/2,CS,RW,RS
A2,CS2,A0,A1
4.2连线图片
4.3程序设计
.modelsmall
WR_COM_AD_LEQU0d004H;
写左半屏指令地址
WR_COM_AD_REQU0d000H;
写右半屏指令地址
WR_DATA_AD_LEQU0d006H;
写左半屏数据地址
WR_DATA_AD_REQU0d002H;
写右半屏数据地址
RD_BUSY_ADEQU0d001H;
查忙地址
RD_DATA_ADEQU0d003H;
读数据地址
XEQU0B8H;
起始显示行基址
YEQU040H;
起始显示列基址
FirstLineEQU0C0H;
起始显示行
.stack
.data
numberdb03fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
jishudb6dup(?
)
hegedw?
buhegedw?
;
--文字:
燕--
Line1_1db44h,44h,44h,0F4h,04h,0BFh,0A4h,0A4h
db0A4h,0BFh,04h,0F4h,84h,86h,44h,00h
db88h,68h,04h,07h,20h,4Fh,08h,08h
db28h,4Fh,00h,07h,28h,48h,0CEh,00h
"
山"
--
Line1_2db00h,0F0h,00h,00h,00h,00h,00h,0FFh
db00h,00h,00h,00h,00h,0F0h,00h,00h
db00h,7Fh,20h,20h,20h,20h,20h,3Fh
db20h,20h,20h,20h,20h,7Fh,00h,00h
大"
--
Line1_3db20h,20h,20h,20h,20h,20h,0A0h,7Fh
db0A0h,20h,20h,20h,20h,30h,20h,00h
db00h,40h,40h,20h,10h,0Ch,03h,00h
db01h,06h,08h,10h,20h,60h,20h,00h
学"
–
Line1_4db40h,30h,11h,96h,90h,90h,91h,96h
db90h,90h,98h,14h,13h,50h,30h,00h
db04h,04h,04h,04h,04h,44h,84h,7Eh
db06h,05h,04h,04h,04h,06h,04h,00h
乔"
Line2_2db10h,10h,10h,12h,92h,72h,1Eh,12h
db11h,0B1h,51h,91h,10h,18h,10h,00h
db02h,02h,01h,41h,30h,0Fh,00h,00h
db00h,0FFh,00h,00h,01h,03h,01h,00h
旋"
Line2_3db08h,08h,0F9h,4Eh,48h,0CCh,28h,10h
db2Fh,24h,0E4h,24h,24h,0A6h,64h,00h
db40h,30h,0Fh,20h,40h,0BFh,40h,20h
db1Fh,20h,7Fh,84h,86h,0C4h,40h,00h
微"
Line3_1db10h,88h,0C4h,0A3h,0BCh,0A0h,0BFh,0A0h
db0BCh,20h,0D8h,17h,90h,78h,10h,00h
db01h,00h,0FFh,40h,3Eh,02h,02h,3Eh
db90h,48h,33h,0Ch,33h,0C0h,40h,00h
机"
--`
Line3_2db10h,10h,0D0h,0FFh,90h,10h,00h,0FCh
db04h,04h,04h,0FEh,04h,00h,00h,00h
db04h,03h,00h,0FFh,80h,41h,20h,1Fh
db00h,00h,00h,3Fh,40h,40h,70h,00h
原"
Line3_3db00h,00h,0FEh,02h,0E2h,0A2h,0B2h,0AEh
db0A2h,0A2h,0A2h,0A2h,0F3h,22h,00h,00h
db40h,30h,0Fh,40h,23h,1Ah,42h,82h
db7Eh,02h,02h,0Ah,13h,60h,00h,00h
理"
Line3_4db44h,44h,0FCh,46h,44h,00h,0FEh,92h
db92h,0FEh,92h,92h,0FFh,02h,00h,00h
db10h,30h,1Fh,08h,48h,48h,44h,44h
db44h,7Fh,44h,46h,44h,60h,40h,00h
.code
===============================================================
主程序
start:
movax,@data
movds,ax
NOP
CALLLCD_INIT;
液晶初始化
CALLDelayTime
callshow
CALLDisLine1;
第2行显示”燕山大学”
callshow
CALLDelayTime
CALLDisLine2;
第3行显示”乔旋”
CALLDisLine3;
第4行显示”微机原理”
movdx,0e003h
moval,88h;
A口输出,B口输出,C口上半段输入作为开关,C口下班段作为灯控制
outdx,al
movbx,0
movsi,offsetjishu
test1:
movdx,0e002h;
所有灯灭
moval,11111111b
xoral,al
读入开关状态
inal,dx
cmpal,11101111b;
第五个开关控制瓶子到位
jzdeng1
looptest1
deng1:
movdx,0e002h
moval,11101110b;
绿灯亮说明在灌装
movcx,20
cc:
calldelay1
loopcc
moval,11111111b;
绿灯灭灌装完毕
movcx,200
next:
calldelay2
loopnext
test2:
cmpal,11001111b
jzdeng2
inchege
movax,hege
movcl,100
divcl
mov[si+3],al;
百位
moval,ah
xorah,ah
movcl,10
mov[si+4],al;
十位
mov[si+5],al;
个位
callshow;
显示
callbujin1;
合格正转,即合格产品放在一起
deng2:
incbuhege;
不合格产品个数
moval,11000111b;
红灯亮显示不合格产品
callbujin2;
不合格反转,即不合格产品放在一起
movax,buhege
mov[si],al;
mov[si+1],al;
mov[si+2],al;
jmptest1;
继续下一次灌装和检测
movax,4c00h;
程序结束
int21h
主程序结束
====================================================================
显示程序
showproc
pushcx
pushax
pushbx
pushdx
movbx,offsetnumber
moval,01110111b
movdx,0e001h
moval,3fh
movdx,0e000h
moval,10111111b
moval,[si+3]
xlat
moval,11011111b
moval,[si+4]
moval,11101111b
moval,[si+5]
moval,11111011b
moval,[si]
moval,11111101b
moval,[si+1]
moval,11111110b
moval,[si+2]
popdx
popbx
popax
popcx
ret
showendp
==========================================================================
延时程序1
delay1proc
pushdx
B:
movdi,30
A:
decdi
jnzA
loopB
delay1endp
================================================================
延时程序2
delay2proc
movbx,10
C:
D:
loopD
decbx
jnzC
delay2endp
===================================================================
步进电机子程序1即正转
bujin1proc
movdx,0f100h
moval,1
movcx,10
again1:
movdx,0f101h
moval,10000000b;
给步进电机a口低脉冲
calldelay1
moval,01000000b
moval,00100000b
moval,00010000b
loopagain1
ret
bujin1endp
==================================================
步进电机子程序2即反转
bujin2proc
again2:
moval,00010000b;
moval,1000000b
loopagain2
bujin2endp
液晶显示=======================================
延时程序
DelayTimePROCNEAR
MOVCX,0
LOOP$
RET
DelayTimeENDP
DisLine1PROCNEAR
LEASI,Line1_1
MOVAL,2;
A-起始显示行地址,第2行
MOVAH,32;
B-起始显示列地址,第32列,以下同
CALLWordDISL;
左半屏,显示一个字子程序
LEASI,Line1_2
MOVAL,2
MOVAH,48
CALLWordDISL
LEASI,Line1_3
MOVAH,0
CALLWordDISR;
右半屏,显示一个字子程序
LEASI,Line1_4
MOVAL,2
MOVAH,16
CALLWordDISR
DisLine1ENDP
DisLine2PROCNEAR
LEASI,Line2_2
MOVAL,4
LEASI,Line2_3
RET
DisLine2ENDP
第4行显示”欢迎使用”
DisLine3PROCNEAR
LEASI,Line3_1
MOVAL,6;
A-起始显示行地址,第6行
MOVAH,32;
CALLWordDISL;
LEASI,Line3_2
MOVAL,6
LEASI,Line3_3
LEASI,Line3_4
MOVAL,6
MOVAH,16
CALLWordDISR
DisLine3ENDP
LCD_INITPROCNEAR
MOVAL,3EH;
初始化左半屏,关显示
CALLWRComL;
写指令子程序
MOVAL,FirstLine;
设置起始显示行,第0行
CALLWRComL
初始化右半屏,关显示
CALLWRComR;
MOVAL,FirstLine;
CALLWRComR
CALLLCDClear;
清屏
MOVAL,3FH;
开显示
CALLWRComR
LCD_INITENDP
LCDClearPROCNEAR
清左半屏
MOVAL,0;
起始行,第0行
MOVAH,0;
起始列,第0列
LCDClearL1:
PUSHAX
MOVCX,64
CALLSETXYL;
设置起始显示行列地址
LCDClearL2:
MOVAL,0
CALLWRDATAL
LOOPLCDClearL2
POPAX
INCAX
CMPAL,8;
共8行
JNZLCDClearL1
清右半屏
MOVAL,0;
LCDClearR1:
CALLSETXYR;
LCDClearR2:
XORAL,AL
CALLWRDATAR
LOOPLCDClearR2
INCAL
CMPAL,8;
JNZL