硬件生产实习报告
起止日期:2009.10.25-2009.10.29
步进电机控制应用程序设计
一、 实验目的
学习控制应用程序设计。
二、 实验内容
用汇编语言来设计步进电机的运转,控制步进电机可以正转、反转和退
出。
二、 设计原理及说明
采用的步进电机内有四个绕组,步进电机工作时,同一时刻仅有两个绕组中
有电流通过,步进电机的转动是通过加在电机绕组上的电流的切换次序来实现
的。步进电机的转速和转向分别由绕组上电流的切换速度和切换顺序来控制。设
步进电机的四相绕组为 A,B,C,D,若按 AB、BC、CD、DA、AB 的次序给各个绕
组加电,电机正转;按 AB、DA、CD、BC、AB 的次序加电则电机反转。步进电机
绕组的驱动电流一般为几百毫安培,不能直接由 I/O 口驱动。这里用 DS2003 驱
动,每路的驱动电流最大可达 500 毫安培。74LS273 输出的 Q4~Q7 脚的信号用来
驱动步进电机。
实验中,对 74ALS273(地址 E460H)的 D7-D4 引脚分别对应电机的 A、B、C、
D,只要对上述引脚按 AB、BC、CD、DA、AB 的次序加高电平,则可以实现电机转
动,实验中对 74ALS273 输出一个 cch(11001100)如果使其正转则不断左移输出,
使其反转则不断右移输出,如此则实现了步进电机的旋转功能。
为了方便控制,即使判断退出,程序设置了计录圈数,每次控制正转或反转
8 圈,再回到选择界面,判断是否退出,再对功能进行切换。
三 、程序设计流程图
开始
显示提示
正转8圈
反转8圈
Y
Y
按1
按2
N
N
按3
Y
退出?Y/N
N
Y
退出
四、程序源代码
.model small
.stack
.data
msg1 db '1 clk ward',10,13,'2 anticlk ward',10,13,'3 exit',10,13,'$'
msg2 db 'exit? Y/N',10,13,'$'
.code
start:
mov ax,@data
mov ds,ax
L:mov dx,offset msg1;显示提示
mov ah,09h
int 21h
mov ah,01h;键盘输入
int 21h
cmp al,'1'
jz L1;输入 1 正转 8 圈
cmp al,'2'
jz L3;输入 2 反转 8 圈
cmp al,'3'
jz L5;输入 3 退出
jmp L1
L5:mov ax,4c00h;退出
int 21h
L1:mov dx,offset msg2;正转;显示退出的提示
mov ah,09h
int 21h
mov al,0cch;对电机置数
mov cx,160;控制转动次数
L2: mov dx,0e460h
out dx,al;输出控制数
rol al,1;左移一位
call delay
call delay
call delay
loop L2
mov ah,01h;转 8 圈后输入退出选择
int 21h
cmp al,'y';选 y 则退出
jz L5
cmp al,'n';选 n 则从头开始
jz L
L3:mov dx,offset msg2;反转;显示退出的提示
mov ah,09h
int 21h
mov al,0cch;对电机置数
mov cx,160;控制转动次数
L4: mov dx,0e460h
out dx,al;输出控制数
ror al,1;右移一位
call delay
call delay
call delay
loop L4
mov dl,0
mov ah,01h;转 8 圈后输入退出选择
int 21h
cmp al,'y';选 y 则退出
jz L5
cmp al,'n';选 n 则从头开始
jz L
delay proc;延时子程序
push bx
push cx
mov bx,255
delay1:xor cx,cx
delay2:loop delay2
dec bx
jnz delay1
pop cx
pop bx
ret
delay endp
end start
五.心得体会:
顾小东(0603290124)
这是一个比较常见的控制程序,所用到的知识为微机接口中讲过的很常用的 I/O 指令。
该实验主要就是巩固以前学过的汇编语言知识,需要对汇编语言熟练掌握才能很快完成。
通过这样的练习,我基本回忆了汇编语言的常用语法,对于编程能力的提高有极大的好
处,另外这种程序是基于硬件的,有助于我们对硬件知识有更深的理解。
通过这次练习给我最大的收获不是学习编程,而是不断发现问题从而自己去查阅资料解
决它的过程。我想这样对以后从事研究也是大有裨益的。
姜海建(0606230125)
这就是一个简单的借口控制程序,首先知道步进电机的端口号,然后根据 I/O 指令将控
制代码写入控制端口号直接控制部件的运行。
这个程序主要还是看汇编程序的基本功,因为程序的思路是非常明确的。程序的要求涉
及到一个数模转换的问题,我们通过上网查阅资料,解决了这个关键问题,这样所有问题就
迎刃而解了。
通过这次练习,我们基本又复习了一遍微机接口,进一步加深了对微机接口编程的熟悉
度,这对我们使一次很好的锻炼。
3 温度测量与控制应用程序设计
一、 实习目的
学习控制应用程序的设计。
二、 实验内容
用汇编语言来设计控制温度的程序,可以进行控制加热或停止加热,能测量出
它的当前温度值显示出 PC 屏幕上。
三、 设计原理及说明
电路如图所示,由 74LS273 输出的 D3 位元控制 TIP41C 功率三极管的基极,
其地址偏移量为 60H。D3=1 时导通三极管,使其开始发热,由此加热热敏电阻,
通过图 所示放大电路将电阻的改变转换为电压的改变,然后将电压送入
ADC0809 读出电压值,并转换为温度值,送微机并显示。D3=0 时,TIP41C 的基
极为低电平,三极管截止,停止加热。
四、 硬件连线
把 C1 区 JP71 的短路块去掉,把 D2 区 J100 的 T1 端和 T2 端相连,把 D2 区 J87
与 C1 区 J65(ADC0809 的输入端点)的 IN0 端相连。
五、 程序设计流程图
开 始
加 热
读 取 温 度
进 制 转 换
显 示 数 据
Y
键 盘 按 下 ?
N
温 度 大 于 5 0 ?
Y
停 止 加 热
N
退 出
六、程序源代码
.model small
.data
num db ?
.stack
.code
start:
mov ax,@data
mov ds,ax
L1:mov dx,0e460h
mov al,08h;加热
out dx,al
L3:mov dx,0e480h
mov al,0
out dx,al;启动 0809
call delay
call delay
call delay;延时
in al,dx;读取温度
mov num,al;存入 num
xor cx,cx
L4:mov ah,0;将温度值除 10 各位压栈
mov bl,10
div bl
push ax
inc cx
cmp al,0
jnz L4
L5:pop bx;从高到低出栈显示各位
push dx
add bh,'0'
mov dl,bh
mov ah,2
int 21h
pop dx
loop L5
mov dl,13
int 21h;回车一下,清屏
call pckey;检测键盘事件
pop ax
cmp num,50;比较温度
ja L2;高于 50 则不加热
jmp L1;否则从头开始加热
L2:mov dx,0e460h;停止加热
mov al,00h
out dx,al