بسم الله الرحمن الرحيم
السلام عليكم
كنا قد ناقشنا تحويل الأرقام الثنائيه الى جهود(التحويل من رقمى الى تماثلى) فى الرابطه
http://www.nowah.net/bb/viewtopic.php?t=18...e15c3ed52c9437e
والأن نناقش العكس أى من جهود الى أرقام ثنائيه
هذه هى أحدى الطرق للتحويل من تماثلى الىرقمى, حيث الفكره تعتمد على توليد عداد يعد من 0000 الى 1111 ثم تحويل هذا العداد الى جهود مختلفه (كما عملنا فى الرابطه السابقه)
ثم أخذ كل جهد من هذه الجهود ومقارنته بالجهد المراد تحويله(بواسطه المقارن 339 )
فعندما يكون الجهد الخارج من العداد(الموصل بالطرف 6 للمقارن) اعلى من الجهد المراد تحويله(الموصل بالطرف 7 للمقارن) يتحول خرج المقارن من الواحد المنطقى الى صفر منطقى ويشعر
البرنامج بهذا التغير فيوقف العد ويخرج العدد الحالى فى العداد داخل صندوق رسائل(MSGBOX)
- وهذا هو البرنامج
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 Private Sub Command1_Click() For i = 0 To 15 out &H378, i a = inp(&H379) And &H8 If a = 0 Then Exit For End If dealy 1 Next i MsgBox i End Sub Sub dealy(i As Long) j = Timer + i Do Until j <= Timer Loop End Sub
حيث وضعنا تأخير ثانيه واحده بين كل رقم والرقم التالى فى العداد حتى نلاحظ عمل البرنامج
على الثنائيات الضوئيه فى الدائره
-والدائره كالتالى

مع ملاحظه توصيل الأطراف 10,11,12,13 من منفذ الطابعه بالأرضى مع توصيل أى طرف من 18 الى 25 للمنفذ بالأرضى. ثم نوصل خرج المقارن(الطرف 1) بالطرف 15 للمنفذ.ثم توصيل QA,QB,QC,QD الى الأطراف 2,3,4,5 فى المنفذ على الترتيب
بعد ذلك نغير الجهد بواسطه المقاومه المتغيره R1 (وهو يمثل الجهد المراد تحويله) ونشغل البرنامج
- البرنامج التالى هو تطوير البرنامج السابق حيث سوف ياخذ عينه من الجهد كل خمسه ثوانى
ويحولها الى ارقام عشريه ثم يضع هذه الأرقام داخل list box لذلك يجب أضافه قائمه بأسم
(list1) بجوار زر الأمر ثم يمكن أجراء أى عمليات على هذه الأرقام المعبره عن الجهود
ولأنهاء البرنامج(أنظر الرابطه السابقه)
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 While z = True Command1.SetFocus For i = 0 To 15 out &H378, i a = inp(&H379) And &H8 If a = 0 Then Exit For End If dealy 1 Next i List1.AddItem i DoEvents dealy 5 Loop End Sub Sub dealy(i As Long) j = Timer + i 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.5 فولت اى أقصى جهد للتحويل هو 2.5 فولت . ولرفع هذا الجهد الى 4 فولت يجب استخدام الدائره 741 التاليه(وتم
شرحها فى الرابطه السابقه)
ثم نوصل خرج 741 (الطرف 6) بالطرف 6 للمقارن 339
.gif)












.gif)



