專注電子技術(shù)學習與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

單片機驅(qū)動74HC595的c51程序

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2010年06月28日   【字體:

//該子程序為74HC595發(fā)送字符的程序,該程序是先發(fā)送的是最低位!
//芯片74HC595的時鐘引腳為第11腳
//芯片74HC595的數(shù)據(jù)引腳為第14腳
//芯片74HC595的鎖存引腳為第12腳
//當有多片74HC595串聯(lián)時,只有當所有數(shù)據(jù)都發(fā)送完成后,再鎖存信號!
//同樣74hc164與51單片機連接也可以由這個程序來驅(qū)動

 

#include
#define uchar unsigned char
#define uint unsigned int 
sbit clk=P3^5;
sbit dat=P3^6;
sbit shuo_cun=P3^7;
uchar volatile e,f;
uchar code tab[]={        0x03,/*0*/
        0x9F,/*1*/
        0x25,/*2*/
        0x0D,/*3*/
        0x99,/*4*/
        0x49,/*5*/
        0x41,/*6*/
        0x1F,/*7*/
        0x01,/*8*/
        0x09,/*9*/
};
void fa_shon(uchar k) //
{
 uchar i; //定義循環(huán)變量
  for(i=0;i<8;i++) //因為是1字節(jié)是8位,所以循環(huán)8次
  {
   dat=k&0x01; //將要發(fā)送的數(shù)據(jù)與上0X01送到數(shù)據(jù)引腳
   clk=0; //時鐘引腳加低電平
   clk=1; //時鐘引腳加高電平
   k>>=1; //將發(fā)送的數(shù)據(jù)右移1位
  } 
}

void main()
{
 TMOD=0x01;
 TH0=15535/256;
 TL0=15535%256;
 EA=1;
 ET0=1;
 TR0=1;
 while(1)
 { 
  uchar a;
  for(a=0;a<3;a++)
  {
   fa_shon(tab[e%10]);
   fa_shon(tab[e%100/10]);
   fa_shon(tab[e/100]);
  }
  shuo_cun=0; //鎖存為低電平
  shuo_cun=1; //鎖存為高電平
 }
}

void tt()interrupt 1
{
 TH0=15535/256;
 TL0=15535%256;
 f++;
 if(f>10)
 {
  f=0;
  e++;
  if(e>250)e=0;
 }
}



關(guān)閉窗口

相關(guān)文章