LCD1602顯示漢字、LCD1602顯示自定義字符,詳細的word格式的的教程,從取模開始每一步的操作都很詳細(word文檔和從附件下載)
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
圖片1.png (18.14 KB, 下載次數: 99)
下載附件
2017-8-18 14:56 上傳
0.png (315.36 KB, 下載次數: 78)
下載附件
2017-8-18 17:51 上傳
0.png (265.67 KB, 下載次數: 80)
下載附件
2017-8-18 17:51 上傳
圖片3.png (304.87 KB, 下載次數: 68)
下載附件
2017-8-18 14:59 上傳
圖片2.png (8.67 KB, 下載次數: 106)
下載附件
2017-8-18 14:59 上傳
單片機源程序如下:
- #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黑下載附件…………
復制代碼
0.png (45.22 KB, 下載次數: 81)
下載附件
2017-8-18 17:54 上傳
所有資料51hei提供下載:
LCD1602自定義顯示.zip
(975.29 KB, 下載次數: 346)
2017-8-18 14:54 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|