51 单片机 8x8 点阵 为啥显示不了 ‘ 正’ 字
#include "reg52.h"typedef unsigned char u8 ;
typedef unsigned int u16 ;
sbit SRCLK = P3^6;
sbit rCLK = P3^5;
sbit SER = P3^4;
#define LEDZ_COL_PORT P0
void delay_10us (u16 ten_us)
{
while(ten_us--);
}
u8 g_row ={0x00,0x7E,0x08,0x08,0x2E,0x28,0x7E,0x00};
u8 g_col ={0x00,0x42,0x4E,0x42,0x7E,0x4A,0x4A,0x00};
void delay_ms (u16 jms)
{
u8 i, j;
for( i= jms; i>0; i--)
for(j = 110; j>0; j--);
}
void hc595_write_data(u8 dat)
{
u8 i =0;
for(i=0;i<8;i++)
{
SER = dat >> 7;
dat = dat<<1;
SRCLK = 0;
delay_10us(1);
SRCLK = 1;
delay_10us(1);
}
rCLK = 0;
delay_10us(1);
rCLK = 1;
}
void main()
{
u8 i = 0;
while(1)
{
for(i=0; i<8; i++)
{
LEDZ_COL_PORT =g_row;
hc595_write_data(g_col) ;
delay_10us (100);
hc595_write_data(0x00) ;
}
}
}
#include "reg51.h"
typedef unsigned char u8 ;
typedef unsigned int u16 ;
sbit SRCLK = P3^6;
sbit RCLK=P3^5;
sbit SER = P3^4;
#define LEDZ_COL_PORT P0
void delay_10us (u16 ten_us)
{
while(ten_us--);
}
//u8 g_row ={0x00,0x7E,0x08,0x08,0x2E,0x28,0x7E,0x00};
//u8 g_col ={0x00,0x42,0x4E,0x42,0x7E,0x4A,0x4A,0x00};
u8 g_row= {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u8 g_col ={0x00,0x42,0x4E,0x42,0x7E,0x4A,0x4A,0x00};
//void delay_ms (u16 jms)
//{
//u8 i, j;
//for( i= jms; i>0; i--)
// for(j = 110; j>0; j--);
//}
void hc595_write_data(u8 dat)
{
u8 i =0;
for(i=0;i<8;i++)
{
SER = dat >> 7;
dat = dat<<1;
SRCLK = 0;
delay_10us(1);
SRCLK = 1;
delay_10us(1);
}
RCLK = 0;
delay_10us(1);
RCLK = 1;
}
void main()
{
u8 i = 0;
while(1)
{
for(i=0; i<8; i++)
{
LEDZ_COL_PORT =g_row;
hc595_write_data(g_col) ;
delay_10us (100);
hc595_write_data(0x00) ;
}
}
}
你的程序基本是正确的,我只是改了你的第一组数据:lol
页:
[1]