您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页128显示程序

128显示程序

来源:宝玛科技网
PG128F 本128液晶 控制器为T6963C proteus。显示汉字

2009年11月03日 星期二 11:20

又是打点,先生成字模,打点,外国的东西没汉字字库、

发现一个问题,字符显示方式与图形显示方式不能同时显示,不知哪出毛病了

#include

#define uchar unsigned char #define uint unsigned int #define WR_L() PORTD&=~(1) #define WR_H() PORTD|=(1) #define RD_L() PORTD&=~(1<<1) #define RD_H() PORTD|=(1<<1) #define CE_L() PORTD&=~(1<<2) #define CE_H() PORTD|=(1<<2) #define CD_L() PORTD&=~(1<<3) #define CD_H() PORTD|=(1<<3) #define RST_L() PORTD&=~(1<<4) #define RST_H() PORTD|=(1<<4) void delay(uint t); void init_txt_128(); void write_data(uchar data); void write_cmd1(uchar cmd);

void write_cmd2(uchar data,uchar cmd);

void write_cmd3(uchar data1,uchar data2,uchar cmd);

uchar read_status(); void check_status(); void clear_screen();

void display_char(uchar x,uchar y,uchar ch); void init_graphic_128();

void display_HZ(uchar x,uchar y,uchar *hz);////x 0-3 y 0-7 void display_string(uchar x,uchar y,uchar *s); uchar HZ[4][32]={

