欢迎哈哈哈3
发表于 2024-12-6 15:26:30
Yim_Hom 发表于 2024-12-6 14:37
什么液晶?
7920带字库还是7565 7657外挂字库?
有没有单独的字库芯片?
是ST7920,地址没问题的
欢迎哈哈哈3
发表于 2024-12-6 15:31:20
DebugLab 发表于 2024-12-6 10:26
什么型号的屏幕,是否有字库,看看实物是怎么乱码的
要显示状态两个字却显示蔼舵啊

欢迎哈哈哈3
发表于 2024-12-6 15:31:21
DebugLab 发表于 2024-12-6 10:26
什么型号的屏幕,是否有字库,看看实物是怎么乱码的
要显示状态两个字却显示蔼舵啊

欢迎哈哈哈3
发表于 2024-12-6 15:32:42
DebugLab 发表于 2024-12-6 10:26
什么型号的屏幕,是否有字库,看看实物是怎么乱码的
屏幕手机ST7920,显示汉字状态 却显示蔼舵啊

DebugLab
发表于 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;
unsigned char code Display_Hex={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};
unsigned char code Display_Data1=
{
"红外遥控解码" //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=IRCOM>>1;
if(n>=8)
{
IRCOM=IRCOM|0x80;
}
n=0;
}
}
if(IRCOM!=~IRCOM)
{
EX0=1;
return;
}
else
{
Display_Data(1,2,Display_Hex/16],Display_Hex%16]);
Display_Data(2,2,Display_Hex/16],Display_Hex%16]);
Display_Data(3,2,Display_Hex/16],Display_Hex%16]);
Display_Data(4,2,Display_Hex/16],Display_Hex%16]);
Display_Data(6,2,Display_Hex/16],Display_Hex%16]);
Buzzer=1;
Delay_10ms();
Buzzer=0;
}
EX0=1;
}
```
```
```
_奶咖君_
发表于 2024-12-6 16:25:50
欢迎哈哈哈3 发表于 2024-12-6 15:25
已经换成GB2312了,还是不行
看后面你的照片,,怎么感觉你输入的还是UTF8编码的汉字?输入两个汉字变成了三个汉字
欢迎哈哈哈3
发表于 2024-12-6 16:38:46
_奶咖君_ 发表于 2024-12-6 16:25
看后面你的照片,,怎么感觉你输入的还是UTF8编码的汉字?输入两个汉字变成了三个汉字 ...
是这样修改吗

_奶咖君_
发表于 2024-12-6 16:44:29
欢迎哈哈哈3 发表于 2024-12-6 16:38
是这样修改吗
 附件:AIwater.hex](forum.php?mod=attachment&aid=69107 "attachment")
你试一试这个hex文件,,我只把你的工程里的water.c 改了一个编码 然后编译了一下
欢迎哈哈哈3
发表于 2024-12-6 18:02:12
_奶咖君_ 发表于 2024-12-6 16:49
[!(/source/plugin/zhanmishu_markdown/template/editor/images/upload.svg) 附件:AIwater.he ...
好的,我试试