我想用两块74HC595级联输出电平来控制数码管的亮灭,上面的程序我想把0xfffe送给两片级联的74HC595芯片输出1111111111111110使得最后一个LED点亮,程序调试不出来,是不是程序有问题,仿真图在下面,不知道接法有没有问题,麻烦各位大神帮忙看一下,万分感谢!
单片机源程序如下:- #include<reg51.h>
- #include<intrins.h>
- typedef unsigned char uchar;
- typedef unsigned int uint;
- void hc595(uchar byteData);
- sbit SER = P3^4; //p3.4脚控制串行数据输入
- sbit SCK = P3^6; //串行输入时钟
- sbit RCK = P3^5; //存储寄存器时钟
- void main()
- {
- while(1)
- {
- hc595(0xfffe);
- }
- }
- /*功能:发送一个字节的数据给595,再并行输出*/
- void hc595(char byteData)
- {
- char i=0;
- for(i=0;i<16;i++)
- {
- SER = byteData>>15; //送出15位数据
- byteData= byteData<<1;
- SCK = 0; //上升沿,让串行输入时钟变为高电平,并延时2个时钟周期
- _nop_();
- _nop_();
- SCK = 1; //变为低电平,为下次准备
- }
- //位移寄存器数据准备完毕,转移到存储寄存器
- RCK = 0; //上升沿,让存储寄存器时钟变为高电平,并延时2个时钟周期
- _nop_();
- _nop_();
- RCK = 1;
- }
复制代码
|