راه اندازی کیپد و LCD کاراکتری با ARM
در این بخش دانلود پروژه اتصال صفحه کلید 4*4 و LCD کارکتری به میکروکنترلر ARM, توسط تیم الکترونیک و برنامه نویسی الکترونیک ۹۸ برای شما علاقه مندان به پروژه های میکروکنترلر ARM با هدف آموزش برنامه نویسی و راه اندازی میکروکنترلرهای ARM آماده شده است. در این پروژه صفحه کلید و ال سی دی LCD کارکتری به صورت شکل زیر به پین های میکروکنترلر AT91SAM7S از خانواده میکروکنترلر های ARM متصل می شوند. در برنامه این پروژه از صفحه کلید عددی خوانده می شود و سپس بر روی ال سی دی LCD نمایش داده می شود.
نقشه شماتیک پروژه
صفحه کلید (کیپد)
صفحه کلید ها شامل یک سری سطر و ستون هستند, که با فشار هر کلید یک سطر به یک ستون متصل می شود. برای خواندن صفحه کلید توسط میکروکنترلر, معمولا از روش اسکن صفحه کلید برای تشخیص کلید فشرده شده استفاده می شود. همانطور که در نقشه شماتیک پروژه مشاهده می کنید می توان ستون ها را با یک مقاومت بالا کش به سطح ولتاژ VCC متصل نمود تا میکروکنترلر هنگامی که هیچ کلیدی فشرده نشده است, سطح منطقی یک (High) را بخواند. سطرها را با توجه به الگوی چرخشی اسکن می کنیم. زمانی میکروکنترلر می تواند در پین یکی از ستون ها صفری تشخیص دهد که کلید فشرده شده آن ستون را به سطر صفر شده وصل کند و با توجه ببه شماره سطر و ستون صفر شده, می توان کلید فشرده شده را تشخیص داد.
توابعی برای اسکن صفحه کلید در نظر گرفته شده است, که کار را با صفحه کلید راحت تر می کند. توابع KEYPAD.h و KEYPAD.c را در مسیری که پروژه خود را ساخته اید کپی نمایید. سپس باید تابع KEYPAD.h را در برنامه خود #include کنید, تابع KEYPAD.c را هم باید به پروژه خود اضافه کنید. در ضمن این توابع برای فرکانس کلاک اصلی 48MHz در نظر گرفته شده است.
برنامه میکروکنترلر به زبان C در نرم افزار IAR Embedded Workbench IDE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include <Atmel/ioat91sam7s64.h> #include “keypad.h” #include “lcd.h” void main () { //——————–start up————————– AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS; // AT91C_WDTC_WDDIS=(1<<15) AT91C_BASE_RSTC->RSTC_RMR=0xA5000001; //——————–speed up————————– AT91C_BASE_CKGR->CKGR_MOR = 0xF01; AT91C_BASE_CKGR->CKGR_PLLR = 0x2903FFC; AT91C_BASE_PMC->PMC_MCKR = 0x3; AT91C_BASE_PMC->PMC_SCER = 0x1; //—————————————————– unsigned char i; lcd_pininit (16,15,5,6,7,8,26,27,28,29); lcd_init (); keypad_pininit (5,6,7,8,17,18,19,20); keypad_init (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); lcd_clear (); lcd_gotoxy (0,0); lcd_putsf (“Keypad”); lcd_gotoxy (1,0); lcd_putsf (“number = ?”); while(1) { i=keypad_key (); lcd_clear (); lcd_gotoxy (0,0); lcd_putsf (“Keypad”); lcd_gotoxy (1,0); lcd_putsf (“number = “); lcd_puts (i); } } |
سلام وقتتون بخیر
این برنامه رو در keil انجام دادین؟ من با keil کار می کنم امکانش هست کد ها به تبدیل شن؟
سلام. خسته نباشید. لطفا اگه امکانش هست. همین برنامه نویسی رو به زبان بسکام قرار بدید. با تشکر.
سلام دوست عزیز
لطفا به قسمت آموزش برنامه نویسی میکروکنترلر AVR در سایت الکترونیک98 مراجعه فرمایید.