51单片机+74hc595锁存器驱动一个静态数码管

51单片机+74hc595锁存器驱动一个静态数码管_第1张图片

 

 

实验开发板HC6800 v2.8 (淘宝可以查到)

将JP2 与JP3相连即可,注意排线要反接

代码如下:

 /******************************************************************************* * 标题: 试验数码管上如何显示数字(共阳极) * * * * 连接方法:P2 与P3 用8PIN排线连接 * ******************************************************************************** * * * * ********************************************************************************/ #include <reg51.h> #include <intrins.h> void delay(unsigned int i); //函数声名 // 此表为 LED 的字模,0~F unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71}; sbit lock=P3^5;//12,storage register clock input sbit clk=P3^6;//11,shift register clock input sbit dat=P3^4;//14,serial data input /*将显示数据串行发送到74hc595*/ void sendTo(unsigned char k) { unsigned char i; for(i=0;i<8;i++) { dat=k&0x01; clk=0;//移位寄存器移位 _nop_(); _nop_(); clk=1; k>>=1;//发送数据右移一位 } } void main() { unsigned int LedNumVal=0 ,C ; //定义变量 while(1) { if (++C>= 300) { LedNumVal++ ; //每隔300个扫描周期加一次 C =0; //每隔300个扫描清零 } lock=0; // 将字模送到14,serial data input sendTo(LED7Code[LedNumVal%10]&0x7f); //LED7 0x7f为小数点 共阴和共阳此处也是不一样; _nop_(); _nop_(); lock=1;//所存数据 delay(300); //调用延时程序 } } /***************************************************************** * * * 延时程序 * * * *****************************************************************/ void delay(unsigned int i) { char j; for(i; i > 0; i--) for(j = 200; j > 0; j--); }

 

 

 

你可能感兴趣的:(c,input,delay)