السلام عليكم ورحمة الله وبركاته
نكمل معنا شرح طرق التعامل مع السفن سكمنت
2- الطريقة الثانية للتعامل مع 7 segment : الربط المباشر
في هذه الطريقة يتم توصيل السفن سكمنت مباشرة بالبك وهنا يجب الانتباه الى عدة نقاط :
الأولى : من المعلوم ان بعض السفن سكمنت تحتوي على سبعة أطراف ماعدا أطراف التغذية
وهذه الأطراف (a,b,c,d,e,f,g) إذن نحتاج الى سبعة اطراف من المايكروكونترولر لربط هذه السفن سكمنت
وهناك أنواع من السفن سكمنت تحتوي على ثمانية أطراف ( السبعة السابقة ويضاف اليها DP )
وهذه DP مختصر كلمة (decimal point) وتمثل النقطة الصغيرة الموجودة أسفل يمين السفن سكمنت ...
فإذا أردنا التحكم في إطفاء وتشغيل DP سنحتاج الى ثمانية أطراف من المايكروكونترولر
أما إذا أردنا أن نجعلها مضيئة دائما أو منطفئة دائما فنربطها مباشرة الى جهد التغذية ولا داعي لتوصيلها بالمايكروكونترولر
النقطة الثانية : البك يعطي جهد 5 فولت عند الإخراج .. وهناك أنواع من السفن سكمنت تعمل بجهد أقل من 5 فولت لذا يجب ربط مقاومات بين البك والسفن سمكنت حتى نحافظ عليها من العطب أو قصر العمر
أما انواع السفن سكمنت التي تعمل بالجهد خمسة فولت فلا داعي لربط هذه المقاومات
لكن كيف أعرف أن السفن سكمنت التي عندي تعمل بالجهد خمسة فولت أو أقل ؟؟
أكيد القرار للداتا شيت
الثالثة : يجب أن نجعل البك يخرج الرقم بصيغة سفن سكمنت وهنا سنحتاج الى الجداول التي أرفقتها في المشاركة السابقة
مثلا لكي نجعل البك يخرج رقم صفر على البورت B لابد ان نكتب
كود:
' Portb=%gfedcba
Portb=%1000000
ولو أردنا عرض رقم 1 نكتب
كود:
' Portb=%gfedcba
Portb=%1111001
وهكذا بقية الأرقام ...
طبعا الكلام أعلاه عن سفن سكمنت من نوع common anode
أما عن common cathode فيكون الأمر بشكل معكوس حيث لو أردنا عرض رقم صفر نكتب
كود:
' Portb=%gfedcba
Portb=%0111111
ولو أردنا عرض رقم 1 نكتب
كود:
' Portb=%gfedcba
Portb=%0000110
وهكذا .....
الآن ... ما رأيكم أن نقوم بكتابة برنامج يمثل عداد من صفر الى تسعة مرة بطريقة CA وأخرى بطريقة CC
لكن قبل ان أبدا بكتابة البرنامج أقول : لا تخف من طول الأرقام التي سأسردها فإنك لن تحتاجها فيما بعد حيث سننتقل الى طريقة اسهل .وإنما شرحت هذه الطريقة المطولة لكي نفهم كيفية العمل بشكل دقيق
كود البرنامج الذي يقوم بالعد من صفر إلى تسعة بطريقة المصعد المشترك
كود:
program counter
dim count as byte
main:
trisb=0
while true
for count=0 to 9
select case count
case 0
portb=%1000000
case 1
portb=%1111001
case 2
portb=%0100100
case 3
portb=%0110000
case 4
portb=%0011001
case 5
portb=%0010010
case 6
portb=%0000010
case 7
portb=%1111000
case 8
portb=%0000000
case 9
portb=%0010000
end select
delay_ms(1000)
next count
wend
end.
وسيكون التنفيذ كما في الصورة المتحركة
كود البرنامج الذي يقوم بالعد من صفر إلى تسعة بطريقة المهبط المشترك
كود:
program counter
dim count as byte
main:
trisb=0
while true
for count=0 to 9
select case count
case 0
portb=%0111111
case 1
portb=%0000110
case 2
portb=%1011011
case 3
portb=%1001111
case 4
portb=%1100110
case 5
portb=%1101101
case 6
portb=%1111101
case 7
portb=%0000111
case 8
portb=%1111111
case 9
portb=%1101111
end select
delay_ms(1000)
next count
wend
end.
لاحظ التنفيذ
نكمل بعد قليل إن شاء الله تعالى