找回密码
 立即注册

液晶LCD12864带字库显示汉字乱码呢 | 设置成GB2312格式好了

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-04-30 10:02:32
已绑定手机

23

主题

175

回帖

878

积分

高级会员

积分
878
发表于 2024-12-6 15:26:30 | 显示全部楼层
Yim_*** 发表于 2024-12-6 14:37
什么液晶?
7920带字库还是7565 7657外挂字库?
有没有单独的字库芯片?

是ST7920,地址没问题的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-04-30 10:02:32
已绑定手机

23

主题

175

回帖

878

积分

高级会员

积分
878
发表于 2024-12-6 15:31:20 | 显示全部楼层

<br /> <br />

要显示 状态 两个字 却显示 蔼舵啊 微信图片_20241206152815.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-04-30 10:02:32
已绑定手机

23

主题

175

回帖

878

积分

高级会员

积分
878
发表于 2024-12-6 15:31:21 | 显示全部楼层

<br /> <br />

要显示 状态 两个字 却显示 蔼舵啊 微信图片_20241206152815.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-04-30 10:02:32
已绑定手机

23

主题

175

回帖

878

积分

高级会员

积分
878
发表于 2024-12-6 15:32:42 | 显示全部楼层

<br /> <br />

屏幕手机ST7920 ,显示汉字 状态 却显示 蔼舵啊 微信图片_20241206152815.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-12-6 16:06:08 | 显示全部楼层

试试这个

#include <STC15F2K60S2.H>
#include <intrins.h>
#define     RXD             P30
#define     TXD             P31
#define     IRIN            P32
#define     Buzzer          P33         //定义蜂鸣器IO口
#define     LCD12864_SID    P34         //定义LCD12864时钟IO口
#define     LCD12864_SCLK   P35         //定义LCD12864数据IO口
#define     Write_Command                                   0xf8
#define     Write_Data                                      0xfa
#define     Read_Command                                    0xfc
#define     Read_Data                                       0xfe
#define     Setting_Basic_Instruction_Set                   0x30
#define     Setting_Extended_Instruction_Set_Drawing_Off    0x34
#define     Setting_Extended_Instruction_Set_Drawing_On     0x36
#define     Clear_Display                                   0x01
#define     Entry_Mode_Cursor_Left                          0x04
#define     Entry_Mode_Entire_Right                         0x05
#define     Entry_Mode_Cursor_Right                         0x06
#define     Entry_Mode_Entire_Left                          0x07
#define     Display_Off                                     0x08
#define     Display_On_Cursor_Off_Inverse_Off               0x0c
#define     Display_On_Cursor_Off_Inverse_On                0x0d
#define     Display_On_Cursor_On_Inverse_Off                0x0e
#define     Display_On_Cursor_On_Inverse_On                 0x0f
#define     Cursor_Move_Left                                0x10
#define     Cursor_Move_Right                               0x14
#define     Display_Move_Left                               0x18
#define     Display_Move_Right                              0x1c
bit Error_Flag;
unsigned char ms_50,Temp_Second,Temp;
unsigned char IRCOM[4];
unsigned char code Display_Hex[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};
unsigned char code Display_Data1[64]=
{
"  红外遥控解码  "    //0x80
"    IR_Code:    "  //0x90
"                "  //0x88
"                "  //0x98
};

/*----------------------------延时10us@STC-Y5@11.0592MHz----------------------------*/
void Delay_10us(void)
{
unsigned char i;
_nop_();
_nop_();
i=25;
while(--i);
}

/*----------------------------延时x10us----------------------------*/
void Delay_x10us(unsigned char x)
{
while(x--)
Delay_10us();
}

/*----------------------------延时10ms@STC-Y5@11.0592MHz----------------------------*/
void Delay_10ms(void)
{
unsigned char i,j;
i=108;
j=145;
do
{
while(--j);
}while(--i);
}

/*----------------------------延时140us@STC-Y5@11.0592MHz----------------------------*/
void Delay_140us(void)
{
unsigned char i,j;
i=2;
j=126;
do
{
while(--j);
}
while(--i);
}

void Delay_x140us(unsigned char x)
{
while(x--)
Delay_140us();
}

