כללי:
מפתח LPT סטנדרטי
מספק לנו 8 יציאות ישירות מהמחשב על ידי אוגר הזזה ניתן להוסיף יציאות. כמות
היציאות תהיה יחסית לאורך אוגר ההזזה. בפרויקט אדגים שימוש באוגר 16 יציאות.
הפרויקט משמש כבסיס לפרויקטים נוספים.
שלבי
העבודה:
1.
בנה את המעגל האלקטרוני הבא:
הסבר המעגל:
במעגל זה נעשה שימוש באוגר הזזה בן 8 יציאות מקבליות וכניסה טורית
אחת בשם 74HC595
.
רגל 14 ברכיב U3 מספקת לאוגר ההזזה את המידע
הטורי, אות זה מסופק מהמחשב בעזרת הדק 2 במפתח משמע, ביט D0 באוגר 378H. הרכיב U4
מקבל את אות המידע שלו מרגל
9 של U3 על ידי כך אנו משרשרים שני
אוגרי הזזה של 8 לאחד של 16 (על פי אותו עיקרון ניתן לשרשר כל כמות של אוגרים).
רגל 11 משמשת ככניסת שעון עבור האוגר, כל פולס עליה ברגל זו האוגר מזיז את המילה
ביט אחד. אות זה מסופק מהמחשב בעזרת הדק 3 במפתח משמע ביט D1 באוגר 378H.
שים לב ששני האוגרים מקבלים את אותו אות שעון כי הם מתפקדים כאוגר אחד סינכרוני.
רגל 12 משמשת לנעילת המידע ביציאות אוגר ההזזה, על פי התרשים הבא ניתן לראות
שהרכיב כולל אוגר של 8 ביט שנישלט על ידי רגל 12 כלומר רק עליה של פולס ברגל
זו תגרום למוצאים להראות את המידע שהוכנס לאוגר, מצב זה נועד למנוע אפשרות של
שינוי היציאות של אוגר ההזזה בזמן הוצאת המילה מהמחשב. אות זה מסופק למחשב דרך
הדק 4 במפתח משמע, ביט D2 באוגר 379H.
רגל 13 שמעלה
את אותות המוצא לעכבה גבוהה (נתק) מחוברת לאדמה באופן תמידי כל לא נעשה שימוש
במצב זה בדוגמה שלנו.
רגל 10 (MR) משמשת לאיפוס המידע באוגר
ההזזה. התרשים הבא מראה שאוגר ההזזה בנוי מ- 8 דלגלגים מדגם D-flip כאשר האות MR מחובר לרגל
האיפוס של הדלגלג. בפרויקט שלנו אין שימוש בפונקציה זו לכן האות מחובר קבוע ל-
5V
שים לב ששני האוגרים מקבלים את אותו אות כי הם מתפקדים יחדיו כאוגר אחד.
2.
הורד את הקובץ model_lpt.zip
3.
הפעל את הקובץ.
4.
גש לחלון הטופס והוסף לו את הפקדים הבאים:
5. גש לכתיבת
לחלון הקוד של Form1 וכתוב בו את הקוד הבא:
Dim A, b, x As
Byte
Private Sub Command1_Click()
x = 0
While (x = 0)
DoEvents
b = 1
For A = 1 To 8
If (Val(Text2.Text)
And b) = b Then
OUTPORT &H378,
&H0
OUTPORT &H378,
&H2
OUTPORT &H378,
&H0
Else
OUTPORT &H378,
&H1
OUTPORT &H378,
&H3
OUTPORT &H378,
&H1
End If
b = b And &H7F
b = b * 2
Next A
b = 1
For A = 1 To 8
If (Val(Text1.Text)
And b) = b Then
OUTPORT &H378,
&H0
OUTPORT &H378,
&H2
OUTPORT &H378,
&H0
Else
OUTPORT &H378,
&H1
OUTPORT &H378,
&H3
OUTPORT &H378,
&H1
End If
b = b And &H7F
b = b * 2
Next A
OUTPORT &H378,
&H0
OUTPORT &H378,
&H4
OUTPORT &H378,
&H0
Wend
End Sub
Private Sub Command2_Click()
x = 1
End Sub
הסבר
התוכנית:
התוכנית
כולה יושבת בתוך לולאת While אין סופית מפני שעל ידי כך ניתן לראות
את האותות המיוצרים על ידי התוכנה בסקופ. בפועל יש לקחת את קטע התוכנית ולהעביר
אותו לשגרה שתופעל רק בזמן הצורך.
מרכז התוכנה
כולל שתי לולאות For בנות 8 מחזורים
כל אחת, ותנאי הבודק את מצב הביט שצריך להעביר כל פעם מהמספר שנקלט בתיבת הטקסט.
לדוגמה אם
אנו צריכים לשדר את הביט השני בתיבת הטקסט ומספרו 15 אזי המחשב עושה פעולת AND על המספר
עם המספר 00000010
(משתנה b בשורת התנאי) If
(Val(Text1.Text) And b) = b Then
אם המספר שווה ל- 00000010 אזי בביט השני יש אחד אחרת יש בו אפס.
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
המספר
שניקלט בתיבת הטקסט (7) |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
המשתנה
b , בודק
את הביט השני |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
תוצאת
פעולת AND על שני המספרים מראה שיש 1 בביט השני. |
אם הביט
אחד אזי צריך לשדר אפס על הדק 14 של אוגר ההזזה ולהכניס אותו לאוגר על ידי פולס
עליה בשעון (פין 11 באוגר ההזזה)
שידור
אפס לוגי |
OUTPORT &H378, &H0
OUTPORT &H378, &H2
OUTPORT &H378, &H0 |
בשורה הראשונה משדרים אפס בכל הביטים כולל ביט D0
(ביט המידע) בשורה השניה מעלים את ביט D1 (ביט השעון) ומשאירים את ביט המידע
באפס ובסוף מורידים את כולם לאפס. |
שידור
אחד לוגי |
OUTPORT &H378, &H1
OUTPORT &H378, &H3
OUTPORT &H378, &H1 |
בשורה הראשונה משדרים אחד על ביט D0 (ביט המידע) בשורה השניה
מעלים את ביט D1
(ביט השעון) ומשאירים את ביט המידע באחד ובסוף מורידים את ביט השעון
לאפס. |
שאלה? למה צריך לשדר אפס כאשר משדרים אחד ואחד כאשר משדרים אפס ולא
להפך?
תשובה: הלדים המחוברים ליציאות האוגר מופעלים באפס בגלל שהם ניזונים
ממתח של 5V באנודה. על כן כדי שיהיה נוח
הפכתי את המילה וכך אחד במילה יגרום לאפס בקתודה משמע הלד יידלק.
שאלה? למה לא צריך להשהות את הזמן בין השורות כדי לאפשר זמן עליה וירידה
נאותים בפולסים השונים?
תשובה: בבדיקת זמנים עולה שהזמן המינימלי שהמחשב משנה מצב באחד ההדקים
של המפתח הוא סביב 2.5 מיקרו שניות זמן שמספיק לרכיבים
מסדרת TTL לקלוט את השינוי.
בסוף שתי
הלולאות אנו משדרים פולס הצגה OE ברגל 13 כדי להציג את תוכן שני האוגרים.
בדיקת
המוצאים:
הפעל את
התוכנה או הורד מהאתר את הקובץ LptSiriaOut.zip והפעל אותו.
בדוק בעזרת
סקופ את האותות ברגל 1 ו- 2 של הרכיב U5 והשווה אותו לתרשים הבא:
בתמונה הבאה ניתן לראות את פולס הנעילה (האות העליון) שלפניו מופיעים 9 פולסי
שעון (האות התחתון).
בתמונה הבאה
ניתן לראות את הנעילה של המספר 000001001 כלומר המספר 9 באוגר הזזה של 9 מקומות.
האות העליון מתאר את הדק כניסת המידע לאוגר והאות התחתון מתאר את פולסי השעון,
שים לב שהנעילה של המידע מתבצעת בעליה של אות שעון משמע באמצע את המידע.
כדי לבדוק
את אוגר ההזזה ספק אדמה לרגלים 3 עד 6 ו- 10 עד 14 של הרכיב U5 ובדוק שלכל רגל שמסופק לה אדמה ישתנה המספר בחלון התוכנה.
|