历史上的今天
返回首页

历史上的今天

今天是:2025年12月27日(星期六)

2022年12月27日 | T6963C控制器的液晶显示模块程序

2022-12-27 来源:zhihu

/*

线路图

89C51 T6963C

--------

| 8

P1.0-1.7|=========== D0-7

|

P3.0|----------- /RD

P3.1|----------- /WR

P3.2|----------- C/D

| -- /CE

| |

| ---

P3.3|----------- /RESET

| VCC--- /HALT

--------

*/

#include

#include

#include


sbit cd=P3^2;

sbit wr=P3^1;

sbit rd=P3^0;

sbit reset=P3^3;

sbit vee=P3^7;


sbit scl=P3^2;

sbit sda=P3^3;


unsigned int time;

unsigned char x,y;


/* 忙标志 */

#pragma disable

unsigned char busy(void) {

unsigned char dat;

cd=1;rd=1;wr=1;

P0=0xff;

rd=0;

dat=P0;

rd=1;

return(dat);

}

/* 数据,指令读写判别 */

#pragma disable

void p1(void) {

while ((busy()&3)!=3) {}

}

/* 数据自动读判别 */

#pragma disable

void p2(void) {

while ((busy()&4)!=4) {}

}

/* 数据自动写判别 */

#pragma disable

void p3(void) {

while ((busy()&8)!=8) {}

}

/* 控制指令 */

#pragma disable

void ctrl(unsigned char dat) {

p1();

cd=1;

wr=0;

P0=dat;

wr=1;

}

/* 写数据 */

#pragma disable

void write(unsigned char dat) {

p1();

cd=0;

wr=0;

P0=dat;

wr=1;

cd=1;

}

/* 自动写 */

#pragma disable

void autowrite(unsigned char dat) {

p3();

cd=0;

wr=0;

P0=dat;

wr=1;

cd=1;

}

/* 读数据 */

#pragma disable

unsigned char read(void) {

unsigned char dat;

p1();

cd=0;

P0=0xff;

rd=0;

dat=P0;

rd=1;

cd=1;

return(dat);

}

/* 自动读数据 */

#pragma disable

unsigned char autoread(void) {

unsigned char dat;

p2();

cd=0;

P0=0xff;

rd=0;

dat=P0;

rd=1;

cd=1;

return(dat);

}

/* 显示图形和文本 */

#pragma disable

void disp(unsigned char d) { /*显示*/

write(d);ctrl(0xc0);

}

/* 设定图形x,y值*/

#pragma disable

void ag(unsigned char x,unsigned char y) { /*地址*/

unsigned int xy;

xy=y;

xy=xy*16+x+256;

write(xy&0xff);write(xy/256);ctrl(0x24);

}

/* 设定文本x,y值 */

#pragma disable

void at(unsigned char x,unsigned char y) { /*地址*/

write(y*16+x);write(0);ctrl(0x24);

}

/* 点亮一点 */

#pragma disable

void setb(unsigned char d) {

ctrl(0xf8|d);

}

/* 清除一点*/

#pragma disable

void clrb(unsigned char d) {

ctrl(0xf0|d);

}

/* x,y处显示光标 */

#pragma disable

void ab(unsigned char x,unsigned char y) { /*光标*/

ctrl(0x97); /*光标开*/

write(x);write(y);ctrl(0x21);

}

/* 取消光标 */

#pragma disable

void noab(void) {

ctrl(0x9c);

}


/* lcd初始化 */

void init(void) {

unsigned int i;

reset=0;

reset=1;

write(0x0);write(0);ctrl(0x40); /*文本首址*/

write(0x10);write(0x0);ctrl(0x41); /*文本区域*/

write(0x0);write(0x1);ctrl(0x42); /*图形首址*/

write(0x10);write(0x0);ctrl(0x43); /*图形区域*/

ctrl(0x81); /*显示方式*/

ctrl(0x90); /*显示开关*/

ctrl(0xa0); /*光标形状*/

at(0,0);

ctrl(0xb0); /*自动写方式*/

for (i=0;i<1280;i++) {

autowrite(0x0);

}

ctrl(0xb2);/*结束自动写方式 */

ctrl(0x9c);

}


