1. Led đơn sáng dần và tắt dần
1. Led đơn sáng dần và tắt dần
void main(void)
{ char i, j, tam, tam1;
DDRC=0xff;
while (1)
{
tam1=0;
for(i=0;i<8;i++)
{
tam=0x01;
for(j=0;j<8-i;j++)
{
PORTC=tam|tam1;
delay_ms(50);
tam=tam<<1;
};
tam1=PORTC;
};
}
}
2. 7 đoạn từ 0 tới 9
#include <mega32.h>
#include <delay.h>
unsigned char ma7doan_anode[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92,
0x82, 0xF8, 0x80, 0x90};
void main(void)
{
DDRC= 0XFF;
PORTC= 0XFF;
while (1)
{
int i;
for(i = 0; i<=10;i++)
{
PORTC= ma7doan_anode[i];
delay_ms(50);
}
}
}
3. Led 7 đoạn tăng giảm 1 đv
#include <mega32.h>
#include <delay.h>
#define Down PIND.3
#define Up PIND.2
number++;
chuc=number/10;
dv=number-chuc*10;
PORTC=ma7doan_anode[dv];
PORTB=ma7doan_anode[chuc];
}
number--;
chuc=number/10;
dv=number-chuc*10;
PORTC=ma7doan_anode[dv];
PORTB=ma7doan_anode[chuc];
void main(void)
{
DDRC=255;
DDRB=255;
DDRD=0;
PORTD=255;
GICR=0xc0;
MCUCR=0x0b;
number=00;
#asm("sei")
while (1)
{
chuc=number/10;
dv=number-chuc*10;
PORTC=ma7doan_anode[dv];
PORTB=ma7doan_anode[chuc];
delay_ms(1000);
}
}
4. Sử dụng nút nhấn điều khiển 8 led đơn
#include <mega32.h>
#include <delay.h>
void main(void)
{
DDRC=0xFF;
PORTC=0X00;
DDRD = 0X00;
PORTD = 0X00;
while (1)
{
if (PIND.2 == 1)
{
PORTC = 0XFF;
}
if (PIND.3 == 1)
{
PORTC = 0X00;
}
}
5. Led 7 đoạn sử dụng nút nhấn 00-99
#include <mega32.h>
#include <delay.h>
#define Down PIND.3
#define Up PIND.2
void main(void)
{
PORTC=0xFF;
DDRC=0xFF;
PORTB=0xFF;
DDRB=0xFF;
DDRD=0;
PORTD=0xff;
number=00;
while (1)
{
if (Up==0)
{
while(Up==0);
{
chuc=number/10;
dv=number-chuc*10;
PORTC=ma7doan_anode[dv];
PORTB=ma7doan_anode[chuc];
}
number++;
chuc=number/10;
dv=number-chuc*10;
PORTC=ma7doan_anode[dv];
PORTB=ma7doan_anode[chuc];
if (number>99)
number=0;
}
if (Down==0)
{
while(Down==0);
{
chuc=number/10;
dv=number-chuc*10;
PORTC=ma7doan_anode[dv];
PORTB=ma7doan_anode[chuc];
}
number--;
chuc=number/10;
dv=number-chuc*10;
PORTC=ma7doan_anode[dv];
PORTB=ma7doan_anode[chuc];
if (number<0)
number=0;
}
};
6.
#include <mega32.h>
#include <delay.h>
char i,tam;
void main(void)
{
DDRC=0xff;
PORTC=0;
while (1)
{
tam=0x00;
for(i=0;i<8;i++)
{
tam=(tam<<1)|0x01;
PORTC=tam;
delay_ms(100);
}
for(i=0;i<8;i++)
{
tam=(tam>>1);
PORTC=tam;
delay_ms(100);
}
}
}
7.
#include <mega32.h>
#include <delay.h>
unsigned char ma7doan_anode[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92,
0x82, 0xF8, 0x80, 0x90};
int number, chuc,dv;
void main(void)
{
PORTC=0xFF;
DDRC=0xFF;
PORTB=0xFF;
DDRB=0xFF;
number=00;
while (1)
{
chuc=number/10;
dv=number-chuc*10;
PORTC=ma7doan_anode[dv];
PORTB=ma7doan_anode[chuc];
delay_ms(50);
if (number<100)
{
number++;
}
else
number=0;
};