本帖最后由 jinglixixi 于 2020-7-18 08:32 編輯
前面介紹了以區位碼顯示漢字的方法,在此基礎上可以通過按鍵來選取字庫的內容進行模擬輸入。 在使用中文字庫的情況下,使用區位碼可以實現漢字的模擬輸入,其輸入界面如圖1所示。
1.png (285.77 KB, 下載次數: 52)
下載附件
2020-7-17 19:01 上傳
圖1 漢字模擬輸入界面
實現模擬輸入的主程序為: - void main(void)
- {
- unsigned char t,q,w,u;
-
- GPIO_Init(GPIO0, GPIO_PIN_4,GPIO_MODE_OUT_PP);
- GPIO_WriteLow(GPIO0, GPIO_PIN_4);
- GPIO_Init(GPIO0, GPIO_PIN_5, GPIO_MODE_IN_PU);
- GPIO_Init(GPIO0, GPIO_PIN_6, GPIO_MODE_IN_PU);
- GPIO_Init(GPIO0, GPIO_PIN_7, GPIO_MODE_IN_PU);
- OLED_ShowCHineseS(0,2,0xB0A1);
- x=0;
- no=0;
- while(1)
- {
- if(GPIO_ReadPin(GPIO0, GPIO_PIN_7)==0)
- {
- while(GPIO_ReadPin(GPIO0, GPIO_PIN_7)==0); //K1
- OLED_ShowCHinesey(x,6, no*2);
- x=x+16;
- if(x>113) x=0;
- }
-
- if(GPIO_ReadPin(GPIO0, GPIO_PIN_6)==0)
- {
- while(GPIO_ReadPin(GPIO0, GPIO_PIN_6)==0); // K2
- if(no<9) no++;
- else no=0;
- if(no<9) OLED_ShowChar (96,0,no+'1',16);
- else OLED_ShowChar (96,0,'A',16);
- OLED_ShowCHinesey(8,0, no*2);
- }
- mdelay(500);
- }
- }
復制代碼
模擬輸入界面顯示函數為: - void OLED_ShowCHineseS(unsigned char x,unsigned char y,unsigned int no)
- {
- unsigned char t,q,w,u;
-
- no=0xB0A2;
- q=(unsigned char) no&0xff;
- q=(q-0xA1)*2;
- x=x+8;
- OLED_ShowString(48,0,"no:B0A1",16);
- OLED_ShowCHinesey(8,0,0);
- w=0;
- for(u=0;u<10;u++)
- {
- if(u<5)
- {
- OLED_ShowChar(u*24,2,u+'0',16);
- OLED_ShowChar(u*24,4,u+'5',16);
- }
-
- OLED_Set_Pos(x,y);
- for(t=0;t<16;t++)
- {
- OLED_WR_Byte(Hzk[w][t],OLED_DATA);
- }
- w=w+1;
- OLED_Set_Pos(x,y+1);
- for(t=0;t<16;t++)
- {
- OLED_WR_Byte(Hzk[w][t],OLED_DATA);
- }
- x=x+24;
- w=w+1;
- if(u==4)
- {
- x=x-120;
- y=y+2;
- }
- }
- }
復制代碼
在下載程序后,按K2 鍵進行漢字的選擇;當按K1 鍵時,則錄入該漢字。經驗證功能正常,其效果圖2 所示。
2.png (281.53 KB, 下載次數: 51)
下載附件
2020-7-17 19:01 上傳
圖2漢字模擬輸入
|