单片机驱动74HC595的c51程序
//该子程序为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;i8;i++) //因为是1字节是8位,所以循环8次{dat=k0x01; //将要发送的数据与上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;a3;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;}}
评论