一開始我下載了讀取SD卡的程序,但液晶顯示屏幕上沒反應,于是我就下載了這個關于更新字庫的程序,就有反應了。
本實驗將實現(xiàn)如下功能:開機的時候先檢測W25Q16中是否已經(jīng)存在字庫,如果存在,則按次序顯示漢字(三種字體都顯示)。如果沒有,則檢測SD卡和文件系統(tǒng),并查找SYSTEM文件夾下的FONT文件夾,在該文件夾內(nèi)查找UNIGBK.BIN、GBK12.FON、GBK16.FON (這幾個文件的由來,我們前面已經(jīng)介紹了)。在檢測到這些文件之后,就開始更新字庫,更新完畢才開始顯示漢字。通過按按鍵KEY0,可以強制更新字庫。同樣我們也是用DS0來指示程序正在運行。
需要拷貝到SD卡根目錄文件
1,在系統(tǒng)(或字庫)更新的時候,必須用到SYSTEM文件夾,請將該文件夾下的SYSTEM文件夾拷貝到SD卡根目錄。
2,測試用文件--該文件夾是用來測試用的,里面包含一些文本/圖片/音樂/視頻等文件,這個文件不一定要拷貝。
3,默認我們已經(jīng)將這兩個文件夾拷貝到了FLASH磁盤(磁盤名:ALIENTEK,即W25Q128)里面。
注意:
1,本例程支持12*12/16*16 大小的漢字顯示。
2,如果想更新字庫,必須自備SD卡一個。
單片機源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "lcd.h"
- #include "key.h"
- #include "sram.h"
- #include "malloc.h"
- #include "usmart.h"
- #include "sdio_sdcard.h"
- #include "malloc.h"
- #include "w25qxx.h"
- #include "ff.h"
- #include "exfuns.h"
- #include "fontupd.h"
- #include "text.h"
-
- //漢字顯示 實驗 -庫函數(shù)版本
- //STM32F4工程模板-庫函數(shù)版本
-
- int main(void)
- {
- u32 fontcnt;
- u8 i,j;
- u8 fontx[2];//gbk碼
- u8 key,t;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統(tǒng)中斷優(yōu)先級分組2
- delay_init(168); //初始化延時函數(shù)
- uart_init(115200); //初始化串口波特率為115200
- LED_Init(); //初始化LED
- LCD_Init(); //LCD初始化
- KEY_Init(); //按鍵初始化
- W25QXX_Init(); //初始化W25Q128
- usmart_dev.init(168); //初始化USMART
- my_mem_init(SRAMIN); //初始化內(nèi)部內(nèi)存池
- my_mem_init(SRAMCCM); //初始化CCM內(nèi)存池
- exfuns_init(); //為fatfs相關變量申請內(nèi)存
- f_mount(fs[0],"0:",1); //掛載SD卡
- f_mount(fs[1],"1:",1); //掛載FLASH.
- // W25QXX_Erase_Chip();//擦除
- while(font_init()) //檢查字庫
- {
- UPD:
- LCD_Clear(WHITE); //清屏
- POINT_COLOR=RED; //設置字體為紅色
- LCD_ShowString(30,50,200,16,16,"Mcudev STM32F4");
- while(SD_Init()) //檢測SD卡
- {
- LCD_ShowString(30,70,200,16,16,"SD Card Failed!");
- delay_ms(200);
- LCD_Fill(30,70,200+30,70+16,WHITE);
- delay_ms(200);
- }
- LCD_ShowString(30,70,200,16,16,"SD Card OK");
- LCD_ShowString(30,90,200,16,16,"Font Updating...");
- key=update_font(20,110,16,"0:");//更新字庫
- while(key)//更新失敗
- {
- LCD_ShowString(30,110,200,16,16,"Font Update Failed!");
- delay_ms(200);
- LCD_Fill(20,110,200+20,110+16,WHITE);
- delay_ms(200);
- }
- LCD_ShowString(30,110,200,16,16,"Font Update Success! ");
- delay_ms(1500);
- LCD_Clear(WHITE);//清屏
- }
- POINT_COLOR=RED;
- Show_Str(30,50,200,16,"Mcudev_STM32F407開發(fā)板",16,0);
- Show_Str(30,70,200,16,"GBK字庫測試程序",16,0);
- //Show_Str(30,90,200,16,"嵌入式開發(fā)網(wǎng)mcudev",16,0);
- Show_Str(30,110,200,16,"2018年4月22日",16,0);
- Show_Str(30,130,200,16,"按KEY0,更新字庫",16,0);
- POINT_COLOR=BLUE;
- Show_Str(30,150,200,16,"內(nèi)碼高字節(jié):",16,0);
- Show_Str(30,170,200,16,"內(nèi)碼低字節(jié):",16,0);
- Show_Str(30,190,200,16,"漢字計數(shù)器:",16,0);
- // Show_Str(30,220,200,24,"對應漢字為:",24,0); //因為FLASH W25Q16無法裝下所有三種字庫,暫時不提供對24點陣字庫的顯示
- Show_Str(30,244,200,16,"對應漢字(16*16)為:",16,0);
- Show_Str(30,260,200,12,"對應漢字(12*12)為:",12,0);
- while(1)
- {
- fontcnt=0;
- for(i=0x81;i<0xff;i++)
- {
- fontx[0]=i;
- LCD_ShowNum(118,150,i,3,16); //顯示內(nèi)碼高字節(jié)
- for(j=0x40;j<0xfe;j++)
- {
- if(j==0x7f)continue;
- fontcnt++;
- LCD_ShowNum(118,170,j,3,16); //顯示內(nèi)碼低字節(jié)
- LCD_ShowNum(118,190,fontcnt,5,16);//漢字計數(shù)顯示
- fontx[1]=j;
- // Show_Font(30+132,220,fontx,24,0);
- Show_Font(30+144,244,fontx,16,0);
- Show_Font(30+108,260,fontx,12,0);
- t=200;
- while(t--)//延時,同時掃描按鍵
- {
- delay_ms(1);
- key=KEY_Scan(0);
- if(key==KEY0_PRES)goto UPD;
- }
- LED0=!LED0;
- }
- }
- }
- }
- //int main(void)
- //{
- // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統(tǒng)中斷優(yōu)先級分組2
- //
- // delay_init(168); //初始化延時函數(shù)
- // uart_init(115200); //初始化串口波特率為115200
- // LED_Init(); //初始化LED
- // LCD_Init(); //LCD初始化
- // KEY_Init(); //按鍵初始化
- // W25QXX_Init(); //初始化W25Q128
- // usmart_dev.init(168); //初始化USMART
- // my_mem_init(SRAMIN); //初始化內(nèi)部內(nèi)存池
- // my_mem_init(SRAMCCM); //初始化CCM內(nèi)存池
- // exfuns_init(); //為fatfs相關變量申請內(nèi)存
- // f_mount(fs[0],"0:",1); //掛載SD卡
- // f_mount(fs[1],"1:",1); //掛載FLASH.
- //// W25QXX_Erase_Chip();//擦除
- //
- // while(font_init()) //檢查字庫
- // {
- // LCD_Clear(WHITE); //清屏
- // POINT_COLOR=RED; //設置字體為紅色
- // LCD_ShowString(30,50,200,16,16,"Mcudev STM32F4");
- // while(SD_Init()) //檢測SD卡
- // {
- // LCD_ShowString(30,70,200,16,16,"SD Card Failed!");
- // delay_ms(200);
- // LCD_Fill(30,70,200+30,70+16,WHITE);
- // delay_ms(200);
- // }
- //
- // LCD_ShowString(30,110,200,16,16,"Font Update Success! ");
- // delay_ms(1500);
- // LCD_Clear(WHITE);//清屏
- // }
- //
- // POINT_COLOR=RED;
- // Show_Str(30,50,200,16,"Mcudev_STM32F407開發(fā)板",16,0);
- // Show_Str(30,70,200,16,"GBK字庫測試程序",16,0);
- // Show_Str(30,90,200,16,"嵌入式開發(fā)網(wǎng)mcudev",16,0);
- // Show_Str(30,110,200,16,"2015年8月15日",16,0);
- // Show_Str(30,130,200,16,"按KEY0,更新字庫",16,0);
- // POINT_COLOR=BLUE;
- // Show_Str(30,150,200,16,"林本源vdfdhdfhfhfhfgh斯蒂芬歸還建行開戶結果就發(fā)給回復:",16,0);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
CS_show_HZ.rar
(8.96 MB, 下載次數(shù): 88)
2018-4-30 12:39 上傳
點擊文件名下載附件
用來更新字庫,以便讀取SD卡
|