6963c的程序.docx

上传人:b****8 文档编号:9301092 上传时间:2023-02-04 格式:DOCX 页数:17 大小:17.84KB
下载 相关 举报
6963c的程序.docx_第1页
第1页 / 共17页
6963c的程序.docx_第2页
第2页 / 共17页
6963c的程序.docx_第3页
第3页 / 共17页
6963c的程序.docx_第4页
第4页 / 共17页
6963c的程序.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

6963c的程序.docx

《6963c的程序.docx》由会员分享,可在线阅读,更多相关《6963c的程序.docx(17页珍藏版)》请在冰豆网上搜索。

6963c的程序.docx

6963c的程序

128*64lcdt6963c的程序(C语言)

版权所有:

湛蓝的天

我可是倾囊相售了,大家看完帮顶下,可以让更多人看到

是我花不少时间编写调试成功的,希望对大家有用。

#include

#include

#include

#include

//以8*8字符计算,显示屏横向、纵向可以显示的字符个数

#defineLineChar8//共8行

#defineColumnChar16//总共16列

//信号管脚定义(全局变量)(注意:

因为液晶数据口接P1,故为间接控制方式)

sbitcd=P2^0;

sbitreset=P2^1;

sbitwr=P3^6;

sbitrd=P3^7;

unsignedcharcodeASCII816[][16];

unsignedcharcodeHZTable[][32];

//数据线定义

#definedataportP1//P1为数据口

#defineuncharunsignedchar

#defineunintunsignedint

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

//延时函数

voidLcddelay(unsignedcharMS)

{

unsignedcharus,usn;

while(MS!

=0)

{usn=4;

while(usn!

=0)

{

us=0xf0;

while(us!

=0){us--;}

usn--;

}

MS--;

}

}

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

//状态检查函数

//指令,数据读写状态检查

voidRWCheck()

{

unchardat;

do{

dataport=0xff;

cd=1;

rd=0;

dat=dataport;

rd=1;

dat=0x03&dat;//STA0,STA1是否准备好

}while(dat!

=0x03);

}

//数据自动读状态检查

voidAutoRCheck()

{

unchardat;

do{

dataport=0xff;

cd=1;

rd=0;

dat=dataport;

rd=1;

dat=0x04&dat;//STA2是否准备好

}while(dat==0x00);

}

//数据自动写状态检查

voidAutoWCheck()

{

unchardat;

do{

dataport=0xff;

cd=1;

rd=0;

dat=dataport;

rd=1;

dat=0x08&dat;//STA3是否准备好

}while(dat==0x00);

}

//读数据

uncharInPortData()

{

unchardat;

RWCheck();

cd=0;

dataport=0xff;

rd=0;

dat=dataport;

rd=1;

return(dat);

}

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

/*------输入/出函数,与T6963通讯------------------------------------------------*/

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

//向数据口发Data

voidOutPortData(dat){RWCheck();cd=0;dataport=dat;wr=0;wr=1;}

//写有1个参数命令

voidOutPortCom1(command){RWCheck();cd=1;dataport=command;wr=0;wr=1;}

//写有2个参数命令

voidOutPortCom2(dat,command){OutPortData(dat);OutPortCom1(command);}

//写有3个参数命令

voidOutPortCom3(data1,data2,command){OutPortData(data1);OutPortData(data2);OutPortCom1(command);}

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

//显示8*16字符(8列16行)(图形显示方式)

//lin:

行(0-3),column:

列(0-15)

//ch:

字符代码(标准ASCII码)

voidShowChar(uncharlin,uncharcolumn,uncharch)

{

unchari;

unchardat;

unintStartAddr;

while(column>15)

{

column=column-16;

lin=lin+1;

}

if(lin>3)return;

StartAddr=(lin<<8)+column;//定位起始行(要求文本区从0x0000开始)

for(i=0;i<16;i++)

{

dat=ASCII816[ch][i];//后面定义

OutPortCom3((unsignedchar)(StartAddr),(unsignedchar)(StartAddr>>8),0x24);//setaddress(可行吗?

OutPortCom2(dat,0xc4);

StartAddr=StartAddr+ColumnChar;

}

}

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

//显示一个汉字(16*16点阵)(图形方式显示)

//lin:

行(0-3),column:

列(0-15)

//hzcode:

汉字代码(自定义的)

voidShowHZ(uncharlin,uncharcolumn,uninthzcode)

{

unsignedchari;

unsignedintStartAddr;

while(column>14)

{

column=column-16;

lin=lin+1;

}

if(column<0)column=0;

if(lin>3)return;

StartAddr=(lin<<8)+column;//定位起始行(括号中相当于lin*ColumnChar*16)

for(i=0;i<16;i++)

{

OutPortCom3((unsignedchar)(StartAddr),(unsignedchar)(StartAddr>>8),0x24);

OutPortCom2(HZTable[hzcode][i*2],0xc0);//左半部地址加一

OutPortCom2(HZTable[hzcode][i*2+1],0xc4);//右半部字模地址加一

StartAddr=StartAddr+ColumnChar;

}

}

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

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

//lin:

voidShowLine(uncharlin,uncharcolumn,unchar*puts,unchari)

{

uncharj,byte,k;

while(column>15)

{

column=column-16;

lin=lin+1;

}

if(lin>3)return;//看首行是否超出屏幕

for(k=column,j=0;j

{

byte=puts[j];

if(byte&0x80)//汉字/*汉字从0x80开始,包括0x80*/

{

ShowHZ(lin,k,byte&0x7f);

k=k+2;

}

else{ShowChar(lin,k,byte-0x20);k=k+1;}//字母/*ascii码表从0x20开始*/

}

}

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

//反显一个字符

//lin:

行(0-3),column:

列(0-15)

voidReverseShowChar(uncharlin,uncharcolumn)

{

unsignedchari;

unsignedchardat;

unsignedintStartAddr;

StartAddr=(lin<<8)+column;//定位起始行

for(i=0;i<16;i++)

{

OutPortCom3((unsignedchar)(StartAddr),(unsignedchar)(StartAddr>>8),0x24);//setaddress

OutPortCom1(0xc5);//数据一次读,地址不变

dat=InPortData();//读入数据

dat=~dat;//取反

OutPortCom2(dat,0xc4);//送回

StartAddr=StartAddr+ColumnChar;

}

}

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

//反显一个汉字

//lin:

行(0-3),column:

列(0-15)

voidReverseShowHZ(uncharlin,uncharcolumn)

{

ReverseShowChar(lin,column);

ReverseShowChar(lin,column+1);

}

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

//反显一行汉字

//lin:

行(0-3)

voidReverseShowLine(uncharlin)

{

uncharcolumn;

if(lin>3)return;

for(column=0;column

}

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

//清屏

voidClearScreen()

{

unsignedinti;

/////////清显示RAM区0000h--2000h(8k)

OutPortCom3(0x00,0x00,0x24);//设置指针地址0000H

OutPortCom1(0xb0);//设置自动写状态

for(i=0;i<8200;i++){AutoWCheck();OutPortData(0x00);}//data=0;

AutoWCheck();//是否需要?

OutPortCom1(0xb2);//自动写结束

}

//初始化LCD

//需要手动设置

voidInitLCD()

{

cd=1;

wr=1;

rd=1;

OutPortCom3(0x00,0x00,0x42);//设置图形显示区域首地址GraphAddr

OutPortCom3(0x10,0x00,0x43);//设置图形显示区域宽度:

10H

OutPortCom1(0xa7);//设置光标形状cursorsize8x8(好像无用)

OutPortCom1(0x80);//设置显示方式:

CGROM方式文本\图形"或"

OutPortCom1(0x98);//设置显示开关:

10011000只开图形显示

ClearScreen();

}

/********************************/

/*定义中文字库*/

/********************************/

uncharcodeHZTable[][32]={

/*电0x00--*/

{0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,

0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,

0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,

0x01,0x02,0x01,0x02,0x00,0xFE,0x00,0x00},

/*压0x01--*/

{0x00,0x00,0x3F,0xFE,0x20,0x00,0x20,0x80,

0x20,0x80,0x20,0x88,0x2F,0xFC,0x20,0x80,

0x20,0xA0,0x20,0x90,0x20,0x98,0x40,0x90,

0x40,0x80,0xBF,0xFE,0x00,0x00,0x00,0x00},

/*功0x02--*/

{0x00,0x20,0x00,0x20,0x7F,0x20,0x08,0x20,

0x0B,0xFC,0x08,0x24,0x08,0x24,0x08,0x44,

0x09,0x44,0x0E,0x44,0xF0,0x84,0x40,0x84,

0x01,0x04,0x02,0x78,0x04,0x10,0x00,0x00},

/*率0x03--*/

{0x02,0x00,0x01,0x00,0x7F,0xFE,0x41,0x00,

0x22,0x28,0x17,0xD0,0x04,0x80,0x11,0x10,

0x22,0x48,0x47,0xC4,0x01,0x20,0xFF,0xFE,

0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00},

/*有0x04--*/

{0x01,0x00,0x01,0x00,0x7F,0xFE,0x02,0x00,

0x04,0x00,0x0F,0xF0,0x18,0x10,0x28,0x10,

0x4F,0xF0,0x88,0x10,0x08,0x10,0x0F,0xF0,

0x08,0x10,0x08,0x90,0x08,0x70,0x08,0x20},

/*效0x05--*/

{0x10,0x20,0x08,0x30,0x08,0x20,0x7F,0x20,

0x14,0x7E,0x12,0x44,0x21,0xC4,0x22,0x44,

0x62,0x28,0x14,0x28,0x08,0x10,0x0C,0x10,

0x12,0x28,0x20,0xCE,0xC3,0x04,0x00,0x00},

/*值0x06--*/

{0x10,0x40,0x18,0x60,0x17,0xFC,0x10,0x40,

0x20,0x80,0x33,0xF8,0x62,0x08,0xA3,0xF8,

0x22,0x08,0x23,0xF8,0x22,0x08,0x23,0xF8,

0x22,0x08,0x22,0x08,0x2F,0xFE,0x20,0x00},

/*三0x07--*/

{0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x7F,0xFE,0x00,0x00,0x00,0x00},

/*相0x08--*/

{0x10,0x00,0x10,0xFC,0x10,0x84,0x10,0x84,

0xFE,0x84,0x18,0xFC,0x34,0x84,0x32,0x84,

0x52,0x84,0x50,0xFC,0x90,0x84,0x10,0x84,

0x10,0x84,0x10,0x84,0x10,0xFC,0x10,0x84},

/*流0x09--*/

{0x20,0x80,0x10,0x40,0x17,0xFE,0x00,0x40,

0x80,0x80,0x49,0x10,0x4B,0xF8,0x10,0x08,

0x12,0x50,0x12,0x50,0xE2,0x50,0x22,0x50,

0x24,0x52,0x24,0x52,0x28,0x4E,0x20,0x00},

/*量0x0a--*/

{0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,

0x1F,0xF0,0x00,0x00,0xFF,0xFE,0x11,0x10,

0x1F,0xF0,0x11,0x10,0x1F,0xF0,0x01,0x00,

0x1F,0xF8,0x01,0x00,0xFF,0xFE,0x00,0x00},

/*因0x0b--*/

{0x00,0x00,0x7F,0xFC,0x41,0x04,0x41,0x04,

0x41,0x04,0x5F,0xF4,0x41,0x04,0x43,0x04,

0x42,0x84,0x46,0x44,0x44,0x24,0x48,0x34,

0x50,0x24,0x40,0x04,0x7F,0xFC,0x40,0x04},

/*数0x0c--*/

{0x08,0x20,0x49,0x30,0x2A,0x20,0x1C,0x20,

0xFF,0x7E,0x1C,0x44,0x2B,0x44,0x48,0xC4,

0x08,0x28,0xFF,0x28,0x12,0x10,0x34,0x10,

0x0C,0x28,0x32,0x4E,0xC0,0x84,0x00,0x00}

};

/****************************************/

/*定义ASCII字库8列*16行*/

/****************************************/

uncharcodeASCII816[][16]={

/*-文字:

--0x20*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

/*-文字:

(--0x21*/

{0x00,0x02,0x04,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x08,0x04,0x02,0x00},

/*-文字:

)--0x22*/

{0x00,0x40,0x20,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x10,0x20,0x40,0x00},

/*-文字:

.--0x23*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00},

/*-文字:

0--0x24*/

{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},

/*-文字:

1--0x25*/

{0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},

/*-文字:

2--0x26*/

{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00},

/*-文字:

3--0x27*/

{0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00},

/*-文字:

4--0x28*/

{0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00},

/*-文字:

5--0x29*/

{0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00},

/*-文字:

6--0x2a*/

{0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00},

/*-文字:

7--0x2b*/

{0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00},

/*-文字:

8--0x2c*/

{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00},

/*-文字:

9--0x2d*/

{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00},

/*-文字:

A--0x2e*/

{0x

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

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1