單片機(jī)驅(qū)動74HC595的c51程序
//該子程序?yàn)?a class="contentlabel" href="http://2s4d.com/news/listbylabel/label/74HC595">74HC595發(fā)送字符的程序,該程序是先發(fā)送的是最低位!
//芯片74HC595的時鐘引腳為第11腳
//芯片74HC595的數(shù)據(jù)引腳為第14腳
//芯片74HC595的鎖存引腳為第12腳
//當(dāng)有多片74HC595串聯(lián)時,只有當(dāng)所有數(shù)據(jù)都發(fā)送完成后,再鎖存信號!
//同樣74hc164與51單片機(jī)連接也可以由這個程序來驅(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;i8;i++) //因?yàn)槭?字節(jié)是8位,所以循環(huán)8次{dat=k0x01; //將要發(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;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;}}
評論