99热成人精品热久久6网站_无码中文亚洲AV吉吉影音_国产精品制服一区二区_中文字幕乱码一区二区三区免费

首頁 > 技術(shù)支持 > 應用與案例 > 正文
自建字庫調(diào)用方法及范例(RA8876,RA8877) 作者:   發(fā)表日期:2020-09-21   來源:   瀏覽:
RA8876和RA8877芯片自建字庫的調(diào)用方法如下:

首先需要使用提取字模軟件生成所需文字字庫的頭文件并將其添加到工程,
包含頭文件

#include
#include "stm32f10x.h"
#include "stdlib.h"
#include
#include "delay.h"
#include "UserDef.h"
 
#include "RA8876.h"
#include "RA8876_MCU_IF.h"
#include "RA8876_API.h"
#include "UserFontROM.h"

添加調(diào)用下列函數(shù) 
此函數(shù)列舉了8x16,16x16,16x24,24x24,16x32,32x32字體尺寸的調(diào)用
在下面的應用例程中也都一 一展示了顯示效果

void RA8876_Create_UserDefineFont(unsigned long UDF_Address,const unsigned char UserDefineData[],unsigned short num)

     /*

UDF_Address: User define font Address. 
UserDefineData[] / num: the data for user to create the fonts.
*/
unsigned short temp1,temp2,temp3;
unsigned short i;
 
/******************************/
//(0) Backup memory type //擷取執(zhí)行前的狀態(tài)
temp1 = LCD_RegisterRead(0x02);
temp2 = LCD_RegisterRead(0x03);
temp3 = LCD_RegisterRead(0x5E);
/******************************/
 
//(1) Set the setting for Create User Define Font 
Memory_Select_SDRAM();
Memory_Linear_Mode();
Graphic_Mode();
 
//(1.1) Data format have to set to 8bpp. 
#if defined (MCU_8bit_ColorDepth_8bpp) || defined (MCU_8bit_ColorDepth_16bpp) || defined (MCU_8bit_ColorDepth_24bpp)
Data_Format_8b_8bpp();
#endif
 
#if defined (MCU_16bit_ColorDepth_16bpp) || defined (MCU_16bit_ColorDepth_24bpp_Mode_1) || defined (MCU_16bit_ColorDepth_24bpp_Mode_2)
Data_Format_16b_8bpp();
#endif
 
//(1.2) Data format have to set to 8bpp. 
Memory_8bpp_Mode();
 
 
//(2) Set the start address for Create_UserDefine_Font, and write data.
Goto_Linear_Addr(UDF_Address);
//
LCD_CmdWrite(0x04);
for(i=0;i<num;i++)
{
Check_Mem_WR_FIFO_not_Full();
LCD_DataWrite(UserDefineData[i]);
}
Check_2D_Busy();
 
/******************************/
//(End) Restore the previous state //復原進子程序之前的狀態(tài)
LCD_RegisterWrite(0x02,temp1);
LCD_RegisterWrite(0x03,temp2);
LCD_RegisterWrite(0x5E,temp3);    
/******************************/
 

}


 

