文档详情

12864程序,字库与自定义字符的显示.doc

发布:2020-09-13约2.85千字共5页下载文档
文本预览下载声明
/*------------------------------------ 12864并口输入,在输入输出数据是注意时序 之前由于忙检测时序写错,而无法显示字库文字 自定义字符注意地址与编码方式对应,不然会 显示乱码 --------------------------------------*/ #includereg52.h sbit RS = P2^4; sbit RW = P2^5; sbit E = P2^6; sbit RES = P2^3; sbit PSB = P2^1; #define data_port P0 #define uchar unsigned char #define uint unsigned int uchar code display[]={西华}; uchar code user[]={ /*-- 文字: 我 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 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 }; uchar code user1[]={ /*-- 文字: 你 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0x08,0x80,0x08,0x80,0x08,0x80,0x11,0x38,0x11,0xC8,0x32,0x10,0x50,0x40, 0x90,0x40,0x12,0x50,0x12,0x4C,0x14,0x44,0x11,0x40,0x10,0xC0,0x00,0x00,0x00,0x00 }; void delay(uint xms) { uint i,j; for(i=0;ixms;i++) for(j=0;j125;j++); } void check_busy(void) { RW=1; RS=0; E=1; data_port=0xff; while((data_port0x80)==0x80);//data_port0x80必须加上括号 E=0; } void w_cmd(uint dat) {check_busy(); RS=0; RW=0; E=1; data_port=dat; delay(1); E=0; delay(1); } void w_dat(uint dat) {check_busy(); RS=1; RW=0; E=1; data_port=dat; delay(1); E=0; delay(1); } void init_lcd(void) { delay(40); PSB=1; RES=0; delay(1); RES=1; delay(10); w_cmd(0x30);//功能设置,选着8位元模式 delay(1); w_cmd(0x30);//选择基本指令集,因为DL与RE不能同时改变需要两个指令 delay(1); w_cmd(0x0c);//开显示(无游标、不反白) delay(1); w_cmd(0x01);//clear print delay(13); w_cmd(0x06);//指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位,光标从右向左加1位移动,屏幕不移动 delay(1); } /*------------------------------------------------ 显示字符串 x:横坐标值,范围0~8 y:纵坐标值,范围1~4 ------------------------------------------------*/ void post(uchar x,uchar y) { uchar add; switch(y) {case 1:add=0x80;break; case 2:add=0x90;break; case 3:add=0x88;break; case 4:add=0x98;break; default:break; } add+=x; w_cmd(add); } /*--------------------------------- 写入自定义字符 四种编码与写入的地址是一一对应关系;
显示全部
相似文档