部分代码如下
u16 RxData,data_RxData, data_str16[512],data_str8[512]; //串口接收数据
int main(void)
{
// int num,n; /* 显示lcd型号 n 扇区开始数*/
u8 i,j; /* ifor循环使用,j判断数据高低位 */
u8 s1,s2; /* s汉字字符串长度 h,w 16*16汉字换行使用*/
int y = 50, x = 0;
// u8 data_read[512], data_write[512];
unsigned char TxBuf[100] = "\rARM第八组\r\n";
// u8 data_read[512], data_write[512] , *ptr;
// n= 500; //数据从扇区数500开始写
// ptr=(u8 *)data_str8;
// int q=0;
s1 = s2 = 0; /*汉字字符串长度*/
j=0; /*j判断数据高低位*/
/* System clocks configuration ---------------------------------------------*/
SystemInit();
/* Initialize the LCD */
STM3210C_LCD_Init();
/* Clear the LCD */
LCD_Clear(White);
/* Set the LCD Text Color */
LCD_SetTextColor(Black);
USART_Configuration();
printf("\rHello contex-M3\r\n");
/* 串口提示信息 */
for (i = 0; TxBuf !='\0'; i++)
{
USART_SendData(USART2, TxBuf);
while (USART_GetFlagStatus(USART2,USART_FLAG_TC) == RESET);
}
// ili9320_PutChineseString(80, 0, "欢迎使用ARM3组记事本" ,0x07E0,0xF800); //16*16的汉字
// ili9320_PutChineseString(96, 0, "专注于嵌入式开发" ,0x07E0,0x001F);
while (1)
{
/*PD7 灯亮,可以从串口输入数据*/
GPIO_ResetBits(GPIOD , GPIO_Pin_7);
/* 从串口接收数据, */
while (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET){}
RxData = USART_ReceiveData(USART2); //汉字存的区位码
while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET){}
USART_SendData(USART2, RxData);
// printf("RxData:%x",RxData);
if(RxData>= 0x00 && RxData<=0x7f) // ascii 码对照表
{
// LCD_DisplayChar(Line2,2,RxData); //显示ascii码值
printf("%c",RxData);
}
/*显示汉字*/
else
{
/*将高低字节组合在一起*/
if (j == 0)
{data_RxData = RxData; j=1;} //低字节
else if(j == 1)
{
data_RxData += RxData<<8; j = 0; //高字节
/*将每个字 存入字符组*/
data_str16[s1++] = data_RxData;
data_str8[s2++] = RxData;
/*控制x,y,将汉字显示在同一行,并到行尾时换行*/
// if(x<320)
// {
// ili9320_PutChinese(y, x, data_RxData,0x0000,0xF800);
// x+=16;
// }else
// {
// y+=18; x = 0;
// ili9320_PutChinese(y, x, data_RxData,0x07E0,0xF800);
// }
if(y<239)
{
if(x<319)
{
ili9320_PutChinese(y, x, data_RxData,0x0000,0xFFFF);
x+=16;
}
else
{
x=0;
y+=36;
}
}
else{
y=0;
LCD_Clear(White);
}
}
}
|