Thông báo! Chúng tôi đang cố gắng khôi phục lại các link download, các bạn vui lòng tải lại sau (dự kiến 10/12/2022 hoàn thành). Cảm ơn các bạn!

Lập trình 8051 giao tiếp 74HC595 điều khiển LED

TuanPi | 13.3.15 | | |
.
7segone sẽ chia sẻ code C viết cho dòng 8051 giao tiếp với 74HC595 để điều khiển LED đơn nhằm tiết kiệm chân cho vi điều khiển.

Nội dung chính.
  • Code mẫu
  • Video demo

Code mẫu giao tiếp AT89C5X với 74HC595 điều khiển 8LED đơn
//--------------------------------------------------
//    LAP TRINH 74HC595 DIEU KHIEN 8 LED DON
//--------------------------------------------------
#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
// khao bao cac chan 74hc595 de lap trinh
sbit dulieu = P2^1;   // chan du lieu
sbit xung   = P2^0;   // chan xung dich tung bit
sbit chot   = P2^2;   // chan chot du lieu
unsigned int n,m,k;
//****Chuong trinh tao tre**********/
void delay(unsigned char ms )
{
 int i,j;
 for(i=0;i<ms;i++)
 {
  for(j=0;j<125;j++);
 }
}
   // chuong trinh lap trinh cho 74hc595 chuyen noi tiep sang song song
void convert(unsigned char x)
{   // do chuc nang ghi dich 8 bit vao noi tiep ra song song
     // do do vong for duoi se cho dich 8 lan de du 8 chan dau ra cho vdk
 int i,tam;
 for(i=0;i<8;i++) // 8 lan dich de co 8 bit
 {
  tam=x;
  tam=tam&0x80;
  if(tam==0x80) dulieu=1;
  else dulieu=0;
  x=x<<1;    // dich bit nhu sau
  xung=0;
  xung=1;
 }
}
//********************Hieu ung sang duoi******************************************/
void sangduoi()
{
 int j;
 unsigned char mang[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
 for(j=0;j<8;j++)
 {
  convert(mang[j]);
  chot=0;   // khi dich du 8 biut thi chot du lieu va xuat ra output
  chot=1;
  delay(1000);
 }
}
//*******************Hieu ung sang dan******************************/
void sangdan()
{
 int j;
 unsigned char mang[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
 for(j=0;j<8;j++)
 {
  convert(mang[j]);
  chot=0;
  chot=1;
  delay(1000);
 }
}
//*******************hieu ung chop tat led*************
void choptat()
{
 int j;
 unsigned char mang[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};
 for(j=0;j<8;j++)
 {
  convert(mang[j]);
  chot=0;   // khi dich du 8 biut thi chot du lieu va xuat ra output
  chot=1;
  delay(1000);
 }
}
//*****************hieu ung sang chan le****************//
void chanle()
{
 int j;
 unsigned char mang[]={0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa};
 for(j=0;j<8;j++)
 {
  convert(mang[j]);
  chot=0;
  chot=1;
  delay(1000);
 }
}
//*************chuong trinh chinh***************
 void main(void)
{
  sangdan();
  chanle();
  choptat();
  sangduoi();
}
Video demo

Lên đầu trang