文档库 最新最全的文档下载
当前位置:文档库 › 12864点阵液晶应用()

12864点阵液晶应用()

12864点阵液晶应用()
12864点阵液晶应用()

******************************************************** **这个程序是时钟程序用LCM12832作为显示.

**P1口作为键盘输入P1.0=增加键;P11为选择键

**时钟显示格式为:“时:分:秒”字体为16*16点阵

**修改方式为两键式选择键合修改键

**还可显示万年历:“年:月:日”

**需要子函数:

** 1、HEX->BCD子函数hex_bcd()

** 2、显示子函数display()

** 3、键盘子函数key()

** 4、时钟子函数time()

** 5、日历子函数day()

** 6、显示控制子函数discommond()

** 7、定时器中断0 time0()

** 8、初始化子函数begin().

** 9、初始屏显display_begin().

** 10、时间屏显display_time().

** 11、润年判断leapf().

**现有问题:键盘修改程序还未完成

** http://www.fast88.co

** 程序不够精简

*********************************************************/ #include

#define time_TH 0x3c; // time0 :50ms 12M

#define time_TL 0xba;

unsigned char data msecond=0;

bit data second_flag=0,day_flag=0,leap=0,display_flag=0,ku_flag; unsigned char day_temp;

struct time_str{

unsigned char hour;

unsigned char minute;

unsigned char second;

}time_now;

struct day_str{

unsigned int year;

unsigned char month;

unsigned char day;

}day_now;

//显示缓冲区

unsigned char data display_bcd[13];

//每月天数表

unsigned char code day_num[]=

{31,28,31,30,31,30,31,31,30,31,30,31};

//时间显示位置表

unsigned char code time_loc[][1]=

{0,2,0,3,0,4,0,5,0,8,0,9,0,12,0,13

,16,4,16,5,16,8,16,9,16,12,16,13};

//汉字显示位置表

//指定位置显示“年,月,日,时,分,秒”

unsigned char code zhi_loc[]=

{0x06,0x01,0x0a,0x01,0x0e,0x01,0x06,0x10,0x0a,0x10,0x0e,0x10};

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

**字库开始

**********************************************************************/ unsigned char code shi[]={

/*-- 文字: 年--*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x08,0x00,0x0F,0xFC,0x10,0x80,0x10,0x80,0x20,0x80,0x4F,0xF8,0x88,0x80,0x08,0x80, 0x08,0x80,0x08,0x80,0xFF,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,

/*-- 文字: 月--*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x07,0xF0,0x04,0x10,0x04,0x10,0x04,0x10,0x07,0xF0,0x04,0x10,0x04,0x10,0x04,0x10, 0x07,0xF0,0x04,0x10,0x08,0x10,0x08,0x10,0x10,0x10,0x20,0x50,0x40,0x20,0x00,0x00,

/*-- 文字: 日--*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10, 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,0x00,0x00,

/*-- 文字: 时--*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x00,0x10,0x00,0x10,0x7C,0x10,0x44,0x10,0x47,0xFE,0x44,0x10,0x7C,0x10,0x45,0x10, 0x44,0x90,0x44,0x90,0x7C,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x50,0x00,0x20,

/*-- 文字: 分--*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x08,0x80,0x0C,0x80,0x08,0x40,0x10,0x20,0x10,0x30,0x20,0x18,0x40,0x0E,0x9F,0xE4, 0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x08,0x20,0x10,0xA0,0x20,0x40,0x40,0x00,

/*-- 文字: 秒--*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x0C,0x20,0xF0,0x20,0x10,0x20,0x11,0x28,0xFD,0xA4,0x11,0x22,0x32,0x22,0x3A,0x20, 0x54,0x22,0x54,0x22,0x90,0x04,0x10,0x08,0x10,0x10,0x10,0x60,0x11,0x80,0x16,0x00}; unsigned char code num[]={

/*-- 文字: 0 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,

/*-- 文字: 1 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,

/*-- 文字: 2 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

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

/*-- 文字: 3 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

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

/*-- 文字: 4 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

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

/*-- 文字: 5 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

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

/*-- 文字: 6 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

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

/*-- 文字: 7 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,

/*-- 文字: 8 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,

/*-- 文字: 9 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

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

/*-- 文字: 0 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xF F,

/*-- 文字: 1 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xFF,0xFF,0xEF,0x8F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF,

/*-- 文字: 2 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xFB,0xFB,0xF7,0xEF,0xDF,0xBD,0x81,0xFF,0xFF,

/*-- 文字: 3 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xFB,0xE7,0xFB,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,

/*-- 文字: 4 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xFF,0xFF,0xFB,0xF3,0xEB,0xDB,0xDB,0xBB,0xBB,0x81,0xFB,0xFB,0xE1,0xFF,0xFF,

/*-- 文字: 5 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xFF,0xFF,0x81,0xBF,0xBF,0xBF,0xA7,0x9B,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,

/*-- 文字: 6 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xFF,0xFF,0xE3,0xDB,0xBF,0xBF,0xA7,0x9B,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,

/*-- 文字: 7 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xFF,0xFF,0x81,0xBB,0xBB,0xF7,0xF7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF,

/*-- 文字: 8 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF ,

/*-- 文字: 9 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xD9,0xE5,0xFD,0xFD,0xDB,0xC7,0xFF,0xFF,

};

unsigned char code ku[]={

/*-- 调入了一幅图像:这是哭的的图像--*/

/*-- 宽度x高度=16x16 --*/

0x03,0xC0,0x0C,0x30,0x10,0x08,0x20,0x04,0x40,0x02,0x52,0x4A,0x8C,0x31,0x80,0x01,

0x80,0x01,0x81,0x81,0x42,0x42,0x44,0x22,0x20,0x04,0x10,0x08,0x0C,0x30,0x03,0xC0,

/*-- 调入了一幅图像:这是笑的的图像--*/

/*-- 宽度x高度=16x16 --*/

0x03,0xC0,0x0C,0x30,0x10,0x08,0x20,0x04,0x40,0x02,0x40,0x02,0x8C,0x31,0x92,0x49,

0x80,0x01,0x80,0x01,0x44,0x22,0x42,0x42,0x21,0x84,0x10,0x08,0x0C,0x30,0x03,0xC0

};

