📄 blinky1.c
字号:
}
}
}
if( KEY_VOLD_STATE()==0 )
{
VS1003_Delay_Nmicrosecond(1000);
if( KEY_VOLD_STATE()==0 )
{
if(VOL<30)
{
VOL++;
VS1003_WriteReg(VS1003_SPI_VOL ,VOL_BUFFER[VOL]);
while(VS1003_DREQ_STATE() != VS1003_DREQ);
lcd_gotoxy(60,5);
lcd_putchar(VOL_LCD[VOL]>>8);
lcd_putchar(VOL_LCD[VOL]);
}
}
}
}
void VpS1003_Play(void)
{
uint32 n;
uint32 i;
// uint32 j;
// uint32 num;
uint32 data_pointer=0;
// uint8 stop=0;
num = Clust;
while(1)
{
for(i=0;i<8;i++)
{
SD_ReadBlock(FirstDataSector+(num-2)*8+i,BUFFER);
do
{
if(VS1003_DREQ_STATE()== VS1003_DREQ)
{
for(n=0;n<32;n++)
{
VS1003_WriteDat(BUFFER[data_pointer]);
data_pointer++;
}
}
}
while(data_pointer<511);
data_pointer=0;
}
num = fatNextCluster(num);
/* j++;
SPI0_CS_SET();
lcd_gotoxy(50+j*5,0);
lcd_putchar('.');
if(j>5)
{
lcd_gotoxy(50,0);
lcd_putsf("",6);
j=0;
}
SPI0_CS_CLR();*/
/* if(j%10==0)
{
lcd_gotoxy(50+j/10,0);
lcd_putchar('.');
}
if(j>50)
{
lcd_gotoxy(50,0);
lcd_putsf("",6);
}
*/
TEXT_KEY();
if(num==CLUST_EOFE)
{
GetFileClust();
num = Clust;
//num ++;
}
}
}
unsigned char data[]={
0x00, 0x00, 0x00, 0x00, 0x00, // sp
0x00, 0x00, 0x2f, 0x00, 0x00, // !
0x00, 0x07, 0x00, 0x07, 0x00, // "
0x14, 0x7f, 0x14, 0x7f, 0x14, // #
0x24, 0x2a, 0x7f, 0x2a, 0x12, // $
0x62, 0x64, 0x08, 0x13, 0x23, // %
0x36, 0x49, 0x55, 0x22, 0x50, // &
0x00, 0x05, 0x03, 0x00, 0x00, // ’
0x00, 0x1c, 0x22, 0x41, 0x00, // (
0x00, 0x41, 0x22, 0x1c, 0x00, // )
0x14, 0x08, 0x3E, 0x08, 0x14, // *
0x08, 0x08, 0x3E, 0x08, 0x08, // +
0x00, 0x00, 0xA0, 0x60, 0x00, // ,
0x08, 0x08, 0x08, 0x08, 0x08, // -
0x00, 0x60, 0x60, 0x00, 0x00, // .
0x20, 0x10, 0x08, 0x04, 0x02, // /
0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
0x00, 0x42, 0x7F, 0x40, 0x00, // 1
0x42, 0x61, 0x51, 0x49, 0x46, // 2
0x21, 0x41, 0x45, 0x4B, 0x31, // 3
0x18, 0x14, 0x12, 0x7F, 0x10, // 4
0x27, 0x45, 0x45, 0x45, 0x39, // 5
0x3C, 0x4A, 0x49, 0x49, 0x30, // 6
0x01, 0x71, 0x09, 0x05, 0x03, // 7
0x36, 0x49, 0x49, 0x49, 0x36, // 8
0x06, 0x49, 0x49, 0x29, 0x1E, // 9
0x00, 0x36, 0x36, 0x00, 0x00, // :
0x00, 0x56, 0x36, 0x00, 0x00, // ;
0x08, 0x14, 0x22, 0x41, 0x00, // <
0x14, 0x14, 0x14, 0x14, 0x14, // =
0x00, 0x41, 0x22, 0x14, 0x08, // >
0x02, 0x01, 0x51, 0x09, 0x06, // ?
0x32, 0x49, 0x59, 0x51, 0x3E, // @
0x7C, 0x12, 0x11, 0x12, 0x7C, // A
0x7F, 0x49, 0x49, 0x49, 0x36, // B
0x3E, 0x41, 0x41, 0x41, 0x22, // C
0x7F, 0x41, 0x41, 0x22, 0x1C, // D
0x7F, 0x49, 0x49, 0x49, 0x41, // E
0x7F, 0x09, 0x09, 0x09, 0x01, // F
0x3E, 0x41, 0x49, 0x49, 0x7A, // G
0x7F, 0x08, 0x08, 0x08, 0x7F, // H
0x00, 0x41, 0x7F, 0x41, 0x00, // I
0x20, 0x40, 0x41, 0x3F, 0x01, // J
0x7F, 0x08, 0x14, 0x22, 0x41, // K
0x7F, 0x40, 0x40, 0x40, 0x40, // L
0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
0x7F, 0x04, 0x08, 0x10, 0x7F, // N
0x3E, 0x41, 0x41, 0x41, 0x3E, // O
0x7F, 0x09, 0x09, 0x09, 0x06, // P
0x3E, 0x41, 0x51, 0x21, 0x5E, // Q
0x7F, 0x09, 0x19, 0x29, 0x46, // R
0x46, 0x49, 0x49, 0x49, 0x31, // S
0x01, 0x01, 0x7F, 0x01, 0x01, // T
0x3F, 0x40, 0x40, 0x40, 0x3F, // U
0x1F, 0x20, 0x40, 0x20, 0x1F, // V
0x3F, 0x40, 0x38, 0x40, 0x3F, // W
0x63, 0x14, 0x08, 0x14, 0x63, // X
0x07, 0x08, 0x70, 0x08, 0x07, // Y
0x61, 0x51, 0x49, 0x45, 0x43, // Z
0x00, 0x7F, 0x41, 0x41, 0x00, // [
0x55, 0x2A, 0x55, 0x2A, 0x55, // 55
0x00, 0x41, 0x41, 0x7F, 0x00, // ]
0x04, 0x02, 0x01, 0x02, 0x04, // ^
0x40, 0x40, 0x40, 0x40, 0x40, // _
0x00, 0x01, 0x02, 0x04, 0x00, // ’
0x20, 0x54, 0x54, 0x54, 0x78, // a
0x7F, 0x48, 0x44, 0x44, 0x38, // b
0x38, 0x44, 0x44, 0x44, 0x20, // c
0x38, 0x44, 0x44, 0x48, 0x7F, // d
0x38, 0x54, 0x54, 0x54, 0x18, // e
0x08, 0x7E, 0x09, 0x01, 0x02, // f
0x18, 0xA4, 0xA4, 0xA4, 0x7C, // g
0x7F, 0x08, 0x04, 0x04, 0x78, // h
0x00, 0x44, 0x7D, 0x40, 0x00, // i
0x40, 0x80, 0x84, 0x7D, 0x00, // j
0x7F, 0x10, 0x28, 0x44, 0x00, // k
0x00, 0x41, 0x7F, 0x40, 0x00, // l
0x7C, 0x04, 0x18, 0x04, 0x78, // m
0x7C, 0x08, 0x04, 0x04, 0x78, // n
0x38, 0x44, 0x44, 0x44, 0x38, // o
0xFC, 0x24, 0x24, 0x24, 0x18, // p
0x18, 0x24, 0x24, 0x18, 0xFC, // q
0x7C, 0x08, 0x04, 0x04, 0x08, // r
0x48, 0x54, 0x54, 0x54, 0x20, // s
0x04, 0x3F, 0x44, 0x40, 0x20, // t
0x3C, 0x40, 0x40, 0x20, 0x7C, // u
0x1C, 0x20, 0x40, 0x20, 0x1C, // v
0x3C, 0x40, 0x30, 0x40, 0x3C, // w
0x44, 0x28, 0x10, 0x28, 0x44, // x
0x1C, 0xA0, 0xA0, 0xA0, 0x7C, // y
0x44, 0x64, 0x54, 0x4C, 0x44, // z
0x00, 0x08, 0x36, 0x41, 0x00, // {
0x00, 0x00, 0x7F, 0x00, 0x00, // |
0x00, 0x41, 0x36, 0x08, 0x00, // }
0x08, 0x10, 0x08, 0x04, 0x08 // ~
};
//======================================================================================
void lcd_init(void) //nokia3310初始化函数
{
SPI0_Init(64);
LCD_RST_GPIO();
LCD_RST_OUT();
LCD_RST_SET();
LCD_CS_GPIO();
LCD_CS_OUT();
LCD_CS_SET();
LCD_DC_GPIO();
LCD_DC_OUT();
LCD_DC_SET();
LCD_RST_CLR();
LCD_RST_SET(); //复位结束
LCD_CS_CLR(); //5110使能
LCD_DC_CLR(); //准备写指令
SPI0_SrByte(32+1); //进入扩展指令
SPI0_SrByte(128+38); //设置Vop,相当于亮度
SPI0_SrByte(4+3); //设置温度系数,相当于对比度
SPI0_SrByte(16+3); //设置偏置,这句要与不要的实际效果好像一样
SPI0_SrByte(32+0); //进入基本指令
SPI0_SrByte(12); //使能芯片活动/垂直寻址
LCD_CS_SET();
}
//=======================================================================================
void lcd_cls(void) //nokia3310清屏,光标复位
{
unsigned int i=0;
LCD_CS_CLR();
LCD_DC_CLR();
SPI0_SrByte(128); //光标回到0列
SPI0_SrByte(64); //光标回到0行
//准备写数据
LCD_DC_SET();
for(i=0;i<504;i++) //写504个0数据,就是清屏
SPI0_SrByte(0);
LCD_CS_SET();
}
//=======================================================================================
//光标定位,x(0-83)是列地址,y(0-5)是行地址
void lcd_gotoxy(unsigned char x,unsigned char y)
{
LCD_DC_CLR();
LCD_CS_CLR();
SPI0_SrByte(x+128);
SPI0_SrByte(y+64);
LCD_CS_SET();
}
//=======================================================================================
void lcd_putchar(unsigned char character) //显示ASCII值的字符
{
unsigned char i=0;
unsigned int No;
No=character-32; //字模数据是由空格开始,空格字符的ASCII的值就是32
No=No*5; //每个字符的字模是5个字节
LCD_DC_SET();
LCD_CS_CLR();
while(i<5) //一个字符的字模是5个字节,就是5*8点阵
{
SPI0_SrByte(data[No]);
i++;
No++;
}
SPI0_SrByte(0); //每个字符之间空一列
LCD_CS_SET();
}
//=====================================================================================
void lcd_putsf(unsigned char *string , unsigned char n) //显示FLASH里面的字符串
{
unsigned char i=0;
while(i<n)
{
lcd_putchar( string[i] ); //顺序显示字符
i++;
}
}
void UART0_SendByte(uint8 data)
{
U0THR=data;
while((U0LSR&&0x40)==0);
}
void UART0_SendStr(uint8 const *str)
{
while(1)
{
if (*str=='\0')break;
UART0_SendByte(*str++) ;
}
}
void send_text(void)
{
uint32 i;
uint8 high,low;
UART0_SendByte(0x0d);
UART0_SendByte(0x0a);
UART0_SendByte(0x0d);
UART0_SendByte(0x0a);
UART0_SendByte(0x0d);
UART0_SendByte(0x0a);
UART0_SendByte(0x0d);
UART0_SendByte(0x0a);
UART0_SendByte(0x0d);
UART0_SendByte(0x0a);
for (i=0;i<512;i++)
{
high=TEXT[i]&0xF0;
low=TEXT[i]&0x0F;
high=high>>4;
if(high>=0x0A&&high<=0x0F)
high=high+0x40-0x09;
if(high<=9)
high=high+0x30;
if(low>=0x0A&&low<=0x0F)
low=low+0x40-0x09;
if(low<=9)
low=low+0x30;
UART0_SendByte(high);
UART0_SendByte(low);
UART0_SendByte(0x20);
if((i+1)%16==0)
{
UART0_SendByte(0x0d);
UART0_SendByte(0x0a);
}
}
}
int main(void)
{
#ifdef __DEBUG_RAM
MEMMAP = 0x2; //remap
#endif
#ifdef __DEBUG_FLASH
MEMMAP = 0x1; //remap
#endif
#ifdef __IN_CHIP
MEMMAP = 0x1; //remap
#endif
PINSEL0 = (PINSEL0 & 0xFFFF0000) | 0x05 | 0x50;
/* 设置系统各部分时钟 */
/* Set system timers for each component */
PLLCON = 1;
#if (Fpclk / (Fcclk / 4)) == 1
VPBDIV = 0;
#endif
#if (Fpclk / (Fcclk / 4)) == 2
VPBDIV = 2;
#endif
#if (Fpclk / (Fcclk / 4)) == 4
VPBDIV = 1;
#endif
#if (Fcco / Fcclk) == 2
PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
#endif
#if (Fcco / Fcclk) ==
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -