کتابخانه LCD با سه پایه میکروکنترلر
کتابخانه LCD کارکتری با سه پایه میکروکنترلر – (74hc164)
به راحتی با استفاده از یک شیفت رجیستر 74HC164 (از نوع SIPO است) و سه پایه میکروکنترلر LCD کارکتری راه اندازی کنید. در صورتی که در پروژه خود با محدودیت تعداد پایه های میکروکنترلر روبرو هستید میتوانید با استفاده از این کتابخانه و فقط سه پایه از میکروکنترلر LCD کارکتری را راه اندازی کنید.
شیفت رجیستر SIPO
SIPO به معنای “شیفت به یک طرف” است که اختصار عبارت “Serial In Parallel Out” را تشکیل میدهد. رجسیترهای SIPO از یک سری فلیپ فلاپ (D یا JK) تشکیل شدهاند. این رجسیترها به صورت متوالی دادهها را از ورودی دریافت کرده و در خروجیها به صورت همزمان (پارالل) ارائه میدهند.
در یک SIPO، دادهها به صورت سریال (یک بیت در هر لحظه) وارد میشوند و به صورت همزمان از خروجیها خوانده میشوند (پارالل). این عمل باعث ایجاد یک رجسیتر میشود که دادهها به صورت متوالی وارد شده، در زمان مشخص به صورت همزمان به خروجیها انتقال یابد.
یکی از کاربردهای شیفت رجیسترهای SIPO در سیستمهای دیجیتال و میکروکنترلرهاست. این رجسیترها برای انتقال داده از یک بخش از مدار به بخش دیگر به کار میروند.
کتابخانه را ابتدای برنامه اضافه کنید و وارد فایل آن شوید، در ابتدای کتابخانه پایه های مورد استفاده از میکروکنترلر را تعریف کنید.
1 2 3 4 5 6 7 8 9 10 11 12 | #define data_port PORTC #define direction_port DDRC #define clk_port PORTC #define clk_direction DDRC #define enable_port PORTC #define enable_direction DDRC //-----------define port----------------------------------------------- #define datapin 0 // define datapin from atmega8 to 74HC164 #define clockpin 1 // define clock pin from atmega8 to 74HC164 #define Epin 2 // controller pin that enables LCD |
تعریف پایه ها در کتابخانه میکروکنترلر ایکسمگا
1 2 3 4 5 6 7 8 9 10 | #define data_port PORTC.OUT #define direction_port PORTC.DIR #define clk_port PORTC.OUT #define clk_direction PORTC.DIR #define enable_port PORTE.OUT #define enable_direction PORTE.DIR //-----------define port----------------------------------------------- #define datapin 6 #define clockpin 7 #define Epin 7 |
در ابتدای برنامه اصلی تابع آماده سازی LCD را فراخوانی کنید
1 | LCDinit(); |
در ادامه از توابع کتابخانه LCD برای نمایش اطلاعات استفاده کنید
1 2 3 4 5 6 7 8 | LCDclr(); void LCDGotoXY(uint8_t, uint8_t); void LCDstring(uint8_t*, uint8_t); void LCDshiftRight(uint8_t); //shift by n characters Right void LCDshiftLeft(uint8_t); //shift by n characters Left void LCDcursorOn(void); //Underline cursor ON void LCDcursorOnBlink(void); //Underline blinking cursor ON void LCDcursorOFF(void); //Cursor OFF |