/***************************************************************************** **字库结束

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

void day();

void time();

void begin();

void display(unsigned char *cpoint,unsigned char x_line,unsigned char y_line,unsigned char s_l); unsigned char hex_bcd(unsigned char hex);

void display_begin();

void display_time(struct time_str time,struct day_str day);

bit leapf(unsigned int year);

void main()

{

begin();

display_begin();

while (1)

{

while (1)

{

time();

day();

if (display_flag)

{

display_flag=0;

display_time(time_now,day_now);

}

if (display_flag)

continue;

if((day_now.month==2)&leap)

{

leap=0;

day_temp=29;

}

}

}

}

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

**time()子函数

**参数:second_flay

**

******************************************************/ void time(){

if(second_flag){

display_flag=1;

second_flag=0;

// day_flag=1;

time_now.second++;

if(time_now.second==60){

time_now.second=0;

time_now.minute++;

if(time_now.minute==60){

time_now.minute=0;

time_now.hour++;

if(time_now.hour==24){

time_now.hour=0;

day_flag=1;

}

}

}

}

}

/********************************************************* **day()子函数

**参数:day_flag日标志;leap润年标志

**

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

void day(){

if(day_flag){

day_flag=0;

day_now.day++;

if(day_now.day==day_temp+1){

day_now.month++;

if((day_now.month==2)&leap){

leap=0

;

day_temp=29;

}

else day_temp=day_num[day_now.month-1];

day_now.day=1;

if(day_now.month==13){

day_now.month=1;

day_temp=day_num[day_now.month-1];

day_now.year++;

leap=leapf(day_now.year);

}

}

}

}

/**************************************************************** **begin()子函数系统参数初始化

**

****************************************************************/ void begin(){

//定时器0初始化

TMOD=0x21; //50ms int 12M

TH0=0x3c;

TL0=0xba;

TR0=1;

IE=0x92;

SCON|=0x40;

//状态标志位初始化

//参量初始化

time_now.second=0;

time_now.minute=0;

time_now.hour=0;

day_now.year=1980;

day_now.month=6;

day_now.day=27;

leap=leapf(day_now.year);

day_temp=day_num[day_now.month-1];

}

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

**display()子函数

**参数说明:*cpoint:要显示的字符地址指针

** x_line:横轴坐标(1-16)

** y_line:纵轴坐标(1-16)

** s_l: 1为8*16字体;2为16*16字体

**返回值:无

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

void display(unsigned char *cpoint,unsigned char x_line,unsigned char y_line,unsigned char s_l){ unsigned char xdata *xpoint;

unsigned char i,j;

xpoint=0x8000+x_line+y_line*16;

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

for(j=0;j

*xpoint=*cpoint;

cpoint++;

xpoint++;

}

xpoint=xpoint+16-s_l;

}

}

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

**display_begin()子函数显示屏幕的初始值如:

** —————————

** | 1980年09月05日|

** | 23时03分09秒|

** —————————

**调用函数:display()

** display_time()

**

****************************************************************/ //指定位置显示“年,月,日,时,分,秒”

//unsigned char code zhi_loc[]=

//{0x06,0x01,0x0a,0x01,0x0e,0x01,0x06,0x10,0x0a,0x10,0x0e,0x10};

void display_begin(){

unsigned char x_display,y_display,i,j=0;

unsigned char code *p_display;

p_display=&shi;

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

x_display=zhi_loc[j];

j++;

y_display=zhi_loc[j];

j++;

display(p_display,x_display,y_display,2);

p_display=p_display+32;

}

//指定位置显示时间

display_time(time_now,day_now);

}

/**************************************************************** ** display_time()显示时间子函数

** 参数:struct time_str time

** struct day_str day

** 返回值:无

** 调用函数:display()

** hex_bcd()

****************************************************************/ void display_time(struct time_str time,struct day_str day){

unsigned char temp,temp1,temp_year,temp_x,temp_y;

unsigned char *temp_p;

//显示哭笑符

if (ku_flag)temp_p=(&ku)+32;

else temp_p=&ku;

temp_x=0;

temp_y=16;

ku_flag=!ku_flag;

display(temp_p,temp_x,temp_y,2);

//显示秒

temp=time.second;

temp=hex_bcd(temp);

temp1=temp>>4;

temp=temp&0xf;

temp_p=(&num)+16*temp;

temp_x=13;

temp_y=16;

display(temp_p,temp_x,temp_y,1); temp_x=12;

temp_p=(&num)+16*temp1; display(temp_p,temp_x,temp_y,1);

//显示分

temp=time.minute;

temp=hex_bcd(temp);

temp1=temp>>4;

temp=temp&0xf;

temp_p=(&num)+16*temp;

temp_x=9;

temp_y=16;

display(temp_p,temp_x,temp_y,1); temp_x=8;

temp_p=(&num)+16*temp1; display(temp_p,temp_x,temp_y,1);

//显示时

temp=time.hour;

temp=hex_bcd(temp);

temp1=temp>>4;

temp=temp&0xf;

temp_p=(&num)+16*temp;

temp_x=5;

temp_y=16;

display(temp_p,temp_x,temp_y,1); temp_x=4;

temp_p=(&num)+16*temp1; display(temp_p,temp_x,temp_y,1);

//显示日

temp=day.day;

temp=hex_bcd(temp);

temp1=temp>>4;

temp=temp&0xf;

temp_p=(&num)+16*temp;

temp_x=13;

temp_y=0;

display(temp_p,temp_x,temp_y,1); temp_x=12;

temp_p=(&num)+16*temp1; display(temp_p,temp_x,temp_y,1);

//显示月

temp=day.month;

temp=hex_bcd(temp);

temp1=temp>>4;

temp=temp&0xf;

temp_p=(&num)+16*temp;

temp_x=9;

temp_y=0;

display(temp_p,temp_x,temp_y,1); temp_x=8;

temp_p=(&num)+16*temp1; display(temp_p,temp_x,temp_y,1);

//显示年

temp_year=day.year/100;

temp=day.year%100;

temp=hex_bcd(temp);

temp1=temp>>4;

temp=temp&0xf;

temp_p=(&num)+16*temp;

temp_x=5;

temp_y=0;

display(temp_p,temp_x,temp_y,1); temp_x=4;

temp_p=(&num)+16*temp1; display(temp_p,temp_x,temp_y,1);

//显示年高位

temp=hex_bcd(temp_year);

temp1=temp>>4;

temp=temp&0xf;

temp_p=(&num)+16*temp;

temp_x=3;

temp_y=0;

display(temp_p,temp_x,temp_y,1);

temp_x=2;

temp_p=(&num)+16*temp1;

display(temp_p,temp_x,temp_y,1);

}