/*----------------------------写1字节命令或数据----------------------------*/
void LCD12864_Write_Byte(unsigned char temp)
{
unsigned char i;
for(i=0;i<8;i++)
{
if((temp<<i)&0x80)
LCD12864_SID=1;
else
LCD12864_SID=0;
LCD12864_SCLK=0;
LCD12864_SCLK=1;
}
}

/*----------------------------传送数据或者命令----------------------------*/
void LCD12864_Write(unsigned char Command,unsigned char temp)
{
LCD12864_Write_Byte(Command);
LCD12864_Write_Byte(temp&0xf0);
LCD12864_Write_Byte((temp<<4)&0xf0);
}

/*----------------------------清空GDRAM----------------------------*/
void Clear_GDRAM(void)
{
unsigned char i,j,k;
LCD12864_Write(Write_Command,Setting_Extended_Instruction_Set_Drawing_Off);
k=0x80;
for(i=0;i<32;i++)
{
LCD12864_Write(Write_Command,k++);
LCD12864_Write(Write_Command,0x80);
for(j=0;j<16;j++)
{
LCD12864_Write(Write_Data,0x00);
}
}
k=0x80;
for(i=0;i<32;i++)
{
LCD12864_Write(Write_Command,k++);
LCD12864_Write(Write_Command,0x88);
for(j=0;j<16;j++)
{
LCD12864_Write(Write_Data,0x00);
}
}
LCD12864_Write(Write_Command,Setting_Extended_Instruction_Set_Drawing_On);
}

/*----------------------------整页显示字符----------------------------*/
void Display_Text(unsigned char code *addr)
{
unsigned char i;
LCD12864_Write(Write_Command,Setting_Basic_Instruction_Set);
LCD12864_Write(Write_Command,0x80); //设置DDRAM地址
Delay_10us();
for(i=0;i<16;i++)
{
LCD12864_Write(Write_Data,*addr);
addr++;
}
LCD12864_Write(Write_Command,0x90); //设置DDRAM地址
Delay_10us();
for(i=0;i<16;i++)
{
LCD12864_Write(Write_Data,*addr);
addr++;
}
LCD12864_Write(Write_Command,0x88); //设置DDRAM地址
Delay_10us();
for(i=0;i<16;i++)
{
LCD12864_Write(Write_Data,*addr);
addr++;
}
LCD12864_Write(Write_Command,0x98); //设置DDRAM地址
Delay_10us();
for(i=0;i<16;i++)
{
LCD12864_Write(Write_Data,*addr);
addr++;
}
}

/*----------------------------指定位置显示字符----------------------------*/
void Display_Data(unsigned char x,unsigned char y,unsigned char Data1,unsigned char Data2)
{
LCD12864_Write(Write_Command,Setting_Basic_Instruction_Set);
switch(y)
{
case 0:
LCD12864_Write(Write_Command,0x80+x);   //设置DDRAM地址
Delay_10us();
LCD12864_Write(Write_Data,Data1);
LCD12864_Write(Write_Data,Data2);
break;
case 1:
LCD12864_Write(Write_Command,0x90+x);   //设置DDRAM地址
Delay_10us();
LCD12864_Write(Write_Data,Data1);
LCD12864_Write(Write_Data,Data2);
break;
case 2:
LCD12864_Write(Write_Command,0x88+x);   //设置DDRAM地址
Delay_10us();
LCD12864_Write(Write_Data,Data1);
LCD12864_Write(Write_Data,Data2);
break;
case 3:
LCD12864_Write(Write_Command,0x98+x);   //设置DDRAM地址
Delay_10us();
LCD12864_Write(Write_Data,Data1);
LCD12864_Write(Write_Data,Data2);
break;
}
}