{0x00,0xF8,0x3F,0x90,0x12,0x10,0x09,0x20,0x3F,0xFE,0x22,0x02,0x42,0x00,0x3F,0xFC,0x04,0x00,0x07,0xF0,0x0C,0x20,0x0B,0x40,0x10,0xC0,0x63,0x30,0x8C,0x0E,0x30,0x04},/*\"爱\

{0x06,0x40,0x38,0x50,0x08,0x48,0x08,0x48,0x08,0x40,0xFF,0xFE,0x08,0x40,0x08,0x48,0x0E,0x28,0x38,0x30,0xC8,0x20,0x08,0x50,0x09,0x92,0x08,0x0A,0x28,0x06,0x10,0x02},/*\"我\

{0x01,0x00,0x01,0x00,0x21,0x08,0x3F,0xFC,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00},/*\"中\

{0x08,0x80,0x0C,0x88,0x10,0x9C,0x30,0xE0,0x53,0x80,0x90,0x84,0x10,0x84,0x10,0x7C,0x11,0x00,0x01,0x00,0x7F,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00}/*\"华\

};

uchar HZ2[][32]= {

{0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x7F,0xFC,0x20,0x04,0x00,0x00},/*\"山\

{0x02,0x00,0x02,0x00,0x7F,0xFC,0x04,0x00,0x08,0x80,0x08,0x80,0x10,0x80,0x1F,0xF8,0x00,0x80,0x08,0xA0,0x0C,0x90,0x18,0x88,0x10,0x8C,0x22,0x84,0x01,0x80,0x00,0x80},/*\"东\

{0x08,0x00,0x0B,0xFE,0x48,0x20,0x48,0x20,0x4B,0xFE,0x4A,0x22,0x4A,0x22,0x4A,0x22,0x4A,0x22,0x52,0x22,0x52,0x2A,0x12,0x24,0x20,0x20,0x40,0x20,0x80,0x20,0x00,0x20},/*\"师\

{0x04,0x20,0x04,0x20,0xFF,0xFE,0x04,0x60,0x40,0x00,0x31,0xF8,0x91,0x08,0x61,0x08,0x49,0x08,0x09,0x38,0x11,0x10,0xE1,0x00,0x21,0x04,0x21,0x04,0x20,0xFC,0x20,0x00},/*\"范\

{0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x02,0x80,0x02,0x80,0x02,0x40,0x04,0x40,0x04,0x20,0x08,0x10,0x10,0x18,0x20,0x0E,0x40,0x04},/*\"大\

{0x01,0x08,0x10,0x8C,0x0C,0xC8,0x08,0x90,0x7F,0xFE,0x40,0x04,0x8F,0xE8,0x00,0x40,0x00,0x80,0x7F,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x02,0x80,0x01,0x00},/*\"学\

{0x10,0x80,0x10,0x80,0x50,0x80,0x51,0xFC,0x7D,0x54,0x52,0x54,0x94,0x94,0x14,0x94,0x19,0x24,0x32,0x24,0xD4,0x44,0x10,0x84,0x11,0x04,0x12,0x04,0x14,0x28,0x00,0x10},/*\"物\

{0x00,0x00,0x03,0xFC,0xFA,0x44,0x22,0x44,0x23,0xFC,0x22,0x44,0xFA,0x44,0x23,0xFC,0x22,0x44,0x20,0x40,0x23,0xFC,0x38,0x40,0xC0,0x40,0x00,0x40,0x0F,0xFE,0x00,0x00},/*\"理\

{0x00,0x00,0x08,0x00,0x08,0x04,0x0F,0xFE,0x08,0x00,0x08,0x00,0x0F,0xFC,0x00,0x04,0x00,0x04,0x00,0x24,0x7F,0xF4,0x00,0x04,0x00,0x04,0x00,0x48,0x00,0x30,0x00,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},/*\"电\

{0x00,0x00,0x3F,0xF0,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00},/*\"子\

{0x06,0x08,0x78,0x88,0x08,0x48,0x08,0x48,0xFE,0x08,0x18,0x88,0x1C,0x48,0x2A,0x48,0x28,0x0E,0x48,0x78,0x8B,0x88,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},/*\"科\

{0x01,0x08,0x10,0x8C,0x0C,0xC8,0x08,0x90,0x7F,0xFE,0x40,0x04,0x8F,0xE8,0x00,0x40,0x00,0x80,0x7F,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x02,0x80,0x01,0x00},/*\"学\

{0x01,0x08,0x10,0x8C,0x0C,0xC8,0x08,0x90,0x7F,0xFE,0x40,0x04,0x8F,0xE8,0x00,0x40,0x00,0x80,0x7F,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x02,0x80,0x01,0x00},/*\"学\

{0x00,0x80,0xF8,0x40,0x8F,0xFE,0x94,0x04,0xA0,0x00,0xA3,0xF8,0x90,0x00,0x88,0x00,0x8F,0xFE,0xA9,0x20,0x91,0x20,0x81,0x20,0x82,0x22,0x82,0x22,0x84,0x22,0x88,0x1E}/*\"院\

};

uchar ch[]=\"http://hi.baidu.com/282280072/blog\"; int main() {

uchar i,j=0; init_txt_128(); display_string(0,0,ch); delay(100); clear_screen(); init_graphic_128(); for(i=0;i<4;i++) display_HZ(3,i,HZ[i]); for(i=0;i<15;i++) if(i>=8)

display_HZ(1,i-8,HZ2[i]); else

display_HZ(0,i,HZ2[i]); while(1); /*

{//调整文本区首地址,可以实现移屏; //i++;

write_cmd3(i++,0,0x40);//文本区首地址; delay(10000); } */ }

//处在x y处显示汉字hz

void display_HZ(uchar x,uchar y,uchar *hz)////x 0-3 y 0-7 {