/**************************************************************** **润年判断leap()子函数

**参数:unsigned int year

**返回字:润年标志leap0为非润年

**内部变量:bit leap1

****************************************************************/ bit leapf(unsigned int year){

bit bdata leap1;

if(year%4==0){

if(year%100==0){

if(year%400==0){

leap1=1;

}

else leap1=0;

}

else leap1=1;

}

else leap1=0;

return(leap1);

}

/**************************************************************** **hex_bcd()子函数

**参数:hex需要转换的单字节16进制数

**返回字:转换完成的单字节bcd码,高4位为高位低4位为低位

**内部变量:bcd,temp为无符号字符型

****************************************************************/ unsigned char hex_bcd(unsigned char hex){

unsigned char bcd,temp;

bcd=hex%10;

temp=hex/10;

temp=temp<<4;

bcd=bcd|temp;

return (bcd);

}

/**************************************************************** ** key()键盘子函数

** 键盘为两键式一个键

** 参数:

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

/**************************************************************** ** time0()定时器0中断子函数,产生50ms中断

**

****************************************************************/ void time0() interrupt 1 using 1{

TH0=0x3c; //time0 50ms interrupt

TL0=0xba;

TR0=1;

msecond++;

if (msecond==20){

second_flag=1;

msecond=0;

}

}

珍爱生命远离烟草演讲稿3篇

珍爱生命远离烟草演讲稿3篇 每年的5月31日为世界无烟日,也是柬埔寨的无烟日,旨在提醒世人吸烟有害健康,呼吁全世界吸烟者主动放弃吸烟,号召所有烟草生产者、销售者和整个国际社会一起行动,投身到反吸烟运动中去,创造一个无烟草的环境。为此,无烟日到来之际,本报倡导200万正在吸烟的国民停止吸烟,珍爱生命。从今天起戒烟也不晚。 远离烟草珍爱生命 众所周知,烟草严重危害人类健康。 世界卫生组织《2013年全球烟草流行报告》显示,目前全球每年有600万人死于烟草,平均每6秒钟就有一个人死于烟草。其中,60余万是死于呼吸二手烟的非吸烟者,与吸烟者共同生活的女性,患肺癌几率比常人高出6倍。医学专家表示,几乎所有的抽烟者都患有慢性咽炎,严重影响日常生活。 如果这种情况继续下去,本世纪将会有10亿人死于烟草,到2030年,每年死于与吸烟有关的疾病的人数将升至800万人,其中80%是在中低收入国家。 吸烟对生命的伤害猛于虎! 好消息是,因吸烟导致的疾病死亡是当今唯一一种可以避免的死因。为了挽救更多人的生命,世界卫生组织从1987年开始设立“世界

无烟日”,今年的5月31日,是第27个世界无烟日。今年世界无烟日的中心议题是提高烟草税。 根据《世界卫生组织烟草控制框架公约》,各国应当落实针对烟草制品的税收和价格政策,以减少烟草消费。研究表明,增税对于减少较低收入群体使用烟草和防止青少年开始吸烟特别有效。提高烟草消费税至烟草价格的10%,在高收入国家会减少大约4%的烟草消费,在大多数中低收入国家会减少高达8%的烟草消费。 此外,提高烟草消费税被认为是性价比最高的烟草控制措施。《2010年世界卫生报告》指出,在22个低收入国家,烟草消费税每提高50%,就会带来略高于14亿美元的额外收入。如果将这些收入用于卫生工作,这些国家的政府卫生支出可以增加多达50%。 提高烟草消费税只是一个硬性措施,对于众多的烟民来说,是否戒烟在于个人的主观行动。如果广大烟民依然热爱生命,依然热爱生活,在第27个世界无烟日来临之际请扪心自问:今天我戒烟了吗? 柬每天因吸烟死30人 今年年初《美国医学协会期刊》上发表的一项吸烟综合研究报告显示,多达200万名柬埔寨人经常吸烟。吸烟已经成为导致柬埔寨人寿命缩短的第三大风险因素。在2012年,柬埔寨有42.1%的男性每天吸烟,使柬埔寨王国成为亚洲吸烟率仅次于印度尼西亚(57%)、老挝(51.3%)和中国(45.1%)的国家。

LCD12864显示程序

;实验目的:熟悉12864LCD的使用 ;12864LCD带中文字库 ;编程让12864LCD显示公司名称“深圳乾龙盛电子”,公司电话“0975”,公司传真“6”;硬件设置: ;关断所有拨码开关。 #include<> ;__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_H S_OSC ;芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 #define RS PORTA,5 ;命令/数据选择 #DEFINE RW PORTA,4 ;读/写选择 #DEFINE E PORTA,3 ;使能信号 #DEFINE PSB PORTA,2 ;并口/串口选择(H/L) #DEFINE RST PORTA,0 ;复位信号 ;----------------------------------------------- LCD_X EQU 30H ;页地址 LCD_Y EQU 31H ;Y地址 COUNT EQU 32H ;循环计数用 COUNT1 EQU 33H ;循环计数用 COUNT2 EQU 34H ;循环计数用 POINT EQU 35H ;查表偏移地址 POINT1 EQU 36H ;查表偏移地址 POINT2 EQU 37H ;查表偏移地址 TEMP EQU 38H ;临时寄存器 TEMP1 EQU 39H ;临时寄存器 ;----------------------------------------------- ORG 0000H ;复位地址 NOP ;ICD需要的空指令 GOTO MAIN ;跳转到主程序 ;**********************主程序************************ MAIN BANKSEL TRISA CLRF TRISA ;A口输出 CLRF TRISD ;D口输出 BANKSEL ADCON1 MOVLW 06H MOVWF ADCON1 ;A口全为数字口 CLRF STATUS

12864液晶显示图片原理(完整版)

