找回密码
 注册
关于网站域名变更的通知
查看: 313|回复: 4
打印 上一主题 下一主题

单片机+LCD12864汉字乱码

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-12-17 12:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
确定12864有中文字库  
. R/ n2 H" T) @0 o/ u* U( S! V' y3 p0 h
单片机源程序如下:! ?2 t% n/ `" G% O: B
#include<reg52.h>
% ]+ {' Z0 {: p1 B3 N #define uchar unsigned char* U5 d  A: r6 ?- h
#define uint  unsigned int* @" v8 r+ g% ^) \" `1 f

, \/ o/ e7 W' |( X1 e uchar code dis1[]={"姓名: 我爱你"};6 y  j$ }  e% B$ Y
uchar code dis2[]={"性别: 男"};
' `; J' R, h6 Y7 v; Q3 H2 C% _uchar code dis3[]={"工号: 119137"};" t/ ~" m4 o* k  Q9 d+ D: D, y
uchar code dis4[]={"www.szu.edu.cn"};
: l- v% l4 I6 T8 O! L$ a1 K. q$ g. }/ i+ D" E. j' S8 \
sbit LCD_RS=P0^7;
" W9 B# q+ Y, z, ` sbit LCD_RW=P0^6;
3 y/ h1 b$ ^' O  v. j' s1 d6 g sbit LCD_EN=P0^5;
2 C: H" K* \1 }& ~ sbit LCD_PSB=P0^4;: j, m6 n: f% L2 c
sbit LCD_RST=P0^3;
8 i9 v" }: R1 T; v
+ v6 Y" s2 p2 w+ x/ _; M' a void delay_1ms(uint x)  //1ms延迟函数
' {& F/ I$ Q7 p+ r' t: ?0 P{
6 B" B( A8 R% K& ]# v" s     uint i,j;
/ D" h: G0 ~! `0 ~" P7 F     for(j=0;j<x;j++): J4 P4 u! k' \: t: w
     for(i=0;i<148;i++);0 \$ @) s! G/ }
}- B  [, i5 @) c: g( ^

7 u; `  G1 I" d7 S, W/ l void write_cmd(uchar cmd)//发送命令7 K+ p! T/ x) m# t' f, C
{  z- h. i0 v. |4 Z7 _0 w  u
         LCD_RW=0;" b- u/ x8 b1 t$ y$ Y) M
         LCD_RS=0;
# J+ x8 Y  K. S1 k1 P7 l         
- G- G; H% d$ Z& R5 m5 t: S         P2=cmd;
# o, u- V  v2 [( [" W* H" l1 S         delay_1ms(1);
8 ]* z9 L+ ]: |         LCD_EN=1;% l0 z% ^* a' |, T
         delay_1ms(1);
' e# m  p! x8 E& h; |  v- W1 e6 g         LCD_EN=0;
6 a$ I& s/ g8 Y' `# X) N }        
- ~* I; ?) Q% C0 I! d  K* s+ j' Z: B1 v1 L9 J' Q; G
void write_data(uchar a)//发送数据2 b* t0 S( S4 L+ a& w, c9 t
{
8 C2 B3 F6 o- B% B         LCD_RW=0;
9 g0 I7 W7 x* Q         LCD_RS=1;& W$ k. M" a+ A8 @4 }
         LCD_EN=0;; R, C; m5 }" R% r6 D5 r: u
3 n; S4 @9 y; M; y$ K. v. M
         P2=a;3 m: U" A9 g; _% h+ l
         delay_1ms(1);3 e. X9 S6 d3 H
         LCD_EN=1;8 d5 q  n+ F' Y/ J, C6 u( i+ D  {
         delay_1ms(1);: W% c; h) z/ X! O* e1 f) S0 `8 U, L
         LCD_EN=0;
9 Z; Z6 _3 ^( N7 y }
' C2 h0 ^) ?( g, i, k) C1 ^ void lcd_pose(uchar X,uchar Y)//定位坐标
% s( B: p+ F5 r  ]{
+ L! ?# C* K% W4 Y) u" a: W( b7 m+ W         uchar S,pose;( C, i) g, e% t+ l) T4 v0 V$ D
switch (X)! e5 c- t! ~8 l. S1 ~& D+ ?
{
% O  {# |2 i. i; T% M( C, J6 W case 0:
* A" o. g; ~$ s( a  E% C/ D% ] S=0x80; //液晶第一行显示% u3 l& I- j0 W7 g' ?* O
break;
% Y. d- y( v! @) W. b" ?" i case 1:$ D  a4 O/ X7 N/ t& Y
S=0x90; //第二行显示
" T& Q9 Y- Q3 Q+ f: V+ Ybreak;+ Q: b# U- N: P! [
case 2: //第三行显示: b2 b- o) _- J3 I5 J4 b0 F- k
S=0x88;( n. V# E( ?; y
break;! w2 L, p6 B( I+ ]1 X
case 3: //第四行显示
  V9 b8 @& o0 LS=0x98;/ w2 A! {) `0 D+ }2 x
