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

单片机+LCD12864汉字乱码

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
确定12864有中文字库  
. t* _2 s) y; T5 b+ x) S$ G) M. Y" t/ |
单片机源程序如下:6 V3 n$ v7 G" S8 d6 G
#include<reg52.h>
7 [; V6 E2 x3 ^" B" Q! F  ^2 j8 T #define uchar unsigned char7 L8 ~& o1 d7 z* \- t
#define uint  unsigned int
( F2 D( U. G; Y! s
- S& G2 H* B* o( f8 H9 @; }& T5 e uchar code dis1[]={"姓名: 我爱你"};6 T4 O6 [  l* a9 A# i0 s2 ?
uchar code dis2[]={"性别: 男"};) ?' v/ U" ]' y
uchar code dis3[]={"工号: 119137"};
. x+ D* D* j3 t% g' g2 X; f uchar code dis4[]={"www.szu.edu.cn"};# u0 x7 K& a6 C) K& ^3 Y6 ~: \
- D. R* y2 Z  m1 A
sbit LCD_RS=P0^7; : Y3 m8 C" t& j3 }0 P7 L
sbit LCD_RW=P0^6;
# x* f# J- x2 U7 ^. |8 ` sbit LCD_EN=P0^5; 4 e6 _( ]! u2 f- Y: F
sbit LCD_PSB=P0^4;
  q& b+ j) V! a" c/ ~. L( G sbit LCD_RST=P0^3;. U" ]+ ?. E$ U# b+ E$ x* z+ ?' _
' {' v2 `2 P9 n* l- V  ~
void delay_1ms(uint x)  //1ms延迟函数: y$ c/ Z" O, |0 f
{0 X# K; o$ G3 p! t: {) a
     uint i,j;* h2 z* U, ^0 Y3 `/ I  Y7 |4 K" o
     for(j=0;j<x;j++)
, A' w$ o, I+ }& h* E     for(i=0;i<148;i++);
) u/ d3 Q3 y5 d7 s/ \9 j( X }
9 u2 R( V" Q3 K* ?+ ~6 d; M% X; M
4 J5 W: }* V0 z) M4 j void write_cmd(uchar cmd)//发送命令
. U( H1 v$ g; u, F# ^9 j{# q* T7 @( w& [9 d5 ~+ ]1 ?8 c
         LCD_RW=0;  l& M- W* J9 v+ Q; ?7 W" c3 X
         LCD_RS=0;
4 T9 r9 L1 B0 @         # o! o( M" b2 v+ c5 [
         P2=cmd;7 w: J" f! I& R  d0 S+ b, G- v
         delay_1ms(1);
: o" h+ v. }! }; [2 |2 o         LCD_EN=1;3 q) g# K: C3 f( f
         delay_1ms(1);# P6 `) A* p$ |$ S  l
         LCD_EN=0;: d; j. @# C! X9 L' i
}        6 M8 K; d$ ?2 g+ ^& X' u' b