51单片机综合学习 12864液晶原理分析1 辛勤学习了好几天,终于对12864液晶有了些初步了解~没有视频教程学起来真有些累,基本上内部程序写入顺序都是根据程序自我变动,然后逆向反推出原理…… 芯片:YM12864R P-1 控制芯片:ST7920A带中文字库 初步小结: 1、控制芯片不同,寄存器定义会不同 2、显示方式有并行和串行,程序不同 3、含字库芯片显示字符时不必对字符取模了 4、对芯片的结构地址一定要理解清楚

5、显示汉字时液晶芯片写入数据的顺序(即显示的顺序)要清楚 6、显示图片时液晶芯片写入数据的顺序(即显示的顺序)要清楚 7、显示汉字时的二级单元(一级为八位数据写入单元)要清楚 8、显示图片时的二级单元(一级为八位数据写入单元)要清楚 12864点阵液晶显示模块(LCM)就是由128*64个液晶显示点组成的一个128列*64行的阵列。每个显示点对应一位二进制数,1表示亮,0表示灭。存储这些点阵信息的RAM称为显示数据存储器。要显示某个图形或汉字就是将相应的点阵信息写入

到相应的存储单元中。图形或汉字的点阵信息由自己设计,问题的关键就是显示点在液晶屏上的位置(行和列)与其在存储器中的地址之间的关系。由于多数液晶显示模块的驱动电路是由一片行驱动器和两片列驱动器构成,所以12864液晶屏实际上是由左右两块独立的64*64液晶屏拼接而成,每半屏有一个512*8 bits显示数据RAM。左右半屏驱动电路及存储器分别由片选信号CS1和CS2选择。显示点在64*64液晶屏上的位置由行号(line,0~63)与列号(column,0~63)确定。512*8 bits RAM中某个存储单元的地址由页地址(Xpage,0~7)和列地址(Yaddress,0~63)确定。每个存储单元存储8个液晶点的显示信息。

带字库12864液晶详解

12864液晶 一、概述 带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。 基本特性: l 低电源电压(VDD:+3.0--+5.5V) l 显示分辨率:128×64点 l 内置汉字字库,提供8192个16×16点阵汉字(简繁体可选) l 内置 128个16×8点阵字符 l 2MHZ时钟频率 l 显示方式:STN、半透、正显 l 驱动方式:1/32DUTY,1/5BIAS l 视角方向:6点 l 背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 l 通讯方式:串行、并口可选 l 内置DC-DC转换电路,无需外加负压 l 无需片选信号,简化软件设计 l 工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃ 模块接口说明

*注释1:如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。 *注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。 *注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。 2.2并行接口 管脚号管脚名称电平管脚功能描述 1 VSS 0V 电源地 2 VCC 3.0+5V 电源正 3 V0 - 对比度(亮度)调整 RS=“H”,表示DB7——DB0为显示数据 4 RS(CS)H/L RS=“L”,表示DB7——DB0为显示指令数据 R/W=“H”,E=“H”,数据被读到DB7——DB0 5 R/W(SID) H/L R/W=“L”,E=“H→L”, DB7——DB0的数据被写到IR或DR 6 E(SCLK) H/L 使能信号 7 DB0 H/L 三态数据线 8 DB1 H/L 三态数据线 9 DB2 H/L 三态数据线 10 DB3 H/L 三态数据线 11 DB4 H/L 三态数据线 12 DB5 H/L 三态数据线 13 DB6 H/L 三态数据线 14 DB7 H/L 三态数据线 15 PSB H/L H:8位或4位并口方式,L:串口方式(见注释1) 16 NC - 空脚 17 /RESET H/L 复位端,低电平有效(见注释2) 18 VOUT - LCD驱动电压输出端 19 A VDD 背光源正端(+5V)(见注释3) 20 K VSS 背光源负端(见注释3)

LCD12864显示程序

本例程为通过用A T89C52芯片操作LCD12864显示的程序,使用的晶振为12M。 /********************************************************** 程序说明:LCD12864显示主程序 程序调试员:莫剑辉 调试时间:2010-6-7 **********************************************************/ #include #include"12864.c" void main() { Ini_Lcd(); //液晶初始化子程序 Disp(1,0,6,"莫剑辉"); //显示数据到LCD12864子程序 while(1); } 这里我们通过调用下面的头文件就可以了,这样的做法方便我们以后要用到LCD12864的程序的调用。 /********************************************************** 程序说明:LCD12864显示头文件 程序调试员:莫剑辉 调试时间:2010-6-7 **********************************************************/ //#include #define uchar unsigned char #define uint unsigned int #define DATA P2 //数据输出端0~7 sbit RS=P0^0; //LCD12864 RS端 sbit RW=P0^1; //LCD12864 RW端 sbit E =P0^2; //LCD12864 E 端 sbit PSB =P0^3; /********************************************* 延时子程序 *********************************************/ void Delay_1ms(uint x) { uint j,i; for(j=0;j

12864点阵型液晶显示屏的基本原理与使用方法(很详细)

12864点阵型液晶显示屏的基本原理与使用方法(很详细) 点阵LCD的显示原理 在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符使用,即英文的内码。 那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的'A'在字模的记载方式如图1所示: 图1“A”字模图 而中文的“你”在字模中的记载却如图2所示:

图2“你”字模图 12864点阵型LCD简介 12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。可完成图形显示,也可以显示8×4个(16×16点阵)汉字。 管脚号管脚名称LEVER管脚功能描述 1VSS0电源地 2VDD+5.0V电源电压 3V0-液晶显示器驱动电压 4D/I(RS)H/L D/I=“H”,表示DB7∽DB0为显示数据 D/I=“L”,表示DB7∽DB0为显示指令数据5R/W H/L R/W=“H”,E=“H”数据被读到DB7∽DB0 R/W=“L”,E=“H→L”数据被写到IR或DR 6E H/L R/W=“L”,E信号下降沿锁存DB7∽DB0 R/W=“H”,E=“H”DDRAM数据读到DB7∽DB0 7DB0H/L数据线 8DB1H/L数据线 9DB2H/L数据线 10DB3H/L数据线 11DB4H/L数据线 12DB5H/L数据线 13DB6H/L数据线 14DB7H/L数据线 15CS1H/L H:选择芯片(右半屏)信号 16CS2H/L H:选择芯片(左半屏)信号 17RET H/L复位信号,低电平复位

