التعامل مع 7 segment بواسطة pic16f877a

 بسم الله الرحمن الرحيم

بعد ان ناقشنا في الدروس السابقة مقدمة عن متحكمات والمنافذ الرقمية و قمنا ببعض التطبيقات العملية علي المواضيع السابقة






سنناقش في هذا الدرس كيفية التعامل مع 7 sement


تتكون شريحة العداد من 8 ليدات كل ليد يمثلها حرف كما هو موضح في الصورة في الأعلي

مثلا في حالة اردنا عرض رقم 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

تصميم وبرمجة : بلال حسان 
تعليقات