lcd12864并行数据传输汉字及图形显示程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

今天终于完成了12864带字库液晶模块的图象和中英文字母显示,图象显示显示了自己的一副照片,呵呵,还认得出是自己,开心啊。。。硬件连接方式是:并口直接访问。

这是汉字显示程序:

#include

#include

#define uchar unsigned char

#define datawr 0x1200 //写数据通道

#define comwr 0x1000 //写控制命令通道

#define datare 0x1300 //读数据通道

#define comre 0x1100 //读忙通道

uchar code disp_data[]={" 浙江大学 " //第一行,第一页

"04级通信工程一班" //第三行

" 宁波理工学院 " //第二行

" 竞赛小组 " //第四行

"128X64液晶显示器" //第一行,第二页

" 测试程序 " //第三行

" 07年07月25日 " //第二行

" Tornado "}; //第四行

void set12864();

void write_command(uchar command);

void write_page(uchar data_add);

void read_page(uchar data_add);

void delays(uchar cont);

void main()

{

while(1)

{

set12864(); //初始化12864

write_page(0); //写入一页数据

read_page(0x30); //读出一页数据到内部RAM

delays(2); //延时2s

write_page(64); //写入下一页数据

delays(2); //延时2s

}

}

//初始化12864子程序

void set12864()

{

write_command(0x30); //功能设定控制字

write_command(0x0c); //显示开关控制字

write_command(0x01); //清除屏幕控制字

write_command(0x06); //进入设定点控制字

}

//写控制命令子程序

void write_command(uchar command)

{

bit flag="1"; //12864空闲标志位

while(flag) //检查12864是否空闲

flag="XBYTE"[comre]&0x80;

XBYTE[comwr]=command; //空闲传送控制字

}

//写一页子程序

void write_page(uchar data_add)

{

bit flag="1"; //12864空闲标志位

uchar num="64"; //64个循环,连续写入32个汉字或是64个西文字符

write_command(0x80);

for(;num>0;num--)

{

while(flag) //检查12864是否空闲

flag="XBYTE"[comre]&0x80;

XBYTE[datawr]=disp_data[data_add++]; //空闲传送数据

}

}

//读一页子程序

void read_page(uchar data_add)

{

bit flag="1"; //12864空闲标志位

uchar num="64"; //64个循环,连续写入32个汉字或是64个西文字符

write_command(0x80);

for(;num>0;num--)

{

while(flag) //检查12864是否空闲

flag="XBYTE"[comre]&0x80;

DBYTE[data_add++]=XBYTE[datare]; //空闲传送数据

}

}

//延时cont秒子程序

void delays(uchar count)

{

unsigned char h,i,j,k;

do

{

for(h=5;h>0;h--)

for(i=4;i>0;i--)

for(j=116;j>0;j--)

for(k=214;k>0;k--);

}while(--count);

}

这是图象显示程序:

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define datawr 0x1200 //写数据通道

#define comwr 0x1000 //写控制命令通道

#define datare 0x1300 //读数据通道

#define comre 0x1100 //读忙通道

uchar code disp_data[] = // 数据表

{

0x00,0x01,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x0 0,0x00,0x00,0x00,

0x00,0x01,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x0 0,0x00,0x00,0x00,

0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x0 0,0x00,0x00,0x00,

0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x0 0,0x00,0x00,0x00,

0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x0 0,0x00,0x00,0x00,

0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x0 0,0x00,0x00,0x00,

0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x0

相关文档
最新文档