1、6963c的程序128*64 lcd t6963c的程序(C语言) 版权所有:湛蓝的天我可是倾囊相售了,大家看完帮顶下,可以让更多人看到是我花不少时间编写调试成功的,希望对大家有用。#include #include #include #include /以8*8字符计算,显示屏横向、纵向可以显示的字符个数#define LineChar 8 /共8行#define ColumnChar 16 /总共16列/信号管脚定义(全局变量)(注意:因为液晶数据口接P1,故为间接控制方式)sbit cd=P20;sbit reset=P21;sbit wr=P36;sbit rd=P37;unsigne
2、d char code ASCII816 16;unsigned char code HZTable 32;/数据线定义#define dataport P1 /P1为数据口#define unchar unsigned char#define unint unsigned int/*-*/延时函数void Lcddelay(unsigned char MS) unsigned char us, usn; while(MS!=0) usn = 4; while(usn!=0) us=0xf0; while(us!=0)us-; usn-; MS-; /*-*/状态检查函数/指令,数据读写状态检
3、查void RWCheck() unchar dat; do dataport=0xff; cd=1; rd=0; dat=dataport; rd=1; dat=0x03&dat;/STA0,STA1是否准备好 while(dat!=0x03); /数据自动读状态检查void AutoRCheck() unchar dat; do dataport=0xff; cd=1; rd=0; dat=dataport; rd=1; dat=0x04&dat;/STA2是否准备好 while(dat=0x00); /数据自动写状态检查void AutoWCheck() unchar dat; do d
4、ataport=0xff; cd=1; rd=0; dat=dataport; rd=1; dat=0x08&dat;/STA3是否准备好 while(dat=0x00); /读数据unchar InPortData() unchar dat; RWCheck(); cd=0; dataport=0xff; rd=0; dat=dataport; rd=1; return(dat); /*-*/*-输入/出函数,与T6963通讯-*/*-*/ 向数据口发Datavoid OutPortData(dat) RWCheck(); cd=0; dataport=dat; wr=0; wr=1;/写有
5、 1 个参数命令void OutPortCom1(command) RWCheck(); cd=1; dataport=command; wr=0; wr=1;/写有 2 个参数命令void OutPortCom2(dat, command) OutPortData(dat); OutPortCom1(command); /写有 3 个参数命令void OutPortCom3(data1, data2, command) OutPortData(data1); OutPortData(data2); OutPortCom1(command);/*-*/显示8*16字符(8列16行)(图形显示方
6、式)/lin:行(0-3), column: 列(0-15)/ch:字符代码(标准ASCII码)void ShowChar(unchar lin,unchar column,unchar ch)unchar i;unchar dat;unint StartAddr;while(column15) column=column-16; lin=lin+1; if (lin3) return;StartAddr=(lin8)+column; /定位起始行(要求文本区从0x0000开始)for(i=0;i8), 0x24); /set address(可行吗?)OutPortCom2(dat, 0xc
7、4);StartAddr=StartAddr + ColumnChar;/*-*/显示一个汉字(16*16点阵) (图形方式显示)/lin:行(0-3), column: 列(0-15)/hzcode: 汉字代码(自定义的)void ShowHZ(unchar lin,unchar column,unint hzcode)unsigned char i;unsigned int StartAddr;while(column14) column=column-16; lin=lin+1; if (column3) return;StartAddr=(lin8)+column; /定位起始行(括号
8、中相当于lin*ColumnChar*16)for(i=0;i8), 0x24);OutPortCom2( HZTablehzcodei*2, 0xc0); /左半部 地址加一OutPortCom2( HZTablehzcodei*2+1, 0xc4); /右半部 字模地址加一StartAddr=StartAddr + ColumnChar;/*-*/显示一行字符串(汉字,字母混排)/lin:行void ShowLine(unchar lin,unchar column,unchar *puts,unchar i) unchar j,byte,k; while(column15) column
9、=column-16; lin=lin+1; if (lin3) return;/看首行是否超出屏幕 for (k=column,j=0;ji;j+) byte = putsj; 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)void ReverseShowChar(unchar lin,unchar
10、column)unsigned char i;unsigned char dat;unsigned int StartAddr;StartAddr=(lin8) +column; /定位起始行for(i=0;i8), 0x24); /set addressOutPortCom1( 0xc5 ); /数据一次读,地址不变dat=InPortData(); /读入数据dat=dat; /取反OutPortCom2( dat, 0xc4); /送回StartAddr=StartAddr+ ColumnChar;/*-*/反显一个汉字/lin:行(0-3), column: 列(0-15)void R
11、everseShowHZ(unchar lin,unchar column)ReverseShowChar(lin,column);ReverseShowChar(lin,column+1);/*-*/反显一行汉字/lin:行(0-3)void ReverseShowLine(unchar lin)unchar column;if (lin3) return;for(column=0; column ColumnChar; column+) ReverseShowChar(lin,column);/*-*/清屏void ClearScreen()unsigned int i;/ 清显示 RAM
12、 区 0000h-2000h (8k)OutPortCom3(0x00,0x00,0x24); /设置指针地址0000HOutPortCom1(0xb0); /设置自动写状态for(i=0;i8200;i+) AutoWCheck();OutPortData(0x00); / data=0;AutoWCheck();/是否需要?OutPortCom1(0xb2); / 自动写结束/初始化LCD/需要手动设置void InitLCD()cd=1;wr=1;rd=1;OutPortCom3( 0x00,0x00,0x42 ); /设置图形显示区域首地址GraphAddrOutPortCom3( 0
13、x10,0x00,0x43); /设置图形显示区域宽度:10HOutPortCom1(0xa7); /设置光标形状 cursor size 8x8(好像无用)OutPortCom1(0x80); /设置显示方式: CGROM方式 文本图形 或OutPortCom1(0x98); /设置显示开关: 1001 1000 只开图形显示ClearScreen();/*/* 定义中文字库 */*/unchar code HZTable 32=/* 电 0x00 -*/ 0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8, 0x21,0x08,0x21,0x08,0x3F,0x
14、F8,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
15、,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
16、,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, 0
17、x62,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
18、,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
19、,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,0
20、x10,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, 0xF
21、F,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行 */*/unchar code ASCII816 16=/*-文字: -0x20 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-文字:(-0x21 */ 0x00,0x02,0x04,0x08,
22、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,0x
23、42,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
24、,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,0
25、x42,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