专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机驱动74HC595的c51程序

作者:佚名   来源:本站原创   点击数:  更新时间:2010年06月28日   【字体:

//该子程序为74HC595发送字符的程序,该程序是先发送的是最低位!
//芯片74HC595的时钟引脚为第11脚
//芯片74HC595的数据引脚为第14脚
//芯片74HC595的锁存引脚为第12脚
//当有多片74HC595串联时,只有当所有数据都发送完成后,再锁存信号!
//同样74hc164与51单片机连接也可以由这个程序来驱动

 

#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; //定义循环变量
  for(i=0;i<8;i++) //因为是1字节是8位,所以循环8次
  {
   dat=k&0x01; //将要发送的数据与上0X01送到数据引脚
   clk=0; //时钟引脚加低电平
   clk=1; //时钟引脚加高电平
   k>>=1; //将发送的数据右移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;
 }
}



关闭窗口

相关文章