פרויקט לדוגמה 3 הרחבת מספר מוצאי המפתח על ידי שימוש באוגר הזזה

כללי:

מפתח 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 ובדוק שלכל רגל שמסופק לה אדמה ישתנה המספר בחלון התוכנה.


הרמן גדי , מורה לאלקטרוניקה ומחשבים - אורט מגדל העמק Herman Gadi © 2003