12864 液晶驱动程序Word文档格式.docx

上传人:b****2 文档编号:1392626 上传时间:2023-04-30 格式:DOCX 页数:17 大小:19.68KB
下载 相关 举报
12864 液晶驱动程序Word文档格式.docx_第1页
第1页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第2页
第2页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第3页
第3页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第4页
第4页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第5页
第5页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第6页
第6页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第7页
第7页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第8页
第8页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第9页
第9页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第10页
第10页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第11页
第11页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第12页
第12页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第13页
第13页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第14页
第14页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第15页
第15页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第16页
第16页 / 共17页
12864 液晶驱动程序Word文档格式.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

12864 液晶驱动程序Word文档格式.docx

《12864 液晶驱动程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《12864 液晶驱动程序Word文档格式.docx(17页珍藏版)》请在冰点文库上搜索。

12864 液晶驱动程序Word文档格式.docx

sbitcs1=P3^4;

//片选1,低有效(前64列)

sbitcs2=P3^5;

//片选2,低有效(后64列)

sbitreset=P0^7;

//复位

/*-----------------------------------------------------------------------------------------

-----------*/

/*****函数列表****

//开关显示

voidSetOnOff(unsignedcharonoff)

//选择屏幕

//screen:

0-全屏,1-左屏,2-右

voidSelectScreen(unsignedcharscreen)

//清屏

voidClearScreen(unsignedcharscreen)

//显示8*8点阵

//旋转90度:

字模被竖着切分

//lin:

行(0-7),column:

列(0-15)

//address:

字模区首地址

voidShow88(unsignedcharlin,unsignedcharcolumn,unsignedintaddress)

//显示8*16字符

行(0-3),column:

//character:

字符代码(标准ASCII码)

voidShowChar(unsignedcharlin,unsignedcharcolumn,unsignedcharcharacter)

//显示8*16字符串

//!

!

只能显示在一行上即:

串长+column<

=15

voidShowString(unsignedcharlin,unsignedcharcolumn,unsignedchar*string)

//显示一个汉字

//hzcode:

汉字代码(自定义的)

voidShowHZ(unsignedcharlin,unsignedcharcolumn,unsignedinthzcode)

//显示图片

//旋转90度:

//startline:

开始行

//startcolumn:

开始列

//linechar:

图片行点除8(图片以8*8点阵为单位)

//columnchar:

图片列点除8(图片以8*8点阵为单位)

voidShowPicture(unsignedcharstartline,unsignedcharstartcolumn,unsignedchar

linechar,unsignedcharcolumnchar,unsignedintaddress)

问题大户

//显示一行汉字

//lineheadaddr:

此行汉字代码区首地址

voidShowLine(unsignedcharlin,unsignedintlineheadaddr)

//显示一屏汉字

//pageheadaddr:

此屏汉字代码地址区首地址

voidShowPage(unsignedintpageheadaddr)

//反显一个8*8字块

列(0-7)

voidReverseShow88(unsignedcharlin,unsignedcharcolumn)

//反显一个字符

行(0-4),column:

voidReverseShowChar(unsignedcharlin,unsignedcharcolumn)

//反显一个汉字

ReverseShowHZ(unsignedcharlin,unsignedcharcolumn)

//反显一行汉字

ReverseShow(unsignedcharlin)

//初始化LCD

voidInitLCD()

****函数列表结束*****/

/*--基本函数源程序-------------------------------------------------------------------------

//延时

Lcd12864delay()

{

unsignedinti=500;

while(i--){;

}

//状态检查

voidCheckState()

unsignedchardat;

di=0;

rw=1;

do{

LCD12864DataPort=0xff;

en=1;

dat=LCD12864DataPort;

en=0;

dat=0x90&

dat;

//仅当第4,7位为0时才可操作

}while(!

(dat==0x00));

//写显示数据

//dat:

显示数据

voidWriteByte(unsignedchardat)

CheckState();

di=1;

rw=0;

LCD12864DataPort=dat;

------------*/

//向LCD发送命令

//command:

