历史上的今天
返回首页

历史上的今天

今天是:2024年09月08日(星期日)

2020年09月08日 | 基于SC95F8616单片机的汉字模拟输入

2020-09-08 来源:51hei

前面介绍了以区位码显示汉字的方法,在此基础上可以通过按键来选取字库的内容进行模拟输入。

在使用中文字库的情况下,使用区位码可以实现汉字的模拟输入,其输入界面如图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汉字模拟输入

推荐阅读

史海拾趣

Eurotechnique公司的发展小趣事

Eurotechnique公司成立于XXXX年,由几位具有远见卓识的电子工程师和企业家共同创立。他们看到了当时电子行业快速发展的趋势,尤其是数字电路和微控制器领域的巨大潜力。因此,公司决定专注于这两个领域的技术研发和产品生产。在创立初期,Eurotechnique通过不断的技术创新和产品优化,逐渐在市场上树立了良好的口碑。

BELLING LEE公司的发展小趣事

在电子行业的初期,BELLING LEE公司以其对新技术的敏锐洞察力和强大的研发能力脱颖而出。公司投入大量资源研发出了一款具有革命性的高效能电子芯片,这一创新产品不仅提高了电子设备的性能,还大大降低了能耗。凭借这一技术突破,BELLING LEE公司迅速在电子市场上获得了认可,并逐渐建立起自己的市场地位。

台湾丰宾(CapXon)公司的发展小趣事

CapXon公司一直高度重视品质管理,建立了完善的质量管理体系和检测机制。公司严格把控原材料采购、生产过程、成品检验等各个环节,确保产品的品质符合国际标准和客户要求。同时,CapXon还不断优化生产流程,提高生产效率,降低生产成本,为客户提供更具竞争力的价格和服务。

GS Yuasa Battery Sales UK Ltd.公司的发展小趣事

随着全球环保意识的不断提高,CapXon公司积极响应绿色生产的号召,致力于实现可持续发展。公司采用环保材料和制造工艺,减少生产过程中的污染物排放,降低对环境的影响。同时,CapXon还积极参与各种环保活动和公益事业,为推动电子行业的绿色发展贡献自己的力量。

以上五个故事分别从初创与起步、市场拓展与品牌塑造、技术创新与产业升级、品质管理与生产优化以及绿色生产与可持续发展五个方面,展示了台湾丰宾(CapXon)公司在电子行业发展的历程和成就。这些故事不仅体现了公司的实力和魅力,也展现了公司在推动电子行业进步和可持续发展方面所做的努力和贡献。

Defense Logistics Agency公司的发展小趣事

面对日益复杂的军事需求和快速发展的技术环境,DLA积极推进技术创新和数字化转型。通过引入云计算、大数据、人工智能等先进技术,DLA实现了对全球供应链的实时监控和智能调度,大大提高了后勤保障的效率和准确性。同时,DLA还加强了对新型军事装备的研发和保障能力,确保美军在现代化战争中保持领先地位。

赛微(Cellwise)公司的发展小趣事

赛微公司自创立之初,就专注于模拟芯片的研发和销售。公司汇聚了一批资深的模拟集成电路设计专家和电池电化学专家,致力于在电池管理芯片和电源管理芯片领域实现技术突破。通过不断的技术创新和研发投入,赛微成功推出了一系列高性能、高可靠性的电池安全芯片、电池计量芯片和充电管理芯片等产品,赢得了市场的广泛认可。

问答坊 | AI 解惑

如何焊接贴片元件(图片教程)

如何焊接贴片元件(图片教程) 首先来张全部焊接一个点的PCB图 当然这是焊接贴片的必须工具 这个是准备焊接的DD(晕倒,稍不小心会不见) 先用烙铁加热焊点 然后夹个贴片马上过去 等贴片固定后焊接另外一边! 焊接IC了,先在PCB上 ...…

查看全部问答>

哎,买了个太阳能小夜灯,被骗了。想自己改进一下,请假一下电路如何改进

买了个太阳能小夜灯,说白天太阳底下充电一个白天,能亮一个晚上。可它是当快没电了的时候,一闪一闪的。正常亮也就亮两个小时,然后就是一闪一闪的亮。晚上一闪一闪的晃的睡不着。 我想改进一下,当它快没电的时候不让它亮了。…

查看全部问答>

EVC编写的程序WiNCE6.0上不能运行问题请教?

最近将wince5.0升级到wince6.0,发现以前在EVC下编写的mfc应用程序在wince6.0上不能运行, 尝试将Program Files\\Microsoft Visual Studio 8\\VC\\ce\\Dll\\armv4I目录下几个跟MFC相关的DLL导入到系统windows目录(网上看帖子说是PB6.0对MFC不支持 ...…

查看全部问答>

如何在驱动中(如miniport driver)监控鼠标和键盘的消息?

目前打算从驱动中监控鼠标和键盘的消息(鼠标是否有移动或者键盘是否有按下),当监控到这个消息的时候,就唤醒处于睡眠状态的驱动。请大侠给一些建议,谢谢!!…

查看全部问答>

多用途太阳能LED发光水壶

看上去是个运动水壶,其实他是一个LED露营灯, 如果你旅行时有重要的私人用品,还可以将他们都装进去,防水防潮。这款名叫LightCap 300 LED户外灯,LED灯藏在瓶盖里面,瓶盖的外面是贴有整块太阳能板,不管你在哪只要野外晴天就能充电,夜晚就能持 ...…

查看全部问答>

如何提高FLASH的擦写次数

如何提高FLASH的擦写次数 在实际应用中,用户经常需要在程序运行过程中保存或读取一些数据,这些数据在工作中经常会变化,而且掉电后也不能丢失,所以需要及时地进行存储,存储这些数据常用的存储器是EEPROM。HXM6002虽然本身不带EEPROM,但是它 ...…

查看全部问答>

关于pic18 系列编译器

大家都用什么c编译器?  上网找了很多 picc 18 和谐版,但是在win7下安装试了都好像不能用。。。…

查看全部问答>

MSP430低功耗模式下PWM产生

小弟最近使用MSP430F2011外接32.768K晶振  然后想再LPM3模式下下产生3000HZ的PWM波形 可是我用定时器产生选着ACLK32.768HZ  怎么算也算不出来 3000HZ   求大侠指点 …

查看全部问答>

电动车跷跷板

下载过来的,有原理图,软件…

查看全部问答>