الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مواضيع متفرقه عن العددات و منفذ الطابعه

مغلق
بدأه ibramoh في 23 ديسمبر 2005 · 7 رد · 5,428 مشاهدة · في التحكم الصناعي وربط الحاسب بالعالم الخارجي
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم ورحمه الله وبركاته

--أولآ-- عمل عداد بعده لغات واخراجه من منفذ الطابعه

يتكون البرنامج من عداد عباره عن حلقه --LOOP -- وكود للتآخير --DELAY -- ثم آخيرا أمر أخراج من منفذ الطابعه -- OUT --

-- يمكن تجربه الرامج بواسطه توصيل 8 ثنائيات ضوئيه الى منفذ الطابعه -- PORT A -- الأطراف

من 2 الى 9 -- أو بواسطه أستخدام برنامج محاكى منفذ الطابعه ونحصل عليه من الرابطه

http://www.geekhideout.com/parmon.shtml

--1- بأستخدام الفيجوال بيسك

فى هذه الحاله سنحتاج الى مكتبه INPOUT.DLL نحصل عليها من هذه الرابطه مع شرح

لأستخدام منفذ الطابعه بواسطه الفيجوال بيسك

http://www.c4arab.com/showlesson.php?lesid=738

Private Declare Sub out Lib "inpout32.dll" Alias "Out32" (ByVal portaddress As Integer, ByVal value As Integer)
Private Declare Function inp Lib "inpout32.dll" Alias "Inp32" (ByVal portaddress As Integer) As Integer
Dim z As Boolean
Private Sub Command1_Click()
Do Until z = False
For x = 0 To 15
dealy 1
out &H378, x
Next x
DoEvents
Loop
End Sub
Sub dealy(i As Long)
j = Timer + 1
Do Until j <= Timer
Loop
End Sub

Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
z = False
End Sub

Private Sub Form_Load()
z = True
End Sub

-- 2--بأستخدام الفيجوال سى

نعمل مشروع من نوع CONSOLE ثم ملف من نوع CPP ثم نكتب هذا الكود فيه

#include "conio.h"
int main()
{
	int i,z;
	do
	{for(i=0;i<=15;i++)
	{for(z=0;z<100000;z++)

	_outp(0x378,i);}
	}while(!kbhit());
return 0;	
}

-- 3 -- بواسطه دلفى

يوجد طريقتان للتعامل مع منفذ الطابعه فى دلفى

الأولى بواسطه كتابه كود أسمبلى داخل دلفى كالأتى

var
  Form1: TForm1;

implementation

{$R *.dfm}

 procedure outp(data:byte;add:word);
begin
  asm
     mov al,data
     mov dx,add
     out dx,al
   end;
 end;
procedure TForm1.Button1Click(Sender: TObject);
var
x:byte;
begin
x:=0;
repeat
outp(x,$378);
 sleep(1000);
x:=x+1;
until x=15
end;
end.

والثانيه بأستخدام مكتبه IO.DLL ونحصل عليها من الرابطه

http://www.geekhideout.com/iodll.shtml

والكود كالأتى

var
  Form1: TForm1;

implementation

{$R *.dfm}
  procedure PortOut(Port:Word;Data:Byte);stdcall;external'io.dll';
   function PortIn(PowrtWord:Byte):Byte;stdcall;external'io.dll';
  procedure TForm1.Button1Click(Sender: TObject);
var
x:byte;
begin
  x:=0;
  repeat
  PortOut(888,x);
  sleep(1000);
  x:=x+1;
  until x=15
end;

end.

-- 4 -- بواسطه أسمبلى masm 16_bit

.model small
.stack 100h
.code
main proc far
mov bl,00
loop1:
mov cx,0fffh
loop2:
mov ax,0ffffh
loop3:
dec ax
jnz loop3
dec cx
jnz loop2
mov dx,378h
mov al,bl
out dx,al
inc bl
cmp bl,0ffh
jnz loop1

mov ah,4ch
int 21h

main endp
end main

--5-- عمل عداد ثنائى من 00000000 الى 11111111 بواسطه أسمبلى للمتحكم

microcontroller 16f84

	processor 16f84
	include   <p16f84.inc>
	__config  _RC_OSC & _WDT_OFF & _PWRTE_ON
J	equ	H'1F'  
K	equ	H'1E'  
org	0  
	movlw	B'00000000'	
	tris	PORTB  
	movlw	B'00000001'	
	movwf	PORTB  
    bcf     STATUS,C