uchar i,j=0; for(i=0;i<16;i++) {

write_cmd3(((j/2)<<4)|(y*2),x,0x24);//地址指针设置..低地址,高地址,命令 write_cmd2(hz[j++],0xc0); write_cmd2(hz[j++],0xc0); } }

//处在x y处显示ch

void display_char(uchar x,uchar y,uchar ch)//x 0-7 y 0-15 {

write_cmd3((((x*2)<<4)+y),0x00,0x24);//地址指针位置

write_cmd2(ch-32,0xc0);//t6963c字符表与ASCII差32@@@@@@@@@@@@@@@@ }

void display_string(uchar x,uchar y,uchar *s) {

uchar i=0;

while(*s) {

display_char( x, y+(i++),*s); s++; if(i>=16) { x++; i=0; } } }

void delay(uint t) { uint i,j; for(i=0;ivoid init_txt_128() {

//初始化端口 DDRD=0XFF; DDRB=0XFF; PORTB=0XFF; //液晶复位 RST_L(); delay(1); RST_L();

//所有控制引脚置高 WR_H(); RD_H();

CE_H(); CD_H(); RST_H(); //初始化指令 check_status();

write_cmd3(0x01,0x00,0x21);//光标指针设置 check_status();

write_cmd3(0x00,0x00,0x40);//文本区首地址 check_status();

//加上下面2行代码,只显示4行?而不是8行!!

//write_cmd3(16,0x00,0x41);//文本区宽度。字节数/行&&&&& //check_status();

write_cmd1(0x80);//显示方式设置,正常显示 check_status();

write_cmd1(0x94);//。。显示状态设置 1 0 1 0 N3 N2 N1 N0 文本显示,光标不显示,不闪烁 //write_cmd1(0x98);//图形方式显示,不显示字母,只打点 check_status();

write_cmd1(0xa1);//光标形状设置1 0 1 0 0 N2 N1 N0 }

void init_graphic_128() {

//初始化端口 DDRD=0XFF; DDRB=0XFF; PORTB=0XFF; //液晶复位 RST_L(); delay(1); RST_L();

//所有控制引脚置高

WR_H(); RD_H(); CE_H(); CD_H(); RST_H(); //初始化指令 check_status();

write_cmd3(0x01,0x00,0x21);//光标指针设置 check_status();

write_cmd3(0x00,0x00,0x42);//图形区首地址 check_status();

write_cmd3(16,0x00,0x43);//图形区宽度 check_status();

write_cmd1(0x80);//显示方式设置,正常显示 check_status();

//write_cmd1(0x94);//。。显示状态设置 1 0 1 0 N3 N2 N1 N0 文本显示,光标不显示,不闪烁 write_cmd1(0x98);//图形方式显示,不显示字母,只打点 check_status();

write_cmd1(0xa0);//光标形状设置1 0 1 0 0 N2 N1 N0 }

void clear_screen() { uint i;

write_cmd3(0x00,0x00,0x24);//地址指针设置 check_status();

write_cmd1(0xb0);//数据自动写,每写一次,地址指针自动加一 check_status(); for(i=0;i<8192;i++) {

check_status();

write_data(0X00); }

check_status();

write_cmd1(0xb2);//数据自动写结束 }

void write_data(uchar data) { RD_H(); CD_L(); CE_L(); WR_L(); PORTB=data; asm(\"nop\"); //delay(1); WR_H(); CE_H(); CD_H(); }

void write_cmd1(uchar cmd) { RD_H(); CD_H(); CE_L(); WR_L(); PORTB=cmd; asm(\"nop\");

//delay(1);//须延时80ns左右 WR_H(); CE_H(); CD_L();

}

//先送参数,再送指令

void write_cmd2(uchar data,uchar cmd) {

check_status(); write_data(data); check_status(); write_cmd1(cmd); }

void write_cmd3(uchar data1,uchar data2,uchar cmd) {

check_status(); write_data(data1); check_status(); write_data(data2); check_status(); write_cmd1(cmd); }

uchar read_status() {

uchar status;

DDRB=0;//端口b置为输入 RD_L(); WR_H(); CE_L(); CD_H(); status=PINB; return status; }

void check_status()

{ uchar s;

DDRB=0XFF;//端口b置为输出 while((s&0x03)!=0x03)

s=read_status();//等待位1,2置为。命令读写准备好。数据读写准备好 }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务