LCD12864液晶显示器模块化程序51单片机
12864液晶显示程序51驱动

#include <reg52.h>#include <intrins.h>sbit LCD_RS =P0^0; //L:COMMAND; H:DATA sbit LCD_RW =P0^1; //L:WRITE; H:READ sbit LCD_E =P0^2; //INPUT ENABLEsbit LCD_CS1 =P0^3; //L有效sbit LCD_RES =P0^4; //L有效#define data_bus P2#define control_bus P0#define uchar unsigned char#define uint unsigned int//=====延时N微秒==============void delay_nus(uint n){while(n--);return;}//=====延时N毫秒==============void delay_nms(uint n){int i;for(i=0;i<n;i++)delay_nus(123);}//=====忙检测=================void check_busy(void){uchar read_data=0xff;data_bus=0xff;LCD_RS=0;LCD_RW=1; //读命令LCD_CS1=0; //片使能while((read_data&0x80)==0x80){LCD_E=1;_nop_();_nop_();read_data=data_bus;LCD_E=0;}LCD_E=0;LCD_CS1=1; //片禁能}//=====写命令到寄存器========= void send_cmd(uchar cmd) small{check_busy();LCD_RS=0; //写的是命令LCD_RW=0; //写命令LCD_CS1=0; //片使能data_bus=cmd;LCD_E=1; //使能_nop_();_nop_();LCD_E=0;_nop_();_nop_();LCD_CS1=1; //片禁能}//=====写数据到DDRAM========= void send_dat(uchar dat) small{check_busy();LCD_RS=1; //写的是数据LCD_RW=0; //写数据LCD_CS1=0; //片使能data_bus=dat;LCD_E=1;_nop_();_nop_();LCD_E=0;_nop_();_nop_();LCD_CS1=1; //片禁能}//=======初始化============== void lcd_initial(void) small{LCD_RES=0;delay_nms(50);LCD_RES=1;LCD_E=0;delay_nms(50);send_cmd(0xA0);send_cmd(0xC8);send_cmd(0xA2);send_cmd(0x2C);send_cmd(0x2E);send_cmd(0x2F);send_cmd(0x25);send_cmd(0x81);send_cmd(0x14);send_cmd(0xAF);send_cmd(0xE0);send_cmd(0x40);}//=======写列地址==============void Set_Colume_Address(unsigned char dat){unsigned char tmp;tmp=dat>>4;send_cmd(0x10|tmp); //送列地址高三位tmp=0x0f&dat;send_cmd(tmp); //送列地址低四位}code unsigned char number[][16] = {/*-- 文字: 0 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*-- 文字: 1 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*-- 文字: 2 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*-- 文字: 3 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,/*-- 文字: 4 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,/*-- 文字: 6 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,/*-- 文字: 7 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,/*-- 文字: 8 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,/*-- 文字: 9 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,/*-- 文字: : --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, /*-- 文字: - --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01}; code unsigned char Hz[][32] = {/*-- 文字: 中--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00, 0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,/*-- 文字: 鼎--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0xF8,0x00,0x00,0x7E,0x52,0x66,0x4A,0x52,0x7E,0x00,0x00,0xF8,0x00,0x00, 0x00,0x84,0x65,0x1D,0x05,0x05,0xFF,0x00,0x00,0xFF,0x05,0x05,0x05,0xFD,0x00,0x00,/*-- 文字: 技--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x08,0x88,0xFF,0x48,0x28,0x00,0xC8,0x48,0x48,0x7F,0x48,0xC8,0x48,0x08,0x00, 0x01,0x41,0x80,0x7F,0x00,0x40,0x40,0x20,0x13,0x0C,0x0C,0x12,0x21,0x60,0x20,0x00,/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x10,0x10,0x10,0x10,0x90,0x50,0xFF,0x50,0x90,0x12,0x14,0x10,0x10,0x10,0x00, 0x10,0x10,0x08,0x04,0x02,0x01,0x00,0x7F,0x00,0x00,0x01,0x06,0x0C,0x18,0x08,0x00 };/****显示汉字的程序****/void DisplayHz(unsigned int Page,unsigned int Col,unsigned char Hz[],unsigned int zilie) {unsigned int PageCnt,ColCnt;for(PageCnt = Page;PageCnt < Page+2;PageCnt ++){send_cmd(0xb0|PageCnt); //page addressSet_Colume_Address(Col);for(ColCnt = 0;ColCnt < zilie;ColCnt ++){send_dat(Hz[(PageCnt-Page)*zilie + ColCnt]);}}}//=====主程序===================void main (void){unsigned char month=0,nian=10,yue=1,tian=1,shi=0,fen=0,miao=0,i=0,j=0; unsigned char months[12]={31,28,31,30,31,30,31,31,30,31,30,31};lcd_initial();send_cmd(0xa6);for(i=0;i<8;i++) //清屏{send_cmd(0xb0|i);Set_Colume_Address(0);for(j=0;j<128;j++)send_dat(0);}while(1){if(++miao>59){miao=0;if(++fen>59){fen=0;if(++shi>23){shi=0;if(++tian>months[month]){tian=0;if(++yue>11){yue=1;nian++;}}}}}DisplayHz(0,0,number[nian/10],8);DisplayHz(0,16,number[nian%10],8);DisplayHz(0,32,number[11],8);DisplayHz(0,48,number[yue/10],8);DisplayHz(0,64,number[yue%10],8);DisplayHz(0,80,number[11],8);DisplayHz(0,96,number[tian/10],8);DisplayHz(0,112,number[tian%10],8);DisplayHz(3,0,number[shi/10],8);DisplayHz(3,16,number[shi%10],8);DisplayHz(3,32,number[10],8);DisplayHz(3,48,number[fen/10],8);DisplayHz(3,64,number[fen%10],8);DisplayHz(3,80,number[10],8);DisplayHz(3,96,number[miao/10],8);DisplayHz(3,112,number[miao%10],8);DisplayHz(6,14,Hz[0],16);DisplayHz(6,42,Hz[1],16);DisplayHz(6,70,Hz[2],16);DisplayHz(6,98,Hz[3],16);delay_nms(6000);}}。
基于51单片机的LCD12864程序设计