void RA8876_Call_UserDefineFont(unsigned short UDF_case,unsigned long UDF_Address,unsigned short UDF_X,unsigned short UDF_Y,unsigned short char_code)
{
/*
UDF_case: please key 8*16, 16*16, 12*24, 24*24, 16*32 or 32*32.
UDF_Address: User define font Address. 
UDF_X / UDF_Y: X and Y coordinates 0n the memory area.
char_code: Character codes of user define fonts. 
*/
 
//(1) set Font Function // 設定文本屬性
 
//(*)
Text_Mode();
 
//(*)
Font_Select_UserDefine_Mode();
 
//(*)
if( UDF_case == 128 ) //8x16
{
Font_Select_8x16_16x16();
CGRAM_Start_address(UDF_Address);
}
if( UDF_case == 256 ) //16x16
{
Font_Select_8x16_16x16();
CGRAM_Start_address(UDF_Address);
}
if( UDF_case == 288 ) //12x24
{
Font_Select_12x24_24x24();
CGRAM_Start_address(UDF_Address);
}
if( UDF_case == 576 ) //24x24
{
Font_Select_12x24_24x24();
CGRAM_Start_address(UDF_Address);
}
if( UDF_case == 512 ) //16x32
{
Font_Select_16x32_32x32();
CGRAM_Start_address(UDF_Address);
}
if( UDF_case == 1024 ) //32x32
{
Font_Select_16x32_32x32();
CGRAM_Start_address(UDF_Address);
}
 
//(*)
Goto_Text_XY(UDF_X,UDF_Y);
 
//(*) 
//Half width character code is 0000h~7FFFh,
if(UDF_case==128 || UDF_case==288 || UDF_case==512)
{
LCD_CmdWrite(0x04);
// character 0x0000
Check_Mem_WR_FIFO_not_Full();
LCD_DataWrite(char_code>>8);
Check_Mem_WR_FIFO_not_Full();
LCD_DataWrite(char_code);
 
Check_2D_Busy();
}  
 
//Full width character code is 8000h~FFFFh.
if(UDF_case==256 || UDF_case==576 || UDF_case==1024)
{
LCD_CmdWrite(0x04);
// character 0x8000
Check_Mem_WR_FIFO_not_Full();
LCD_DataWrite(char_code>>8);
Check_Mem_WR_FIFO_not_Full();
LCD_DataWrite(char_code);
 
Check_2D_Busy();
}
 
Graphic_Mode();
 

}


 
實例DEMO調(diào)用6個字模數(shù)組,并將其按4種比例大小顯示,

