Chào bạn. Một người học điện tử, làm điện tử bạn không thể nào không biết đến ic dịch 74hc595. Lần này Điện Tử Chia Sẻ gửi đến bạn một bài hướng dẫn lập trình đơn giản IC 89c51 điều khiển led 4 led 7 đoạn đếm số từ 0000 đến 9999 qua ic dịch 74HC595.
Video DEMO
[alert title="CODE MẪU" icon="info-circle"]
#include<REGX51.H>
#include<stdio.h>
#include<math.h>
#define bat 1
#define tat 0
//=================================
sbit shcp=P3^0;
sbit ds=P3^1;
sbit stcp=P3^2;
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
sbit led5=P2^4;
sbit led6=P2^5;
//=============Chuong trinh tao tre==============
void delay(int ms)
{
int a,b;
for(a=0;a<ms;a++)
for(b=0;b<125;b++)
{
}
}
//================Maled 7 doan anode chung================
int m[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int donvi1,chuc1;
int donvi2,chuc2;
int donvi3,chuc3;
int giay,phut,gio;
//==========dua data vao595===========
void data(unsigned char data)
{
unsigned char i;
unsigned int k;
k=128;
for(i=0;i<8;i++)
{
if((data&k)==k)
ds=1;
else
ds=0;
shcp=1;
shcp=0;
stcp=1;
stcp=0;
k>>=1;
}
}
//============ hien thi=============
void hienthi(void)
{
int c;
for(c=0;c<10;c++)
{
chuc1=giay/10;
donvi1=giay%10;
data(m[chuc1]);
led5=bat;
delay(8);
led5=tat;
data(m[donvi1]);
led6=bat;
delay(8);
led6=tat;
/*====led3 và led 4=phut====*/
chuc2=phut/10;
donvi2=phut%10;
data(m[chuc2]);
led3=bat;
delay(8);
led3=tat;
data(m[donvi2]);
led4=bat;
delay(8);
led4=tat;
/*======led 1 va led 2 = gio==*/
chuc3=gio/10;
donvi1=gio%10;
data(m[chuc3]);
led2=bat;
delay(8);
led2=tat;
data(m[donvi3]);
led1=bat;
delay(8);
led1=tat;
}
}
//==============ham chinh=======
void main(void)
{
while(1)
{
gio=phut=giay=0;
for(gio=0;gio<24;gio++)
{
hienthi();
for(phut=0;phut<60;phut++)
{
hienthi();
for(giay=0;giay<60;giay++)
{
hienthi();
}
}
}
}
}
[/alert]
Đăng nhận xét