LCD1602显示汉字、LCD1602显示自定义字符,详细的word格式的的教程,从取模开始每一步的操作都很详细(word文档和从附件下载)
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg51.h>
- #include<intrins.h> // _nop_();
- #include"lcd.h"
- /////////////////////////////////////////////////////////////////////////////////
- // data 内部RAM,低128字节(0x00-0x7f) //
- // idata 内部RAM,高128字节(0x00-0xff,指针方式,其中0x00-0x7f与data一样) //
- // pdata 外部RAM的前256字节(速度与idata一样) //
- // xdata 外部RAM的全部 //
- /////////////////////////////////////////////////////////////////////////////////
- uchar Set[12] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
- uchar sheng[]={0x04,0x14,0x1f,0x14,0x0e,0x04,0x1f,0x00}; //“生”字字模
- uchar kuai[]={0x0a,0x0a,0x1f,0x1b,0x1f,0x0a,0x0d,0x00}; //“快”字字模
- uchar le[]={0x1e,0x10,0x14,0x1f,0x04,0x15,0x15,0x00}; //“乐”字字模
- uchar yi[]={0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00}; //一,代码 0x00
- uchar er[]={0x00,0x00,0x00,0x0e,0x00,0xff,0x00,0x00}; //二,代码 0x01
- uchar san[]={0x00,0x00,0xff,0x00,0x0e,0x00,0xff,0x00}; //三,代码 0x02
- uchar si[]={0x00,0x00,0xff,0xf5,0xfb,0xf1,0xff,0x00}; //四,代码 0x03
- uchar wu[]={0x00,0xfe,0x08,0xfe,0x0a,0x0a,0xff,0x00}; //五,代码 0x04
- uchar ri[]={0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00}; //“日”字字模
- uchar nian[]={0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x02}; //年,代码 0x06
- uchar yue[]={0x0F,0x09,0x0F,0x09,0x0F,0x09,0x09,0x12}; //月,代码 0x07
- /*
- uchar idata sheng[]={0x04,0x14,0x1f,0x14,0x0e,0x04,0x1f,0x00}; //“生”字字模
- uchar idata ri[]={0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00}; //“日”字字模
- uchar idata kuai[]={0x0a,0x0a,0x1f,0x1b,0x1f,0x0a,0x0d,0x00}; //“快”字字模
- uchar idata le[]={0x1e,0x10,0x14,0x1f,0x04,0x15,0x15,0x00}; //“乐”字字模
- uchar VOL1[]={0x10,0x18,0x17,0x11,0x11,0x17,0x18,0x10}; // [>
- uchar VOL2[]={0x01,0x03,0x1D,0x11,0x11,0x1D,0x03,0x01}; // <]
- uchar Temp[]={0x10,0x06,0x09,0x08,0x08,0x08,0x09,0x06}; // 'C
- uchar gang[]={0x00,0x15,0x15,0x15,0x15,0x15,0x15,0x00}; // |||
- uchar pdata ni1[]={ 0x01,0x02,0x06,0x02,0x02,0x02,0x02,0x00}; //你字左边
- uchar pdata ni2[]={ 0x08,0x0F,0x15,0x04,0x15,0x15,0x04,0x0C}; //你字右边
- uchar pdata hao1[]={ 0x00,0x04,0x1F,0x0A,0x04,0x0A,0x00,0x00}; //好字左边
- uchar pdata hao2[]={ 0x1E,0x02,0x04,0x1F,0x04,0x04,0x0C,0x00}; //好字右边
- uchar pdata yi[]={0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00}; //一,代码 0x00
- uchar pdata er[]={0x00,0x00,0x00,0x0e,0x00,0xff,0x00,0x00}; //二,代码 0x01
- uchar pdata san[]={0x00,0x00,0xff,0x00,0x0e,0x00,0xff,0x00}; //三,代码 0x02
- uchar pdata si[]={0x00,0x00,0xff,0xf5,0xfb,0xf1,0xff,0x00}; //四,代码 0x03
- uchar pdata wu[]={0x00,0xfe,0x08,0xfe,0x0a,0x0a,0xff,0x00}; //五,代码 0x04
- uchar pdata liu[]={0x00,0x04,0x00,0xff,0x00,0x0a,0x11,0x00}; //六,代码 0x05
-
- uchar pdata nian[]={0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x02}; //年,代码 0x06
- uchar pdata yue[]={0x0F,0x09,0x0F,0x09,0x0F,0x09,0x09,0x12}; //月,代码 0x07
- */
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
- // 最多只能显示其中八个,分别对应:
- //代码: 0x00 0x01 0x02 0x03
- //地址: 0x40~0x47 0x48~0x4f 0x50~0x57 0x58~0x5f
- //
- //代码: 0x04 0x05 0x06 0x07
- //地址: 0x60~0x67 0x68~0x6f 0x70~0x77 0x78~0x7f
- //
- // CGRAM首地址为0x40,从0x80开始的地址用于设置数据地址指针
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
-
-
-
- void IntConfiguration();
- uchar SetState=0,SetPlace=10;
- uchar SetState2=0,SetPlace2=10;
- void Delay10ms(void); //误差 0us
- void Delayms(unsigned char c);
- void Delay(uint y);
- /*******************************************************************************
- * 函数名 : main
- * 函数功能 : 主函数
- * 输入 : 无
- * 输出 : 无
- *******************************************************************************/
- void main()
- {
- uint i;
- uint count=0;
- LcdInit();
-
- for(i=0;i<8;i++) //1 显示’一‘
- {
- LcdWriteCom(0x40+i);
- LcdWriteData(yi[i]);
- //Delay(100);
- }
- LcdWriteCom(0x80);
- LcdWriteData(0x00);
- for(i=0;i<8;i++) //2 显示‘二’
- {
- LcdWriteCom(0x48+i);
- LcdWriteData(er[i]);
- //Delay(100);
- }
- LcdWriteCom(0x80+1);
- LcdWriteData(0x01);
-
- for(i=0;i<8;i++) //3 显示‘三’
- {
- LcdWriteCom(0x50+i);
- LcdWriteData(san[i]);
- //Delay(100);
- }
- LcdWriteCom(0x80+2);
- LcdWriteData(0x02);
- for(i=0;i<8;i++) //4 显示‘四’
- {
- LcdWriteCom(0x58+i);
- LcdWriteData(si[i]);
- //Delay(100);
- }
- LcdWriteCom(0x80+3);
- LcdWriteData(0x03);
- for(i=0;i<8;i++) //5 显示’五‘
- {
- LcdWriteCom(0x60+i);
- LcdWriteData(wu[i]);
- //Delay(100);
- }
- LcdWriteCom(0x80+4);
- LcdWriteData(0x04);
- for(i=0;i<8;i++) //6 显示‘日’
- {
- LcdWriteCom(0x68+i);
- LcdWriteData(ri[i]);
- //Delay(100);
- }
- LcdWriteCom(0x80+5);
- LcdWriteData(0x05);
-
- for(i=0;i<8;i++) //7 显示‘年’
- {
- LcdWriteCom(0x70+i);
- LcdWriteData(nian[i]);
- //Delay(100);
- }
- LcdWriteCom(0x80+6);
- LcdWriteData(0x06);
- for(i=0;i<8;i++) //8 显示‘月’
- {
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
LCD1602自定义显示.zip
(975.29 KB, 下载次数: 346)
|