LCD12864显示测试.docx
- 文档编号:7291446
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:13
- 大小:49.42KB
LCD12864显示测试.docx
《LCD12864显示测试.docx》由会员分享,可在线阅读,更多相关《LCD12864显示测试.docx(13页珍藏版)》请在冰豆网上搜索。
LCD12864显示测试
LCD12864显示测试--------
-------- 主函数-------
//==================================
//-----LCD显示测试---------
//----------------------------------
#include
#include
#include
#include
#include
//----------------------------------
voidmain()
{
lcd12864_init(); //LCD初始化
clear_lcd(1,1); //LCD清全屏
while
(1)
{
//dispall_left(); //北京加油
//dispall_right();
displeft_char(0,0);
dispright_char(0,1);
}
}
//=========================================
LCD12864显示驱动程序
//=========================================
//
//-------【LCD12864显示驱动程序】------------
//
//----【作者】聂金波 【DATE】07/07/08-----
//---- niejinbo999@ ---------
//=========================================
#include
#defineucharunsignedchar
#defineuintunsignedint
//-------- 【定义端口】--------------
//---(根据实际电路修改相应参数)---
#defineDAT_PORTP1//数据端口
sbitcs1=P2^6; //片选1,左半面
sbitcs2=P2^7; //片选2,右半面
sbitrs=P2^2; //写指令/数据选择
sbitrw=P2^1; //读写选择
sbiten=P2^0; //使能端
sbitbusy=P1^7; //检测忙位
//-------- 【函数声明】--------------
//-----基本函数-------
voidwritecom_l(uchar); //左半平面写指令
voidwritecom_r(uchar); //右半平面写指令
voidwritedat_l(uchar); //左半平面写数据
voidwritedat_r(uchar); //右半平面写数据
voidlcd12864_init(); //初始化函数
voidclear_lcd(uchar,uchar);//清屏函数
//-------------------整屏显示128X64大小图形
voiddispall_left();
voiddispall_right();
voiddisp_left(uchar); //在主函数中调用
voiddisp_right(uchar); //在主函数中调用
//------------------------
voiddispleft_char(uchar,uchar);//左半屏任意位置显示一汉字
voiddispright_char(uchar,uchar);//右半屏任意位置显示一汉字
//------------------------------------------
//**************************************************************
//==============================================
//---- 【整屏显示128X64大小图形】-------
//---- 在主函数调用下面两个函数,修改数组tab_pic,
//---- 即可显示不同内容
//---- disp_right(uchar)\voiddisp_left(uchar)
//==============================================
//------ 【左半屏全屏显示】 --------
voiddispall_left()
{
uchari;
for(i=0;i<8;i++)
{
writecom_l(0xb8+i);
disp_left(i);
}
}
//-------------------------------------
//------ 【右半屏全屏显示】 ------
voiddispall_right()
{
uchari;
for(i=0;i<8;i++)
{
writecom_r(0xb8+i);
disp_right(8+i);
}
}
//------------------------------------------
//------------------------------------------
voiddisp_left(ucharrow1) //显示数组row1行数据
{
uchari,a;
for(i=0;i<=63;i++)
{
writecom_l(0x40+i); //Y地址加一行
a=tab_pic[row1][i]; //tab_pic[16][64]
writedat_l(a);
}
}
//--------------------------------------------
voiddisp_right(ucharrow2)//显示数组row2行数据
{
uchari,a;
for(i=0;i<=63;i++)
{
writecom_r(0x40+i);
a=tab_pic[row2][i]; //tab_pic[16][64]
writedat_r(a);
}
}
//====================================================
//----【整屏显示128X64大小图形】END--------------
//====================================================
//**********************************************************************
//=====================================================
//------【在任意位置显示16X16汉字】------
//------在主函数调用下面这两个函数,修改数组tab_char1[]
//------displeft_char(uchar,uchar)/dispright_char(uchar,uchar)
//------
//=====================================================
//------左半屏任意位置显示一汉字------
//------x取0、1、2、3;y取值:
0-7;
voiddispleft_char(ucharx,uchary)
{
uchari,j,a;
writecom_l(0xb8+x);
for(i=0;i<32;i++)
{
if(i>=16)
{j=1;}
else
{j=0;}
writecom_l(0xb8+x+j);
if(j==0) //上半个字
{writecom_l(0x40+y*16+i);}
else //下半个字
{writecom_l(0x40+y*16+(i-16));}
a=tab_char1[i];
writedat_l(a);
}
}
//-----------------------------------------------
//-------右半屏任意位置显示一汉字------
voiddispright_char(ucharx,uchary)
{
uchari,j,a;
writecom_r(0xb8+x);
for(i=0;i<32;i++)
{
if(i>=16)
{j=1;}
else
{j=0;}
writecom_r(0xb8+x+j);
if(j==0) //上半个字
{writecom_r(0x40+y*16+i);}
else //下半个字
{writecom_r(0x40+y*16+(i-16));}
a=tab_char2[i];
writedat_r(a);
}
}
//=====================================================
//******************************************************************
//=====================================================
//-------------【初始化函数】---------------
voidlcd12864_init()
{
writecom_l(0x3e); //关左边显示
writecom_r(0x3e); //关右边显示
writecom_l(0x3f); //开左边显示
writecom_r(0x3f); //开右边显示
writecom_l(0xc0); //从第一行开始显示
writecom_r(0xc0); //从第一行开始显示
writecom_l(0xb8); //从第一页开始显示
writecom_r(0xb8); //从第一页开始显示
writecom_l(0x40); //设置初始Y地址为0
writecom_l(0x40); //设置初始Y地址为0
}
//--------------------------------------------
//-------------【清屏函数】---------------
//【说明】0、0:
不清屏;1、0:
清左屏
// 1、0:
清右屏;1、1:
清全屏
voidclear_lcd(ucharleft,ucharright)//清屏函数
{
ucharaa,bb;
if(left) //left为1,清左屏
{
for(aa=0xb8;aa<=0xbf;aa++)
{
writecom_l(aa);
for(bb=0x40;bb<=0x7f;bb++)
{
writecom_l(bb);
writedat_l(0x00);
}
}
}
if(right) //right为1,清右屏
{
for(aa=0xb8;aa<=0xbf;aa++)
{
writecom_r(aa);
for(bb=0x40;bb<=0x7f;bb++)
{
writecom_r(bb);
writedat_r(0x00);
}
}
}
}
//--------------------------------------------
//-------------【左半平面写指令】-----------
voidwritecom_l(ucharcom) //左半平面写指令
{
loop1:
cs1=0; //选中左片选
cs2=1;
rs=0; //写指令
rw=1; //读
DAT_PORT=0xff;
en=1; //开使能
_nop_();
_nop_(); //稍作延时
en=0;
if(busy)
{gotoloop1;} //如果忙,跳转loop1
else //不忙,则继续
{
rw=0; //写
DAT_PORT=com;
en=1; //开使能
en=0;
}
}
//-----------------------------------------------
//-------------【右半平面写指令】------------
voidwritecom_r(ucharcom) //右半平面写指令
{
loop1:
cs1=1;
cs2=0; //选中右片选
rs=0; //写指令
rw=1; //读
DAT_PORT=0xff;
en=1; //开使能
_nop_();
_nop_(); //稍作延时
en=0;
if(busy)
{gotoloop1;} //如果忙,跳转loop1
else //不忙,则继续
{
rw=0; //写
DAT_PORT=com;
en=1; //开使能
en=0;
}
}
//--------------------------------------------
//-----------【左半平面写数据】-----------
voidwritedat_l(uchardat) //左半平面写数据
{
loop2:
cs1=0; //选中左片选
cs2=1;
rs=0; //写数据
rw=1; //读
DAT_PORT=0xff;
en=1; //开使能
_nop_();
_nop_(); //稍作延时
en=0;
if(busy)
{gotoloop2;} //如果忙,跳转loop1
else //不忙,则继续
{
rs=1;
rw=0; //写
DAT_PORT=dat;
en=1; //开使能
en=0;
cs1=1; //送完数据关片选
}
}
//---------------------------------------------------
//---------------【右半平面写数据】---------------
voidwritedat_r(uchardat) //右半平面写数据
{
loop2:
cs1=1; //选中左片选
cs2=0;
rs=0; //写数据
rw=1; //读
DAT_PORT=0xff;
en=1; //开使能
_nop_();
_nop_(); //稍作延时
en=0;
if(busy)
{gotoloop2;} //如果忙,跳转loop1
else //不忙,则继续
{
rs=1;
rw=0; //写
DAT_PORT=dat;
en=1; //开使能
en=0;
}
}
//========================================
数据表格
//======================================
//
//-----【字码表】------
//
//-----【说明】-------------------------
#defineucharunsignedchar
#defineuintunsignedint
//小(0)波
(1)电
(2)子(3)工(4)作(5)室(6)
ucharcodetab_char1[32]={0x00,0x00,0x00,0xC0,0x70,0x20,0x00,0xFF,0x00,0x10,0x20,0xC0,0x80,0x00,0x00,0x00,
0x04,0x02,0x01,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x01,0x07,0x02,0x00};/*"小",0*/
ucharcodetab_char2[32]={0x10,0x60,0x01,0xE6,0x00,0xF8,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x18,0x08,0x00,
0x04,0x04,0xFF,0x40,0x30,0x8F,0x80,0x41,0x26,0x18,0x18,0x26,0x61,0xC0,0x40,0x00};/*"波",1*/
ucharcodetab_char3[32]={0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,
0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00};/*"电",2*/
ucharcodetab_char4[32]={0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xE2,0x12,0x0A,0x06,0x02,0x00,0x80,0x00,0x00,
0x01,0x01,0x01,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00};/*"子",3*/
ucharcodetab_char5[32]={0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00};/*"工",4*/
ucharcodetab_char6[32]={0x80,0x40,0x20,0xF8,0x07,0x22,0x18,0x0C,0xFB,0x48,0x48,0x48,0x68,0x48,0x08,0x00,
0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x04,0x04,0x04,0x04,0x06,0x04,0x00};/*"作",5*/
ucharcodetab_char7[32]={0x00,0x10,0x2C,0x24,0xA4,0x64,0x25,0x26,0x24,0x24,0xA4,0x24,0x34,0x2C,0x04,0x00,
0x40,0x40,0x48,0x49,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x4B,0x48,0x40,0x40,0x00};/*"室",6*/
//北京加油
ucharcodetab_pic[16][64]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,0xF8,0xFC,0xFC,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
0x86,0x86,0x86,0x86,0x8C,0xFC,0xFC,0xFC,0xF8,0xF8,0x78,0x70,0x20,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,0xE0,0xFF,0xFD,0xF0,0xF0,0xF0,0xF1,0xF1,0xF1,0xF1,0xF1,0x01,0x01,
0x01,0x01,0xF1,0xF1,0x01,0x01,0x01,0xF8,0xF8,0xF8,0xFC,0xFC,0xFC,0xFE,0xFE,0xFE,
0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LCD12864 显示 测试