单片机按键复用与汉字输入程序

    几年前自己做了一个基于4*4矩阵键盘和12864液晶的小程序,几天拿到这里跟大家分享。
    总的思路是:按下的连续两次作为一个拼音字母,通过拼音映射到预先整理好的汉字数组来读取汉字显示。程序有上下翻页、删除拼音、汉字、重新输入或修改拼音、汉字及结果保存功能。

一、主函数文件
Main.c

#include"REG52.H"
#include"DATA.H" //赋值的数据文件,放在第二个,所以不会出现变量重命名
#include"INPUT.H"
#include"OUT_CONT.H"
#include"OUTPUT.H"

sbit feleer=P1^0;

void Feleer();

/主函数/
void main()
{
Init_Timer();
//Feleer(); //测试
Init_Lcd();

//Feleer(); //测试
while(1)
{
//Feleer(); //测试
if(Flag_ENTER1)
{
Enter();
Flag_ENTER=0;
}
if(Flag_NUMBER
1)
{
//Feleer(); //测试
Select_Text(Select_Number);
Flag_NUMBER=0;
}
if(Flag_UP1)
{
Page_Up();
Flag_UP=0;
}
if(Flag_DOWN
1)
{
//Feleer(); //测试
Page_Down();
Flag_DOWN=0;
}
if(Flag_DELETE==1)
{
Delete();
Flag_DELETE=0;
}
}
}

void Feleer() //探针,闪两下
{
unsigned int t;

for(t=0;t<2000;t++)
{
if(t%500==0)
{
feleer=~feleer;
}
}
}

二、输入头文件
Input.h

#ifndef _INPUT_H
#define _INPUT_H

#include"REG52.H"

#define PAGE_UP 0xeeee //S13
#define PAGE_DOWN 0xdede //S14
#define DELETE 0xbebe //S15
#define ENTER 0x7e7e //S16

#define FRONT 0x14
#define BACK 0x10

extern bit Flag_UP;
extern bit Flag_DOWN;
extern bit Flag_DELETE;
extern bit Flag_ENTER;

extern bit Flag_NUMBER;
extern bit Flag_Text;

extern unsigned char Lett;
extern unsigned char Page;
extern unsigned char Line;
extern unsigned char Text_Num;
extern unsigned char Select_Number;
extern unsigned char Text_x;
extern unsigned char Addr;

extern unsigned char LETTER[10];
extern unsigned char Text_Save[51];

extern unsigned char LETT_GUANLIAN[2];

extern unsigned char code KEY_CODE[16];
extern unsigned char code LETT_BUF[27];
extern unsigned int code KEY_BUF_1[10];
extern unsigned int code KEY_BUF_2[26];
extern unsigned char code Text[5][35];

void Init_Timer();
void Display_Lett();
void Display_Text_List();
void Display_Text();
void Set_xy(unsigned char x,unsigned char y);
unsigned char Rcom();
void Wcom(unsigned char com);
void WDat(unsigned char Dat);
void Delete();
void Enter();
void Page_Up();
void Page_Down();
void Select_Text(unsigned char select_number);
void Clear_Text();
void Clear_Lett();
void Delete_Lett();
void Delete_Text();
void Delay();

#endif

三、输入源文件
Input.c

#include"INPUT.H"

bit Flag_UP=0;
bit Flag_DOWN=0;
bit Flag_DELETE=0;
bit Flag_ENTER=0;

bit Flag_NUMBER=0;
bit Flag_Text=0;

unsigned char Lett;
unsigned char Page=0;
unsigned char Line=0;
unsigned char Text_Num=0;
unsigned char Selec

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值