代码跟原理图如下,有无大佬救救小弟,实在想不明白哪里出错了
//利用hc595驱动数码管显示0~7//
#include<reg51.h>
#define uchar unsigned char
uchar code Duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};
uchar code Wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
sbit P_HC595_SER=P1^1;
sbit P_HC595_RCLK=P1^0;
sbit P_HC595_SRCLK=P1^2;
uchar display_index=0;
void delay(int t)
{
while(t--);
}
void Send_595(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
dat<<=1;
P_HC595_SER=CY;
P_HC595_SRCLK=1;
P_HC595_SRCLK=0;
}
}
void Display(void)
{
Send_595(Wei[display_index]);
Send_595(Duan[display_index]);
P_HC595_RCLK=1;
P_HC595_RCLK=0;
delay(200);
if(++display_index==8)
display_index=0;
}
void main()
{
while(1)
{
Display();
}
}