break;
1 S9 n1 x4 j" o; @ }
& z" L* J6 `% f& Y0 G3 i3 q- I pose=S+Y;. D* y0 e0 p0 K
write_cmd(pose);
0 Y3 m  L* J% t" G }
5 }9 t! R8 C3 m/ y
1 N7 s% s6 }* V" M3 R void LCD12864_Init(). u! d0 L& L* [! z; J, T
         {& Q5 _6 A3 w$ i; O$ K/ p
             //首先对LCD进行复位
3 c5 c; ?, f' z5 P' F. q                        LCD_RST=0;7 w! i$ h  C5 o- C6 G$ w1 j
                         delay_1ms(1);4 m: q5 h' f4 c  K1 g) P
             LCD_RST=1;. |' }, f' Q1 p# j8 i
                         delay_1ms(1);3 Q( C3 h5 R5 f, ^# I; o
                         LCD_PSB=1;2 M, ~1 z1 y$ P& V
                         delay_1ms(1);( x4 q$ B. T# I6 T7 W+ f
             /* 开始初始化的步骤 */. O% |# t/ U$ Q# R2 u$ F
             write_cmd(0x30);0 Y. v1 R/ g5 X; X9 M4 n
                         delay_1ms(1);
& \, I% o5 t4 `/ G           //  write_cmd(0x08);
6 B4 r3 I2 r5 ?$ A+ p7 H% n0 j+ h                         delay_1ms(1);
5 q& g, P% ?7 f5 r  o             write_cmd(0x01);+ D! l2 @9 {, `( |) b
                         delay_1ms(1);
# }& t% H7 e) [" B             write_cmd(0x06);5 `% M, Y2 U& y6 e
                         delay_1ms(1);; O. e5 `+ {6 c5 h$ o
             write_cmd(0x0c);
9 _/ P, L$ [( I5 e- H           }1 a, A5 K5 Q' A# c6 O! M' L. }
void write_zifu(uchar *p) //循环发送数组数据. ^+ Y6 q3 k1 Z1 h2 H
{
6 `/ V& ~, h; \         while(*p!='\0')
( g& v* ]( I3 Z- O( n         {
* w6 N' H5 B* K" E                 write_data(*p);
3 x6 {/ u, A; W# k                 p++;
) H: Y. P  x$ K. I$ T                 delay_1ms(5);
# c9 @) E; t- w+ P( s         }% Z; a0 R5 ?8 x
}
0 v( z' \6 U0 v) q void main()* m) T( Y# R$ S; b
{) A  N. X1 ~" \3 m' v
         LCD12864_Init();2 q" u( Q: y" D+ L6 M+ w
         {
# y- U, L# e+ q8 L- Y1 e         lcd_pose(0,0);- E! _$ d: i' K4 i: Z* E; ~
         write_zifu(dis1);
3 l& l6 ~3 R8 Q8 h# T. w7 I         lcd_pose(1,0);
5 P) Q6 ?) W. r         write_zifu(dis2);
( `$ H! C1 A7 _: ]3 g/ [         lcd_pose(2,0);7 u7 m  v/ [; M0 v1 m9 O
         write_zifu(dis3);
% ~) t/ E% k  e/ k, o  `         lcd_pose(3,0);9 S& L9 u8 P. k
         write_zifu(dis4);
9 O5 X9 ]. m4 m0 E9 i' ]9 x; N         }) N; B5 p( A" l8 C' M! ~) I
         while(1);' X( p5 Z: C7 c
}
) z; l' {7 L$ l, N! t, I
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    推荐
    发表于 2021-12-17 20:09 | 只看该作者
    可以对着字库看看对应的16进制

    点评

    找对应的库  详情 回复 发表于 2021-12-17 20:21
  • TA的每日心情
    开心
    2022-12-27 15:07
  • 签到天数: 1 天

    [LV.1]初来乍到

    推荐
    发表于 2021-12-17 13:12 | 只看该作者
    液晶没有字库就会出现乱码

    该用户从未签到

    4#
    发表于 2021-12-17 20:21 | 只看该作者
    Heaven_1 发表于 2021-12-17 20:09) ^' w; |& b3 f- L7 \6 D( S
    可以对着字库看看对应的16进制
    9 c# S* p4 [* b
    找对应的库4 B8 D7 f* v0 c
  • TA的每日心情
    开心
    2023-5-30 15:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
    发表于 2021-12-21 17:26 | 只看该作者
    看看乱码汉子对应的码表
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-9 13:29 , Processed in 0.187500 second(s), 31 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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