12864液晶屏使用手册

12864液晶屏手册 一、液晶显示模块概述 12864A-1汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵,16*8=128,16*4=64,一行只能写8个汉字,4行;)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。 主要技术参数和显示特性: 电源:VDD ~+5V(内置升压电路,无需负压); 显示内容:128列×64行(128表示点数) 显示颜色:黄绿 显示角度:6:00钟直视 LCD类型:STN 与MCU接口:8位或4位并行/3位串行 配置LED背光 多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等 二、外形尺寸 1.外形尺寸图 2.主要外形尺寸 项目标准尺寸单位 模块体积××mm

二、模块引脚说明 逻辑工作电压(VDD):~ 电源地(GND):0V 工作温度(Ta):0~60℃(常温) / -20~75℃(宽温) 三、接口时序 模块有并行和串行两种连接方法(时序如下): 8位并行连接时序图 MPU写资料到模块

MPU从模块读出资料 2、串行连接时序图

串行数据传送共分三个字节完成: 第一字节:串口控制—格式11111ABC A为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCD B为数据类型选择:H表示数据是显示数据,L表示数据是控制指令 C固定为0 第二字节:(并行)8位数据的高4位—格式DDDD0000 第三字节:(并行)8位数据的低4位—格式0000DDDD 串行接口时序参数:(测试条件:T=25℃VDD=

备注: 1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标志,(一般在输入每天指令前加个delay)那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。 2、“RE”为基本指令集与扩充指令集的选择控制位元,当变更“RE”位元后,往后的指令集将维持在最后的状态,除非再次变更“RE”位元,否则使用相同指令集时,不需每次重设“RE”位元。 具体指令介绍: 1、清除显示

珍爱生命远离烟草主题班会总结

珍爱生命远离烟草主题班会总结 “珍爱生命远离烟草”主题班会设计“珍爱生命远离烟草”主题班会设计一、班会设计背景:校园的角落偶尔出现了烟头,经过观察,调查,了解到班级里个别同学有效仿成人吸烟的现象。5 月 31 日是世界无烟日,在世界无烟日即将到来之即,也针对班级里发生的这一不良现象,及时召开《珍爱生命远离香烟》这一主题班会,目的是使学生明辨是非,树立正确的人生观、世界观和社会的责任感。 二、班会目标:1、知识目标:了解世界无烟日的由来;了解吸烟对自己、对他人、对环境的危害,从而对吸烟有一个全面的了解。通过班会班会,让学生立志做到现在和长大以后都不吸烟,并能自觉的宣传吸烟的危害,帮助自己周围的人戒烟。配合学校开展精神文明建设,加强健康教育和素质教育。2、能力目标:通过班会班会中,同学们喜闻乐见的多种形式,开阔学生的视野,培养同学的表演能力、创新思维的能力以及团结协作的团队意识和能力。3、情感目标:通过班会的召开,使学生能够积极的关爱自己和他人,增强社会的责任感,并树立正确的人生观和世界观。三、班会准备:1、上网收集有关知识和现实生活中吸烟的危害的例子、图片。 2、讲演准备 3、排练小品 4、收集戒烟方法。 5、作实验:将鱼放入纯净水和浸泡烟叶的水中,对比鱼的变化,作记录。

6、制作倡议书。 四、班会过程: 1、主持人引言致辞同学们,5 月 31 日是一个非常重要的日子,你们知道吗?是的,是世界无烟日。在世界无烟日即将到来之即,我们召开《珍爱生命远离烟草》这一主题班会,希望通过这次班会的召开大家能有所心得和收获。 2、观看相关教育片:世界无烟日的由来 3、同学们问题:吸烟的危害有哪些?通过作实验,学生发言并达成共识:吸烟有害健康。赏析一些相关图片 4、表演小品表演揭示导致未成年人吸烟的心理因素。 5、学生进行讨论分析发言并总结:①源于青春期的模仿心理②追求派头和成人感的心理③从众心理④对科学宣传的怀疑心理⑤消遣心理和消愁心理⑥寻求心理寄托 6、表演小品阐释戒烟好处和方法:好处:①身体会趋向健康。②改善仪容。③树立好榜样、增强自信心,重掌自己的生命。方法:……学生发言并总结:戒烟方法有很多,当然要记住最重要的一点,还是要依靠自己的意志力,这样戒烟成功率最高。 7、讲演:《抽烟一支终身难戒》。 8、班主任作总结:世上无难事,只怕有心人。就看在健康和烟草的天平上你如何抉择,戒烟成功与否,靠的是自己,谁有坚强的意志力,能战胜自己,谁就能战胜烟魔。让我们放眼蓝天,俯瞰大地,洁净的世界里有我,有你,

玩转12864液晶(1)--显示字符

在我们常用的人机交互显示界面中,除了数码管,LED,以及我们之前已经提到的LCD1602之外,还有一种液晶屏用的比较多。相信接触过单片机的朋友都知道了,那就是12864液晶。顾名思义,12864表示其横向可以显示128个点,纵向可以显示64个点。我们常用的12864液晶模块中有带字库的,也有不带字库的,其控制芯片也有很多种,如KS0108 T6963,ST7920等等。在这里我们以ST7920为主控芯片的12864液晶屏来学习如何去驱动它。(液晶屏采用金鹏的OCMJ4X8C) 关于这个液晶屏的更多信息,请参考它的DATASHEET,附件中有下载。 我们先来了解一下它的并行连接情况。 下面是电路连接图

从上面的图可以看出,液晶模块和单片机的连接除了P0口的8位并行数据线之外,还有RS,RW,E等几根线。其中R/S是指令和数据寄存器的选择控制线(串行模式下为片选),R/W 是读写控制线(串行模式下是数据线),E是使能线(串行模式下为时钟线)。 通过这几根控制线和数据线,再结合它的时序图,我们就可以编写出相应的驱动程序啦。 看看并行模式下的写时序图:

根据这个时序图,我们就可以写出写数据或者写命令到LCD12864液晶的子程序。 读时序图如下: 根据这个时序图我们就可以从LCD12864液晶模块内部RAM中读出相应的数据,我们的忙检测函数就是根据这个时序图写出来的。以及后面章节中讲的画点函数等都要用到读时序。有了这两个时序图,然后我们再看看OCMJ4X8C的相关指令集,就可以编写出驱动程序了。这里要注意的是指令集分为基本指令集和扩充指令集,其中扩充指令集主要是与绘图相关,在此后的章节中会有相应的介绍。 下面让我们根据这些编写出它的驱动程序吧。 我的硬件测试条件为:STC89C516(11.0592MHz) + OCMJ4X8C 实际显示效果图片如下: 程序部分如下,请结合液晶模块的DATASHEET看程序,这样能够更加快速的弄懂程序的流程。大致有如下几个函数:写数据,写指令,忙检测,初始化,指定地址显示字符串等等。[p][/p] #include "reg52.h" #include "intrins.h" sbit io_LCD12864_RS = P1^0 ;

珍爱生命远离烟草手抄报word模板

禁止吸烟 戒烟的好处 1,味觉改善,戒烟后舌头上的感觉神经恢复了原有的敏感性,能充分品尝到各种食物的风味。 2,口臭消除,吸烟者与他人谈话时,口中常会散发出一股令人厌恶的烟臭。吸烟者早晨起床后,自己也往往感觉到嘴里不清爽,有异臭味。戒烟后口臭便可渐渐消除。 3、牙齿变白,焦黄发黑的牙齿,曾被人们看作是吸 烟者象征,停止吸烟后牙齿的烟垢会逐渐退净。同时由于口腔卫生的改善,各种口腔疾病明显减少。 4、咳嗽痰液减少或停止,卷烟烟雾刺激呼吸道,妨碍纤毛的自洁功能,因而吸烟者大 多咳嗽、痰多。戒烟后纤毛恢复了 正常功能,痰液减少,咳嗽也随 之停止。5血压降低,戒烟后由于 全身血液 吸烟对各脏器的危害 1.口腔及喉部,烟雾(特别是其中所含的焦油)是致癌物质——就是说,它能在它所接触到的组织中产生癌,因此,吸烟者呼吸道的任何部位(包括口腔和咽喉)都有发生癌的可能。 2.心脏与动脉尼古丁能使心跳加快,血压升高,烟草的烟雾可能是由于含一氧化碳之故,似乎能够促使动脉粥样化累积,而这种情形是造成许多心脏疾病的一个原因,大量吸烟的人,心脏病发作时,其致死的机率比不吸烟者大很多。 3.食道大多数吸烟者喜欢将一定量的烟雾吞下,因此消化道(特别是食道及咽部)就有患 癌疾的危险。 吸烟的危害 吸烟危害健康已是众所周知的事实。全世界每年因吸烟死亡达250万人之多,烟是人类第一杀手。自觉养成不吸烟的个人卫生习惯,不仅有益于健康,而且也是一种高尚公共卫生道德的体现。 在吸烟的房间里,尤其是冬天门窗紧闭的 环境里,室内不仅充满了人体呼出的二氧 化碳,还有吸烟者呼出的一氧化碳,会使 人感到头痛、倦怠,工作效率下降,更为 严重的是在吸烟者吐出来的冷烟雾中,烟 焦油和烟碱的含量比吸烟者吸入的热烟含 量多1倍,苯并芘多2倍,一氧化碳多4倍,氨多50倍。 烟草已被国家确定为一级致癌物。吸烟者比不吸烟者患肺癌的概率高10到30倍,90%的总死亡率是由吸烟所导致。有资料表明, 长期吸烟者的肺癌发病率比不吸烟者 高10-20倍, 禁止

(完整版)12864lcd显示部分试验总结报告

12864lcd显示部分试验总结报告 管岱2014.12.19 【实验目的】 在12864液晶显示屏上能够显示出在4×4小键盘上输入的激励源频率值,如输入“789HZ”、“8MHZ”、“2.3KHZ”,显示出“789H”、“8M”、“2.3K”。并且要求此部分程序有较好的可移植性,在最后对电阻率值的显示上能够较好的应用。 【实验原理】 12864-3A接口说明表: 在12864液晶显示原理的基础上,通过在ise上编写vhdl语言,使之能够在fpga学习板上顺利显示数据。

【实验内容】 12864的显示原理并不难理解,并且在以前也用汇编语言实现过,所以本次实验的难点不在于显示原理的理解,而在于VHDL语言的编写。 在实验初期,由于对vhdl语言的不熟练,我们“类比”汇编语言的显示程序,编写出如下的程序: 发现编译时就出现了问题,出现如“multi-source in unit <*> on signal <*>”的报错。在仔细调试检查后发现,我们错误的原因在于:在不同的进程中对同一个信号赋值。例如,在写指

令的进程中,将rs信号置‘0’,而在后面写数据的进程中又将rs置‘1’,由于在vhdl中各进程之间是并行的关系,因此这样编写程序会出现在同一时刻对同一个引脚赋高电平和低电平,从而出现矛盾。虽然在程序实际运行中,写指令进程在系统一上电就会完成,远早于写数据进程,但是在逻辑上这样编写是不符合VHDL语言的规则的。 因此,我们利用状态机的思想,将写指令和写数据的两个进程合二为一。程序片段如下: 利用状态机,将写指令和写数据的各个步骤分为一个一个分立的状态,顺序执行。这样编写将对同一个引脚信号的变化放在一个进程中,很好的解决了之前存在的问题。

LCD12864液晶显示模块(中文资料)

FYD12864液晶中文显示模块

(一) (一)概述 (3) (二)(二)外形尺寸 1 方框图 (3) 2 外型尺寸图 (4) (三)(三)模块的接口 (4) (四)(四)硬件说明 (5) (五) 指令说明 (7) (五)(五)读写操作时序 (8) (六)(六)交流参数 (11) (七)(七)软件初始化过程 (12) (八)(八)应用举例 (13) (九)(九)附录 1半宽字符表 (20) 2 汉字字符表 (21) 一、概述 FYD12864-0402B是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。 基本特性: ●●低电源电压(VDD:+3.0--+5.5V)

●●显示分辨率:128×64点 ●●内置汉字字库,提供8192个16×16点阵汉字(简繁体可选) ●●内置 128个16×8点阵字符 ●●2MHZ时钟频率 ●●显示方式:STN、半透、正显 ●●驱动方式:1/32DUTY,1/5BIAS ●●视角方向:6点 ●●背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 ●●通讯方式:串行、并口可选 ●●内置DC-DC转换电路,无需外加负压 ●●无需片选信号,简化软件设计 ●●工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃ 二、方框图 3、外形尺寸图

12864液晶显示程序

12864液晶显示程序 由北京迪特福科技编撰提供

#include #include sbit RS = P2^5; sbit RW = P2^6; sbit E = P2^7; sbit RES = P3^5; #define Lcd_Bus P0 //MCU P1<------> LCM #define FIRST_ADDR 0 //定义字符/汉字显示起始位置 unsigned char code zk[]={ 0x08,0x20,0x1c,0x10,0x1c,0x1c,0xff,0x9e,0x7f,0x1e,0x1c,0x1f,0x3e,0x1f ,0x3e,0x1f, 0x77,0x1f,0x41,0x3f,0x00,0x7e,0x00,0xfe,0x83,0xfc,0x7f,0xf8,0x3f,0xf0 ,0x0f,0xc0, }; unsigned char code BMP1[]={ /*-- 调入了一幅图像:D:\3033B\3033.bmp --*/ /*-- 宽度x高度=128x64 --*/ /*--总共52行数据,每行16个数据--*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,

0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00, 0x0C,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00, 0x08,0x00,0x00,0x00,0x00,0x00,0x07,0xF1,0x00,0x03,0x01,0x00,0xF0,0x00 ,0x00,0x00, 0x18,0x00,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x03,0x81,0x08,0x98,0x00 ,0x00,0x00, 0x10,0x1F,0x07,0x06,0x00,0x00,0x08,0x01,0x00,0x04,0x81,0x11,0x88,0x00 ,0x00,0x00, 0x10,0x21,0x0D,0x83,0xE3,0xC0,0x0F,0x02,0x00,0x04,0xC1,0x31,0x30,0x00 ,0x00,0x00, 0x10,0x21,0x18,0x83,0x06,0x40,0x09,0x82,0x00,0x0F,0xC1,0x21,0xE0,0x00 ,0x00,0x00, 0x10,0x2E,0x11,0x86,0x06,0x40,0x00,0x86,0x00,0x08,0x43,0xC3,0xE0,0x00 ,0x00,0x00, 0x30,0x30,0x11,0x86,0x04,0x40,0x41,0x84,0x10,0x18,0x63,0x82,0x18,0x00 ,0x00,0x00, 0x20,0x1E,0x1F,0x84,0x04,0x60,0x7E,0x04,0x08,0x10,0x23,0x04,0x0E,0x00 ,0x00,0x00, 0x3F,0x83,0x00,0xE0,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00 ,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00, 0x00,0x00,0x38,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00, 0x00,0x00,0x6C,0x3C,0x00,0x20,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00, 0x00,0x00,0x42,0x22,0x03,0xFD,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00, 0x00,0x00,0x40,0x62,0x00,0x22,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00, 0x00,0x00,0x46,0x42,0x00,0x22,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00, 0x00,0x00,0x44,0x42,0x00,0x23,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,

12864LCD液晶显示屏中文资料

12864LCD液晶显示屏中文资料 一、概述 二、带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。 三、基本特性: (1)、低电源电压(VDD:+3.0--+5.5V)(2)、显示分辨率:128×64点(3)、内置汉字字库,提供8192个16×16点阵汉字(简繁体可选) (4)、内置 128个16×8点阵字符(5)、2MHZ时钟频率(6)、显示方式:STN、半透、正显(7)、驱动方式:1/32DUTY,1/5BIAS (8)、视角方向:6点(9)、背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 (10)、通讯方式:串行、并口可选(11)、内置DC-DC转换电路,无需外加负压(12)、无需片选信号,简化软件设计(13)、工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃ 模块接口说明: *注释1:如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。 *注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。 *注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。 2.2并行接口

12864液晶资料

一、液晶显示模块概述 12864A-1汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵,16*8=128,16*4=64,一行只能写8个汉字,4行;)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。主要技术参数和显示特性: 电源:VDD 3.3V~+5V(内置升压电路,无需负压); 显示内容:128列× 64行(128表示点数) 显示颜色:黄绿 显示角度:6:00钟直视 LCD类型:STN 与MCU接口:8位或4位并行/3位串行 配置LED背光 多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等 二、外形尺寸 1.外形尺寸图 2.主要外形尺寸