void wait10(void) {

time=0;

while (time<10) {}

}


unsigned char temp;

unsigned char code asc16[]={

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

0,0,126,129,165,129,129,189,153,129,129,126,0,0,0,0,

0,0,126,255,219,255,255,195,231,255,255,126,0,0,0,0,

0,0,0,0,108,254,254,254,254,124,56,16,0,0,0,0,

0,0,0,0,16,56,124,254,124,56,16,0,0,0,0,0,

0,0,0,24,60,60,231,231,231,24,24,60,0,0,0,0,

0,0,0,24,60,126,255,255,126,24,24,60,0,0,0,0,

0,0,0,0,0,0,24,60,60,24,0,0,0,0,0,0,

255,255,255,255,255,255,231,195,195,231,255,255,255,255,255,255,

0,0,0,0,0,60,102,66,66,102,60,0,0,0,0,0,

255,255,255,255,255,195,153,189,189,153,195,255,255,255,255,255,

0,0,30,14,26,50,120,204,204,204,204,120,0,0,0,0,

0,0,60,102,102,102,102,60,24,126,24,24,0,0,0,0,

0,0,63,51,63,48,48,48,48,112,240,224,0,0,0,0,

0,0,127,99,127,99,99,99,99,103,231,230,192,0,0,0,

0,0,0,24,24,219,60,231,60,219,24,24,0,0,0,0,

0,128,192,224,240,248,254,248,240,224,192,128,0,0,0,0,

0,2,6,14,30,62,254,62,30,14,6,2,0,0,0,0,

0,0,24,60,126,24,24,24,126,60,24,0,0,0,0,0,

0,0,102,102,102,102,102,102,102,0,102,102,0,0,0,0,

0,0,127,219,219,219,123,27,27,27,27,27,0,0,0,0,

0,124,198,96,56,108,198,198,108,56,12,198,124,0,0,0,

0,0,0,0,0,0,0,0,254,254,254,254,0,0,0,0,

0,0,24,60,126,24,24,24,126,60,24,126,0,0,0,0,

0,0,24,60,126,24,24,24,24,24,24,24,0,0,0,0,

0,0,24,24,24,24,24,24,24,126,60,24,0,0,0,0,

0,0,0,0,0,24,12,254,12,24,0,0,0,0,0,0,

0,0,0,0,0,48,96,254,96,48,0,0,0,0,0,0,

0,0,0,0,0,0,192,192,192,254,0,0,0,0,0,0,

0,0,0,0,0,40,108,254,108,40,0,0,0,0,0,0,

0,0,0,0,16,56,56,124,124,254,254,0,0,0,0,0,

0,0,0,0,254,254,124,124,56,56,16,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

0,0,24,60,60,60,24,24,24,0,24,24,0,0,0,0,

0,102,102,102,36,0,0,0,0,0,0,0,0,0,0,0,

0,0,0,108,108,254,108,108,108,254,108,108,0,0,0,0,

24,24,124,198,194,192,124,6,6,134,198,124,24,24,0,0,

0,0,0,0,194,198,12,24,48,96,198,134,0,0,0,0,

0,0,56,108,108,56,118,220,204,204,204,118,0,0,0,0,

0,48,48,48,96,0,0,0,0,0,0,0,0,0,0,0,

0,0,12,24,48,48,48,48,48,48,24,12,0,0,0,0,

0,0,48,24,12,12,12,12,12,12,24,48,0,0,0,0,

0,0,0,0,0,102,60,255,60,102,0,0,0,0,0,0,

0,0,0,0,0,24,24,126,24,24,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,24,24,24,48,0,0,0,

0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,24,24,0,0,0,0,

0,0,0,0,2,6,12,24,48,96,192,128,0,0,0,0,

0,0,56,108,198,198,214,214,198,198,108,56,0,0,0,0,

0,0,24,56,120,24,24,24,24,24,24,126,0,0,0,0,

0,0,124,198,6,12,24,48,96,192,198,254,0,0,0,0,

0,0,124,198,6,6,60,6,6,6,198,124,0,0,0,0,

0,0,12,28,60,108,204,254,12,12,12,30,0,0,0,0,

0,0,254,192,192,192,252,6,6,6,198,124,0,0,0,0,

0,0,56,96,192,192,252,198,198,198,198,124,0,0,0,0,

0,0,254,198,6,6,12,24,48,48,48,48,0,0,0,0,

0,0,124,198,198,198,124,198,198,198,198,124,0,0,0,0,

0,0,124,198,198,198,126,6,6,6,12,120,0,0,0,0,

0,0,0,0,24,24,0,0,0,24,24,0,0,0,0,0,

0,0,0,0,24,24,0,0,0,24,24,48,0,0,0,0,

0,0,0,6,12,24,48,96,48,24,12,6,0,0,0,0,

0,0,0,0,0,126,0,0,126,0,0,0,0,0,0,0,

0,0,0,96,48,24,12,6,12,24,48,96,0,0,0,0,

0,0,124,198,198,12,24,24,24,0,24,24,0,0,0,0,

0,0,0,124,198,198,222,222,222,220,192,124,0,0,0,0,

0,0,16,56,108,198,198,254,198,198,198,198,0,0,0,0,

0,0,252,102,102,102,124,102,102,102,102,252,0,0,0,0,

0,0,60,102,194,192,192,192,192,194,102,60,0,0,0,0,

0,0,248,108,102,102,102,102,102,102,108,248,0,0,0,0,

0,0,254,102,98,104,120,104,96,98,102,254,0,0,0,0,

0,0,254,102,98,104,120,104,96,96,96,240,0,0,0,0,

0,0,60,102,194,192,192,222,198,198,102,58,0,0,0,0,

0,0,198,198,198,198,254,198,198,198,198,198,0,0,0,0,

0,0,60,24,24,24,24,24,24,24,24,60,0,0,0,0,

0,0,30,12,12,12,12,12,204,204,204,120,0,0,0,0,

0,0,230,102,102,108,120,120,108,102,102,230,0,0,0,0,

0,0,240,96,96,96,96,96,96,98,102,254,0,0,0,0,

0,0,198,238,254,254,214,198,198,198,198,198,0,0,0,0,

0,0,198,230,246,254,222,206,198,198,198,198,0,0,0,0,

0,0,124,198,198,198,198,198,198,198,198,124,0,0,0,0,

0,0,252,102,102,102,124,96,96,96,96,240,0,0,0,0,

0,0,124,198,198,198,198,198,198,214,222,124,12,14,0,0,

0,0,252,102,102,102,124,108,102,102,102,230,0,0,0,0,

0,0,124,198,198,96,56,12,6,198,198,124,0,0,0,0,

0,0,126,126,90,24,24,24,24,24,24,60,0,0,0,0,

0,0,198,198,198,198,198,198,198,198,198,124,0,0,0,0,

0,0,198,198,198,198,198,198,198,108,56,16,0,0,0,0,

0,0,198,198,198,198,214,214,214,254,238,108,0,0,0,0,

0,0,198,198,108,124,56,56,124,108,198,198,0,0,0,0,

0,0,102,102,102,102,60,24,24,24,24,60,0,0,0,0,

0,0,254,198,134,12,24,48,96,194,198,254,0,0,0,0,

0,0,60,48,48,48,48,48,48,48,48,60,0,0,0,0,

0,0,0,128,192,224,112,56,28,14,6,2,0,0,0,0,

0,0,60,12,12,12,12,12,12,12,12,60,0,0,0,0,

16,56,108,198,0,0,0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,

48,48,24,0,0,0,0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,120,12,124,204,204,204,118,0,0,0,0,

0,0,224,96,96,120,108,102,102,102,102,124,0,0,0,0,

0,0,0,0,0,124,198,192,192,192,198,124,0,0,0,0,

0,0,28,12,12,60,108,204,204,204,204,118,0,0,0,0,

0,0,0,0,0,124,198,254,192,192,198,124,0,0,0,0,

0,0,56,108,100,96,240,96,96,96,96,240,0,0,0,0,

0,0,0,0,0,118,204,204,204,204,204,124,12,204,120,0,

0,0,224,96,96,108,118,102,102,102,102,230,0,0,0,0,

0,0,24,24,0,56,24,24,24,24,24,60,0,0,0,0,

0,0,6,6,0,14,6,6,6,6,6,6,102,102,60,0,

0,0,224,96,96,102,108,120,120,108,102,230,0,0,0,0,

0,0,56,24,24,24,24,24,24,24,24,60,0,0,0,0,

0,0,0,0,0,236,254,214,214,214,214,198,0,0,0,0,

0,0,0,0,0,220,102,102,102,102,102,102,0,0,0,0,

0,0,0,0,0,124,198,198,198,198,198,124,0,0,0,0,

0,0,0,0,0,220,102,102,102,102,102,124,96,96,240,0,

0,0,0,0,0,118,204,204,204,204,204,124,12,12,30,0,

0,0,0,0,0,220,118,102,96,96,96,240,0,0,0,0,

0,0,0,0,0,124,198,96,56,12,198,124,0,0,0,0,

0,0,16,48,48,252,48,48,48,48,54,28,0,0,0,0,

0,0,0,0,0,204,204,204,204,204,204,118,0,0,0,0,

0,0,0,0,0,102,102,102,102,102,60,24,0,0,0,0,

0,0,0,0,0,198,198,214,214,214,254,108,0,0,0,0,

0,0,0,0,0,198,108,56,56,56,108,198,0,0,0,0,

0,0,0,0,0,198,198,198,198,198,198,126,6,12,248,0,

0,0,0,0,0,254,204,24,48,96,198,254,0,0,0,0,

0,0,14,24,24,24,112,24,24,24,24,14,0,0,0,0,

0,0,24,24,24,24,0,24,24,24,24,24,0,0,0,0,

0,0,112,24,24,24,14,24,24,24,24,112,0,0,0,0,

0,0,118,220,0,0,0,0,0,0,0,0,0,0,0,0,

0,0,0,0,16,56,108,198,198,198,254,0,0,0,0,0

};