mloop:	incfsz	PORTB,f	
    movlw	D'50'
	movwf	J	
jloop:	movwf	K	
kloop:	decfsz	K,f	
	goto  kloop
	decfsz	J,f	
	goto	jloop
    goto  mloop
end

ويمكن تجربه هذا البرنامج بواسطه MPLAB والدائره كما فى الرابطه

/index.php?showtopic=44710

بسم الله الرحمن الرحيم

موضوعاتى

-----------

1--التحكم فى مذبذب ومكبر عن طريق منفذ الطابعه

http://www.nowah.net/bb/viewtopic.php?t=18...e15c3ed52c9437e

/index.ph...111&t=43901

2--ادخال البيانات عن طريق منفذ الطابعه

/index.php?showtopic=44710

3--موضوعات متفرقه فى العدادات ومنفذ الطابعه

/index.php?showtopic=84127

4- مختبر ميكروكنترولر من خلال الدوس

http://www.4electron.com/phpbb/viewtopic.p...6768c69292d168c

#2

جزاك الله خير

شرح جبار وبالتوفيق والى مزيد من البرامج

موقع الاعلانات المصرية

www.egylogo.com

100x468.jpg
#3

بسم الله الرحمن الرحيم

السلام عليكم ورحمه الله وبركاته

---- شكرا للأخ smart duetto

------ فى لغه الأسمبلى يمكن تحميل برنامج MASM مع شرح لكيفيه أستخدامه فى الرابطه

http://www.c4arab.com/showlesson.php?lesid=1039

ثانيا عمل عداد بواسطه MATLAB

--------------------------------------

سوف نستخدم محاكى DSP فى ال MATLAB

من محث أوامر matlab فى ال WORKSPACE نكتب الأتى

SIMULINK

ثم من شريط القوائم النافذه الجديده

FILE => NEW => MODEL

ثم نضع الأدوات التاليه على النموذج

SIMULINK => SOURCES => PULSE GENRATOR

SIMULINK => SINKS => SIMOUT TO WORKSPACE

SIMULINK => SIGNAL ROUTING => MUX

SIMULINK =>SIGNAL ATTRIBUTES => DATA TYPE CONVERSION

ثم من محث أوامر MATLAB نكتب

DSPLIB

ثم نضع الأدوات التاليه على النموذج

DSP SOURCES => N SAMPLE ENABLE

SIGNAL MANAGMENT => SWITCHES AND COUNTERS =>COUNTER

ثم نوصل الأدوات لتصبح شاشه النموذج كالأتى

29_12_05_09_14_10_1135919650counter1.gif

نفتح نافذه اعدادات الأداه COUNTER بواسطه نقره مزدوجه عليها ونجعل

MAXIMUM COUNT => 8

OUTPUT => count

ومن نافذه اعدادات الأداه SIMOUT نجعل

SAVE FORMAT => ARRAY

ونترك اعدادات باقى الأدوات على الوضع الأفتراضى لها

ثم من شريط قوائم نافذه الموذج

SIMULATION=> SIMULATION PARMETERS

ثم من بطاقه SOLVER نجعل

STOP TIME => 30

ومن بطاقه WORKSPACE I\O

اسم الزمن TOUT

واسم الخرج

OUTPUT => SIMOUT

ثم نعمل

SIMULATION => START

نذهب الى ال WORKSPACE نجد انه تم اضافه متغيرين SIMOUT , TOUT

ثم نكتب امام محث الأوامر الأ مر