二、模块引脚说明 逻辑工作电压(VDD):4.5~5.5V 电源地(GND):0V 工作温度(Ta):0~60℃(常温) / -20~75℃(宽温) 三、接口时序 模块有并行和串行两种连接方法(时序如下): 8位并行连接时序图 MPU写资料到模块

MPU从模块读出资料 2、串行连接时序图

串行数据传送共分三个字节完成: 第一字节:串口控制—格式 11111ABC A 为数据传送方向控制:H 表示数据从LCD 到MCU ,L 表示数据从MCU 到LCD B 为数据类型选择:H 表示数据是显示数据,L 表示数据是控制指令 C 固定为0 第二字节:(并行)8位数据的高4位—格式 DDDD0000 第三字节:(并行)8位数据的低4位—格式 0000DDDD 串行接口时序参数:(测试条件:T=25℃ VDD=4.5V)

备注: 1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF 标志时BF 需为0,方可接受新的指令;如果在送出一个指令前并不检查BF 标志,(一般在输入每天指令前加个delay )那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。 2、“RE ”为基本指令集与扩充指令集的选择控制位元,当变更“RE ”位元后,往后的指令集将维持在最后的状态,除非再次变更“ RE ”位元,否则使用相同指令集时,不需每次重设“RE ”位元。 具体指令介绍: 1、清除显示 CODE : 功能:清除显示屏幕,把DDRAM 位址计数器调整为“00H ” 2、位址归位 CODE : 功能:把DDRAM 位址计数器调整为“00H ”,游标回原点,该功能不影响显示DDRAM 3、位址归位 CODE : 功能:把DDRAM 位址计数器调整为“00H ”,游标回原点,该功能不影响显示DDRAM 功能:执行该命令

