
شمارنده تک رقمی با سون سگمنت Atmel Studio
29 آذر, 1393
کتابخانه lcd کاراکتری برای Atmel Studio
3 دی, 1393
بازدیدها: 38
در این مثال می خواهیم یک شمارنده دو رقمی بالا شمار طراحی کنیم. متغییر counter به عنوان شمارنده در حلقه تکرار به صورت افزایشی مقدار آن تغییر میکند. در تابع main دو پورت D و C به صورت خروجی تعریف میشوند و در حلقه تکرار مقدار متغییر counter به دو رقم کم ارزش و با ارزش شکسته شده و سپس در اشاره گر آرایه قرار میگیرد و کد متناظر با آن عدد از آرایه استخراج و روی پورت قرار میگیرد.
همانطور که میدانیم اگر یک عدد دو رقمی را بر 10 تقسیم کنیم در خارج قسمت مقدار با ارزش عدد را خواهیم داشت و در باقیماند مقدار کم ارزش را داریم، که در اینجا با کمک دستور / تقسیم و % باقیمانده این کار را انجام میدهیم. شرطی هم برای جلوگیری از سرریز برقرار میکنیم تا اگر شمارنده بزرگتر از 99 شد ریست شود. تاخیر هم سرعت شمارش را تعیین میکند که در اینجا 100 میلی ثانیه می باشد.
#include#define F_CPU 1000000 #include unsigned char counter,cathode_seg[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; int main(void) { PORTD=0x00; DDRD=0xFF; PORTC=0x00; DDRC=0xFF; while(1) { PORTC=cathode_seg ; PORTD=cathode_seg; counter++; if(counter>99) counter=0; _delay_ms(100); } }