void RA8876_Demo_UserDefine_Font(void)
{
/*
Half width character code is 0000h~7FFFh,
Full width character code is 8000h~FFFFh.
*/
unsigned long UDF_8x16_Address,UDF_16x16_Address;
unsigned long UDF_12x24_Address,UDF_24x24_Address;
unsigned long UDF_16x32_Address,UDF_32x32_Address;
 
unsigned short x,y;
unsigned char i,j,BGC;
 
 
//(1) Create User Define Font. // 建立自建字型
//(1.a)    
/* (1) SDRAM=256Mb, address=0x01FF FFFF (byte).
(2) Assume that plan 1MB SDRAM memory for storing  8x16 or 16x16 Font data.
(3) Assume that plan 1MB SDRAM memory for storing 12x24 or 24x24 Font data.
(4) Assume that plan 1MB SDRAM memory for storing 16x32 or 32x32 Font data. 
*/
UDF_8x16_Address  = 0x02000000-1024*6; //(byte)
UDF_16x16_Address = 0x02000000-1024*5; //(byte)
UDF_12x24_Address = 0x02000000-1024*4; //(byte)
UDF_24x24_Address = 0x02000000-1024*3; //(byte)
UDF_16x32_Address = 0x02000000-1024*2; //(byte)
UDF_32x32_Address = 0x02000000-1024*1; //(byte)
 
//(1.b)
RA8876_Create_UserDefineFont( UDF_8x16_Address  , Demo_UDF_8x16  ,16);
RA8876_Create_UserDefineFont( UDF_16x16_Address , Demo_UDF_16x16 ,32);
RA8876_Create_UserDefineFont( UDF_12x24_Address , Demo_UDF_12x24 ,48);
RA8876_Create_UserDefineFont( UDF_24x24_Address , Demo_UDF_24x24 ,72);
RA8876_Create_UserDefineFont( UDF_16x32_Address , Demo_UDF_16x32 ,64);
RA8876_Create_UserDefineFont( UDF_32x32_Address , Demo_UDF_32x32 ,128);
 
//(2) 
Memory_Select_SDRAM();
Memory_XY_Mode();
Graphic_Mode();
 
Main_Window_Start_XY(0,0);
 
Active_Window_XY(0,0);
 
Active_Window_WH(800,480);
 
//(3) set Font Function // 設定文本屬性
//(*)
Font_Select_UserDefine_Mode();
//(*)
Text_Mode();
 
//(*) font color
Foreground_RGB(0xFF,0x00,0x00);  //設定文字顏色
Background_RGB(0x00,0x00,0xFF);  //當顯示底色是設定底色
 
//(*)
Set_Font_to_Font_Width(0);
Font_Line_Distance(0);
 
//(*)
for(BGC=0;BGC<2;BGC++)//
{
if(BGC==0)Font_Background_select_Original_Canvas();   //透明色顯示,及沒有底色
if(BGC==1)Font_Background_select_Color();             //有底色顯示
//
for(i=1;i<=6;i++)//
{
for(j=1;j<=4;j++)//變更字型倍數(shù) 
{
switch(j)
{
case 1 : Font_Width_X1(); Font_Height_X1(); break;
case 2 : Font_Width_X2(); Font_Height_X2(); break;
case 3 : Font_Width_X3(); Font_Height_X3(); break;
case 4 : Font_Width_X4(); Font_Height_X4(); break;
}
 
//Text Write position
if(i==1 || i==2)
{
if(i==1) x = 0;
if(i==2) x = 8*4;
 
if(j==1) y= 0;
if(j==2) y= 0 + 16*1;
if(j==3) y= 0 + 16*1 + 16*2;
if(j==4) y= 0 + 16*1 + 16*2 + 16*3;
}
if(i==3 || i==4)
{
if(i==3) x = 8*4+16*4;
if(i==4) x = 8*4+16*4+12*4;
 
if(j==1) y= 0;
if(j==2) y= 0 + 24*1;
if(j==3) y= 0 + 24*1 + 24*2;
if(j==4) y= 0 + 24*1 + 24*2 + 24*3;
}
if(i==5 || i==6)
{
if(i==5) x = 8*4+16*4+12*4+24*4;
if(i==6) x = 8*4+16*4+12*4+24*4+16*4;
 
if(j==1) y= 0;
if(j==2) y= 0 + 32*1;
if(j==3) y= 0 + 32*1 + 32*2;
if(j==4) y= 0 + 32*1 + 32*2 + 32*3;
}
 
switch(i)
{
case 1 :/*UDF_8x16*/
RA8876_Call_UserDefineFont( 8*16 ,UDF_8x16_Address ,x+10*i ,y+10*j ,0x0000 );// 10*i or 10*j : shift 10 pixel 
break;
case 2 :/*UDF_16x16*/
RA8876_Call_UserDefineFont( 16*16 ,UDF_16x16_Address ,x+10*i ,y+10*j ,0x8000 );// 10*i or 10*j : shift 10 pixel 
break;
case 3 :/*UDF_12x24*/
RA8876_Call_UserDefineFont( 12*24 ,UDF_12x24_Address ,x+10*i ,y+10*j ,0x0000 );// 10*i or 10*j : shift 10 pixel 
break;
case 4 :/*UDF_24x24*/
RA8876_Call_UserDefineFont( 24*24 ,UDF_24x24_Address ,x+10*i ,y+10*j ,0x8000 );// 10*i or 10*j : shift 10 pixel
break;
case 5 :/*UDF_16x32*/
RA8876_Call_UserDefineFont( 16*32 ,UDF_16x32_Address ,x+10*i ,y+10*j ,0x0000 );// 10*i or 10*j : shift 10 pixel 
break;
case 6 :/*UDF_32x32*/
RA8876_Call_UserDefineFont( 32*32 ,UDF_32x32_Address ,x+10*i ,y+10*j ,0x8000 );// 10*i or 10*j : shift 10 pixel 
break;
}
delay_ms(500);
}
delay_ms(1000);
}
}
}


實例效果









 





分享到:

相關(guān)熱詞搜索:

上一篇:調(diào)用外部字庫顯示不全
下一篇:單片機與RA8875接法及軟件初始化之一(通過8080接口介紹)