仪器社区

两片74HC595级联驱动8个数码管

梓辰wy 2015-08-11
//########################################################## #include #include #define uchar unsigned char #define uint unsigned int //#############管脚定义####################### sbit sclk=P3^2; //595 移位时钟信... //########################################################## #include #include #define uchar unsigned char #define uint unsigned int //#############管脚定义####################### sbit sclk=P3^2; //595 移位时钟信号输入端 sbit st=P3^1; //595 锁存信号输入端 sbit da=P3^0; //595 数据信号输入端 //############################################# //共阴极数码管显示代码:7 6 5 4 3 2 1 0 // a b c d e f uchar code LED_7SEG[16]={0xfc,0x60,0xda,0xf2,//0,1,2,3,
0x66,0xb6,0xbe,0xe0, //4,5,6,7,
0xfe,0xe6,0xee,0x3e, //8,9,A,b,
0x9c,0x7a,0x9e,0x8E};//C,d,E,F unsigned char code Wei[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}; // 位选 //##################################################### //名称:wr595()向 595 发送一个字节的数据 //功能:向 595 发送一个字节的数据(先发低位) //##################################################### void wr595(uchar wrdat) { uchar i; sclk=0; st=0; for(i=8;i>0;i--)//循环八次,写一个字节 { da=wrdat&0x01; //发送 BIT0 位 wrdat>>=1; //要发送的数据右移,准备发送下一位 sclk=0; //移位时钟上升沿 _nop_(); _nop_(); sclk=1; _nop_(); _nop_(); sclk=0; } st=0; //上升沿将数据送到输出锁存器 _nop_(); _nop_(); st=1; _nop_(); _nop_(); st=0; } //########################################################## // 延时函数 //########################################################## void delay(uint del) { while(del--) { ; } } //########################################################## //名称:wr7leds()8 个 led 显示数字函数 //功能:向 595 发送一个字节的数据,然后发送位选信号 //########################################################## void wr7leds(void) { uchar i; wr595(Wei[0]); //送位选信号 ; //位选信号初始化 for(i=0;i<8;i++) //循环 8 次写 8 个数据 { wr595(LED_7SEG[i]); //传送显示数据 wr595(Wei[i]); //送位选信号 delay(50); //延时,(决定亮度,和闪烁) } } //########################################################## //主函数 //########################################################## main(void) { while(1) { wr7leds(); //向 74HC595 发送数据并显示 } }
评论
全部评论
aaaaa44444a4
//共阴极数码管显示代码:7 6 5 4 3 2 1 0
// a b c d e f
uchar code LED_7SEG[16]={0xfc,0x60,0xda,0xf2,//0,1,2,3,
0x66,0xb6,0xbe,0xe0, //4,5,6,7,
0xfe,0xe6,0xee,0x3e, //8,9,A,b,
0x9c,0x7a,0x9e,0x8E};//C,d,E,F
这些段码不对
unsigned char code Wei[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}; // 位选
这位选码也不对,是0有效,你这是1有效,正相反,就不会亮的。
你这是仿真,还是实物板,现象是什么?
1 0 2015-08-12 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论