几年前自己做了一个基于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_NUMBER1)
{
//Feleer(); //测试
Select_Text(Select_Number);
Flag_NUMBER=0;
}
if(Flag_UP1)
{
Page_Up();
Flag_UP=0;
}
if(Flag_DOWN1)
{
//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