/*----------------------------初始化12864----------------------------*/
void LCD12864_Init(void)
{
Delay_10ms();           //40mS延时
Delay_10ms();
Delay_10ms();
Delay_10ms();
LCD12864_Write(Write_Command,Setting_Basic_Instruction_Set);
Delay_x10us(10);        //100uS延时
LCD12864_Write(Write_Command,Setting_Basic_Instruction_Set);
Delay_x10us(4);         //40uS延时
LCD12864_Write(Write_Command,Clear_Display);    //显示光标闪烁完全关闭
Delay_x10us(10);        //100uS延时
LCD12864_Write(Write_Command,Clear_Display);                        //清除显示
Delay_10ms();           //10mS延时
LCD12864_Write(Write_Command,Entry_Mode_Cursor_Right);              //光标右移模式
Delay_x10us(10);        //100uS延时
LCD12864_Write(Write_Command,Display_On_Cursor_Off_Inverse_Off);    //开显示,无光标,光标不闪烁
Delay_x10us(10);        //100uS延时
Clear_GDRAM();          //清空GDRAM
Delay_x10us(10);        //100uS延时
}

void Init(void)
{
P3M0=0x08;
P3M1=0x00;
IRIN=1;
EA=1;
EX0=1;
IT0=1;
Buzzer=0;
LCD12864_Init();
}

/*----------------------------主函数----------------------------*/
void main(void)
{
Init();
Display_Text(Display_Data1);
while(1)
if(RXD==0)
IAP_CONTR=0x60;
}

void IR_IN(void) interrupt 0
{
unsigned char j,k,n=0,q=0;
EX0=0;
Delay_x140us(15);
if(IRIN==1)
{
EX0=1;
return;
}
while(!IRIN)
Delay_x140us(1);
for(j=0;j<4;j++)
{
for(k=0;k<8;k++)
{
while(IRIN)
Delay_x140us(1);
while(!IRIN)
Delay_x140us(1);
while(IRIN)
{
Delay_x140us(1);
n++;
if(n>=30)
{
EX0=1;
return;
}
}
IRCOM[j]=IRCOM[j]>>1;
if(n>=8)
{
IRCOM[j]=IRCOM[j]|0x80;
}
n=0;
}
}
if(IRCOM[2]!=~IRCOM[3])
{
EX0=1;
return;
}
else
{
Display_Data(1,2,Display_Hex[IRCOM[0]/16],Display_Hex[IRCOM[0]%16]);
Display_Data(2,2,Display_Hex[IRCOM[1]/16],Display_Hex[IRCOM[1]%16]);
Display_Data(3,2,Display_Hex[IRCOM[2]/16],Display_Hex[IRCOM[2]%16]);
Display_Data(4,2,Display_Hex[IRCOM[3]/16],Display_Hex[IRCOM[3]%16]);
Display_Data(6,2,Display_Hex[IRCOM[2]/16],Display_Hex[IRCOM[2]%16]);
Buzzer=1;
Delay_10ms();
Buzzer=0;
}
EX0=1;
}
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-12-6 16:25:50 | 显示全部楼层
欢迎哈*** 发表于 2024-12-6 15:25
已经换成GB2312了,还是不行

看后面你的照片,,怎么感觉你输入的还是UTF8编码的汉字?输入两个汉字变成了三个汉字
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-04-30 10:02:32
已绑定手机

23

主题

175

回帖

878

积分

高级会员

积分
878
发表于 2024-12-6 16:38:46 | 显示全部楼层

<br /> <br />

是这样修改吗 微信图片_20241206163532.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-12-6 16:44:29 | 显示全部楼层
欢迎哈*** 发表于 2024-12-6 16:38
[md]是这样修改吗
![微信图片_20241206163532.png](data/attachment/forum/202412/06/163841jnesntexqojs ...

这个是keil的编码,,


这个你试一试 在这个编码下 新建一个文件,把你显示屏的函数复制过去。。。
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-12-6 16:49:14 | 显示全部楼层

upload 附件:AIwater.hex

你试一试这个hex文件,,我只把你的工程里的water.c 改了一个编码 然后编译了一下

参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2025-04-30 10:02:32
已绑定手机

23

主题

175

回帖

878

积分

高级会员

积分
878
发表于 2024-12-6 18:02:12 | 显示全部楼层
_奶*** 发表于 2024-12-6 16:49
[md][![upload](/source/plugin/zhanmishu_markdown/template/editor/images/upload.svg) 附件:AIwater.he ...

好的,我试试
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 08:52 , Processed in 0.218723 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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