意的是 , 专 项规 划 的推 广不 是 漫无 目的 地 发布 , 而 是针 对 极采 用 大 数据 技 术 ,能够 提 高信 息咨 询 服 务 的 水 平 和 质 促 进 数 字资 源 的 有效 利 用 , 避 免 问题 产 生 不 必要 的复 性 地 普及 , 针对 特 定 群体 , 针 对特 定 对 象 , 推 广特 定 信 息 , 量, 杂性 ,避 免 信息 数据 不 能及 时反 馈和 及 时 Ⅱ 向 应 的 问题 , 为 以达 到信 息管理 知 识 的高度 普及 、 信 息 管理 规划 的高度推 促 进 了图书馆 信 息 管理 水平 的 广、 大数据 技 术 的充分 利用 。 大力推 广 图书馆 行 业信 息 管 图 书馆 减 少 了大量 的损 失 , 提 高。 理 专 项计 划 , 可 以 帮助 图 书馆 建 立完 善 的服 务 系统 , 节 省 大 数据 技 术 的应用 过程 是 复杂 的 , 不是 瞬 息之 间 的事 大 量 的人 力物 力 , 避 免 了许 多 不必 要 的流 程 与 负担 , 减 少 情 , 而是 需 要 对 大数 据概 念 有 一 个 清 晰 的 了解 , 充 分发 挥 失误 风 险 , 提 高 了 互联 网的 应 用 , 提 高 了数据 分析 与 资 源 大数据 技 术 的优 势 和特 点 。在 大 数据技 术 的应 用 过程 中 , 共享 , 提 高 了珍贵资 源 资料 的可用 性和价 值 。 定 要 保持 敏 锐 的 嗅 觉 ,对 及 时 出现 的 问题 及 时 反馈 解 5 各 类 图书 馆大数 据技 术推 广和 应用 体 系 对 适 时 出现 的 良性 效 果持 续保 持 , 以优 势促 发 展 , 以 良 要 想提高 大数据 技 术对 图书馆 信 息管 理 的效 力 , 就 必 决 , 性促 进步 ,以 图书馆 信 息管理 水 平 的不 断提 高 为 目标 , 以 须构 建 完善 的 图书馆 大 数据 技术 推 广和 应用体 系 , 政 府 主 大数 据技 术 的应 用 为 方法 , 促 进 新 时代 图书馆 信 息 管理 不 管部 门或行 业协 会 有 必要 召集 国 家图 书馆 以及相 关专 家 , 断 走 向高 质 、 高效 , 为新 时 代 的科 研 发 展 奠定 坚 实 的知 识 针 对 大 数据 管理 制定 图书馆 行 业 大 数据 技 术 推 广 应 用 的 储 备和 价 值 资 源 , 促 进社 会 的 良性发 展 , 促 进 知 识 社 会 的 专项规划 , 并 根据 国 家相 关政 策 和具 体 执 行 流程 , 统 筹 协 不 断腾 飞 ! 调 各 个部 门和 各 个行 业 ,并对 此项 工程 进 行专 项把 控 , 重 参考文献 : 点 关注 , 有效把 控 咨询 、 政 策执 行推 进 、 工作 指 导等相 关 事 …文彦, 武瑞原 , 于洁. 大数据 时代 的图书馆 初探 【 J 】 . 图书与 情 宜 。不 仅 要 制定 大 数据 应 用 于 图 书馆 信 息 管理 的统 一 标 报 , 2 0 1 2 ( 6 ) : 1 5 - 2 1 . 准, 还 需 要 制定 相 应 的激 励 政 策 , 并做 出相 应 的 制度 性 安 【 2 】 韩翠 凤. 大 数据 带 给 图书馆 的影响 与挑 战 【 J 】 _ 图书 与情 报 ,
51单片机驱动显示屏12864

