Atmega16 Sử Dụng Nút Nhấn Điều Khiển Tăng Giảm 0-99 Hiển Thị LED 7 Đoạn - CodeVision

Sơ đồ

Code

#include <mega16.h>

#include <delay.h>

#define UP PIND.4

#define DN PIND.5

unsigned char flash Maled[10] = {0xc0,0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8 , 0x80, 0x90};

unsigned char i;

void hienthi(unsigned int num)

{

     unsigned int ch , dv;

     //tach num luu vao bien ch va dv

     dv= num%10;  //ex: 15%10=5

     ch = num/10; //ex: 15/10=1

     //hien thi led so 1

     PORTD.3 = 0;

     PORTD.2 = 1;

     PORTC = Maled[ch];

     delay_ms(1); 

     //hien thi led so 2 

     PORTD.2 = 0;

     PORTD.3 = 1;

     PORTC = Maled[dv];

     delay_ms(1); 

}

 

void main(void)

{

    DDRC = 0xff;  // 1:out,0:in

    PORTC = 0xff; // 1:high,0:low

    DDRD = 0b11001111;

    PORTD = 0b00110000;

    while (1)

          {

             hienthi(i);  

             if(UP==0)

             {

                i++;

                if(i>99)i=0;

                while(UP==0)

                {

                   hienthi(i); 

                } 

             }

             if(DN==0)

             {

                i--;

                if(i==255)i=99;

                while(DN==0)

                {

                   hienthi(i); 

                }

             }

          }

}

Demo

Nhận xét

Mới hơn Cũ hơn