找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2024|回复: 5
打印 上一主题 下一主题
收起左侧

单片机+lcd12864不能显示汉字 keil 0xfd 补丁已经打过

[复制链接]
跳转到指定楼层
楼主
20黑币
初学lcd12864 (带字库)。请教大神为什么液晶屏只有左上角显示4排数字,不能显示汉字。
keil 0xfd 补丁已经打过。是我程序有问题还是别的原因。。提前谢谢大家的帮助

下面是我的代码:://///////////
  1. ///////////////
  2. // 系统时钟 : 11.0592MHZ
  3. // 含字库
  4. /* ***************************************************** */
  5. #include <reg52.h>
  6. #include <intrins.h>
  7. #define uint unsigned int
  8. #define uchar unsigned char
  9. #define Lcd_data P0 //数据总线

  10. /* ***************************************************** */
  11. // 位定义
  12. /* ***************************************************** */
  13. sbit LCD_RS = P2^4; //存储器选择输入
  14. sbit LCD_RW = P2^5; //液晶读/写控制
  15. sbit LCD_EN = P2^6; //液晶使能控制
  16. sbit LCD_PSB = P2^7;//串/并方式控制
  17. //显示内容数组
  18. uchar code dis1[]={"许多年以后"};
  19. uchar code dis2[]={"你是否还爱我"};
  20. uchar code dis3[]={"依偎在我怀里"};
  21. uchar code dis4[]={"叫我一声老公"};
  22. #define delaynop();{_nop_();_nop_();_nop_();_nop_();};
  23. //void delay0(uchar x);//x*0.14ms
  24. //void lcd_pos(uchar X,uchar Y);//确定显示位置
  25. void delay(uint ms)
  26. {
  27.    while(ms--)
  28.    {
  29.       uchar i;
  30.    for(i=0;i<250;i++)
  31.    {
  32.      _nop_();
  33.   _nop_();
  34.   _nop_();
  35.   _nop_();
  36.    }
  37.    }
  38. }
  39. //LCD 忙状态查询
  40. //lcd_busy 为1是忙 等待 为0是 闲可写指令于数据
  41. bit lcd_busy()
  42. {
  43.     bit result;
  44. LCD_RS = 0;
  45. LCD_RW = 1;
  46. LCD_EN = 1;
  47. delaynop();
  48. result = (bit)(P0&0x80);
  49. LCD_EN = 0;
  50. return (result);
  51. }
  52. //写指令到LCD
  53. //RS=L RW=L E=H,D0-D7=指令码
  54. void lcd_wcmd(uchar cmd)
  55. {
  56.     while(lcd_busy());
  57. LCD_RS = 0;
  58. LCD_RW = 0;
  59. LCD_EN = 0;
  60. _nop_();
  61. _nop_();
  62. P0 = cmd;
  63. delaynop();
  64. LCD_EN = 1;
  65. delaynop();
  66. LCD_EN = 0;
  67. }
  68. //写数据到LCD
  69. //RS=H RW=L E=H D0-D7=数据
  70. void lcd_wdat(uchar dat)
  71. {
  72.     while(lcd_busy());
  73. LCD_RS = 1;
  74. LCD_RW = 0;
  75. LCD_EN = 0;
  76. P0 = dat;
  77. delaynop();
  78. LCD_EN = 1;
  79. delaynop();
  80. LCD_EN = 0;
  81. }
  82. //LCD初始化
  83. void lcd_init()
  84. {
  85.     LCD_PSB = 1;    //并口
  86. lcd_wcmd(0x34); //扩充指令操作
  87. delay(5);
  88. lcd_wcmd(0x30); //基本指令操作
  89. delay(5);
  90. lcd_wcmd(0x0c); //显示开/关光标
  91. delay(5);
  92. lcd_wcmd(0x01); //清除lcd显示内容
  93. delay(5);
  94. }
  95. //设定显示位置
  96.   void lcd_pos(uchar X,uchar Y)
  97.   {
  98.     uchar pos;
  99. if(X==0)
  100.   {X=0x80;}
  101. else if(X==1)
  102.   {X=0x90;}
  103. else if(X==2)
  104.   {X=0x88;}
  105. else if(X==3)
  106.   {X=0x98;}
  107. pos=X+Y;
  108. lcd_wcmd(pos);
  109.   }
  110. //主函数
  111.   void main()
  112.   {
  113.     uchar i;
  114. lcd_init();   //初始化lcd
  115. lcd_pos(0,0); //设置显示位置为第一行第一个字符
  116. i=0;
  117. while(dis1[i]!='\0')
  118. {      //显示字符
  119.    lcd_wdat(dis1[i]);
  120.    i++;
  121. }
  122. lcd_pos(1,0); //设置显示位置为第2行第一个字符
  123. i=0;
  124. while(dis2[i]!='\0')
  125. {      //显示字符
  126.    lcd_wdat(dis2[i]);
  127.    i++;
  128. }
  129. lcd_pos(2,0); //设置显示位置为第3行第一个字符
  130. i=0;
  131. while(dis3[i]!='\0')
  132. {      //显示字符
  133.    lcd_wdat(dis3[i]);
  134.    i++;
  135. }
  136. lcd_pos(3,0); //设置显示位置为第一行第一个字符
  137. i=0;
  138. while(dis4[i]!='\0')
  139. {      //显示字符
  140.    lcd_wdat(dis4[i]);
  141.    i++;
  142. }
  143. while(1);
  144.   }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:452950 发表于 2020-5-5 09:16 | 只看该作者

LCD12864A.dll Proteus中文字库元件下载(ST7920)单片机控制DS18B20温度传感器 - 单片机仿真论坛 单片机论坛 http://www.51hei.com/bbs/dpj-148431-1.html
回复

使用道具 举报

板凳
ID:376443 发表于 2020-5-5 19:48 来自手机 | 只看该作者
xxpp2011 发表于 2020-5-5 09:16
LCD12864A.dll Proteus中文字库元件下载(ST7920)单片机控制DS18B20温度传感器 - 单片机仿真论坛 单片机论 ...

我已经弄过这个了,之前库里没这个器件,加上才有的,不过那个第二步我出来好多选项,没说的那个
回复

使用道具 举报

地板
ID:403303 发表于 2020-5-5 20:16 | 只看该作者
这玩意显示汉字不是要取模吗
回复

使用道具 举报

5#
ID:753047 发表于 2020-5-16 22:18 | 只看该作者
我也遇到这问题了,你的问题解决了吗
回复

使用道具 举报

6#
ID:753047 发表于 2020-5-17 01:15 | 只看该作者
你解决了吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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