ساخت ساعت دیجیتال با میکروکنترلر ARM
در این بخش دانلود پروژه برنامه نویسی و ساخت ساعت دیجیتال با میکروکنترلر ARM, توسط تیم الکترونیک و برنامه نویسی الکترونیک ۹۸ برای شما علاقه مندان به پروژه های میکروکنترلر ARM با هدف آموزش برنامه نویسی و راه اندازی میکروکنترلرهای ARM آماده شده است. در این پروژه قصد داریم با استفاده از واحد RTT میکروکنترلر یک ساعت دیجیتال طراحی کنیم. صفحه کلید و ال سی دی LCD کارکتری به صورت شکل زیر به میکروکنترلر AT91SAM7S از خانواده میکروکنترلر های ARM متصل می شوند. در برنامه زیر واحد RTT را با فرکانس 1Hz راه اندازی می کنیم و با محاسبات مربوطه ثانیه, دقیقه و ساعت بر روی ال سی دی LCD نمایش داده می شود و توسط کلید های شماره صفر و یک صفحه کلید می توانیم ساعت را تنظیم نماییم.
نقشه شماتیک پروژه
برنامه میکروکنترلر به زبان 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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
#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 s,m,h,l,i; unsigned int n,k,j; s=0; m=0; h=0; l=0; j=0; 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_puts(h); lcd_putchar(‘:’); lcd_puts(m); lcd_putchar(‘:’); lcd_puts(s); AT91C_BASE_RTTC->RTTC_RTMR=0x48000; while(1) { k=AT91C_BASE_RTTC->RTTC_RTVR; n=k+j; s=n%60; m=(n/60)%60; h=(n/3600)%24; if (l!=s) { lcd_clear (); lcd_gotoxy(0,0); lcd_puts(h); lcd_putchar(‘:’); lcd_puts(m); lcd_putchar(‘:’); lcd_puts(s); l=s; } i=keypad_scan (); if (i==0) { j=j+3600; n=k+j; s=n%60; m=(n/60)%60; h=(n/3600)%24; lcd_clear (); lcd_gotoxy(0,0); lcd_puts(h); lcd_putchar(‘:’); lcd_puts(m); lcd_putchar(‘:’); lcd_puts(s); } if (i==1) { j=j+60; n=k+j; s=n%60; m=(n/60)%60; h=(n/3600)%24; lcd_clear (); lcd_gotoxy(0,0); lcd_puts(h); lcd_putchar(‘:’); lcd_puts(m); lcd_putchar(‘:’); lcd_puts(s); } } } |