标题: LCD1602能显示中文吗 [打印本页]

作者: 1111122223333    时间: 2018-12-30 22:30
标题: LCD1602能显示中文吗
如题

作者: admin    时间: 2018-12-30 22:36
51hei搜索 “1602 中文”即可找到答案 http://www.51hei.com/bbs/dpj-132220-1.html
作者: sjh234    时间: 2018-12-30 22:57
没办法显示的,LCD1602的字符字摸关系里面没有办法构成中文
作者: angmall    时间: 2018-12-31 00:59
我给你来个程序试试


  1. #include <STC15.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define DataPort P0                                // 数据端口         
  6. #define Busy        0x80

  7. sbit        RS        = P2^1;                //LCD控制引脚定义
  8. sbit        RW        = P2^2;
  9. sbit        E        = P2^3;

  10. code char exampl[]="Hello Every Body";
  11. code char examp2[]={0x32,0x30,0x31,0x36,0x00,0x31,0x01,0x32,0x36,0x02};
  12. code char Hzzimo[]={0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x00, //“年”
  13.                         0x0F,0x09,0x0F,0x09,0x0F,0x09,0x11,0x00, //“月”
  14.                         0x0F,0x09,0x09,0x0F,0x09,0x09,0x0F,0x00};//“日”

  15. /******************************** 1Ms延时函数 ********************************/
  16. void Delayms(){             //1Ms延时 @12MHzx
  17.         uchar i, j;                                  
  18.         i = 12;        j = 169;
  19.         do{
  20.                 while (--j);
  21.         } while (--i);
  22. }

  23. /*************************** Ms延时函数 *****************************/
  24. void Delay(uchar t){
  25.   while(--t) Delayms();
  26. }

  27. /******************************** 400Ms延时函数 ********************************/
  28. void Delay400Ms(void){
  29.         unsigned char i, j, k;
  30.         _nop_();_nop_();i = 19;
  31.         j = 62;k = 43;
  32.         do{
  33.                 do{
  34.                         while (--k);
  35.                 } while (--j);
  36.         } while (--i);}

  37. /**************************** 等待允许函数 ******************************/
  38. void WaitForEnable( void ) {
  39.         DataPort = 0xff;
  40.         RS =0; RW = 1; _nop_();       
  41.         Delayms();       
  42.         E = 1; _nop_(); _nop_();
  43.         Delayms();
  44.         while( DataPort & Busy );
  45.         E = 0;
  46. }       

  47. /**************************** 写命令函数 ******************************/
  48. void LcdWriteCommand( uchar CMD,uchar AttribC ) {
  49.         if (AttribC) WaitForEnable();                                // 检测忙信号?
  50.         RS = 0;        RW = 0; _nop_();
  51.         DataPort = CMD; _nop_();                                        // 送控制字子程序
  52.         E = 1;_nop_();_nop_();E = 0;                        // 操作允许脉冲信号       
  53. }
  54.        
  55. /*************************** 写数据函数 ***************************/
  56. void LcdWriteData( char dataW ) {
  57.         WaitForEnable();                                                        // 检测忙信号
  58.         RS = 1; RW = 0; _nop_();
  59.     DataPort = dataW; _nop_();
  60.         E = 1; _nop_(); _nop_(); E = 0;                // 操作允许脉冲信号               
  61. }

  62. /**************************** 显示光标定位函数 ****************************/
  63. void LocateXY( char posx,char posy) {
  64. uchar temp;
  65.         temp = posx & 0xf;
  66.         posy &= 0x1;
  67.         if ( posy )temp |= 0x40;
  68.         temp |= 0x80;
  69.         LcdWriteCommand(temp,0);
  70. }

  71. /**************************** 单字符显示函数 ******************************/
  72. void DispOneChar(uchar x,uchar y,uchar Wdata) {
  73.         LocateXY( x, y );                                // 定位显示字符的x,y位置
  74.         LcdWriteData( Wdata );                        // 写字符
  75. }


  76. /***************************** 显示字符串函数 *****************************/
  77. void ePutstr(uchar x,uchar y,uchar j, uchar code *ptr){
  78.         uchar i;
  79.         for (i=0;i<j;i++) {
  80.                 DispOneChar(x++,y,ptr[i]);
  81.                 if ( x == 16 ){
  82.                         x = 0; y ^= 1;
  83.                 }
  84.         }
  85. }

  86. /***************************** LCD初始化函数 ********************************/
  87. void LcdReset( void ) {
  88.            LcdWriteCommand( 0x38, 0);                        // 显示模式设置(不检测忙信号)
  89.                 Delay(5);
  90.           LcdWriteCommand( 0x38, 0);                        // 共三次
  91.                 Delay(5);
  92.           LcdWriteCommand( 0x38, 0);
  93.                 Delay(5);
  94.           LcdWriteCommand( 0x38, 1);                        // 显示模式设置(以后均检测忙信号)
  95.     LcdWriteCommand( 0x08, 1);                        // 显示关闭
  96.            LcdWriteCommand( 0x01, 1);                        // 显示清屏
  97.           LcdWriteCommand( 0x06, 1);                        // 显示光标移动设置
  98.           LcdWriteCommand( 0x0c, 1);                        // 显示开及光标设置
  99. }

  100. /************************** 自定义汉字字符函数 ***************************/
  101. void Hz(){
  102.         uchar i;
  103.         LcdWriteCommand( 0x40,1 );
  104.         for (i=0;i<24;i++){
  105.                 LcdWriteData(Hzzimo[i]);
  106.         }
  107. }

  108. /******************************* 主函数 **********************************/
  109. void main(void){
  110.         LcdReset();
  111.         Delay400Ms();
  112.         Hz();
  113.         ePutstr(0,0,16,exampl);                // 第一行从第0位开始显示Hello Every Body
  114.         ePutstr(4,1,10,examp2);                // 第二行从第4位开始显示2014年5月26日
  115.         while(1);
  116. }

