⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.c

📁 使用C52和4×4键盘实现汉字输入的程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#include<reg52.h>
#include<intrins.h>
#include<ziku.h>
#include<string.h>
/************************/

#define uchar unsigned char
#define uint unsigned int

/********总线以及地址线的定义************/
#define disp_on_12864 0x3f
#define disp_off_12864  0x3e
#define col_12864     0x40
#define row_12864     0xb8
#define start_line_12864   0xc0
#define lcd_bus_12864  P1

sbit di_12864 =P3^3;
sbit rw_12864 =P3^4;
sbit enable_12864 =P3^5;
sbit cs1_12864=P3^7;
sbit cs2_12864 =P3^6;

uchar row,col,dis,x,state,length,cx,staren,starch;


struct index
{
  uchar code *num;
  uchar code *zimu;
  uchar code *py;
};

struct index *p[6];

struct index code find1[]={
                          {"2","a",py_a},
						  {"2","b",NULL}, 
						  {"2","c",NULL}, 
						  {"3","d",NULL}, 
						  {"3","e",py_e}, 
						  {"3","f",NULL},
						  {"4","g",NULL}, 
						  {"4","h",NULL}, 
						  {"5","j",NULL}, 
						  {"5","k",NULL},
						  {"5","l",NULL},
						  {"6","m",NULL},
						  {"6","n",NULL},
						  {"6","o",NULL},
						  {"7","p",NULL},
						  {"7","q",NULL},
						  {"7","r",NULL},
						  {"7","s",NULL},
						  {"8","t",NULL},
						  {"9","w",NULL},
						  {"9","x",NULL},
						  {"9","y",NULL},
						  {"9","z",NULL}
						 };  
						 
struct index code find2[]={
						  {"22","ba",py_ba},
						  {"22","ca",py_ca},
						  {"23","be",NULL},
						  {"23","ce",py_ce},
						  {"24","ai",py_ai},
						  {"24","bi",py_bi},
						  {"24","ch",NULL},
						  {"24","ci",py_ci},
						  {"26","an",py_an},
						  {"26","ao",py_ao},
						  {"26","bo",py_bo},
						  {"26","co",NULL},
						  {"28","bu",py_bu},
						  {"28","cu",py_cu},
						  {"32","da",py_da},
						  {"32","fa",py_fa},
						  {"36","do",NULL},
						  {"33","de",py_de},
						  {"34","di",py_di},
						  {"36","en",py_en},
						  {"33","fe",NULL},
						  {"36","fo",py_fo},
						  {"37","er",py_er},
						  {"38","du",py_du},
						  {"38","fu",py_fu},
						  {"42","ga",py_ga},
						  {"42","ha",py_ha},
						  {"43","he",py_he},
						  {"43","ge",py_ge},
						  {"46","go",NULL},
						  {"46","ho",NULL},
						  {"48","gu",py_gu},
						  {"48","hu",py_hu},
						  {"52","ka",py_ka},
						  {"52","la",py_la},
						  {"53","ke",py_ke},
						  {"53","le",py_le},
						  {"54","ji",py_ji},
						  {"54","li",py_li},
						  {"56","ko",NULL},
						  {"56","lo",NULL},
						  {"58","ju",py_ju},
						  {"58","ku",py_ku},
						  {"58","lu",py_lu},
						  {"58","lv",py_lv},
						  {"93","we",NULL},
						  {"72","pa",py_pa},
						  {"72","ra",NULL},
						  {"72","sa",py_sa},
						  {"74","pi",NULL},
						  {"74","qi",NULL},
						  {"74","sh",NULL},
						  {"92","ya",py_ya},
						  };  


