找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8562|回复: 4
收起左侧

51单片机LCD1602显示汉字(中文)源程序

[复制链接]
ID:699194 发表于 2020-10-5 20:39 | 显示全部楼层 |阅读模式
无聊弄个1602显示汉字的程序玩玩。本程序是在51单片机上实现的,能够实现汉字。汉字是自己写的库是用软件取码如果有需要,大家自己可以根据需要制成想要实现效果的文字。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
83ec9994887dbe6fd313648490dfa22.jpg

单片机源程序如下:
  1. #include"stc15f2k60s2.h"

  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. ///////数据端口接 P0

  5. sbit lcdrs=P2^7;//端口定义
  6. sbit lcdrw=P2^6;//端口定义
  7. sbit lcden=P2^5;//端口定义

  8. uchar num;

  9. uchar code table[]={





  10.                         0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,//一  0x00
  11.                         0x00,0x04,0x1f,0x15,0x15,0x1f,0x04,0x04,//中  0x01
  12.                         0x1F,0x04,0x04,0x06,0x05,0x04,0x04,0x04,//下  0x02
  13.                         0x1F,0x04,0x1F,0x15,0x1F,0x15,0x1F,0x15,//雨  0x03


  14.    0x00,0x00,0x00,0x00,0x1e,0x12,0x12,0x12,//"叶1653"左上半部分代码 0x04
  15.    0x04,0x04,0x04,0x04,0x04,0x04,0x1f,0x04,//"叶"右上半部分代码 0x05
  16.    0x12,0x12,0x12,0x1e,0x00,0x00,0x00,0x00,//"叶"左下半部分代码 0x06
  17.    0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,//"叶"右下半部分代码 0x07  
  18.          
  19. //         


  20.        
  21.       
  22. };

  23. uchar code table1[]={0x00,0x01,0x10,0x10,0x04,0x05,0x10,0x10,0x00,0x01,0x02,0x03,};//自定义字符数据地址



  24. uchar code table2[]={0x02,0x03,0x10,0x10,0x06,0x07,};

  25. /******************************

  26.        ms延时函数

  27. ******************************/



  28. void delay(uchar z)///延时函数


  29. {


  30. uint x,y;


  31. for(x=z;x>0;x--)


  32. for(y=122;y>0;y--);



  33. }

  34. /******************************

  35.    lcd1602写命令函数

  36. ******************************/


  37. void write_cmd(uchar cmd)


  38. {

  39.     P0=cmd; //写了命令

  40.     lcdrs=0;


  41.     lcdrw=0; //选择指令寄存器

  42.   
  43.     lcden=1;




  44.     delay(5);
  45.    

  46. lcden=0; //使能拉低
  47.    

  48. lcden=1;


  49. }



  50. /******************************

  51.     lcd1602写数据函数

  52. ******************************/


  53. void write_date(uchar date)


  54. {


  55.        lcdrs=1;


  56.        lcdrw=0; //选择数据寄存器


  57.        lcden=1;


  58.        P0=date; //写了命令


  59.        delay(5);


  60.        lcden=0; //使能拉低


  61.        lcden=1;


  62. }


  63. /******************************

  64.      lcd1602初始化

  65. ******************************/



  66. void init_lcd1602()


  67. {


  68.      write_cmd(0x01); //清屏
  69.    

  70. write_cmd(0x38); //功能设置


  71.      write_cmd(0x0c); //显示设置


  72.      write_cmd(0x06); //输入方式从左到右


  73.        delay(1);




  74. }



  75. /******************************

  76.         主函数

  77. ******************************/


  78. void main()


  79. {


  80.                         uchar i;
  81.                         init_lcd1602();//1602显示初始化
  82.                         delay(1);
  83.                         while(1)

  84.   {

  85. write_cmd(0x40); //开始写入你要显示的自定义字符、汉字代码
  86.    for(i=0;i<64;i++)
  87.   {

  88. write_date(table[i]);
  89.   delay(5);

  90.   }


  91.   write_cmd(0x80); //从第一行第一列开始显示



  92. for(i=0;i<12;i++) //显示自定义字符

  93. {
  94.   write_date(table1[i]);
  95. delay(5);

  96. }
  97. write_cmd(0xc0); //显示第二行

  98.    for(i=0;i<6;i++)
  99. {

  100. write_date(table2[i]);

  101. delay(5);

  102.       }  

  103. }

  104. }
复制代码

所有资料51hei提供下载:
LCD1602显示中文(汉字).zip (23.12 KB, 下载次数: 132)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:699194 发表于 2020-10-5 20:44 | 显示全部楼层
这个程序是在里面加了滚动显示的

LCD1602显示中文 滚动(汉字).zip

23.96 KB, 下载次数: 49, 下载积分: 黑币 -5

51单片机

回复

使用道具 举报

ID:106977 发表于 2020-10-6 21:09 | 显示全部楼层
谢谢楼主分享!虽然目前800×480分辨率的4寸液晶价格低到60元了,但对于批量大的产品,采用1602较LED数码管显示,功能强、成本低,还是有价值的。
回复

使用道具 举报

ID:204072 发表于 2022-12-22 20:53 | 显示全部楼层
多谢LZ分享,正在找呢!
回复

使用道具 举报

ID:830316 发表于 2023-5-19 20:45 | 显示全部楼层
取模方式是咋样的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表