复制代码

作者: Teslatony    时间: 2018-12-31 15:29
可以显示中文  简单的可以显示
作者: xieyunyan    时间: 2018-12-31 18:14
一般需要取字模软件,生成点阵数据,最后按照写点程序调用即可。
作者: 画流星    时间: 2018-12-31 19:18
LCD1602是字符型液晶,只能显示ASCII码字符,如数字、大小写字母、各种符号等等
作者: qweqwe99    时间: 2018-12-31 21:22
好像不能显示中文
作者: wcxhs    时间: 2018-12-31 23:35
1602液晶是字符型液晶,总共有2行,每行16个字符。每个字符有效的可显示字体是5*8点阵字体。所以通常无法显示中文
作者: 1196779686    时间: 2019-1-1 02:22
不能显示汉字
作者: gh001    时间: 2019-1-1 09:17
通过字模的方式,自己设计汉字字模,但是显示效果不一定好!
作者: 天风情    时间: 2019-1-1 09:43
不能,只能显示ASCII码。想显示汉字的话用12864
作者: xiaob123    时间: 2019-1-1 09:43
可以显示简单的中文,复杂的就不行了
作者: gh001    时间: 2019-1-1 13:59
LCD2004 1602液晶显示汉字和自定义字符教程+仿真+keil程序
http://www.51hei.com/bbs/dpj-92901-1.html
作者: 寒烟泪    时间: 2019-1-1 15:34
可以通过取字模的软件然后在输出到1602.但是复杂的字不一定好,而且效果也不咋地
作者: 微扬    时间: 2019-1-1 16:22
不可以显示的哦
作者: jll586    时间: 2019-1-1 16:43
好像不行把
作者: 25Hzzz    时间: 2019-1-1 17:54
只能显示笔画比较少的汉字
作者: 小润龙    时间: 2019-1-1 22:50
不能显示中文lcd没有中文字库,它的像素太小,不能显示汉字,汉字至少需要8*8的像素,,你可以使用LCD12864
作者: l280709854    时间: 2019-1-2 09:07
不能显示
作者: 爱爱爱    时间: 2019-1-5 10:02
不能显示  12864能显示中文  1602只能显示数字  英文字母  和符号
作者: 1137221527    时间: 2019-1-5 17:10
建议别用  一般来说是不能的   最好用12864
作者: 2925141396    时间: 2019-1-5 18:47
不能,12864可以
作者: T34/85    时间: 2019-1-5 19:59
没办法显示的,百度有使用手册

作者: deln    时间: 2019-1-6 10:41
写出的汉子也不清晰
作者: 嘿巴扎黑    时间: 2019-1-6 14:35
不能的,最好使用12864
作者: yaoji123    时间: 2019-1-6 21:31
不能,点阵数不够汉字显示。
作者: 小匠人    时间: 2019-1-7 01:12
能的,百度一下就能找到相应教程
作者: wph578092851    时间: 2019-1-7 09:29

没办法显示的,LCD1602的字符字摸关系里面没有办法构成中文
作者: santong    时间: 2019-1-7 12:25
应该是不能显示。
作者: 鱼主~    时间: 2019-1-7 18:45
不能显示的,只能显示字符
作者: 师稷    时间: 2019-1-7 22:19
需要购买标识带有中文字库的LCD1602液晶屏
作者: weidoit    时间: 2019-1-8 21:07

可自定义简单的字符或者图形符号。
作者: 累不死的狗    时间: 2019-1-9 00:08
不能显示中文,显示中文可以拥12864
作者: xiaohu123456789    时间: 2019-1-9 00:47
lcd1602能显示一些简单的汉子。像年月日
作者: (ˉ(∞)ˉ)昌盛    时间: 2019-1-9 16:47
好像只显示字符
作者: 轻舞飞鸢    时间: 2019-1-9 18:32
1602要分种类。标识带有中文字库的LCD1602液晶屏 。液晶可以12864可以显示汉字。
作者: shuisheng60    时间: 2019-2-5 01:32
不仅是能,而且是很能啊
作者: studentluck    时间: 2019-2-5 10:09
自己做字库就能显示,就像点阵LED那样,都是一个点一个像素,然后一个像素一个像素的去画,最终形成一个汉字的字节,再在程序里面用驱动函数写进去就可以了
作者: jinsheng7533967    时间: 2019-2-5 20:14
这边看过来,有你想要的东东
作者: 高频驱动-春哥    时间: 2019-2-6 21:50
可以显示但是只有5*7的分辨率,可以显示一些简单的汉字
作者: 51黑游客登陆    时间: 2019-12-28 08:48
显示的也不太好
作者: yidawei001    时间: 2020-1-2 10:57
不能显示汉字!
作者: w1179benp    时间: 2020-1-3 08:10
只有你想不到的,没,,,,,,,,,,,,,,,
作者: TTQ001    时间: 2020-1-3 09:48
1602 LCD 可以显示简单的中文和自定义字符,复杂的就不能显示了
作者: 000123456789    时间: 2020-6-29 16:38
angmall 发表于 2018-12-31 00:59
我给你来个程序试试

点赞      
作者: szzhuguang    时间: 2020-6-30 11:43
不能 ,可以模拟显示,但不全。
作者: 单片机爱好者223    时间: 2020-6-30 13:27
自己取模就可以显示中文




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1