struct index code find3[]={
                          {"224","bai",py_bai},
						  {"224","cai",py_cai},
						  {"226","ban",py_ban},
						  {"226","can",py_can},
						  {"226","bao",py_bao},
						  {"226","cao",py_cao},
						  {"234","bei",py_bei},
						  {"236","ben",py_ben},
						  {"236","cen",py_cen},
						  {"242","bia",NULL},
						  {"242","cha",py_cha},
						  {"243","bie",py_bie},
						  {"243","che",py_che},
						  {"244","chi",py_chi},
						  {"246","bin",py_bin},
						  {"246","cho",NULL},
						  {"248","chu",py_chu},
						  {"264","ang",py_ang},
						  {"266","con",NULL},
						  {"268","cou",py_cou},
						  {"282","cua",NULL},
						  {"284","cui",py_cui},
						  {"286","cun",py_cun},
						  {"286","cuo",py_cuo},
						  {"324","dai",py_dai},
						  {"326","dan",py_dan},
						  {"326","dao",py_dao},
						  {"326","fan",py_fan},
						  {"334","dei",py_dei},
						  {"334","fei",py_fei},
						  {"336","den",NULL},
						  {"336","fen",py_fen},
						  {"342","dia",NULL},
						  {"343","die",py_die},
						  {"346","din",NULL},
						  {"348","diu",py_diu},
						  {"366","don",NULL},
						  {"368","dou",py_dou},
						  {"368","fou",py_fou},
						  {"382","dua",NULL},
						  {"384","dui",py_dui},
						  {"386","dun",py_dun},
						  {"386","duo",py_duo},
						  {"424","gai",py_gai},
						  {"424","hai",py_hai},
						  {"426","gan",py_gan},
						  {"426","gao",py_gao},
						  {"426","han",py_han},
						  {"426","hao",py_hao},
						  {"434","gei",py_gei},
						  {"434","hei",py_hei},
						  {"436","gen",py_gen},
						  {"436","hen",py_hen},
						  {"466","gon",NULL},
						  {"466","hon",NULL},
						  {"468","gou",py_gou},
						  {"482","gua",py_gua},
						  {"484","gui",py_gui},
						  {"482","hua",py_hua},
						  {"484","hui",py_hui},
						  {"486","hun",py_hun},
						  {"486","gun",py_gun},
						  {"486","guo",py_guo},
						  {"486","huo",py_huo},
						  {"468","hou",py_hou},
						  {"936","wen",py_wen},
						  {"726","pan",py_pan},
						  {"726","pao",py_pao},
						  {"726","ran",py_ran},
						  {"726","rao",py_rao},
						  {"726","san",py_san},
						  {"726","sao",py_sao},
						  {"726","pan",py_pan},
						  {"742","pia",NULL},
						  {"742","qia",NULL},
						  {"742","sha",NULL},
						  {"926","yan",py_yan},
						  };


struct index code find4[]={
                          {"2264","bang",py_bang},
						  {"2264","cang",py_cang},
						  {"2364","beng",py_beng},
						  {"2364","ceng",py_ceng},
						  {"2424","chai",py_chai},
						  {"2426","bian",py_bian},
						  {"2426","biao",py_biao},
						  {"2426","chan",py_chao},
						  {"2426","chao",py_chao},
						  {"2436","chen",py_chen},
						  {"2464","bing",py_bing},
						  {"2468","chou",py_chou},
						  {"2482","chua",NULL},
						  {"2484","chui",py_chui},
						  {"2486","chun",py_chun},
						  {"2486","chuo",py_chuo},
						  {"2664","cong",py_cong},
						  {"2826","cuan",py_cuan},
						  {"3264","dang",py_dang},
						  {"3264","fang",py_fang},
						  {"3364","deng",py_deng},
						  {"3364","feng",py_deng},
						  {"3426","dian",py_dian},
						  {"3426","diao",py_diao},
						  {"3464","ding",py_ding},
						  {"3664","dong",py_dong},
						  {"3826","duan",py_duan},
						  {"4264","gang",py_gang},
						  {"4264","hang",py_hang},
						  {"4364","geng",py_geng},
						  {"4364","heng",py_heng},
						  {"4664","gong",py_gong},
						  {"4664","hong",py_hong},
						  {"4824","guai",py_guai},
						  {"4824","huai",py_huai},
						  {"4826","guan",py_guan},
						  {"4826","huan",py_huan},
						  {"7426","pian",NULL},
						  {"7426","piao",NULL},
						  {"7426","qian",NULL},
						  {"7426","qiao",NULL},
						  {"7426","shan",NULL},
						  {"7426","shao",NULL},
						  {"9264","yang",py_yang},
						  };


struct index code find5[]={
                          {"24264","chang",py_chang},
						  {"24364","cheng",py_cheng},
						  {"24826","chuan",py_chuan},
						  };


struct index code find6[]={
                          {"248264","chuang",py_chuang}
						  };




/************函数声明******************/
void clear_sreen_12864 ();   //清屏(即清除显存)

