实验41 T9拼音输入法实验.zip
#include "sys.h" #include "delay.h" #include "usart.h" #include "led.h" #include "lcd.h" #include "key.h" #include "malloc.h" #include "sdio_sdcard.h" #include "w25qxx.h" #include "ff.h" #include "exfuns.h" #include "text.h" #include "pyinput.h" #include "touch.h" #include "string.h" #include "usmart.h" /************************************************ ALIENTEK¾«Ó¢STM32¿ª·¢°åʵÑé41 T9Æ´ÒôÊäÈë·¨ ʵÑé ¼¼ÊõÖ§³Ö£ºwww.openedv.com ÌÔ±¦µêÆÌ£ºhttp://eboard.taobao.com ¹Øע΢ÐŹ«ÖÚƽ̨΢Ðźţº"ÕýµãÔ×Ó"£¬Ãâ·Ñ»ñÈ¡STM32×ÊÁÏ¡£ ¹ãÖÝÊÐÐÇÒíµç×ӿƼ¼ÓÐÏÞ¹«Ë¾ ×÷ÕߣºÕýµãÔ×Ó @ALIENTEK ************************************************/ //Êý×Ö±í const u8* kbd_tbl[9]={"¡û","2","3","4","5","6","7","8","9",}; //×Ö·û±í const u8* kbs_tbl[9]={"DEL","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz",}; u16 kbdxsize; //ÐéÄâ¼üÅÌ°´¼ü¿í¶È u16 kbdysize; //ÐéÄâ¼üÅÌ°´¼ü¸ß¶È //¼ÓÔؼüÅ̽çÃæ //x,y:½çÃæÆðʼ×ø±ê void py_load_ui(u16 x,u16 y) { u16 i; POINT_COLOR=RED; LCD_DrawRectangle(x,y,x+kbdxsize*3,y+kbdysize*3); LCD_DrawRectangle(x+kbdxsize,y,x+kbdxsize*2,y+kbdysize*3); LCD_DrawRectangle(x,y+kbdysize,x+kbdxsize*3,y+kbdysize*2); POINT_COLOR=BLUE; for(i=0;i<9;i++) { Show_Str_Mid(x+(i%3)*kbdxsize,y+4+kbdysize*(i/3),(u8*)kbd_tbl[i],16,kbdxsize); Show_Str_Mid(x+(i%3)*kbdxsize,y+kbdysize/2+kbdysize*(i/3),(u8*)kbs_tbl[i],16,kbdxsize); } } //°´¼ü״̬ÉèÖà //x,y:¼üÅÌ×ø±ê //key:¼üÖµ£¨0~8£© //sta:״̬£¬0£¬ËÉ¿ª£»1£¬°´Ï£» void py_key_staset(u16 x,u16 y,u8 keyx,u8 sta) { u16 i=keyx/3,j=keyx%3; if(keyx>8)return; if(sta)LCD_Fill(x+j*kbdxsize+1,y+i*kbdysize+1,x+j*kbdxsize+kbdxsize-1,y+i*kbdysize+kbdysize-1,GREEN); else LCD_Fill(x+j*kbdxsize+1,y+i*kbdysize+1,x+j*kbdxsize+kbdxsize-1,y+i*kbdysize+kbdysize-1,WHITE); Show_Str_Mid(x+j*kbdxsize,y+4+kbdysize*i,(u8*)kbd_tbl[keyx],16,kbdxsize); Show_Str_Mid(x+j*kbdxsize,y+kbdysize/2+kbdysize*i,(u8*)kbs_tbl[keyx],16,kbdxsize); } //µÃµ½´¥ÃþÆÁµÄÊäÈë //x,y:¼üÅÌ×ø±ê //·µ»ØÖµ£º°´¼ü¼üÖµ£¨1~9ÓÐЧ£»0,ÎÞЧ£© u8 py_get_keynum(u16 x,u16 y) { u16 i,j; static u8 key_x=0;//0,ûÓÐÈκΰ´¼ü°´Ï£»1~9£¬1~9ºÅ°´¼ü°´Ï u8 key=0; tp_dev.scan(0); if(tp_dev.sta&TP_PRES_DOWN) //´¥ÃþÆÁ±»°´Ï { for(i=0;i<3;i++) { for(j=0;j<3;j++) { if(tp_dev.x[0]<(x+j*kbdxsize+kbdxsize)&&tp_dev.x[0]>(x+j*kbdxsize)&&tp_dev.y[0]<(y+i*kbdysize+kbdysize)&&tp_dev.y[0]>(y+i*kbdysize)) { key=i*3+j+1; break; } } if(key) { if(key_x==key)key=0; else { py_key_staset(x,y,key_x-1,0); key_x=key; py_key_staset(x,y,key_x-1,1); } break; } } }else if(key_x) { py_key_staset(x,y,key_x-1,0); key_x=0; } return key; } //ÏÔʾ½á¹û. //index:0,±íʾûÓÐÒ»¸öÆ¥ÅäµÄ½á¹û.Çå¿Õ֮ǰµÄÏÔʾ // ÆäËû,Ë÷ÒýºÅ void py_show_result(u8 index) { LCD_ShowNum(30+144,125,index,1,16); //ÏÔʾµ±Ç°µÄË÷Òý LCD_Fill(30+40,125,30+40+48,130+16,WHITE); //Çå³ý֮ǰµÄÏÔʾ LCD_Fill(30+40,145,lcddev.width,145+48,WHITE);//Çå³ý֮ǰµÄÏÔʾ if(index) { Show_Str(30+40,125,200,16,t9.pymb[index-1]->py,16,0); //ÏÔʾƴÒô Show_Str(30+40,145,lcddev.width-70,48,t9.pymb[index-1]->pymb,16,0);//ÏÔʾ¶ÔÓ¦µÄºº×Ö printf("\r\nÆ´Òô:%s\r\n",t9.pymb[index-1]->py); //´®¿ÚÊä³öÆ´Òô printf("½á¹û:%s\r\n",t9.pymb[index-1]->pymb); //´®¿ÚÊä³ö½á¹û } } int main(void) { u8 i=0; u8 result_num; u8 cur_index; u8 key; u8 inputstr[7]; //×î´óÊäÈë6¸ö×Ö·û+½áÊø·û u8 inputlen; //ÊäÈ볤¶È delay_init(); //ÑÓʱº¯Êý³õʼ»¯ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//ÉèÖÃÖжÏÓÅÏȼ¶·Ö×éΪ×é2£º2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶ uart_init(115200); //´®¿Ú³õʼ»¯Îª115200 usmart_dev.init(72); //³õʼ»¯USMART LED_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú KEY_Init(); //³õʼ»¯°´¼ü LCD_Init(); //³õʼ»¯LCD W25QXX_Init(); //³õʼ»¯W25Q128 tp_dev.init(); //³õʼ»¯´¥ÃþÆÁ my_mem_init(SRAMIN); //³õʼ»¯ÄÚ²¿ÄÚ´æ³Ø exfuns_init(); //ΪfatfsÏà¹Ø±äÁ¿ÉêÇëÄÚ´æ f_mount(fs[0],"0:",1); //¹ÒÔØSD¿¨ f_mount(fs[1],"1:",1); //¹ÒÔØFLASH. POINT_COLOR=RED; while(font_init()) //¼ì²é×Ö¿â { LCD_ShowString(30,50,200,16,16,"Font Error!"); delay_ms(200); LCD_Fill(30,50,240,66,WHITE);//Çå³ýÏÔʾ } RESTART: POINT_COLOR=RED; Show_Str(30,5,200,16,"¾«Ó¢STM32¿ª·¢°å",16,0); Show_Str(30,25,200,16,"Æ´ÒôÊäÈ뷨ʵÑé",16,0); Show_Str(30,45,200,16,"ÕýµãÔ×Ó@ALIENTEK",16,0); Show_Str(30,65,200,16,"KEY_UP:У׼ KEY0:Çå³ý",16,0); Show_Str(30,85,200,16," KEY1:Ï·",16,0); Show_Str(30,105,200,16,"ÊäÈë: Æ¥Åä: ",16,0); Show_Str(30,125,200,16,"Æ´Òô: µ±Ç°: ",16,0); Show_Str(30,145,210,32,"½á¹û:",16,0); if(lcddev.id==0X5310){kbdxsize=86;kbdysize=43;}//¸ù¾ÝLCD·Ö±æÂÊÉèÖð´¼ü´óС else if(lcddev.id==0X5510||lcddev.id==0X1963){kbdxsize=140;kbdysize=70;} else {kbdxsize=60;kbdysize=40;} py_load_ui(30,195); memset(inputstr,0,7); //È«²¿ÇåÁã inputlen=0; //ÊäÈ볤¶ÈΪ0 re
- 1
- 2
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助