LCD12864图形液晶并口显示

LCD12864图形液晶并口显示 【教学引入】 液晶屏,在生活中很常见,我们常见的液晶显示器,如电脑的显示器,电视机,手机等等。 液晶屏在生活中已得到了普遍应用,它显示个各种各样的画面。 【教学目标】 1、掌握LCD12864液晶屏的用法; 2、编写LCD12864液晶屏的指令代码; 【知识目标】 1、掌握LCD12864液晶屏的用法; 2、掌握LCD12864液晶屏指令代码; 【教学准备】 电脑、Proteus、Keil 【教学方法】 教法:讲授法、讨论法 学法:练习法、探究法 【教学课时】 四课时 【教学过程】 一、12864液晶介绍 (1)12864是128*64点阵液晶模块的点阵数简称,业界约定俗成的简称。12864点阵的屏显成本相对较低,适用于各类仪器,小型设备的显示领域。12864M汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。

12864引脚说明 查阅“12864M.PDF”12864M液晶显示模块技术手册——四、用户指令集 1、指令表1:(RE=0:基本指令表),如下图,讲解了12864的基本指令集和扩充指令集。

当模块在接受指令前,微处理器必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0。“RE”为基本指令集与扩充指令集的选择控制位元,往后的指令集将维持在最后的状态。 当选择G=0 :绘图显示OFF,汉字显示的时,12864屏只能显示8X4=32个汉字,下面是汉字显示的坐标

