|
1、在做 动态数码管 实验时,显示的总是图一,必须要用手按着开发板右下角才能正确显示,如图二。之前也已经问过这个问题,回答是数据线松了,但是一直没有找到解决方案。
2、8X8LED点阵(显示第一个点) 结果如图三 以下是我仿照编的程序,不知道是哪里出了错误,请帮忙看看:
#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
void hc595sendbyte(u8 dat)
{
u8 a;
SRCLK=0;
RCLK=0;
for(a=0;a<8;a++)
{
SER=dat>>7;
dat<<=1;
SRCLK=1;
_nop_();
_nop_();
SRCLK=0;
}
RCLK=1;
_nop_();
_nop_();
RCLK=0;
}
void main()
{
hc595sendbyte(0x80);
P0=0x7f;
while(1);
}
3、8X8LED点阵(显示数字0) 结果如图四 以下是我仿照编的程序,不知道是哪里出了错误,请帮忙看看:
#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
u8 ledduan[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00};
u8 ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void delay(u16 i)
{
while(i--);
}
void Hc595SendByte(u8 dat)
{
u8 a;
SRCLK=0;
RCLK=0;
for(a=0;a<8;a++)
{
SER=dat>>7;
dat<<=1;
SRCLK=1;
_nop_();
_nop_();
SRCLK=0;
}
RCLK=1;
_nop_();
RCLK=0;
}
void main()
{
u8 b;
while(1)
{
P0=0x7f;
for(b=0;b<8;b++)
P0=ledwei[b];
Hc595SendByte(ledduan[b]);
delay(100);
Hc595SendByte(0x00);
}
}
感谢!
|
|