Sáng dần từ 1 đến 8 và tắt dần từ 8 về 1
Sáng dần từ 1 đến 8 và tắt dần từ 8 về 1
#include <mega32.h>
#include <delay.h>
int i,tam;
void main(void)
{ DDRC=0xff;
PORTC=0x00;
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);
}
}
}
8 led đơn sáng tắt
#include <mega32.h>
#include <delay.h>
void main(void)
{ DDRC=0xff;
PORTC=0x00;
while (1)
{
PORTC=0Xff;
delay_ms(100);
PORTC=0x00;
delay_ms(100);
}
}
Led 7 đoạn tự động đếm từ 0 đến 9
#include <mega32.h>
#include <delay.h>
char led7doan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int i=0;
void main(void)
{ DDRC=0xff;
PORTC=0xff;
while (1)
{
PORTC=led7doan[i];
delay_ms(500);
i=i+1 ;
if (i>9) i=0;
}
}
Sử dụng 2 nút điều khiển 8 led đơn bật tắt
#include <mega32.h>
#include <delay.h>
#define bat PIND.2
#define tat PIND.3
void main(void)
{ DDRC=0xff;
PORTC=0x00;
DDRD=0;
PORTD=0xff;
while (1)
{ if (bat==0)
{ delay_ms(100);
PORTC=0xff;
delay_ms(100);
}
if (tat==0)
{
delay_ms(100);
PORTC=0x00;
}
}
}
Sáng 3 lần
#include <mega32.h>
#include <delay.h>
int tam, i, j;
void main(void)
{
PORTC=0;
DDRC= 0xff;
for( i = 0; i < 3 ; i++)
{
PORTC = 0xff;
delay_ms(300);
PORTC = 0;
delay_ms(300);
}
for (i=0; i <2; i++)
{ tam = 0;
for(j =0; j < 8; j++)
{
tam = (tam<<1)|0X01;
PORTC= tam;
delay_ms(50);
}
for( j = 0; j < 8; j++)
{
tam = (tam>>1);
PORTC = tam;
delay_ms(50);
}
}
}
Nút nhấn
#include <mega32.h>
#include <delay.h>
int tam, i, j, a;
void main(void)
{
PORTC=0;
DDRC= 0xff;
DDRD=0;
PORTD=0xff;
while(1)
{
if( PIND.2== 0)
{
delay_ms(20);
if(!PIND.2)
{
a++;
while(!PIND.2){;}
if( a == 3 ) a = 0;
}
if (a == 1)
{
for( i = 0; i < 3 ; i++) //sang tat 3 lan
{
PORTC = 0XFF;
delay_ms(50);
PORTC = 0;
delay_ms(50);
}
}
if (a == 2)
{
for (i=0; i <2; i++) // sang tat trai sang phai 2 lan
{
tam = 0;
for(j =0; j < 8; j++)
{
tam = (tam<<1)|0X01;
PORTC= tam;
delay_ms(50);
}
for( j = 0; j < 8; j++)
{
tam = (tam>>1);
PORTC = tam;
delay_ms(50);
}
}
}
if ( a == 0 ) PORTC = 0;
}
}
}
7 đoạn đếm 50
#include <mega32.h>
#include <delay.h>
char led[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int i,ch,dv;
void main(void)
{
DDRC=0XFF;
DDRA=0XFF;
PORTC=0XFF;
PORTA=0XFF;
while (1)
{ for (i=0;i<50;i++)
{ ch=i/10;
dv=i%10;
PORTC=led[ch];
PORTA=led[dv];
delay_ms(300);
}
}
}
7 đoạn nut tăng giảm
#include <mega32.h>
#include <delay.h>
#define Down PIND.3
#define Up PIND.2
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;
PORTA=0xFF;
DDRA=0xFF;
DDRD=0;
PORTD=0xff;
number=50;
while (1)
{
if (Up==0)
{
delay_ms(20);
if (Up==0)
{
while(Up==0);
chuc=number/10;
dv=number%10;
PORTC=ma7doan_anode[chuc];
PORTA=ma7doan_anode[dv];
number++;
}
if (number>99)
number=0;
}
if (Down==0)
{
delay_ms(30);
if (Down==0)
{
while(Down==0);
chuc=number/10;
dv=number%10;
PORTC=ma7doan_anode[chuc];
PORTA=ma7doan_anode[dv];
number--;
}
if (number<0)
number=99;
}
chuc=number/10;
dv=number%10;
PORTC=ma7doan_anode[chuc];
PORTA=ma7doan_anode[dv];
delay_ms(200);
}
}