MAX7219驱动数码管无法正常显示2
发布网友
发布时间:2023-09-14 13:43
我来回答
共3个回答
热心网友
时间:2024-12-04 19:05
下载我的看看好使不
#define <reg51.h>
#define DECODE_MODE 0x09
#define INTENSITY 0x0A
#define SCAN_LIMIT 0x0B
#define SHUT_DOWN 0x0C
#define DISPLAY_TEST 0x0F
/*******************************/
sbit LOAD=P1^1;
sbit DIN=P1^0;
sbit CLK=P1^2;
/*******************************/
void Write_Max7219_byte(uchar temp)
{
uchar i;
for (i=0;i<8;i++)
{
CLK=0;
DIN=(bit)(temp&0x80);
temp<<=1;
CLK=1;
}
}
/*******************************/
void Write_Max7219(uchar address,uchar dat)
{
LOAD=0;
Write_Max7219_byte(address);
Write_Max7219_byte(dat);
LOAD=1;
}
/*******************************/
void Init_Max7219(void)
{
Write_Max7219(SHUT_DOWN, 0x01); //设置掉电模式
Write_Max7219(DISPLAY_TEST, 0x00); //设置不工作寄存器
Write_Max7219(DECODE_MODE, 0x09); //设置编码模式
Write_Max7219(SCAN_LIMIT, 0x06); //扫描控制寄存器
Write_Max7219(INTENSITY, 0x04); //设置亮度调节 0xX0~0xXf
}
/*******************************/
void main()
{
unsigned char ii;
Init_Max7219();
for(ii=1;ii<8;ii++)
{
Write_Max7219(ii,ii);
}
while(1);
}
热心网友
时间:2024-12-04 19:05
7219因为是串行的很容易受干扰
热心网友
时间:2024-12-04 19:06
这个可能是你硬件的问题。
你在CLK和DATA线上加103的电容试试