البرمجة الأساسية باستخدام مسجل الإزاحة 74HC595 والتحكم فى ليدات
البرنامج الأساسى الأول :
الدائرة الكهربية
كود والبرنامج والتعليق عليه :
كود:
/**** البرنامج الأساسى الأول لبيان استخدام 595 والميكروسى ***
التحكم فى 8 ليدات لعرض ضوء متحرك
توصيل أطراف 595 بالميكروكونترولر كما يلى
RB0=DS , RB1=SH-CP , RB2=ST-CP
********************************************/
/* نبدأ بتعريف الأطراف بأسماء متفق عليها ولتسهل فهم البرنامج ويمكن أستخدام
(sbit) OR (#define)
*/
sbit DATA at PORTB.B0; // تعريف طرف البيانات
sbit SH_CP at PORTB.B1; // تعريف طرف ساعة مسجل الإزاحة
sbit ST_CP at PORTB.B2; // تعريف طرف ساعة سجل التخزين
unsigned short count; // تعريف متغير العداد - نوعه واسمه
void main () // الدالة الرئيسية
{
TRISB=0; // تهيئة أطراف المنفذ كمخارج
PORTB=0; // تصفير سجل منفذ الخرج لضمان الحالة الابتدائية
do { // إنشاء حلقة تتكرر بصفة مستمرة
DATA=1; // نبدأ بوضع الواحد كبت بيانات على خط البيانات
SH_CP=0; // ثم نحول خط ساعة مسجل الإزاحة ما بين المنخفض للمرتفع
SH_CP=1; // لإدخال وإزاحة الواحد لتصح محتويات مسجل الإزاحة 10000000
ST_CP=0; // ثم نحول خط ساعة سجل التخزين ما بين المنخفض والمرتفع
ST_CP=1; // لإمساك وإظهار محتويات مسجل الإزاحة على المخارج تبعا لترتيب البتات
DELAY_MS(500); // تأخير زمنى لضمان الاستقرار
/* نستخدم حلقة تتكرر 8 مرات لإدخال صفر على طرف البيانات وتكرار ما سبق
وتكون النتيجة زحزحة الواحد بت فى كل تكرار ليعطى تأثير الضوء المتحرك
*/
for(count=0;count<8;count++) // حلقة تتكرر 8 مرات
{ // فى كل تكرا يتم مايلى
DATA=0; // وضع صفر على خط البيانات
SH_CP=0; // تحويل خط ساعة مسجل الإزاحة ما بين المنخفض
SH_CP=1; // والمرتفع
ST_CP=0; // تحويل خط ساعة مسجل التخزين ما بين المنخفض
ST_CP=1; // والمرتفع
DELAY_MS(500); // تأخير زمنى لضمان الاستقرار
} // نهاية كلقة التكرار
}while(1); // تكرار العملية بصفة مستمرة
} // نهاية الدالة الرئيسية