二、12864液晶屏驱动电路 原件名称所属类(Category) 所属子类(Sub-category) AT89C52 Microprocessor ICs 8051 Family POT-HG Resistors Variable RESPACK-8 Resistors Resistor Packs LCD12864A 自制- AT89C52的P0口连接12864的并行数据口,RP1为P0口的上拉排阻。 三、52代码编写 (1)打开keil uVision4,建立一个新的工程,工程名为"12864 graphic LCD parallel display",保存类型*.uvproj,单片机型号AT89C52。在工程中添加12864 graphic LCD parallel display.c文件,如下图

LCD12864液晶的使用之字库型液晶(一)

LCD12864液晶的使用之字库型液晶(一) 2011年02月15日星期二 16:44 下面介绍下带字库的液晶,由于Proteus中没有,就以实物为准吧!我手头上这块液晶是QY128*64HZ1,它的驱动器是ST7920,想必大家很熟悉了,百度、谷歌一下它的芯片手册很多!在学习此块液晶之前,建议大家好好看看它的驱动芯片的手册!它的驱动和LCD1602很像,甚至,读忙、写指令和写数据函数都是一样的,就初始化不一样,因为指令系统不同嘛!下面是我手头字库液晶的实物图。 (手机拍的,图片质量差了些,大家见谅!)

字库型液晶显示可以分为串行方式和并行方式两种,通过引脚PSB进行选择,它只有一个驱动芯片,不像Proteus中无字库液晶有两个驱动芯片。显示是整体显示,而不是左右屏的显示!大家一定要注意! 1、控制口信号说明:

注:①忙标志Bust_flag=1说明LCD内部正忙,此时不能对LCD进行操作,忙标志的判断由DB7也就是数据口的最高位所决定!这和LCD1602一样! ②上面对RS和RW的操作需配合使能信号EN来操作!否则无效! 1、显示说明 (1)、字符产生ROM(CGROM) 里面提供了8192(213)个汉字GB2132宋体 (2)、显示数据RAM(DDRAM) 内部提供64*2位空间,最多可控制4行16字,也就是16个中文字型显示,当写入显示数据RAM时,可分别显示CGROM和CGRAM的字型,可以用来显示三种字型:半角英文数字型、CGRAM字型和CGROM的中文字型,三种字型的选择,由在DDRAM总写入的编码选择,在0000H—0006H的编码中(其代码分别为0000、0002、0004、0006共四个)将选择CGRAM的自定义字型,02H —7FH的编码中将显示半角英文数字型的字型(也就是ASCII码,大小为16*8),至于A1以上的编码将自动结合下一个位元组,组成两个位元组的编码,从而形成一个中文字型的编码,也就是说显示一个汉字要两个ASCII码显示的位置,即大小为16*16。BIG(A140—D75F),GB(A1A0—F7FF)。 (3)、字型产生RAM 上面已经介绍了该种液晶提供四组可定义显示,是16*16大小的自定义图像空间,通过在特定的编码位置,写入我们要显示的自定义图像即可,这个和 LCD1602液晶的自定义显示字符的原理是一样的!这个将在下文加以详细介绍

12864液晶使用手册

12864液晶屏学习手册 一、液晶显示模块概述 12864A-1汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵,16*8=128,16*4=64,一行只能写8个汉字,4行;)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。主要技术参数和显示特性: 电源:VDD 3.3V~+5V(内置升压电路,无需负压); 显示内容:128列× 64行(128表示点数) 显示颜色:黄绿 显示角度:6:00钟直视 LCD类型:STN 与MCU接口:8位或4位并行/3位串行 配置LED背光 多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等 二、外形尺寸 1.外形尺寸图 2.主要外形尺寸

二、模块引脚说明 逻辑工作电压(VDD):4.5~5.5V 电源地(GND):0V 工作温度(Ta):0~60℃(常温) / -20~75℃(宽温) 三、接口时序 模块有并行和串行两种连接方法(时序如下): 8位并行连接时序图 MPU写资料到模块

MPU从模块读出资料 2、串行连接时序图

串行数据传送共分三个字节完成: 第一字节:串口控制—格式11111ABC A为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCD B为数据类型选择:H表示数据是显示数据,L表示数据是控制指令 C固定为0 第二字节:(并行)8位数据的高4位—格式DDDD0000 第三字节:(并行)8位数据的低4位—格式0000DDDD 串行接口时序参数:(测试条件:T=25℃VDD=4.5V)

备注: 1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标志,(一般在输入每天指令前加个delay)那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。 2、“RE”为基本指令集与扩充指令集的选择控制位元,当变更“RE”位元后,往后的指令集将维持在最后的状态,除非再次变更“RE”位元,否则使用相同指令集时,不需每次重设“RE”位元。 具体指令介绍:

相关文档
相关文档 最新文档