بسم الله الرحمن الرحيم
بعد ان ناقشنا في الدروس السابقة مقدمة عن متحكمات والمنافذ الرقمية و قمنا ببعض التطبيقات العملية علي المواضيع السابقة
سنناقش في هذا الدرس كيفية التعامل مع 7 sement
مثلا في حالة اردنا عرض رقم 0
نقوم بتشغيل ليد رقم c , b , a, f , e, d
وهكذا مع باقي الأرقام
سنقوم بالطبع بتوصيل كافة منافذ 7 segment الي المنافذ من فئة RB
ويجب ان تشترك منافذ 7 segment في نفس الفئة من المنافذ لضمان كود سريع وقصير
وسنوصل com anode الي مصدر الجهد 5 فولت عبر مقاومة لحماية الشريحة
الكود
#include <pic16f877a.h>
#include <xc.h>
#define _XTAL_FREQ 20000000
int main() {
char seg_code[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int i;
TRISB = 0x00;
while (1)
{
for (i = 0; i <= 9; i++) // loop to display 0-9
{
PORTB = seg_code[i];
_delay_ms(1000);
}
}
}
قمنا في البداية بتعريف قيم الأرقام المخصصه في صورة نظام السداسي عشر فمثلا 0xc0 والتي تعني 11000000
وعند اخراج قيمة صفر علي احد المنافذ يتم تشغيل الليد المسئول عن منطقة في الشريحة
ثم قمنا بتعيين منافذ rb كمخرج ثم قمنا بعمل الحلقة الخاصه بنا
والقراءة من المصفوفة واخراج كل قيمة من المصفوفة كاشارة علي منافذ port b والإنتظار لمدة 1000 مللي ثانية
وهكذا ينتج لدينا عداد بسيط باستخدام شريحة pic16f877a
تصميم وبرمجة : بلال حسان