% |6 U  ]4 R& l! N$ j3 [ void write_data(uchar a)//发送数据
1 T/ v% c/ q0 w5 Z5 r: f{
8 i4 c; I, ^$ ?- A8 f/ K6 }8 q  o  @         LCD_RW=0;
1 M8 e+ N' O+ h$ p6 w' S3 c- T) v         LCD_RS=1;
& i+ Y% W5 X. F         LCD_EN=0;
2 a1 M4 m$ w8 E( ^1 I: s, A2 K2 B9 y: X
         P2=a;
, ^9 Z. {6 B2 |' m) \0 r4 z. f' _' k         delay_1ms(1);
4 j# L' b, N. B3 I- s% D" u/ G" O) r         LCD_EN=1;
3 E8 Z6 T7 F) [4 c         delay_1ms(1);
/ p9 V. K) s' T: ^$ P( a0 m4 G         LCD_EN=0;5 m2 Z" T) h$ c1 m0 [
}8 [% @1 f. l  O- a0 i
void lcd_pose(uchar X,uchar Y)//定位坐标$ C2 t# _) _: [) h0 }. A
{
* k4 J) ^% e* p( b2 L         uchar S,pose;" G% n5 e  e; e8 |7 a
switch (X)
" l. k  Y. {. B% Q, Y {$ g! B; ^/ s$ X6 n+ s: A: J1 h
case 0:+ N6 e* T7 }3 ?/ T
S=0x80; //液晶第一行显示7 L7 E& `& }  v3 u$ y
break;
' j3 {/ q# x3 W2 z, C$ i; z5 c0 N case 1:6 G4 W, x. R! U* c, L9 T
S=0x90; //第二行显示! V, j% X- N6 N$ d
break;! R; d, `3 ]' U
case 2: //第三行显示
. N% N0 t  x7 K+ A9 @8 v4 l2 eS=0x88;& S4 B) U& A3 F$ c
break;
. X; k0 S! F& Q  p( H( w# o case 3: //第四行显示' O7 \; e: \! z$ \7 C
S=0x98;
" [" Q+ c* K! j: Y break;, f# l% A9 i/ N# d
}& R. I3 |$ F* E: u
pose=S+Y;0 n5 }. ^. X% o4 M9 A) ~
write_cmd(pose);
7 G+ A1 C, ]9 ^ }
- c) b8 C# M3 x* F) {
2 _, C. ]0 d) F5 t- |- I2 V void LCD12864_Init()
/ R8 D" D; E) E8 c: S# a- |& F         {! T8 `& V' U# A& ?: c
             //首先对LCD进行复位3 O7 F! n* d( T9 e% q. t: y
                        LCD_RST=0;( H5 H% u# G" E; |
                         delay_1ms(1);
4 j; s5 n3 O% y* o( b             LCD_RST=1;$ n! q2 O- C) r2 w& y4 q
                         delay_1ms(1);
+ A/ C! ]" p- h- s1 S0 `7 D. K                         LCD_PSB=1;  N7 k' z- O% e. y' b  J7 r
                         delay_1ms(1);
) e6 k2 G- N9 k) A, U             /* 开始初始化的步骤 */8 p) ^. v( Y2 s# X
             write_cmd(0x30);3 }  m! y# H3 I4 q# _
                         delay_1ms(1);2 B" x7 Y: Q: Y5 L
           //  write_cmd(0x08);
. `8 q% H, H$ a' c6 x0 `                         delay_1ms(1);
0 `. S- t& k5 r+ z             write_cmd(0x01);3 I2 x, D. j4 X; ^5 L, x) D
                         delay_1ms(1);
* f& p" u# Q  q) k/ e; ]" y             write_cmd(0x06);
4 m# o' s/ }+ `, n                         delay_1ms(1);
1 ~" O3 a$ v% N, n- b+ G3 J             write_cmd(0x0c);& ?* y1 V! D% Z" F) e+ l$ m
           }
+ U% w4 g5 ^' R4 @ void write_zifu(uchar *p) //循环发送数组数据
1 z5 |' p* `. S! E{: |  {$ r. y; h) m' `- p
         while(*p!='\0')  \; }  v% R8 V, k; T8 n: y1 [" X: ^
         {
1 \3 Q  t' d" h) b) u                 write_data(*p);7 ]% t3 F1 d& `$ [1 ^3 P
                 p++;! ?& o# p- r1 v) Z1 F
                 delay_1ms(5);. b- e7 Z2 k3 D* s
         }
& a% P% N, s4 C  q, I* g6 t! u4 L. C }
0 h/ a, h. P6 J7 E void main()
' t, C9 ^# _- s4 n+ `+ R {2 ]( Y& v, `: A# q
         LCD12864_Init();
; V& ?+ N" e6 A* k. l& `# r         {# l" I( z4 _* |9 t4 C2 h
         lcd_pose(0,0);; ?$ @& `7 H5 ^6 u
         write_zifu(dis1);3 y, M5 O9 W; S# e0 b, W
         lcd_pose(1,0);& e) O% \  X, k- s
         write_zifu(dis2);6 `* q# b2 @" F
         lcd_pose(2,0);
* l& Q9 B/ l) H         write_zifu(dis3);) Y  H! Q: g' `2 n8 J; ?) Z) ^
         lcd_pose(3,0);
; w1 H& n: E4 O1 v9 G2 C' B0 L         write_zifu(dis4);( ~( C/ ~! U6 A, S3 M( f2 W
         }
* d7 s1 [/ ?" D( r7 ?# K         while(1);( C# I  ~+ }4 V8 }9 {
} , F, R$ ?/ o6 F4 k" v
  • 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
    / ?6 _$ \% u+ D2 z9 D1 G0 @可以对着字库看看对应的16进制

    & w9 W6 @+ O8 k) ?# j# V找对应的库
    $ S2 [( n2 S# e
  • TA的每日心情
    开心
    2023-5-30 15:22
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-14 04:45 , Processed in 0.125000 second(s), 28 queries , Gzip On.

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

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

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