使用STM8驱动MAX7219,用软件模拟IO口。
PC6是MOSI PC5是SCK PC4是LOAD
代码如下,但怎么都没有显示,求指导
//16M晶振
#include "stm8s.h"
#include "prohead.h"
#include "stm8s207r.h"
#include "stm8s207r8.h"
#define DECODE_MODE 0x09
#define INTENSITY 0x0A
#define SCAN_LIMIT 0x0B
#define SHUT_DOWN 0x0C
#define DISPLAY_TEST 0x0F
void delay(void)
{
int b;
for(b=50;b>0;b--);
}
void init(void)
{
GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);
GPIO_Init(GPIOC, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST);
GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST);
GPIO_Init(GPIOC, GPIO_PIN_1, GPIO_MODE_OUT_PP_LOW_FAST);
GPIO_WriteLow(GPIOC, GPIO_PIN_5);
GPIO_WriteHigh(GPIOC, GPIO_PIN_4);
}
void sent_byte(char data)
{
int count;
for(count=8;count>0;count--)
{
GPIO_WriteLow(GPIOC, GPIO_PIN_5);
if(data&0x80==0x80) GPIO_WriteHigh(GPIOC, GPIO_PIN_6);
else GPIO_WriteLow(GPIOC, GPIO_PIN_6);
GPIO_WriteHigh(GPIOC, GPIO_PIN_5);
data<<=1;
delay();
}
GPIO_WriteLow(GPIOC, GPIO_PIN_5);
}
void MAX7219(char add,char data)
{
GPIO_WriteLow(GPIOC, GPIO_PIN_4);
sent_byte(add);
sent_byte(data);
GPIO_WriteHigh(GPIOC, GPIO_PIN_4);
}
void DISPLAY_INIT(void)
{
MAX7219(SHUT_DOWN,0x01);
MAX7219(DISPLAY_TEST,0x01);
MAX7219(DECODE_MODE,0xff);
MAX7219(SCAN_LIMIT,0x07);
MAX7219(INTENSITY,0x0f);
}
main()
{
//CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE, CLK_CURRENTCLOCKSTATE_ENABLE);
init();
DISPLAY_INIT();
MAX7219(0x01,0x87);
MAX7219(0x02,0x87);
MAX7219(0x03,0x87);
MAX7219(0x04,0x87);
GPIO_WriteLow(GPIOC, GPIO_PIN_1);
while (1)
{
}
}
|