资源描述:
《12864lcd显示程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/***************************************************************
2、*12864LCD显示程序proteus6.9仿真AMPIRE128*64*
3、
4、*制作人:熊涛*
5、
6、*时间:2007年4月12日*
7、
8、*接口定义:P1接数据DB7~DB0*
9、
10、*P2.0P2.1P2.2P2.3P2.4接控制线*
11、
12、*具体见定义*
13、***************************************************************//**************
14、*************************************************
15、*注:本程序只能写16*16的汉字并且有一个小问题就是 *
16、
17、*当字库中汉字的代码的第一个数据不是0x00时该汉字就不*
18、
19、*能显示出来调试时发现是因为不能检索到那个汉字具体原*
20、
21、*因还在调试中直接写汉字句子时注意两个字节一个字,不要*
22、
23、*弄半角的字符或标点符号否则后面的汉字将找不到*
24、
25、*2007年4月14日1时修改熊涛*
26、**************************************************
27、*************/#include#include//包含字库该字库采用晓奇工作室液晶字模提取软件默认保存的文件采用结构体数组定义的方法#includetypedefunsignedcharuchar;typedefunsignedintuint;structword_BUFFER{ucharword[2];};structword_BUFFERword_buf[33];//定义结构体数组用来存储待显示的汉字 共32个ucharbank=0;//设置第几行反显0表
28、示不反显1~4表示各行的反显ucharkey=0;//第几个键被按下sbitDI=P3^7;//数据指令选择sbitRW=P3^6;//读写选择sbitE=P3^5;//读写使能sbitCS2=P3^4;//片选1sbitCS1=P3^3;//片选2sbitRST=P3^2;//复位keych(void)//检测是否有键按下子程序//{uintn;if(P2==0xf0)return(0);elsewhile(P2&0xf0!=0xf0)for(n=0;n<60000;n++);return(1);}keyscan()//检测是
29、哪个键按下子程序//{ucharm,n;ucharcodek[4]={0xfe,0xfd,0xfb,0xf7};for(m=0;m<4;m++){P2=k[m];n=P2+(m*m+5)*m/6;//此处要注意m为整型switch(n){case0x7e:key=0+m*4;break;case0xbe:key=1+m*4;break;case0xde:key=2+m*4;break;case0xee:key=3+m*4;break;}}}/**********************************************
30、
31、*写命令子程序*
32、
33、*入口参数:cmd控制命令数据*
34、
35、*出口参数:null*
36、
37、*调用函数:null*
38、**********************************************/voidwrite_cmd(ucharcmd)//写命令子程序{RW=0;DI=0;//DI=0写命令E=1;P1=cmd;E=0;//RW="L",E="H->L"DB7~DB0的数据被写到IR或DR}/**********************************************
39、*写数据子程序*
40、
41、*入口参数:d
42、at显示字符的数据*
43、
44、*oppo标志位1:显示阳文*
45、
46、*0:显示阴文*
47、
48、*出口参数:null*
49、
50、*调用函数:null*
51、**********************************************/voidwrite_dat(uchardat,bitoppo)//写数据子程序{RW=0;DI=1;//DI=1写数据E=1;if(oppo==0)P1=~dat;//按位取反得阴文if(oppo==1)P1=dat;oppo=1;E=0;//RW="L",E="H->L"DB7~DB0的数据被写到IR或DR}/*
52、*********************************************
53、*设置显示起始行X地址和Y地址*
54、
55、*入口参数:st_line显示起始行0~63*
56、
57、*x_add页地址8行为一页0~7*
58、
59、