命令

SendCommandToLCD(unsignedcharcommand)

rw=0;

LCD12864DataPort=command;

//设定行地址(页)--X0-7

voidSetLine(unsignedcharline)

line=line&

0x07;

//0<

=line<

=7

line=line|0xb8;

//10111xxx

SendCommandToLCD(line);

//设定列地址--Y0-63

voidSetColumn(unsignedcharcolumn)

column=column&

0x3f;

//0=<

COLUMN<

=63

column=column|0x40;

//01xxxxxx

SendCommandToLCD(column);

//设定显示开始行--XX

voidSetStartLine(unsignedcharstartline)//0--63

startline=startline&

startline=startline|0xc0;

//11000000

SendCommandToLCD(startline);

onoff=0x3e|onoff;

//0011111x

SendCommandToLCD(onoff);

----------*/

0-全屏,1-左屏,2-右屏

{//北京显示器:

负有效cs1:

0--右;

cs2:

0--左

switch(screen)

{case0:

cs1=0;

//全屏

_nop_();

_nop_();

cs2=0;

break;

case1:

cs1=1;

//左屏

case2:

//右屏

cs2=1;

{unsignedchari,j;

SelectScreen(screen);

for(i=0;

i<

8;

i++)

{SetLine(i);

for(j=0;

j<

64;

j++)

WriteByte(0x00);

---------*/

{unsignedchari;

if(column>

16){return;

if(column<

8)SelectScreen

(1);

//如果列数<

8(0,1,2,3,4,5,6,7)则写在第一屏上

else{

SelectScreen

(2);

//否则(8,9,10,11,12,13,14,15)写在第二屏上

//防止越界

SetLine(lin);

SetColumn(column<

<

3);

i++)WriteByte(CBYTE[address+i]);

-------*/

{lin=lin<

1;

Show88(lin,column,ASCII816[character-0x20]);

Show88(lin+1,column,ASCII816[character-0x20]+8);

------*/

/*

{unsignedcharch;

unsignedchari=0;

while(*string!

='

'

\0'

ch=*string;

if(i+column>

15)break;

//(只能显示在一行上即:

=15)

ShowChar(lin,i+column,ch);

string++;

i++;

*/

-----*/

//ucharcodeHZtable

lin=lin<

//lin*2

Show88(lin,column,HZTable[hzcode]);

Show88(lin,column+1,HZTable[hzcode]+8);

Show88(lin+1,column,HZTable[hzcode]+16);

Show88(lin+1,column+1,HZTable[hzcode]+24);

COLUMNCHAR;

I++)

LINECHAR;

J++)

Show88(startline+i,startcolumn+j,address+(i*linechar+j)*8);

//显示一行字符串(汉字,字母混排,一行16字节)

voidShowLine(unsignedcharlin,unsignedcharlinehead[])

unsignedcharbyte;

unsignedinthzcode;

for(i=0;

i<

16;

{byte=linehead;

if(byte<

0x80)//字母

if(i>

15)return;

//!

编译器有问题,须强制退出

ShowChar(lin,i,byte);

i=i+1;

else//byte>

=0x80(汉字)

byte=byte&

0x7f;

//最高位置0,即:

减去0x8000

hzcode=(unsignedint)byte<

//?

?

//高8位

hzcode=hzcode+linehead[i+1];

//加低8位,组合成整型数地址

ShowHZ(lin,i,hzcode);

i=i+2;

voidShowPage(unsignedcharpagehead[][16])

4;

i++)ShowLine(i,pagehead);

//1行8个汉字,16字节

//读显示数据

unsignedcharReadByte()

rw=1;

return(dat);

unsignedchartab[8];

4(0,1,2,3),则写在第一屏上

elseSelectScreen

(2);

//否则(4,5,6,7),写在第二屏上

//读上部8列

column=column<

3;

//每个方块8*8大小

SetColumn(column);

tab[0]=ReadByte();

//空读!

i++)tab=~ReadByte();

//写回

i++)WriteByte(tab);

/*----------------------------------------------------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2