computer interfacing tutorial-printer, serial, game, usb port
 

 

5.4. Driving Stepper Motor - Port Serial

In this experiment we will show you how easy to drive stepper motor serially. In this experiment we used a converter serial to parallel that we build up by using microcontroller chip. Data will be transfered serially from computer to stepper motor board, as shown in picture bellow.

 

computer interfacing serial rs232

Delphi Programming ( Download file ex514.zip )

a. Puts 1 Edit Components, 1 Timer and label on Form, as shown in picture bellow. Configure Object Inspector for Timer1 as Enabled = True, Interval = 1000 ms, as shown in the picture bellow

computer interfacing serial rs232        computer interfacing serial rs232

 

b.Click on timer1 component to insert with the program as shown bellow

var
form1: Tform1;
data,status:byte;
const
base = $3f8;{base address port serial}
lcr = 3; {line control register}
dll = 0; {divisor lacht low byte}
dlh = 1; {divisor lacht high byte}
lsr = 5; {line status register}
implementation

{$R *.DFM}


Procedure Initserial;
begin
asm
mov dx,base+lcr; {address line control register}
mov al,$80 ; {10000000b = access bit divisor lacht}
out dx,al
;
mov dx,base+dll; {address divisor lacht low byte}
mov al,$30 ; {DLLB = 30h}
out dx,al
;
mov dx,base+dlh; {address divisor lacht high byte}
mov al,$00 ; {DLLH = 00h}
out dx,al
; {Pada saat ini Port serial}
; {memp.baud rate = 2400 bps}
mov dx,base+lcr; {address line control register}
mov al,$03 ; {00000011b =}
out dx,al ; {bit 7=0, access to Rx buffer & Tx
; {bit 6=0, set break disable
; {bit 5-4-3=000, no parity
; {bit 2=0, one stop bit
; {bit 1-0=11,data lenght 8 bit}
end;
end; Procedure Send_Data_Serial;
begin
asm
mov dx,base
mov al,data
out dx,al
end
end; procedure Tform1.FormCreate(Sender: TObject);
begin
Initserial;
end; procedure Tform1.Timer1Timer(Sender: TObject);
begin
timer1.enabled:=false;
repeat
asm
mov dx,base+lsr ; {address line status register }
in al,dx
and al,$20 ; {00100000b =not masking bit 5}
mov status,al ; {bit5=Empty Transmitting holding reg}
end;
until status = $20; { If ETHR = 1 then data ready tobe send }
data:=254; {11111110b}
Send_Data_Serial;
timer2.enabled:=true;
end; procedure Tform1.Timer2Timer(Sender: TObject);
begin
timer2.enabled:=false;
repeat
asm
mov dx,base+lsr ; {address line status register }
in al,dx
and al,$20 ; {00100000b =not masking bit 5}
mov status,al ; {bit5=Empty Transmitting holding reg}
end;
until status = $20; { If ETHR = 1 then data ready tobe send }
data:=253; {11111101b}
Send_Data_Serial;
timer3.enabled:=true;
end; procedure Tform1.Timer3Timer(Sender: TObject);
begin
timer3.enabled:=false;
repeat
asm
mov dx,base+lsr ; {address line status register }
in al,dx
and al,$20 ; {00100000b =not masking bit 5}
mov status,al ; {bit5=Empty Transmitting holding reg}
end;
until status = $20; { If ETHR = 1 then data ready tobe send }
data:=251; {11111011}
Send_Data_Serial;
timer4.enabled:=true;
end; procedure Tform1.Timer4Timer(Sender: TObject);
begin
timer4.enabled:=false;
repeat
asm
mov dx,base+lsr ; {address line status register }
in al,dx
and al,$20 ; {00100000b =not masking bit 5}
mov status,al ; {bit5=Empty Transmitting holding reg}
end;
until status = $20; { If ETHR = 1 then data ready tobe send }
data:=247; {11110111b}
Send_Data_Serial;
timer1.enabled:=true;
end; procedure Tform1.Button2Click(Sender: TObject);
begin
timer1.enabled:=false;
timer2.enabled:=false;
timer3.enabled:=false;
timer4.enabled:=false;
end; procedure Tform1.Button1Click(Sender: TObject);
begin
timer1.enabled:=true;
end;

c. To run the program, you can hits F9 or RUN menu, and then you will show a picture as shown bellow, and try to simulate the program by writing a data on edit1 with range value 0 .. 255 in decimal.

computer interfacing serial rs232

PREVIOUS

 

Free Software
Delphi

Lesson 1
Delphi Programming
1.1. IDE Delphi
1.2. Component


Lesson 2
Printer Port
/ LPT
1.1.Basic
1.2.Address
1.3.Port Register
1.4.8 Bit Data Input
1.5.Test Circuitry
1.6.Assignment

Lesson 3
Printer Port / LPT
Experiments

3.1.LED
3.2.Swicht
3.3.Motor Stepper
3.4.DAC
3.5.ADC
3.6.Graph Display

Lesson 4
Serial Port

4.1.Basic
4.2.Hardware
4.3.Port Register

Lesson 5
Serial Port Experiments

5.1.LED
5.2.Stepper Motor
5.3.Swicht
5.4.ADC

Lesson 6
Game Port
Joy Stick
6.1. Basic
6.2. Experiments