/* 显示8*16点阵英文字母,反白 */

void da(unsigned char n,bit un) {

unsigned char i;

unsigned int k=n;

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

ag(x,y*8+i);

if (un==0) disp(asc16[k*16+i]); else disp(255-asc16[k*16+i]);

}

if ((++x)>=16) {

x=0;

y+=2;

if (y>=8) y=0;

}

}

/* 反白文本/取消 */

void da8(unsigned char n,bit un) {

unsigned char i,j;

for (j=0;jfor (i=0;i<8;i++) {

ag(x,y*8+i);

if (un==0) disp(0xff); else disp(0x0);

}

if ((++x)>=16) {

x=0;

y+=1;

if (y>=8) y=0;

}

}

}


unsigned char code fot[]={

/*0时*/0x0,0x8,0x4,0x8,0x7e,0x8,0x44,0x8,0x47,0xfe,0x44,0x8,0x44,0x8,0x7c,0x88,0x44,0x48,

0x44,0x48,0x44,0x8,0x44,0x8,0x7c,0x8,0x44,0x48,0x0,0x28,0x0,0x10,

/*1间*/0x20,0x4,0x1b,0xfe,0x8,0x4,0x40,0x24,0x4f,0xf4,0x48,0x24,0x48,0x24,0x48,0x24,

0x4f,0xe4,0x48,0x24,0x48,0x24,0x48,0x24,0x4f,0xe4,0x48,0x24,0x40,0x14,0x40,0x8,

/*2日*/0x0,0x10,0x1f,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,

0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,0x10,0x10,0x0,0x0,

/*3期*/0x22,0x4,0x22,0x7e,0x22,0x44,0x7f,0x44,0x22,0x44,0x3e,0x7c,0x22,0x44,0x3e,0x44,

0x22,0x44,0x22,0x7c,0xff,0xc4,0x0,0x44,0x24,0x44,0x22,0x84,0x41,0x14,0x82,0x8,

/*4闹*/0x40,0x4,0x37,0xfe,0x10,0x4,0x42,0x4,0x41,0x24,0x5f,0xf4,0x41,0x4,0x41,0x24,

0x4f,0xf4,0x49,0x24,0x49,0x24,0x49,0x24,0x49,0x64,0x41,0x4,0x41,0x14,0x40,0x8,

/*5钟*/0x10,0x20,0x10,0x20,0x10,0x20,0x1c,0x24,0x21,0xfe,0x21,0x24,0x7d,0x24,0x91,0x24,

0x11,0x24,0xfd,0xfc,0x11,0x24,0x10,0x20,0x14,0x20,0x18,0x20,0x10,0x20,0x0,0x20,

/*6设*/0x1,0xf0,0x21,0x10,0x11,0x10,0x11,0x10,0x1,0x10,0x2,0xe,0xf4,0x0,0x13,0xf8,

0x11,0x8,0x11,0x10,0x10,0x90,0x10,0xa0,0x14,0x40,0x18,0xb0,0x13,0xe,0xc,0x4,

/*7定*/0x2,0x0,0x1,0x0,0x7f,0xfe,0x40,0x2,0x80,0x24,0x1f,0xf0,0x1,0x0,0x1,0x0,

0x11,0x20,0x11,0xf0,0x11,0x0,0x11,0x0,0x11,0x0,0x29,0x6,0x47,0xfc,0x80,0x0,

/*8开*/0x0,0x8,0x7f,0xfc,0x8,0x20,0x8,0x20,0x8,0x20,0x8,0x20,0x8,0x24,0xff,0xfe,

0x8,0x20,0x8,0x20,0x8,0x20,0x8,0x20,0x10,0x20,0x10,0x20,0x20,0x20,0x40,0x20,

推荐阅读

史海拾趣

DURAKOOL公司的发展小趣事

随着技术的不断进步,DURAKOOL公司不断投入研发,推出了一系列创新产品,如Durakool接触器和电流互感器。这些产品凭借其高可靠性和稳定性,在电力监控和智能计量等领域得到了广泛应用。公司也逐渐扩大了市场覆盖范围,不仅在美国本土取得了成功,还逐步进入国际市场。

EXCELTA公司的发展小趣事

Excelta公司创立于20世纪90年代初,当时电子元器件市场正处于快速发展阶段。创始人李明看到连接器市场的巨大潜力,决定投身其中。然而,初创时期资金紧张,技术储备薄弱,公司面临巨大挑战。李明带领团队日夜兼程,通过技术创新和成本控制,成功开发出第一款具有竞争力的连接器产品,并迅速获得了市场的认可。此后,Excelta逐渐在连接器领域崭露头角。

CIPS公司的发展小趣事

在2015年,跨境银行间支付清算有限责任公司(CIPS Co., Ltd.)正式成立,并随之推出了人民币跨境支付系统(CIPS)。这一系统的诞生,标志着中国电子支付行业在跨境支付领域迈出了坚实的一步。CIPS系统的建立,不仅满足了国内外金融机构对高效、安全、便捷的跨境支付服务的需求,更为人民币国际化进程提供了有力支持。

Danube Enterprise Co Ltd公司的发展小趣事

随着数字技术的快速发展,Danube也紧跟时代步伐,积极推进数字化转型。他们引入了先进的生产管理系统和供应链管理系统,实现了生产流程的自动化和智能化。同时,Danube还加强了与互联网企业的合作,利用大数据、云计算等技术手段提升产品的智能化水平。这些努力让Danube在电子行业中保持了领先地位,并引领了行业变革的方向。随着数字化转型的深入推进,Danube的未来发展将更加值得期待。

CHINFA公司的发展小趣事

CHINFA公司的创立并非一帆风顺。在创业初期,公司面临着资金短缺、技术落后和市场竞争激烈等多重困难。然而,公司的创始人凭借对电子行业的深厚热爱和坚定信念,带领团队克服了一个又一个难关。他们通过自主研发、技术创新和市场拓展,逐渐在行业中崭露头角。

Dynachip Corp公司的发展小趣事

Dynachip Corp深知品质对于电子产品的重要性,因此他们建立了严格的质量管理体系,从原材料采购到生产过程再到成品检测,每一个环节都严格把控。他们还引进了先进的生产设备和技术,确保产品的稳定性和可靠性。这种对品质的坚持使Dynachip Corp的产品在市场上获得了广泛认可,客户群逐渐扩大。

问答坊 | AI 解惑

直接读取移动存储卡的LCD电子相册

本帖最后由 jameswangsynnex 于 2015-3-3 20:02 编辑 我替同事问的,想了解一下直接读取移动存储卡的LCD电子相册内部电路。 有否热心人士提供相关资料或是悉心讲解,在下感激不尽!!! …

查看全部问答>

c语言编程常见问题解答

这是一本专门解答C语言编程常见问题的著作。书中覆盖的内容相当广泛,并附有大量鲜明的例子。C语言是一种非常优秀的语言,深受广大程序员的喜爱。然而,一个初学者往往要经过很长时间的编程实践,才能成为一名熟练的C程序员。即使是已有一定编程经 ...…

查看全部问答>

这种情况需要另外开发bootloader吗?

我有一台路由器 ,cpu是pxa255 arm 10的, 路由器嵌入了uc/os-ii系统,我现在想把uclinux烧到flash上,原有的bootloader还能加载启动这个uclinux吗?刚接触嵌入式系统 ,还请高手们指点,感激不尽~…

查看全部问答>

ActiveSync 同步 NandFlash

各位高手:      小弟有个比较初级的问题,恳请各位高手不吝赐教!      PC机安装Microsoft ActiveSync后,通过USB连接PC机和WCE开发板,为什么PC机会将开发板上的Nand Flash识别成移动设备?而不是开发 ...…

查看全部问答>

我的中断怎么进不了啊,请大家帮忙啊

#include \\"LF2047REGS.H\\" void led_test(void); main() {         asm(\\"  setc SXM  \\"         asm(\\"  clrc OVM  \\"     ...…

查看全部问答>

AVR128串口中断问题

AVR128串口中断问题 在两个单片机通信的过程中我不想用查询的办法,想用中断的方法来接收数据,但是,串口中断中只有发送完成后产生中断或者接收完成后产生中断。请教各位,这么处理啊。…

查看全部问答>

易电源学习心得体会之易电源使用总结

从8月份参加坛子里的活动获得易电源模块的机会到现在已经3个月了,在实际项目中也使用了14203和12002两块片子,确实方便了我们使用,目前在成本要求不高的产品中今后将继续使用易电源系列芯片,成本要求高的地方还是准备继续使用TPS54331,希望易电 ...…

查看全部问答>

使用MSP430注意的问题

1.#i nclude指要在编辑器设定目录下,#i nclude\"\"指的是在当前工程目录下。 2.要调用另一个文件中的函数,要把这个函数文件放到当前工程目录下,并且在工程中添加此文件。 3.命名中不能有-,比如:byq-ee会认为是错误的,要用下划线。 4.用IAR ...…

查看全部问答>

求指教,关于.brd格式文件导入Altium designer 13的问题

导入的时候出现了这样的结果,是什么原因?…

查看全部问答>