12864不带字库12864不带字库
12864不带字库(提取字模)的驱动程序 //编者:谢国华 //
//时间:2007年1月24日晚 //
//参考:〈全国大学生电子设计竞赛训练教程〉 //
// 〈单片机原理,接口及应用〉 //
// //
///////////////////////////////////////////////////////////
#include
#include
#define uchar unsigned char
#define uint unsigned int /////////...
12864不带字库
12864不带字库(提取字模)的驱动程序 //编者:谢国华 //
//时间:2007年1月24日晚 //
//参考:〈全国大学生电子
竞赛训练教程〉 //
// 〈单片机原理,接口及应用〉 //
// //
///////////////////////////////////////////////////////////
#include
#include
#define uchar unsigned char
#define uint unsigned int //////////单片机与液晶显示的引脚连接/////////
sbit P32=P3^2; //RST
sbit P33=P3^3; //CS2
sbit P34=P3^4; //CS1
sbit P35=P3^5; //E
sbit P36=P3^6; //rs&DI
sbit P37=P3^7; // R/W
////////延时/////////
void delay(uint v)
{
while(v!=0)v--;
}
////////复位///////////
void reset()
{
P32=0;
delay(10);
P32=1;
delay(10);
}
////////write code写指令///////
void wcode(uchar c,uchar cs1,uchar cs2)
{
P34=cs1;
P33=cs2;
P37=0;
P36=0;
P1=c;
P35=0;
delay(10);
P35=1;
delay(10);
P35=0;
}
/////////write data写数据/////////////// void wdata(uchar c,uchar cs1,uchar cs2)
{
P34=cs1;
P33=cs2;
P37=1;
P36=0;
P1=c;
P35=0;
delay(10);
P35=1;
delay(10);
P35=0;
}
////////////set start设置起始行/////////////
void set_startline(uchar i)//起始行。11A5A4A3A2A1A0 共有64行
// 液晶显示器的最底层为第一行
{
i=0xc0+64-i;//此算法为把最顶层做为第一层
wcode(i,1,1);
}
////////////set 页值设置,起始列值/////////////
void set_adr(uchar x,uchar y)
{
x=x+0xb8;//页地址设置。10111A2A1A0 DDRAM的8行为一页,A0~A2为页码,LCD为64行8页
y=y+0x40;//列地址设置。01A5A4A3A2A1A0 两半屏分别有64列,A0~A5送入列地址计数器,
//作为列(Y)地址指针。每读写一次其自动加一,指向下一列DDRAM单元
wcode(x,1,1);
wcode(y,1,1);
}
///////////on/off开/关显示函数//////////////
void dis_on_off(uchar o)
{
o=0x3e+o;//0011111D D=1开显示器把RAM数据呈现在显示器上,D=0关显示,但数据仍储存在RAM内。
wcode(o,1,1);
}
///////////clear清屏///////////////
void clear()
{
uchar i,loop;
for(i=0;i<8;i++)///循环页写0/////////
{
set_adr(i,0);
for(loop=0;loop<64;loop++)wdata(0x00,1,1);
}
}
/////////////////////////////////////////////////////////////////////////
// 汉字字模 //
// 汉字库: 宋体16.dot 纵向取模下高位,数据排列:从左到右从上到下 //
/////////////////////////////////////////////////////////////////////////
uchar code xian[32]= // "现"
{
0x04,0x84,0x84,0xFC,0x86,0x84,0x00,0xFE,
0x02,0x82,0x7A,0x02,0xFF,0x02,0x00,0x00,
0x10,0x30,0x10,0x1F,0x88,0x88,0x40,0x23,
0x18,0x07,0x78,0x80,0x83,0x80,0xE0,0x00,
};
uchar code zai[32]= //"在"
{
0x08,0x08,0x08,0x08,0xC8,0x38,0x0F,0x08,
0x08,0xE8,0x08,0x88,0x08,0x0C,0x08,0x00,
0x08,0x04,0x02,0xFF,0x00,0x40,0x41,0x41,
0x41,0x7F,0x41,0x41,0x41,0x60,0x40,0x00,
};
uchar code wen[32]= //"温"
{
0x10,0x22,0x64,0x0C,0x80,0x00,0xFE,0x92,
0x92,0x92,0x92,0x92,0xFF,0x02,0x00,0x00,
0x04,0x04,0xFE,0x01,0x40,0x7E,0x42,0x42,
0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00,
};
uchar code du[32]= //"度"
{
0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0xA5,
0xA6,0xA4,0xFC,0x24,0x34,0x26,0x04,0x00,
0x40,0x20,0x9F,0x80,0x42,0x42,0x26,0x2A,
0x12,0x2A,0x26,0x42,0x40,0xC0,0x40,0x00
};
uchar code maohao[16]= // -:-
{ 0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,
0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,
};
uchar code wu[16]= // -5- { 0x7C,0x7C,0x44,0x44,0xC4,0xC4,0x84,0x00,
0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00,
};
uchar code er[16]= // -2- { 0x08,0x0C,0x84,0xC4,0x64,0x3C,0x18,0x00,
0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0C,0x00,
};
uchar code san[16]= // -3- { 0x08,0x0C,0x44,0x44,0x44,0xFC,0xB8,0x00,
0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00,
};
uchar code li[32] = //"理"
{
0x44,0x44,0xFC,0x46,0x44,0x00,0xFE,0x92,
0x92,0xFE,0x92,0x92,0xFF,0x02,0x00,0x00,
0x10,0x30,0x1F,0x08,0x48,0x48,0x44,0x44,
0x44,0x7F,0x44,0x46,0x44,0x60,0x40,0x00,
};
uchar code gong[32] = // "工",
{
0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFC,
0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,
0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
};
uchar code xue[32] = //"学",
{
0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,
0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,
0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,
0x06,0x05,0x04,0x04,0x04,0x06,0x04,0x00,
};
uchar code yuan[32] = //院
{
0x00,0xFE,0x22,0x5A,0x96,0x0C,0x24,0x24,
0x25,0x26,0x24,0x34,0xA4,0x14,0x0C,0x00,
0x00,0xFF,0x04,0x08,0x87,0x81,0x41,0x31,
0x0F,0x01,0x3F,0x41,0x41,0x41,0x70,0x00,
};
uchar code dian[32] = //"电",
{
0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,
0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,
0x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00,
};
uchar code zi[32] = //"子",
{
0x80,0x80,0x82,0x82,0x82,0x82,0x82,0xE2,
0xA2,0x92,0x8A,0x86,0x80,0xC0,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
uchar code chuang[32] = //"创",
{
0x80,0x40,0xF0,0x4C,0x43,0x44,0xC8,0x10,
0x30,0x00,0xF8,0x00,0x00,0xFF,0x00,0x00,
0x00,0x00,0x3F,0x40,0x42,0x44,0x43,0x70,
0x00,0x00,0x07,0x40,0x80,0x7F,0x00,0x00,
};
uchar code xin[32] = //"新",
{
0x40,0x44,0x54,0x65,0xC6,0x64,0xD6,0x44,
0x40,0xFC,0x44,0x42,0xC3,0x62,0x40,0x00,
0x20,0x11,0x49,0x81,0x7F,0x01,0x05,0x29,
0x18,0x07,0x00,0x00,0xFF,0x00,0x00,0x00,
};
uchar code shi[32] = //"实",
{
0x10,0x0C,0x04,0x44,0x8C,0x94,0x35,0x06,
0xF4,0x04,0x04,0x04,0x04,0x14,0x0C,0x00,
0x02,0x82,0x82,0x42,0x42,0x23,0x12,0x0E,
0x03,0x0A,0x12,0x22,0x42,0xC3,0x02,0x00,
};
uchar code yan[32] = //"验",
{
0x02,0xFA,0x02,0x02,0xFF,0x42,0x20,0x50,
0x4C,0x43,0x4C,0x50,0x20,0x60,0x20,0x00,
0x10,0x31,0x11,0x49,0x89,0x7F,0x42,0x5C,
0x40,0x4F,0x60,0x58,0x47,0x60,0x40,0x00,
};
uchar code ban[32] = //"班",
{
0x84,0x84,0xFC,0x84,0x06,0xF4,0x00,0xFF,
0x00,0x84,0x84,0xFC,0x84,0x86,0x04,0x00,
0x20,0x60,0x3F,0x10,0x92,0x41,0x38,0x07,
0x40,0x40,0x40,0x7F,0x40,0x60,0x40,0x00
};
uchar code xie[32]= //"谢"
{
0x40,0x42,0xCC,0x00,0xFC,0x56,0x55,0x54,
0xFE,0x24,0x20,0x20,0xFF,0x20,0x20,0x00,
0x00,0x00,0x3F,0x52,0x2B,0x12,0x4A,0x86,
0x7F,0x01,0x46,0x80,0x7F,0x00,0x00,0x00,
};
uchar code guo[32]= //"国"
{
0x00,0xFE,0x02,0x0A,0x8A,0x8A,0x8A,0xFA,
0x8A,0xCA,0x8E,0x0A,0x02,0xFF,0x02,0x00,
0x00,0xFF,0x40,0x50,0x50,0x50,0x50,0x5F,
0x50,0x52,0x54,0x50,0x40,0xFF,0x00,0x00,
};
uchar code hua[32]= //"华"
{
0x00,0x40,0x20,0x10,0xFC,0x03,0x40,0x20,
0x10,0xFF,0x08,0x04,0x06,0xC0,0x00,0x00,
0x04,0x04,0x04,0x04,0x05,0x04,0x04,0xFF,
0x04,0x04,0x05,0x05,0x05,0x05,0x04,0x00,
};
//////////////main////////////////
void main()
{
uchar loop;
reset();//复位
dis_on_off(1);///开关开,把RAM数据呈现在显示器上
set_startline(10);//从第0行开始显示
clear();//清屏
while(1)
{
//以下为字符显示程序,主要程序思路为分左右屏写,同一页同一行内按左到右踔厉风顺序写
//同一字符分上下16半个字写代码
set_adr(0,32);
for(loop=0;loop<16;loop++) wdata(xian[loop],1,0);
for(loop=0;loop<16;loop++) wdata(zai[loop],1,0);
set_adr(1,32);
for(loop=16;loop<32;loop++) wdata(xian[loop],1,0);
for(loop=16;loop<32;loop++) wdata(zai[loop],1,0);
set_adr(0,0);
for(loop=0;loop<16;loop++) wdata(wen[loop],0,1);
for(loop=0;loop<16;loop++) wdata(du[loop],0,1);
set_adr(1,0);
for(loop=16;loop<32;loop++) wdata(wen[loop],0,1);
for(loop=16;loop<32;loop++) wdata(du[loop],0,1);
///////////////////////////////////////////////////第一行显示 现在温度
/*set_adr(0,32);
for(loop=0;loop<8;loop++) wdata(maohao[loop],0,1);
set_adr(1,32);
for(loop=8;loop<16;loop++) wdata(maohao[loop],0,1);
set_adr(2,45);
for(loop=0;loop<8;loop++)wdata(wu[loop],1,0);
for(loop=0;loop<8;loop++)wdata(er[loop],1,0);
set_adr(3,45);
for(loop=8;loop<16;loop++)wdata(wu[loop],1,0);
for(loop=8;loop<16;loop++)wdata(er[loop],1,0);
set_adr(2,0);
for(loop=0;loop<8;loop++)wdata(san[loop],0,1);
set_adr(3,0);
for(loop=8;loop<16;loop++)wdata(san[loop],0,1);*/
set_adr(2,32);
for(loop=0;loop<16;loop++)wdata(li[loop],1,0);
for(loop=0;loop<16;loop++)wdata(gong[loop],1,0);
set_adr(3,32);
for(loop=16;loop<32;loop++)wdata(li[loop],1,0);
for(loop=16;loop<32;loop++)wdata(gong[loop],1,0);
set_adr(2,0);
for(loop=0;loop<16;loop++)wdata(xue[loop],0,1);
for(loop=0;loop<16;loop++)wdata(yuan[loop],0,1);
set_adr(3,0);
for(loop=16;loop<32;loop++)wdata(xue[loop],0,1);
for(loop=16;loop<32;loop++)wdata(yuan[loop],0,1);
///////////////////////////////////////////////////第一行显示 理工学院
set_adr(0,16);
for(loop=0;loop<16;loop++)wdata(chuang[loop],1,0);
set_adr(4,16);
for(loop=0;loop<16;loop++)wdata(xin[loop],1,0);
set_adr(0,32);
for(loop=0;loop<16;loop++)wdata(shi[loop],0,1);
set_adr(1,16);
for(loop=16;loop<32;loop++)wdata(chuang[loop],1,0);
set_adr(5,16);
for(loop=16;loop<32;loop++)wdata(xin[loop],1,0);
set_adr(1,32);
for(loop=16;loop<32;loop++)wdata(shi[loop],0,1);
// set_adr(4,0);
//for(loop=8;loop<16;loop++) wdata(shi[loop],0,1);
set_adr(2,32);
for(loop=0;loop<16;loop++) wdata(yan[loop],0,1);
set_adr(4,32);
for(loop=0;loop<16;loop++) wdata(ban[loop],0,1);
//set_adr(5,0);
//for(loop=24;loop<32;loop++) wdata(shi[loop],0,1);
set_adr(3,32);
for(loop=16;loop<32;loop++) wdata(yan[loop],0,1);
set_adr(5,32);
for(loop=16;loop<32;loop++) wdata(ban[loop],0,1);
///////////////////////////////////////////////////第三行显示 创新实验班
set_adr(4,32);
for(loop=0;loop<16;loop++) wdata(xie[loop],1,0);
for(loop=0;loop<16;loop++) wdata(guo[loop],1,0);
set_adr(5,32);
for(loop=16;loop<32;loop++) wdata(xie[loop],1,0);
for(loop=16;loop<32;loop++) wdata(guo[loop],1,0);
set_adr(4,0);
for(loop=0;loop<16;loop++) wdata(hua[loop],0,1);
set_adr(5,0);
for(loop=16;loop<32;loop++) wdata(hua[loop],0,1);
////////////////////////////////////////////////////第四行显示 谢国华
}
}
本文档为【12864不带字库】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。