|
请问大侠以下MAX7219的程序,有什么问题?谢谢
[复制链接]
#include
/*****************************************************************
常用符号定义
******************************************************************/
#define uchar unsigned char
/******************************************************************
定义MAX7219寄存器
*******************************************************************/
#define REG_NO_OP 0x00 // 定义空操作
#define DIG_1 0x01 // 定义数码管1
#define DIG_2 0x02 // 定义数码管2
#define DIG_3 0x03 // 定义数码管3
#define DIG_4 0x04 // 定义数码管4
#define DIG_5 0x05 // 定义数码管5
#define DIG_6 0x06 // 定义数码管6
#define DIG_7 0x07 // 定义数码管7
#define DIG_8 0x08 // 定义数码管8
#define REG_DECODE 0x09 // 定义解码控制
#define REG_INTENSITY 0x0a // 定义显示亮度
#define REG_SCAN_LIMIT 0x0b // 定义扫描限制
#define REG_SHUTDOWN 0x0c // 定义"shutdown"模式
#define REG_DISPLAY_TEST 0x0f // 定义"display test"模式
#define INTENSITY_MIN 0x00 // 定义最低显示亮度
#define INTENSITY_MAX 0x0f // 定义最高显示亮度
/*********************************************************************
定义硬件引脚连接
*********************************************************************/
sbit DATA = P2^0;
sbit CLK = P2^2;
sbit CS = P2^1;
/***********************************************************************
* MAX7219_SendByte() * * 描述: 向MAX7219传送一字节数据
*************************************************************************/
void MAX7219_SendByte (uchar dataout)
{
char i;
for (i=8; i>0; i--)
{
uchar mask = 1 << (i - 1);
CLK = 0;
if (dataout & mask)
DATA = 1;
else
DATA = 0;
CLK = 1;
}
}
/***********************************************************************
* MAX7219_Write() *
*************************************************************************/
void MAX7219_Write (uchar reg_number, uchar dataout)
{
CS = 0;
MAX7219_SendByte(reg_number);
MAX7219_SendByte(dataout);
CS = 1;
}
/**************************************************************************
* MAX7219_DisplayChar() *
**************************************************************************/
void MAX7219_DisplayChar (char digit, char character)
{
MAX7219_Write(digit, character);
}
/**************************************************************************
* MAX7219_Clear() * * 描述: 清除所有位的显示
***************************************************************************/
void MAX7219_Clear (void)
{
uchar i;
for (i=1; i < 9; i++)
MAX7219_Write(i, 0x0f);
}
/**************************************************************************
* MAX7219_SetBrightness() *
***************************************************************************/
void MAX7219_SetBrightness (char brightness)
{
brightness &= 0x0f;
MAX7219_Write(REG_INTENSITY, brightness);
}
/**************************************************************************
* MAX7219_DisplayTestStart() *
***************************************************************************/
void MAX7219_DisplayTestStart (void)
{
MAX7219_Write(REG_DISPLAY_TEST, 1);
}
/**************************************************************************
* MAX7219_DisplayTestStop() *
***************************************************************************/
void MAX7219_DisplayTestStop (void)
{
MAX7219_Write(REG_DISPLAY_TEST, 0);
}
/**************************************************************************
* MAX7219_ShutdownStart() *
***************************************************************************/
void MAX7219_ShutdownStart (void)
{
MAX7219_Write(REG_SHUTDOWN, 0);
}
/**************************************************************************
* MAX7219_ShutdownStop() *
***************************************************************************/
void MAX7219_ShutdownStop (void)
{
MAX7219_Write(REG_SHUTDOWN, 1);
}
/**************************************************************************
* MAX7219_Init() *
***************************************************************************/
void MAX7219_Init (void)
{
DATA=1; // 置DATA为1
CLK=1; // 置CLK 为1
CS=1; // 置CS 为1
MAX7219_Write(REG_SCAN_LIMIT, 7); // 设置为全显示
MAX7219_Write(REG_DECODE, 0xff); // 所有位设置为 B 解码方式
MAX7219_ShutdownStop(); // 置 MAX7219 为正常显示模式 (非shutdown模式)
MAX7219_DisplayTestStop(); // 置 MAX7219 为正常显示模式 (非test模式)
MAX7219_Clear(); // 清除所有位的显示
MAX7219_SetBrightness(INTENSITY_MAX); // 置最大亮度
}
|
|