/*-- 文字: 机 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,
0x04,0x03,0x00,0xFF,0x00,0x11,0x08,0x04,0x03,0x00,0xFF,0x00,0x03,0x04,0x08,0x00,
/*-- 文字: 辉 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x44,0x58,0xC0,0x7F,0xD0,0x48,0x26,0x22,0xE2,0x3A,0xA2,0x22,0x22,0x2A,0x06,0x00,
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,
/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
uchar code hz[]={
/*-- 文字: 邓 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x12,0x22,0x42,0x82,0x62,0x1E,0x00,0x00,0xFE,0x02,0x22,0xDA,0x06,0x00,0x00,
基于51单片机的12864液晶时钟完整程序(已通过)

{
uchar flag ;
flag=uc_R1302(0x81); // 在秒寄存器读数 ,ch=
if (flag&0x80) //
{
v_W1302(0x8e,0x00); //
v_W1302(0x80,0x45); //0秒
v_W1302(0x82,0x29); //35分钟
T_RST = 1;
v_WTInputByte(ucAddr); /* 地址,命令 */
ucDa = uc_RTOutputByte(); /* 读1Byte数据 */
T_CLK = 1;
T_RST =0;
return(ucDa);
}
/********************************************************/
void days()
{
if ( yue== 0x01 && ri== 0x01 ){ lcd_write_string(4,3,"元旦节"); }
if ( yue== 0x02 && ri== 0x14 ){ lcd_write_string(4,3,"情人节"); }
if ( yue== 0x03 && ri== 0x08 ){ lcd_write_string(4,3,"妇女节"); }
}
void WRI(char instru) //液晶写指令
{
lcd_check_busy();
RS = 0 ; //显示指令
RW = 0 ; //写
51单片机 12864液晶显示程序

/*========================LCD12864液晶并行驱动程序==========================程序名称:12864液晶驱动程序(并行模式)================================================= ===========================*/#include <at89x52.h>#define uchar unsigned char#define uint unsigned intuchar t,p;/********************************引脚定义***********************************/#define RS P1_0 //RS=0为执行指令;RS=1为执行数据;#define RW P1_1 //读写#define E P1_2 //使能#define PSB P1_3 //低电平(串口驱动);高电平(并口驱动)#define RST P1_4 //LCD复位/********************************定义数组***********************************/uchar code title[] = {"LCD 并行接口测试"}; uchar code website[]={"qwertyuioopplkjh"}; uchar code dig[]={"0123456789"};uchar code dig2[]={0,1,2,3,':'}; ///*******************************相关子程序**********************************/void Init_lcd(); //初始化液晶void lcd_busy(); //忙标志查询void delay100us(); //100us延时程序void write(uchar x,uchar Data); //写单字节函数void Show(uchar address,uchar L,uchar STR1[]); void Show_dig(uchar address,uint number);/*******************************延时子程序**********************************/void delay100(int n){unsigned char i;while(n--)for(i=0;i<100;i++);}/*******************************LCD 忙标志查询******************************/void lcd_busy(void){uchar busy;P0=0xff;RS=0;RW=1;do{E=1;busy=P0;E=0;}while(busy>0x7f);}/*****************************写指令或数据**********************************/void write(uchar x,uchar Data){lcd_busy(); //忙查询if(x==0){RS=0;RW=0; //写单字节命令字}else if(x==1){RS=1;RW=0; //写单字节数据}E=1;P0=Data;E=0;P0=0xff;}/*******************************初始化LCD **********************************/void Init_lcd(void){delay100(20); //启动等待,等LCM讲入工作状态PSB=1; //并口驱动模式RST=0;delay100(4);RST=1; // 复位LCDwrite(0,0x30); //8 位介面,基本指令集write(0,0x0c); //显示打开,光标关,反白关write(0,0x01); //清屏,将DDRAM的地址计数器归零}/*******汉字和字符显示,参数入口:Show(地址,显示宽度,汉字数组)************/void Show(uchar address,uchar L,uchar STR1[]) {uchar i;write(0,address);for(i=0;i<L;i++)write(1,STR1[i]);}/************纯阿拉伯数字显示,参数入口:Show_dig (地址,数字)**************/void Show_dig(uchar address,uint number){uchar shi,ge;shi=number/10;ge=number%10;write(0,address);delay100(20);write(1,dig[shi]);delay100(20);write(1,dig[ge]);}/************************************主程序**********************************/void main(void){Init_lcd();TMOD=0X01;TH0=0xdc;TL0=0x00;ET0=1;TR0=1;EA=1;P3_6=0;delay100(30);Show(0x83,4,"梁浩"); //写数组里的容write(0,0x0d);delay100(30);Show(0x90,16,"电子科技协会会长"); delay100(30);Show(0x88,16,"TEL "); //写英文delay100(30);while(1){Show_dig(0x99,p); //写实时数组}}void exter() interrupt 1{TH0=0xdc;TL0=0x00;t++;if(t==20){t=0;p++;}if(p==60)p=0;}/***************************************end****** *****************************/。
12864图形液晶显示模块与51系列单片机接口技术

单片机与可编程器件液晶显示模块以其微功耗、体积小、显示内容丰富、模块化、接口电路简单等诸多优点得到广泛应用。
液晶显示模块分字符型和点阵型两种,前者只能显示常用的字符,点阵型液晶显示模块除显示字符外还能显示各种图形和汉字。
目前,尽管液晶显示模块种类繁多,但其结构及控制方法是一样的,本文以常用的128×64液晶显示模块为例介绍液晶显示模块的工作原理及其与51系列单片机的接口技术。
12864图形液晶显示模块12864液晶显示模块表示横向有128点,纵向有64点,可显示16×16中文字4行,每行8个字,外形和引脚排列如图1所示。
1. 引脚功能 引脚功能如表1所示。
2. 显示DDRAM与X地址、Y地址排列方式 DDRAM是模块自带的存储单元,用来存放图形信息或数据,DDRAM存储单元与液晶显示屏之间存在一一对应关系,数据为1表示显示选择,对应屏幕亮;数据为0表示显示非选择,对应屏幕不亮。
DDRAM与X、Y地址和显示位置的关系如表2所示。
3.12864液晶显示模块指令12864液晶显示模块基本操作指令如表3所示。
(1)读取状态字 当R/W=1,D/I=0时,在E信号为高的作用下,状态字分别输出到数据总线上。
状态字是了解模块当前工作状态的唯一的信息渠道,在每次对模块操作之前,都要读出状态字判断BUSY是否为“0”。
若不为“0”,则计算机需要等待,直至BUSY =0为止。
(2)显示开关设置 D=1开显示,D=0关显示。
(3)显示起始行设置 指令表中DB5~DB0为显示起始行的地址,取值在0~3FH(1~64行)范围内,它规定了显示屏上最顶一行所对应的显示存储器的行地址。
(4 ) 页面地址设置 页面地址是DDRAM的行地址。
8行为一页,DDRAM共64行即8页,DB2 ̄DB0表示0 ̄7页。
(5)列地址设置 列地址是DDRAM的列地址。
共64列,12864图形液晶显示模块与51系列单片机接口技术・湖南邵阳学院电气信息工程学院 江世明・摘要 文章以128×64液晶显示模块为例,系统地介绍了12864图形液晶显示模块的结构特征、指令系统、工作时序及与51系列单片机接口技术、编程方法。
基于51单片机的12864液晶画点程序
unsigned char largex,largey,smallx,smally; //将两点横纵坐标按大小存储
unsigned char i;
if(x1 > x2)
{
largex = x1;
smallx = x2;
}
else
{
largex = x2;
smallx = x1;
}
if(y1 > y2)
}else{
DL |= (0x01 << (7 - (k % 8))); //修改该点同时保持其他位不变
}
break;
case 2:
if(k < 8){
DH ^= (0x01 << (7 - k)); //修改该点同时保持其他位不变
}else{
DL ^= (0x01 << (7 - (k % 8))); //修改该点同时保持其他位不变
DH &= ~(0x01 << (7 - k)); //修改该点同时保持其他位不变
}else{ //点在低字节
DL &= ~(0x01 << (7 - (k % 8))); //修改该点同时保持其他位不变
}
break;
case 1:
if(k < 8){
DH |= (0x01 << (7 - k)); //修改该点同时保持其他位不变
com(0x34); //在写GDRAM的地址之前一定要打开扩充指令集
//否则地址写不进去!!
for( j = 0 ; j < 32 ; j++ )
{
com(0x80 + j) ; //写Y坐标
51单片机+12864程序
#include<reg52.h>#include"zifuku.h"#define uchar unsigned char#define uint unsigned intsbit di =P2^0; //指令sbit rw =P2^1; // Write or Read,Hread,Lwrite sbit e =P2^2; // 读写使能sbit cs1=P2^3 // cs1=L,选择左边屏sbit rst=P2^6;// Lcm reset,低有效sbit cs2=P2^4; //cs2=L,选择中间屏sbit cs3=P2^5; // cs3=L,选择右边屏sbit bf =P1^7;sbit res=P1^4;void delay(uint us){while(us--);}void delay1(uint ms){uint i,j;for(i=0;i<ms;i++)for(j=0;j<1000;j++);}void write_com(uchar comm){rw=0;di=0;e=1;P1=comm;e=0;}void write_date(uchar dat){rw=0;di=1;e=1;P1=dat;e=0;}void lat_disp(uchar date1,uchar date2){uchar i,j;cs1=1;cs2=1;write_com(0x3f);for(j=0;j<8;j++){write_com(0xb8+j);write_com(0xc0);write_com(0x40);for(i=0;i<32;i++){write_date(date1);write_date(date2);}}}void vshowcustomrow(uchar ucpage,uchar ucline,uchar width,uchar *uca) {uchar count;if(ucline<64){cs1=1;cs2=0;write_com(0x3f);write_com(0xb8+ucpage);write_com(0xc0);write_com(0x40+ucline);{for(count=0;count<width;count++) write_date(*(uca+count));}}else{cs1=0;cs2=1;write_com(0x3f);write_com(0xb8+ucpage);write_com(0x40);write_com(0x40+ucline-64);for(count=0;count<width;count++) write_date(*(uca+count));}}void vshowonechin(uchar ucpage,uchar ucline,uchar *uca){vshowcustomrow(ucpage,ucline ,16,uca);vshowcustomrow(ucpage+1,ucline,16,uca+16);}void vshowonechar(uchar ucpage,uchar ucline,uchar *uca){vshowcustomrow(ucpage,ucline,8,uca);vshowcustomrow(ucpage+1,ucline,8,uca+8);}void vshowgraph(uchar ucpage,uchar ucline,uchar width,uchar high,uchar *uca) {uchar count;for(count=0;count<high;count++){vshowcustomrow(ucpage+count,ucline,width,uca+count*width);}}/*---------------显示1-----------------*/void disp1 (void){lat_disp(0x00,0x00);vshowonechin(0,0,uca_xiao);vshowonechin(0,16,uca_yun);vshowonechin(0,32,uca_ke);vshowonechin(0,48,uca_ji);vshowonechin(0,64,uca_you);vshowonechin(0,80,uca_xian);vshowonechin(0,96,uca_gong);vshowonechin(0,112,uca_si);vshowonechin(2,0,uca_xiao);vshowonechin(2,16,uca_yun);vshowonechin(2,32,uca_pai);vshowonechin(2,48,uca_ye); vshowonechin(2,64,uca_jing); vshowonechin(2,80,uca_xian1); vshowonechin(2,96,uca_shi); vshowonechin(2,112,uca_ping);vshowonechin(4,16,uca_huan); vshowonechin(4,32,uca_ying); vshowonechin(4,48,uca_ni); vshowonechin(4,64,uca_de); vshowonechin(4,80,uca_jia); vshowonechin(4,96,uca_meng);vshowonechar(6,0,uca_T); vshowonechar(6,8,uca_E); vshowonechar(6,16,uca_L); vshowonechar(6,24,uca_maohao);vshowonechar(6,32,uca_yi); vshowonechar(6,40,uca_san); vshowonechar(6,48,uca_qiu); vshowonechar(6,56,uca_er); vshowonechar(6,64,uca_zero); vshowonechar(6,72,uca_er); vshowonechar(6,80,uca_qiu); vshowonechar(6,88,uca_yi); vshowonechar(6,96,uca_ba); vshowonechar(6,104,uca_ba); vshowonechar(6,112,uca_er);}void disp2(void){ lat_disp(0x00,0x00); vshowgraph(2,32,32,4,uca_Pig); }void lcd_initilize(void){rst=0;delay(50);rst=1;write_com(0x3e);write_com(0x3f);}void main(){lcd_initilize();while(1){disp1();delay1(400);lat_disp(0xff,0x00);delay1(400);disp2();delay1(400);}}#include<reg52.h>unsigned char code uca_xiao[]={/*-- 文字: 小--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/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, };unsigned char code uca_yun[]={/*-- 文字: 芸--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x04,0x04,0x24,0x24,0x3F,0x24,0x24,0x24,0x24,0x3F,0x24,0x24,0x04,0x04,0x00, 0x01,0x01,0x41,0x61,0x51,0x49,0x47,0x65,0x21,0x21,0x25,0x29,0x71,0x21,0x01,0x00,};unsigned char code uca_ke[]={/*-- 文字: 科--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x12,0x92,0x72,0xFE,0x51,0x91,0x00,0x22,0xCC,0x00,0x00,0xFF,0x00,0x00,0x00, 0x04,0x02,0x01,0x00,0xFF,0x00,0x04,0x04,0x04,0x02,0x02,0x02,0xFF,0x01,0x01,0x00, };unsigned char code uca_ji[]={/*-- 文字: 技--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x08,0x88,0xFF,0x48,0x28,0x00,0xC8,0x48,0x48,0x7F,0x48,0xC8,0x48,0x08,0x00,0x01,0x41,0x80,0x7F,0x00,0x40,0x40,0x20,0x13,0x0C,0x0C,0x12,0x21,0x60,0x20,0x00, };unsigned char code uca_you[]={/*-- 文字: 有--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x04,0x84,0x44,0xE4,0x34,0x2C,0x27,0x24,0x24,0x24,0xE4,0x04,0x04,0x04,0x00,0x02,0x01,0x00,0x00,0xFF,0x09,0x09,0x09,0x29,0x49,0xC9,0x7F,0x00,0x00,0x00,0x00, };unsigned char code uca_xian[]={/*-- 文字: 限--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0xFE,0x02,0x32,0x4E,0x82,0x00,0xFE,0x4A,0xCA,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00, 0xFF,0x00,0x02,0x04,0x03,0x00,0xFF,0x40,0x20,0x03,0x0C,0x12,0x21,0x60,0x20,0x00, };unsigned char code uca_gong[]={/*-- 文字: 公--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x80,0x40,0x30,0x0E,0x84,0x00,0x00,0x0E,0x10,0x60,0xC0,0x80,0x80,0x00,0x00,0x01,0x20,0x70,0x28,0x24,0x23,0x31,0x10,0x10,0x14,0x78,0x30,0x01,0x00,0x00, };unsigned char code uca_si[]={/*-- 文字: 司--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x10,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x12,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x1F,0x04,0x04,0x04,0x04,0x04,0x04,0x0F,0x00,0x20,0x40,0x3F,0x00,0x00, };unsigned char code uca_da[]={/*-- 文字: 大--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00, };unsigned char code uca_pai[]={/*-- 文字: 牌--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0xFE,0x90,0x90,0x9F,0x10,0x00,0xFE,0x92,0xD3,0xBE,0x92,0x92,0xFE,0x00,0x00, 0x40,0x3F,0x00,0x00,0x7F,0x04,0x04,0x06,0x05,0x04,0xFF,0x04,0x04,0x05,0x04,0x00, };unsigned char code uca_ye[]={/*-- 文字: 液--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x61,0x06,0xE0,0x18,0x84,0xE4,0x1C,0x84,0x65,0xBE,0x24,0xA4,0x64,0x04,0x00,0x04,0x04,0xFF,0x00,0x01,0x00,0xFF,0x41,0x21,0x12,0x0C,0x1B,0x61,0xC0,0x40,0x00, };unsigned char code uca_jing[]={/*-- 文字: 晶--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x00,0x7E,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x7E,0x00,0x00,0x00,0x00, 0x00,0x7F,0x25,0x25,0x25,0x25,0x7F,0x00,0x00,0x7F,0x25,0x25,0x25,0x25,0x7F,0x00, };unsigned char code uca_xian1[]={/*-- 文字: 显--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x3E,0x2A,0xEA,0x2A,0x2A,0x2A,0xEA,0x2A,0x3E,0x00,0x00,0x00,0x00, 0x20,0x21,0x22,0x2C,0x20,0x3F,0x20,0x20,0x20,0x3F,0x28,0x24,0x23,0x20,0x20,0x00, };unsigned char code uca_shi[]={/*-- 文字: 示--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x20,0x20,0x22,0x22,0x22,0x22,0xE2,0x22,0x22,0x22,0x22,0x22,0x20,0x20,0x00,0x10,0x08,0x04,0x03,0x00,0x40,0x80,0x7F,0x00,0x00,0x01,0x02,0x0C,0x18,0x00,0x00, };unsigned char code uca_ping[]={/*-- 文字: 屏--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0xFF,0x09,0x49,0x59,0xE9,0x49,0x49,0x49,0xE9,0x59,0x49,0x4F,0x00,0x00, 0x40,0x30,0x0F,0x82,0x42,0x32,0x0F,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x00, };unsigned char code uca_huan[]={/*-- 文字: 欢--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x14,0x24,0x44,0x84,0x64,0x1C,0x20,0x18,0x0F,0xE8,0x08,0x08,0x28,0x18,0x08,0x00, 0x20,0x10,0x4C,0x43,0x43,0x2C,0x20,0x10,0x0C,0x03,0x06,0x18,0x30,0x60,0x20,0x00, };unsigned char code uca_ying[]={/*-- 文字: 迎--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x41,0xCE,0x04,0x00,0xFC,0x04,0x02,0x02,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00, 0x40,0x20,0x1F,0x20,0x40,0x47,0x42,0x41,0x40,0x5F,0x40,0x42,0x44,0x43,0x40,0x00, };unsigned char code uca_ni[]={/*-- 文字: 你--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x40,0xF0,0x2C,0x43,0x20,0x98,0x0F,0x0A,0xE8,0x08,0x88,0x28,0x1C,0x08,0x00, 0x00,0x00,0x7F,0x00,0x10,0x0C,0x03,0x21,0x40,0x3F,0x00,0x00,0x03,0x1C,0x08,0x00, };unsigned char code uca_de[]={/*-- 文字: 的--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0xF8,0x8C,0x8B,0x88,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0x08,0xF8,0x00,0x00, 0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x03,0x26,0x40,0x20,0x1F,0x00,0x00, };unsigned char code uca_jia[]={/*-- 文字: 加--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x08,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x20,0x40,0x3F,0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00, };unsigned char code uca_meng[]={/*-- 文字: 盟--*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0xFE,0x92,0x92,0x92,0xFE,0x00,0x80,0x7E,0x2A,0x2A,0x2A,0x2A,0xFE,0x00,0x00, 0x40,0x40,0x7C,0x44,0x44,0x7C,0x46,0x45,0x44,0x7C,0x44,0x45,0x7E,0x41,0x40,0x00, };unsigned char code uca_T[]={/*-- 文字: T --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00, };unsigned char code uca_E[]={/*-- 文字: E --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00, };unsigned char code uca_L[]={/*-- 文字: L --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00, };unsigned char code uca_maohao[]={/*-- 文字: : --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, };unsigned char code uca_zero[]={/*-- 文字: 0 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,};unsigned char code uca_yi[]={/*-- 文字: 1 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, };unsigned char code uca_er[]={/*-- 文字: 2 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00, };unsigned char code uca_san[]={/*-- 文字: 3 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00, };unsigned char code uca_s[]={/*-- 文字: 4 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00, };unsigned char code uca_wu[]={/*-- 文字: 5 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00, };unsigned char code uca_liu[]={/*-- 文字: 6 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00, };unsigned char code uca_qi[]={/*-- 文字: 7 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, };unsigned char code uca_ba[]={/*-- 文字: 8 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00, };unsigned char code uca_qiu[]={/*-- 文字: 9 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00, };unsigned char code uca_Pig[]={0x00,0x80,0x40,0x30,0x08,0x04,0x82,0x81,0x61,0x01,0x12,0x8A,0x89,0x11,0x01,0x05, 0x13,0x09,0x89,0x91,0x01,0x31,0xC2,0x0A,0x04,0x02,0x02,0x02,0x02,0x1C,0xE0,0x00, 0x06,0x05,0xC4,0x32,0x0A,0x05,0x82,0x41,0x20,0x26,0x49,0x50,0x5C,0xAD,0xA6,0xA0, 0x86,0x49,0x50,0x5C,0x8D,0x06,0x80,0x41,0x02,0x02,0x04,0x0C,0x34,0xC8,0x09,0x0E, 0x00,0x00,0x03,0x0C,0x10,0x20,0x43,0x54,0xA8,0xD0,0x90,0x26,0x26,0x40,0x40,0x4C, 0x4C,0x20,0x20,0x90,0x4C,0x03,0x83,0x84,0x40,0x40,0x20,0x30,0x0C,0x03,0x00,0x00,0xE0,0xF0,0xF8,0xDC,0x8E,0x03,0x1F,0x21,0x5C,0xB4,0x34,0x1D,0x0D,0x06,0x0E,0x0E, 0x06,0x0D,0x1D,0x35,0x35,0x1D,0x80,0x40,0x21,0x1F,0x03,0x8E,0xDC,0xF8,0xF0,0xE0} ;//图片。
中文图形12864点阵液晶显示模块与51单片机的并行接口电路及C51程序设计
BF 位 ! 当 BF 为 0 时 !LM3033B *0BR3 才可接收 新的指令或数据 " 在操作时 !LM3033B+0BR3 在单
片机的时钟信号的控制下 ! 数据通过数据线传送给
LM3033B,0BR3 ! 当 LM3033B-0BR3 成功接收 到数据后 ! 转入内部时钟控制 ! 封 锁 I/O 口 缓 冲 器 !
技 术 交 流
}
! 结论
在单片机与液晶的接口中 ! 关键是要满足液晶 的时序要求 * 在软件编程中 ! 关键是要进行正确的初 始化 + 操作及写入显示内容的代码 $ 以上接口电路和 相应的程序已经通过调试 ! 并在实际中得到应用 $ 由
& 2008’ 07- 0041- 04 文章编号 "1006- 6268
中文图形 12864 点阵液晶显示模块与 51 单片机的并行接口电路及 C51 程序设计
李志广 :J;! 李晓泉 L! 淮俊霞 :J; &:Q 河北工业大学应用物理系 ! 天津 L$$:L$%
技 术 交 流
;Q深圳市拓普微科技开发有限公司 ! 深圳 D:<$DX% LQ天津市轻工业设计院 ! 天津 L$$:YL ’
[1]杨应平 , 石城 , 蒋爱湘 , 李振华 . 图形点阵液晶显示 模块与 51 系列单片机的接口设计 [J ]. 现代显示 ! 2006,(5):41- 45. [2]李良成 , 张永顺 , 张璟 . 基于 MSP430 单片机的液
晶显示[J ]. 现代显示 !2007 !(5):32- 33.
其对应关系如表图形显示绘图显示ram提供64x32个位元组的记忆空由扩充指令设定绘图ram位址在更改绘图ram时由扩充指令设定gdram位址先设置垂直位址再设置水平位址连续写入两个位元组的资料来完成垂直与水平的坐标位址再写入两个资料到绘图ram而位址计数器ac会自动加一整个写入绘图ram的步骤如下
LCD12864液晶显示器C51单片机子程序
#include <reg52.h>#ifndef __LCD12864_H__#define __LCD12864_H__#include <intrins.h>#define uchar unsigned char#define uint unsigned int/*端口定义*/#define LCD_data P0 //数据口sbit LCD_RS = P2^7; //寄存器选择输入sbit LCD_RW = P2^6; //液晶读/写控制sbit LCD_EN = P2^5; //液晶使能控制sbit LCD_PSB = P1^4; //串/并方式控制#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};/* 延时函数*/void delay1(int ms){while(ms--){uchar i;for(i=0;i<250;i++){_nop_();_nop_();_nop_();_nop_();}}}/*检查LCD忙状态*/ /*lcd_busy为1时,忙,等待。
lcd-busy为0时,闲,可写指令与数据。
*/ bit lcd_busy(){bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;delayNOP();result = (bit)(P0&0x80);LCD_EN = 0;return(result);/*写指令到LCD */ /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。
*/ void lcd_wcmd(uchar cmd){//while(lcd_busy());LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();P0 = cmd;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0;}/*写数据到LCD */ /*RS=H,RW=L,E=高脉冲,D0-D7=数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LCD12864 液晶显示器模块化程序(51单片机)/**********************lcd12864.h 头文件**********************/#ifndef _LCD12864_H_#define _LCD12864_H_extern void lcd12864_busy(); //忙标志函数extern void led12864_clear();//清屏extern void lcd12864_init(); //初始化函数extern void lcd12864_pxy(unsigned char p,unsigned char x,unsigned char y);//数据的显示位置,p=0左半屏,p=1右半屏,p=2两半屏全选,xy为显示的坐标,第四象限,用正值表示。
extern void lcd12864_zifu(unsigned char p,unsigned char x,unsigned char,unsigned char m);//第m个字符的显示位置,与汉字的定义一样,只是xy的坐标的值应小于等于7.extern void lcd12864_hanzi(unsigned char p,unsigned char x,unsigned char y,unsigned char m);//第m个汉字的显示位置,p=0左半屏,p=1右半屏,p=2两半屏全选,xy为显示的坐标,第四象限,用正值表示,x或y的值都应小于等于3。
m为显示的第m个汉字。
#endif/**********************lcd12864.c 文件**********************/#include;#define uint unsigned int#define uchar unsigned charsbit cs2=P2^0;sbit cs1=P2^1;sbit e=P2^2;sbit rw=P2^3;sbit rs=P2^4;uchar code zifu[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,//,00x00,0x00,0x58,0x38,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,//。
10x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//!20x00,0x00,0x00,0x5F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};uchar code ziku[]={//0x80,0x40,0xF0,0x2C,0x43,0x20,0x98,0x0F,0x0A,0xE8,0x08,0x88,0x28,0x1C,0x08,0x00,//"你", //0x00,0x00,0x7F,0x00,0x10,0x0C,0x03,0x21,0x40,0x3F,0x00,0x00,0x03,0x1C,0x08,0x00,0x80,0x84,0x44,0x44,0x24,0x14,0x04,0xFF,0x04,0x14,0x24,0x24,0x46,0xC4,0x40,0x00,//"李",0汉字后面的数字表示汉字的代号,方便使用0x00,0x08,0x08,0x08,0x09,0x49,0x89,0x7D,0x0D,0x0B,0x09,0x08,0x0C,0x08,0x00,0x00,0x10,0x10,0x10,0xFF,0x90,0x50,0xFE,0x92,0x92,0x92,0x92,0x92,0x9A,0xD3,0x82,0x00,//"振",10x02,0x42,0x81,0x7F,0x40,0x30,0x0F,0x00,0xFF,0x40,0x07,0x18,0x28,0x64,0x22,0x00,0x80,0x40,0x20,0xF8,0x07,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x68,0x4C,0x08,0x00,//"伟",20x00,0x00,0x00,0xFF,0x02,0x02,0x02,0x02,0x02,0xFF,0x02,0x12,0x22,0x1F,0x02,0x00,0x00,0x00,0x00,0xC0,0x70,0x20,0x00,0xFF,0x00,0x10,0x20,0xC0,0x80,0x00,0x00,0x00,//小30x04,0x02,0x01,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x01,0x07,0x02,0x00,0x00,0x04,0x84,0x44,0x3C,0x44,0x85,0x06,0x04,0xC4,0x3C,0x44,0x84,0x04,0x00,0x00,//卒40x04,0x05,0x04,0x04,0x04,0x04,0x05,0xFE,0x05,0x04 ,0x04,0x04,0x05,0x04,0x04,0x00,0x40,0x41,0xCE,0x04,0x00,0x80,0x40,0xBE,0x82,0x82 ,0x82,0xBE,0xC0,0x40,0x40,0x00,//设50x00,0x00,0x7F,0x20,0x90,0x80,0x40,0x43,0x2C,0x10 ,0x10,0x2C,0x43,0xC0,0x40,0x00,0x20,0x21,0x2E,0xE4,0x00,0x00,0x20,0x20,0x20,0x20 ,0xFF,0x20,0x20,0x20,0x20,0x00,//计60x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,0x00,0x00 ,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,//,70x00,0x00,0x58,0x38,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,//。
80x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,//!90x00,0x00,0x00,0x5F,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00};/*void delay(uchar i)//1ms延时函数{uchar a,b;for(b=i;b>;0;b--)for(a=110;a>;0;a--);}*/void lcd12864_busy()//忙标志位函数{uchar i;rw=1;rs=0;while(1){P0=0xff;e=1;//i=P0;e=0;i=P0;i=i&0x80;if(i!=0x80)break;}}lcd12864_writedat(uchar dat) //写数据函数{//lcd12864_busy();rw=0;rs=1;e=1;P0=dat;e=0;}lcd12864_writecom(uchar com) //写命令函数//lcd12864_busy();rw=0;rs=0;e=1;P0=com;e=0;}void lcd12864_init()//初始化函数{lcd12864_writecom(0x3f);//开显示关显示为0x3elcd12864_writecom(0xb8);//设置页地址为0.第一页。
lcd12864_writecom(0xc0);//设置显示起始行地址,为第一行显示到液晶屏上lcd12864_writecom(0x40);//设置列地址}lcd12864_pxy(uchar p,uchar x,uchar y) //数据的位置,p=0左半屏,p=1右半屏,p=2两半屏全选,xy为显示的坐标,第四象限,用正值表示。
{switch(p)case 0:cs1=0;cs2=1;break;case 1:cs1=1;cs2=0;break;case 2:cs1=0;cs2=0;break;}lcd12864_writecom(0xb8+y);lcd12864_writecom(0x40+x);}lcd12864_zifu(uchar p,uchar x,uchar y,uchar m)//第m个字符的显示位置,与测字的定义一样,只是xy的坐标的值应小于等于7.{uchar i;lcd12864_pxy(p,x*8,y);for(i=0;i;#include"lcd12864.h"void main(){lcd12864_init();lcd12864_clear();lcd12864_hanzi(0,0,0,0);//李lcd12864_hanzi(0,1,0,1);//振lcd12864_hanzi(0,2,0,2);//伟lcd12864_hanzi(0,3,0,8);// 。
lcd12864_hanzi(0,0,2,3);//小lcd12864_hanzi(0,1,2,4);//卒lcd12864_hanzi(0,2,2,5);//设lcd12864_hanzi(0,3,2,6);//计lcd12864_hanzi(1,0,2,9);//!lcd12864_zifu(1,6,6,8); //!的左上部分开以字符的形式显示lcd12864_zifu(1,7,6,9);//!的右上部lcd12864_zifu(1,6,7,10);//!的左下部lcd12864_zifu(1,7,7,11);//!的右下部while(1);}。