void delay_12864 ();         //延时1ms

void delay(void);      //延时

void init_lcd_12864 ();	  //LCD初始化

void write_command_12864 (unsigned char cmdcode);	 //写指令
            
void write_data_12864 (unsigned char dispdata);     //写数据

void rddata(void)  ;   //读数据

void hanzi(uchar *pz);  //汉字输入

void yingwen(uchar *pz);    //英文输入

void dingwei(void);      //光标定位向前

void dingweihou(void);   //光标定位向后

void xian(uchar ax,uchar bx);  //字母列表

void qian(void);   //列表前选

void hou(void);    //列表后选

void qing(void);  //清空底层

uchar keyscan(void);    //键盘扫描

void qiehuan(void);   //切换输入法

/**********清除显屏(清除显示内存)***********/
void  clear_screen_12864()
{
 unsigned char i,j;
 cs1_12864 =0;cs2_12864=1;    /**清除左屏**/
 for(i=0;i<8;i++)
 {
   write_command_12864 (row_12864 +i);
   write_command_12864 (col_12864 +0);  //列地址0
   for(j=0;j<64;j++)
     write_data_12864 (0x00);     //每做一次写操作,列地址加1
 }
 cs1_12864 =1;cs2_12864 =0;    /**清除右屏**/
   for(i=0;i<8;i++)
 {
   write_command_12864(row_12864 +i);
   write_command_12864(col_12864+0);  //列地址0
   for(j=0;j<64;j++)
     write_data_12864(0x00);     //每做一次写操作,列地址加1
 }
}

/***********延时1ms**************/
void delay_12864()
{ unsigned int dy=500;
  while(--dy);
}

/*************初始化LCD屏***************/
void  init_lcd_12864()
{   
clear_screen_12864(); 
cs1_12864=1;cs2_12864=0;	 //右屏
delay_12864();
write_command_12864(disp_off_12864);
write_command_12864(start_line_12864);
write_command_12864(disp_on_12864); 
cs1_12864=0;cs2_12864=1;      //左屏
delay_12864();
write_command_12864(disp_off_12864);
write_command_12864(start_line_12864);
write_command_12864(disp_on_12864);  
}

/*******写指令到LCD*********/
void write_command_12864 (unsigned char cmdcode)
{
//lcd_busy();
di_12864 =0;
rw_12864 =0;
lcd_bus_12864 =cmdcode;      //输入控制命令(display on/off,display startline,row,col)
enable_12864 =1;
_nop_();
enable_12864 =0;
}

/***********写显示的数据到LCD***********/
void write_data_12864 (unsigned char dispdata)
{
//lcd_busy();
di_12864 =1;
rw_12864 =0;
lcd_bus_12864 =dispdata;
enable_12864 =1;
_nop_();
enable_12864 =0;
}


/**************键盘扫描************/
uchar keyscan(void)
{
	uchar scancode,tmpcode;
	P2 = 0xf0;
	if ((P2&0xf0)!=0xf0)
	{
		delay_12864();
		if ((P2&0xf0)!=0xf0)
		{
			scancode = 0xfe;
			while((scancode&0x10)!=0)
			{
				P2 = scancode;
				if ((P2&0xf0)!=0xf0)
				{
					tmpcode = (P2&0xf0)|0x0f;
					return((~scancode)+(~tmpcode));
				}
				else scancode = (scancode<<1)|0x01;	
			}
		}
	}
	return(0);
}


uchar change(uchar k)
{
   switch(k)
   {
      case 0x22:return('2');
	  case 0x24:return('3');
	  case 0x41:return('4');
	  case 0x42:return('5');
	  case 0x44:return('6');
	  case 0x81:return('7');
	  case 0x82:return('8');
	  case 0x84:return('9');
   }
} 

void attempt(uchar *in,uchar n)
{   	  
   struct index *ha,*hb;
   uchar i,re;
   re=cx;
   cx=0;
   if(n==1)
   {
      ha=find1;
	  hb=ha+sizeof(find1)/sizeof(find1[0]);
   }
   else if(n==2)
   {
      ha=find2;
	  hb=ha+sizeof(find2)/sizeof(find2[0]);
   }
   else if(n==3)
   {
      ha=find3;
	  hb=ha+sizeof(find3)/sizeof(find3[0]);
   }
   else if(n==4)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -