- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
12864LCD显示程序
/***************************************************************\
|* 12864LCD显示程序 proteus6.9 仿真AMPIRE128*64 *|
|* 制作人:熊涛 *|
|* 时间:2007年4月12日 *|
|* 接口定义:P1接数据 DB7~DB0 *|
|* P2.0 P2.1 P2.2 P2.3 P2.4 接控制线 *|
|* 具体见定义 *|
\***************************************************************/
/***************************************************************\
|* 注:本程序只能写16*16的汉字 并且有一个小问题 就是 *|
|* 当字库中汉字的代码的第一个数据不是0x00时 该汉字就不 *|
|* 能显示出来 调试时发现是因为不能检索到那个汉字 具体原 *|
|* 因还在调试中 直接写汉字句子时注意两个字节一个字,不要 *|
|* 弄半角的字符或标点符号否则后面的汉字将找不到 *|
|* 2007年4月14日1时 修改 熊涛 *|
\***************************************************************/
#include reg52.h
#include all_code.h //包含字库 该字库采用晓奇工作室液晶字模提取软件默认保存的文件 采用结构体数组定义的方法
#include string.h
typedef unsigned char uchar;
typedef unsigned int uint;
struct word_BUFFER
{ uchar word[2]; } ;
struct word_BUFFER word_buf[33]; //定义结构体数组用来存储待显示的汉字 共32个
uchar bank=0; //设置第几行反显 0表示不反显 1~4表示各行的反显
uchar key=0; //第几个键被按下
sbit DI =P3^7; // 数据\指令 选择
sbit RW =P3^6; // 读\写 选择
sbit E =P3^5; // 读\写使能
sbit CS2 =P3^4; // 片选1
sbit CS1 =P3^3; // 片选2
sbit RST =P3^2; // 复位
keych(void) //检测是否有键按下子程序//
{ uint n;
if(P2==0xf0) return(0);
else while(P20xf0!=0xf0) for(n=0;n60000;n++);
return(1);}
keyscan() // 检测是哪个键按下子程序//
{ uchar m,n;
uchar code k[4]={0xfe,0xfd,0xfb,0xf7};
for(m=0;m4;m++)
{ P2=k[m];
n=P2+(m*m+5)*m/6;//此处要注意m为整型
switch(n)
{ case 0x7e:key=0+m*4;break;
case 0xbe:key=1+m*4;break;
case 0xde:key=2+m*4;break;
case 0xee:key=3+m*4;break;}
} }
/**********************************************\
|* 写命令子程序 *|
|* 入口参数:cmd 控制命令数据 *|
|* 出口参
文档评论(0)