数码之家

 找回密码
 立即注册
搜索
查看: 1261|回复: 9

[C51] 小白学51单片机,LCD12232显示中文问题

[复制链接]
发表于 2024-1-24 14:01:05 | 显示全部楼层 |阅读模式
手上正好有块DV12232G VER2.0的屏,20引脚的,
引脚如下


手上这个试验板有个LCD12864接口,引脚如下

后面有几位不一样,
把它装到试验板的12864的位置,能正常显示,就是没有背光,

用LCD1602的程序稍做修改就能显示字符,所有字母数字都正常
有一个问题就是有些中文正常,有些是乱码,比如输入数码之家就显示其它字
不知道怎么回事,难道是字库不全?






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 1家元 +50 收起 理由
家睦 + 50

查看全部打赏

 楼主| 发表于 2024-1-24 14:08:11 | 显示全部楼层
“数”不能正常显示,用拼音代替,“码之家”能正常显示



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2024-1-24 14:19:20 来自手机浏览器 | 显示全部楼层
数字因为编码表和编译程序冲突。好像有讲解过。
回复 支持 反对

使用道具 举报

发表于 2024-1-24 14:24:31 | 显示全部楼层
是keil的问题。
0xFD问题是KEIL固有的问题,它使用一些字符作为特殊控制字符(比如0XFD),由于英文显示ASCII码是0x20~0x7F,所以没有问题,但是由于中文编码有0XFD,所以包含0XFD的汉字显示就会乱码。
KEIL公司推荐的方法是增加转义字符,例如“数学”,这样处理即可:Printf("数\xFD学");

以下是涉及0xfd的汉字,常用汉字不多:

褒饼昌除待谍洱俘庚过糊积箭烬君魁例笼慢谬凝琵讫驱三升数她听妄锡淆旋妖引育札正铸
佚冽邶埤荦蔟摭啐帻猃恺泯潺妪纨琮椠辇挲臊忑睚铨稞瘕颀螨簖酏觚鳊鼾
回复 支持 3 反对 0

使用道具 举报

 楼主| 发表于 2024-1-24 14:38:14 | 显示全部楼层
数码之家果然是卧虎藏龙,
高手一指点就是不一样,



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2024-1-24 14:43:21 | 显示全部楼层
现在才知道安装软件里的0XFD补丁的作用。
回复 支持 反对

使用道具 举报

发表于 2024-1-24 17:23:51 | 显示全部楼层
虽然不会写也来学习一下
回复 支持 反对

使用道具 举报

发表于 2024-1-25 21:58:10 | 显示全部楼层
建议给keil打一下补丁,网上常用的晓奇的0xFD补丁就可以的。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2024-1-27 16:22:11 | 显示全部楼层
代码补上,这种写法看起来要简洁很多


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-27 16:32:07 | 显示全部楼层
lcd部分代码:
  1. #include<reg52.h>
  2. #include "delayms.h"        //延时

  3. sbit lcd_rs=P0^4;        //数据或命令选择
  4. sbit lcd_rw=P0^3;        //读写选择
  5. sbit lcd_en=P0^2;        //使能
  6. sbit lcd_psb=P0^1;        //并串方式选择
  7. //sbit lcd_rst=P0^0;

  8. void lcd12232_write_cmd(unsigned char cmd)        //写命令
  9. {
  10.         lcd_rw=0;        //0写1读
  11.         lcd_rs=0;        //0写命令1写数据
  12.         P2=cmd;        //把命令送到P2口
  13.         delayms(5);        //
  14.         lcd_en=1;        //使能
  15.         delayms(5);        //
  16.         lcd_en=0;        //关使能
  17. }

  18. void lcd12232_write_dat(unsigned char dat)        //写数据
  19. {
  20.         lcd_rw=0;        //0写1读
  21.         lcd_rs=1;        //1写数据0写命令
  22.         P2=dat;        //把数据送到P2口
  23.         delayms(5);        //
  24.         lcd_en=1;        //使能
  25.         delayms(5);        //
  26.         lcd_en=0;        //关使能
  27. }

  28. void lcd12232_write_string(unsigned char *string) //写字符串
  29. {
  30.         while (*string !='\0')        //一直到字符串结尾才跳出循环
  31.         {
  32.                  lcd12232_write_dat(*string);        //把字符串写入
  33.                 string++;        //下一个
  34.         }
  35. }                                                                  

  36. void lcd12232_init()
  37. {
  38.         lcd_psb=1;        //并口方式
  39.         lcd12232_write_cmd(0x30);        //00110000基本指令8位
  40.         lcd12232_write_cmd(0x0c);        //00001100开显示,光标关
  41.         lcd12232_write_cmd(0x01);        //00000001清屏
  42.         lcd12232_write_cmd(0x02);        //00000010清DDRAM
  43. //        lcd12232_write_cmd(0x06);        //00000110光标及显示右移一位
  44. //        lcd12232_write_cmd(0x0e);        //00001100开显示,光标开
  45. //        lcd12232_write_cmd(0x0f);        //00001100开显示,光标开,反白
  46. //        lcd12232_write_cmd(0x36);        //00110110扩展指令8位开绘图
  47. //        lcd12232_write_cmd(0x34);        //00110100扩展指令8位关绘图
  48. //        lcd12232_write_cmd(0x80);   //10000000第一行开始
  49. //        lcd12232_write_cmd(0x90);        //10010000第二行开始
  50. }
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-20 21:22 , Processed in 0.639601 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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