PLOT(TOUT,SIMOUT

يظهر الرسم التالى

29_12_05_09_15_53_1135919753counter_.gif

وعند كتابه الأ مر

STEM(SIMOUT

يظهر الشكل التالى

29_12_05_09_17_16_1135919836counter3.gif

لمزيد من التفاصيل راجع الرابطه

http://www.mathworks.com/access/helpdesk/h...ks/counter.html

بسم الله الرحمن الرحيم

موضوعاتى

-----------

1--التحكم فى مذبذب ومكبر عن طريق منفذ الطابعه

http://www.nowah.net/bb/viewtopic.php?t=18...e15c3ed52c9437e

/index.ph...111&t=43901

2--ادخال البيانات عن طريق منفذ الطابعه

/index.php?showtopic=44710

3--موضوعات متفرقه فى العدادات ومنفذ الطابعه

/index.php?showtopic=84127

4- مختبر ميكروكنترولر من خلال الدوس

http://www.4electron.com/phpbb/viewtopic.p...6768c69292d168c

#4

السلام عليكم

شكرا جزيلا على هذا الشرح الرائع والروابط الرائعة,,

وهذا شرح مفصل للتعامل مع الparallel port من خلال الفيجوال بيسيك

/index.php?showtopic=71831

Hany Saad Mostafa

ITI (Information Technology Institute) l

SD Dept.-Teaching Assistant

---

اسألكم الدعاء بظهر الغيب

#5

بسم الله الرحمن الرحيم

السلام عليكم ورحمه الله وبركاته

-- شكرا للأخ hanysaad

ثالثا عمل عداد بواسطه لغه VHDL

------------------------------------

سوف نستخدم برنامج MAXPLUS2

يوجد طريقتان لكتابه الكود فى MAXPLUS2

الأولى بأستخدام لغه VHDL كالأتى

FILE => PROJECT => NAME

نكتب أسم للمشروع بالأمتداد VHD ونوافق على الرساله التى تخرج من تغير امتداد اسم المشروع ثم

FILE => NEW => TEXT EDITOR FILE

ثم نكتب هذا الكود

 entity counter1 is
port(
   ck,rs:in bit;
   q:out integer range 0 to 15
    );
end counter1;

architecture rtl of counter1 is
begin
process(ck)
variable v:integer range 0 to 15;
begin
if(ck 'event  and ck='1')then
if rs='1' then
v :=v+1;
end if;
end if;
q<=v;
end process;
end rtl;

ثم

FILE => SAVE

ونغير أمتداد أسم التخزين الى VHD ويجب ان يكون اسم الملف هو الأسم داخل الكود ثم

MAX+PLUS|| => COMPILER

بعد التصريف بنجاح نعمل

MAX+PLUS|| => WAVEFORM EDITOR

ثم من شريط القوائم

NODE => ENTER NODES FROM SNF

ونضغط فى النافذه التى تظهر على زر LIST ثم ننقل المتغيرات التى نريد ظهورها فى ال WAVEFORM من الجهه اليسرى فى النافذه الى الجهه اليمنى بواسطه تحديدها ثم نضغط على زر <= ثم فى نافذه ال WAVEFORM نغير متغيرات الدخل بواسطه وضع واحايد وأصفار بأستخدام الأدوات فى عمود الأدوات فى الجهه اليسرى من نافذه ال WAVEFORM ليبدو الدخل كما فى الشكل ثم نخزن ال WAVEFORM EDITOR

ثم من

MAX+PLUS || => SIMULATOR

ينتج من المحاكاه الشكل التالى لكل من WAVEFORM الدخل والخرج

02_01_06_11_49_53_1136274593counter_max.gif

الثانيه بأستخدام لغه ال VERILOG HDL

مثل السابق تماما ولكن عند عمل المشروع والملف نختار الأمتداد V وليس VHD ثم نكتب هذا الكود داخل الملف

  module counter3(ck,rs,q);
input ck,rs;
output[3:0]q;
reg[3:0]q;
always @ (posedge ck or negedge rs)
if(~rs) q=4'b0000;
else q=q+1'b1;
endmodule

ثم نعمل تصريف للملف كا السابق و من ال WAVEFORM EDITOR نحدد الأربعه مخارج لكى ندمجهم معا بواسطه الأتى

node => enter group

ثم أخيرا نعمل المحاكاه فينتج الشكل التالى

02_01_06_11_51_40_1136274700counter_v.gif

لمزيد من التفاصيل راجع الرابطه التاليه

http://www.altera.com/support/examples/ver...er-counter.html

بسم الله الرحمن الرحيم

موضوعاتى

-----------

1--التحكم فى مذبذب ومكبر عن طريق منفذ الطابعه

http://www.nowah.net/bb/viewtopic.php?t=18...e15c3ed52c9437e

/index.ph...111&t=43901

2--ادخال البيانات عن طريق منفذ الطابعه

/index.php?showtopic=44710

3--موضوعات متفرقه فى العدادات ومنفذ الطابعه

/index.php?showtopic=84127

4- مختبر ميكروكنترولر من خلال الدوس

http://www.4electron.com/phpbb/viewtopic.p...6768c69292d168c

#6

بسم الله الرحمن الرحيم

السلام عليكم ورحمه الله وبركاته

--- رابعا المحلل المنطقى LOGIC ANALYZER

-----------------------------------------------------

سوف نستعين ببرنامج المحلل المنطقىالمرفق مع كتاب دار شعاع " مشاريع فى الدارات المتكامله بأستخدام الحاسب الشخصى " وسوف أضع القرص فى المرفقات . وسوف أستخدم ثلاث ملفات فقط من القرص هما

TESTCKT1.CLA , 88TEST.CLA , 88CLA.EXE

--- هدفنا أن شاء الله هو عمل عداد ازاحه RIPPLE COUNTER بواسطه الدائره 4017 وأظهاره داخل المحلل -- تتكون دائره المحلل من دائره خرج 74240 وهى عباره عن حاجز مع عاكس للمداخل inverting buffer , توصل الى منفذ الطابعه PORT A -- &H 378--

04_01_06_06_15_01_113642730174_4_.gif

ودائره الدخل 74244 وهى نفس الدائره ادخال بايت in_byte فى الرابطه

/index.php?showtopic=44710

مع بعض التعديلات البسيطه لتلائم برنامج المحلل المنطقى الذى لم نعدل فيه وهى موصله الى

PORTB &H379 فى منفذ الطابعه

04_01_06_06_16_53_113642741374_44.gif

لأختبار الدائره السابقه نوصل خرج الدائره 74240 الى دخل الدائره 74244 كما فى الشكل

ثم نستخدم الملف 88test.cla من داخل البرنامج 88cla.exe كالأتى

نشغل الملف

88cla.exe ثم نضغط على alt+f ثم نضغط حرف L من لوحه المفاتيح --- لأختيار بطاقه LOAD --- ثم نكتب اسم الملف

88test وهو عباره عن عداد ازاحه يخرج من اطراف الخرج الثمانيه لأختبار التوصيل

وبعد تحميل هذا الملف نضغط alt+a -- لأختيار بطاقه ANALYSIS -- فيخرج الشكل التالى

04_01_06_06_18_31_1136427511freez_scan.gif

وللخروج من البرنامج نضغط esc ثم alt+f ثم حرف x

بعد توصيل الدخل بالخرج كما فى الدائره السابقه ثم عمل السابق يظهر الشكل التالى

04_01_06_06_19_44_1136427584freez_scan1.gif

---الجزء الثانى نفصل الدخل عن الخرج أى نفصل التوصيل بين 74240 و 74244 ثم نوصل

خرج الدائره 4017 بدخل الدائره 74244 ونوصل القناه الأولى والثانيه فقط من الخرج 74240 الى

clock , reset للدائره 4017 كما فى الشكل التالى

04_01_06_06_21_07_11364276674_17.gif

ثم نشغل البرنامج testckt1 بكتابته بدل من 88test كالسابق حيث هذا البرنامج عباره عى ساعه تخرج من القناه الأ,لى للخرج ونبضه تخرج من القناه الثانيه كل ثمانيه عدات للساعه وتستخدم فى عمل

ال reset --- فيخرج الشكل الأتى

04_01_06_06_22_27_1136427747freez_scan3.gif

وعند توصيل 4017 وعمل السابق يخرج الشكل التالى

04_01_06_06_23_35_1136427815freez_scan4.gif

المرفقات

disk1.zip

بسم الله الرحمن الرحيم

موضوعاتى

-----------

1--التحكم فى مذبذب ومكبر عن طريق منفذ الطابعه

http://www.nowah.net/bb/viewtopic.php?t=18...e15c3ed52c9437e

/index.ph...111&t=43901

2--ادخال البيانات عن طريق منفذ الطابعه

/index.php?showtopic=44710

3--موضوعات متفرقه فى العدادات ومنفذ الطابعه

/index.php?showtopic=84127

4- مختبر ميكروكنترولر من خلال الدوس

http://www.4electron.com/phpbb/viewtopic.p...6768c69292d168c

#7

جزاك الله كل خير وابعدك عن كل شر

#8

السلام عليكم

عيد مبارك وكل عام وانتم بالف خير

الرجاء ياجماعة الذي لدية اي برنامج يتحكم بالهاتف من اتصال وغيره

ان يتكرم علي بهذه البرامج

ولكم جزيل الشكر

وايضاًبرامج مقاهي الانترنت

رجاااااااااااااااااااااااااااااااااااااااااااااااااء

منتظر الرد

الرجاء الي عندة شي يرسلة على البريد تبعي

hay_fa22c@yahoo.com

ولكم جزيل الشكر :lol: 10

هذا الموضوع مغلق.

مواضيع مشابهة