Hi, hôm nay Chip giới thiệu cho các bạn 3 phương pháp lập trình Hiển Thị Led 7 Thanh kết hợp IC số 74LS47, 74HC595 để tối ưu chân Vi Điều Khiển.
I. Phương pháp dùng 2 IC 74LS47 kết hợp hiển thị 2 Led 7 Thanh: Mất 1 Port của VĐK là 8 Chân
II. Phương Pháp dùng 1 IC 74HC595 kết hợp 2 tranzitor hiển thị 2 Led 7 Thanh: mất 5 chân VĐK
III. Phương Pháp dùng 1 IC 74LS47 kết hợp 2 tranzior hiển thị 2 Led 7 Thanh: Mất 6 chân VĐK
Tất cả các phương pháp trên Chip tích hợp trong cùng 1 code rất tiện sử dụng:
Code chương trình biên dịch bằng phần mềm Keil C 4:
/*********DESIGNER BY CHIPKOOL_ONLINE************/
//*************WWW.ECHIPKOOL.COM*************//ADMIN
//************WWW.CODIENTU.ORG***************/MOD
#include <REGX52.H>
#include <stdio.h>
#include <math.h>
#define bat 1
#define tat 0
/*************LAP TRINH VOI 74HC595**************/
sbit sh = P2^0;
sbit ds = P2^1;
sbit st = P2^2;
sbit Led1 = P2^3;
sbit Led2 = P2^4;
int m[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int donvi,chuc;
unsigned char num;
/****************LAP TRINH 2 IC 74LS47************/
int M47[11]={0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0x01};
unsigned char l;
/************LAP TRINH 74LS47 + QUET*************/
int MQ47[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
unsigned char p,so;
int donvi1,chuc1;
sbit Led3 = P3^4;
sbit Led4 = P3^5;
/**************CHUONG TRINH TRE***********************************/
void delay(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<125;j++){;}
}
/****************CHUONG TRINH CHUYEN NOI TIEP SONG SONG 74HC595*******/
void conv(unsigned char x)
{
unsigned int i,temp;
for(i=0;i<8;i++)
{
temp=x;
temp=temp&0x80;
if(temp==0x80)
ds=1;
else
ds=0;
x*=2;
sh=1;
sh=0;
st=1;
st=0;
}
}
/**********CHUONG TRINH HIEN THI CHO 74HC595 + 7 DOAN********/
void hienthi(void)
{
int c;
for(c=0;c<100;c++)
{
chuc=num/10;
donvi=num%10;
conv(m[chuc]);
Led1 = bat;
delay(1);
Led1 = tat;
conv(m[donvi]);
Led2 = bat;
delay(1);
Led2 = tat;
}
}
/*****************CHUONG TRINH HIEN THI LED 7447**************/
void hienthi47(void)
{
int n;
for(n=0;n<20;n++)
{
chuc1=so/10;
donvi1=so%10;
P3 =MQ47[chuc1];
Led3 = bat;
delay(1);
Led3 = tat;
P3 = MQ47[donvi1];
Led4 = bat;
delay(1);
Led4 = tat;
}
}
/***********CHUONG TRINH HOAT DONG 2 IC 7447 + 2 LED 7 DOAN*/
void chay7447(void)
{
for(l=0;l<11;l++)
{
P0=M47[l];
delay(800);
}
}
/***********CHUONG TRINH HOAT DONG 74HC595 + 2 LED & DOAN QUET*/
void chay74hc595(void)
{
hienthi();
num=num+1;
if(num==11)num=0;
delay(300);
}
/**********CHUONG TRINH HOAT DONG 1 IC 7447 + QUET************/
void chay7447quet(void)
{
hienthi47();
so=so+1;
if(so==11)so=0;
delay(200);
}
/**********CHUONG TRINH CHINH**************************/
void main()
{
while(1)
{
//chay7447(); // Phuong phap 1
//chay74hc595();// Phuong Phap 2
chay7447quet(); // Phuong Phap 3
}
}
( File Mô Phỏng + code)
Nguồn: Echipkool - Chia sẻ kiến thức - Kết nối đam mê điện tử
I. Phương pháp dùng 2 IC 74LS47 kết hợp hiển thị 2 Led 7 Thanh: Mất 1 Port của VĐK là 8 Chân
II. Phương Pháp dùng 1 IC 74HC595 kết hợp 2 tranzitor hiển thị 2 Led 7 Thanh: mất 5 chân VĐK
III. Phương Pháp dùng 1 IC 74LS47 kết hợp 2 tranzior hiển thị 2 Led 7 Thanh: Mất 6 chân VĐK
Tất cả các phương pháp trên Chip tích hợp trong cùng 1 code rất tiện sử dụng:
Code chương trình biên dịch bằng phần mềm Keil C 4:
/*********DESIGNER BY CHIPKOOL_ONLINE************/
//*************WWW.ECHIPKOOL.COM*************//ADMIN
//************WWW.CODIENTU.ORG***************/MOD
#include <REGX52.H>
#include <stdio.h>
#include <math.h>
#define bat 1
#define tat 0
/*************LAP TRINH VOI 74HC595**************/
sbit sh = P2^0;
sbit ds = P2^1;
sbit st = P2^2;
sbit Led1 = P2^3;
sbit Led2 = P2^4;
int m[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int donvi,chuc;
unsigned char num;
/****************LAP TRINH 2 IC 74LS47************/
int M47[11]={0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0x01};
unsigned char l;
/************LAP TRINH 74LS47 + QUET*************/
int MQ47[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
unsigned char p,so;
int donvi1,chuc1;
sbit Led3 = P3^4;
sbit Led4 = P3^5;
/**************CHUONG TRINH TRE***********************************/
void delay(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<125;j++){;}
}
/****************CHUONG TRINH CHUYEN NOI TIEP SONG SONG 74HC595*******/
void conv(unsigned char x)
{
unsigned int i,temp;
for(i=0;i<8;i++)
{
temp=x;
temp=temp&0x80;
if(temp==0x80)
ds=1;
else
ds=0;
x*=2;
sh=1;
sh=0;
st=1;
st=0;
}
}
/**********CHUONG TRINH HIEN THI CHO 74HC595 + 7 DOAN********/
void hienthi(void)
{
int c;
for(c=0;c<100;c++)
{
chuc=num/10;
donvi=num%10;
conv(m[chuc]);
Led1 = bat;
delay(1);
Led1 = tat;
conv(m[donvi]);
Led2 = bat;
delay(1);
Led2 = tat;
}
}
/*****************CHUONG TRINH HIEN THI LED 7447**************/
void hienthi47(void)
{
int n;
for(n=0;n<20;n++)
{
chuc1=so/10;
donvi1=so%10;
P3 =MQ47[chuc1];
Led3 = bat;
delay(1);
Led3 = tat;
P3 = MQ47[donvi1];
Led4 = bat;
delay(1);
Led4 = tat;
}
}
/***********CHUONG TRINH HOAT DONG 2 IC 7447 + 2 LED 7 DOAN*/
void chay7447(void)
{
for(l=0;l<11;l++)
{
P0=M47[l];
delay(800);
}
}
/***********CHUONG TRINH HOAT DONG 74HC595 + 2 LED & DOAN QUET*/
void chay74hc595(void)
{
hienthi();
num=num+1;
if(num==11)num=0;
delay(300);
}
/**********CHUONG TRINH HOAT DONG 1 IC 7447 + QUET************/
void chay7447quet(void)
{
hienthi47();
so=so+1;
if(so==11)so=0;
delay(200);
}
/**********CHUONG TRINH CHINH**************************/
void main()
{
while(1)
{
//chay7447(); // Phuong phap 1
//chay74hc595();// Phuong Phap 2
chay7447quet(); // Phuong Phap 3
}
}
( File Mô Phỏng + code)
Nguồn: Echipkool - Chia sẻ kiến thức - Kết nối đam mê điện tử
Đăng nhận xét