//该子程序为74HC595发送字符的程序,该程序是先发送的是最低位!
//芯片74HC595的时钟引脚为第11脚
//芯片74HC595的数据引脚为第14脚
//芯片74HC595的锁存引脚为第12脚
//当有多片74HC595串联时,只有当所有数据都发送完成后,再锁存信号!
//同样74hc164与51单片机连接也可以由这个程序来驱动
#include关键字:单片机驱动 74HC595 c51程序#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; } }
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』