شمارنده تک رقمی با سون سگمنت Atmel Studio
29 آذر, 1393
کتابخانه lcd کاراکتری برای Atmel Studio
3 دی, 1393
شمارنده تک رقمی با سون سگمنت 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);     } }