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

单片机+LCD12864汉字乱码

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
确定12864有中文字库  
- ]- I, \" m/ N$ O) W! ^' L* X; }; c& G" q& N
单片机源程序如下:2 U; C. T' o3 ~) ^/ }6 f; @0 y& [
#include<reg52.h>6 p5 M7 c1 J9 n
#define uchar unsigned char; z' K# y* W6 ?8 z
#define uint  unsigned int/ l0 J" y  Q5 ]0 z1 o/ C, d

8 Q6 I* H) ~& {: ~" u: \7 ^ uchar code dis1[]={"姓名: 我爱你"};
! G" G' z5 Z* F& J; xuchar code dis2[]={"性别: 男"};
) G: g& U8 U6 A' R4 M/ F+ i9 auchar code dis3[]={"工号: 119137"};* b# S2 e* m- c/ B
uchar code dis4[]={"www.szu.edu.cn"};
; s( \9 w$ U9 {4 h$ t) M' w3 b- `2 c# k+ l- W( C+ M
sbit LCD_RS=P0^7;
# Y" W8 t7 b" W+ S6 I" p& d: `( T sbit LCD_RW=P0^6;
5 u* H3 J; l5 \* j sbit LCD_EN=P0^5;
  h7 p8 E) ^( u- I4 g3 n0 y% G sbit LCD_PSB=P0^4;% `8 n) w4 e  Q( o; a' G
sbit LCD_RST=P0^3;
% ]1 D+ U  z1 j, G! x8 o0 _( I3 M1 N+ V) i1 _1 j
void delay_1ms(uint x)  //1ms延迟函数  k9 p0 ]: l- y3 A+ ~$ A& L
{
! }) y* C8 B/ T- s0 p4 o' J     uint i,j;/ {) J) `* G7 f. n( Q  r
     for(j=0;j<x;j++)7 n2 K! c) @  H3 i; r5 b8 ?5 i2 h
     for(i=0;i<148;i++);5 K% ^, T. _4 ]  D& ~+ I
}
" j: @, M+ Y) T! j$ f0 ~% C6 y
& z& d) s! T( ^. B& V4 t, C' j- r void write_cmd(uchar cmd)//发送命令0 a7 x" l$ Z+ I& `5 v3 X
{; C) m0 J( @2 f( L9 R3 ?/ a5 D; j% m
         LCD_RW=0;
2 R% J. r: |7 ^( [- [& h         LCD_RS=0;( f' i( n3 u. _. x7 j% m' t% M' o
         0 J0 ?) t1 [7 U" \  N( D; T& M. p
         P2=cmd;1 C7 V4 U$ ?5 C8 x* v/ R. t/ _
         delay_1ms(1);7 C2 `) s4 u2 o( u6 m* Q% s
         LCD_EN=1;
" l* Z7 s$ V/ b         delay_1ms(1);' L8 K5 B( o* {. p' `0 p
         LCD_EN=0;- J/ X. l5 g5 T* a6 {
}        ; e1 D& d, s( z' z
/ ?1 B& b) {) g4 m7 h; ^# M
void write_data(uchar a)//发送数据
5 k0 Z& x  v" J  K% [{6 ^) Z) }. }  k: r8 c! X
         LCD_RW=0;
# w: f: n* R& b( y) E; M         LCD_RS=1;1 j; S1 d* u" m0 E$ `
         LCD_EN=0;: y2 v; Y/ [  [
) I5 n2 ^8 l6 z$ b
         P2=a;9 b" d/ _9 y- I1 P4 Y' o
         delay_1ms(1);0 _7 S$ o0 U$ ?  b( g4 e
         LCD_EN=1;1 R# m' v" V8 V  j" H
         delay_1ms(1);
7 S$ c! ?7 c% }         LCD_EN=0;
9 s' Y% l. X3 G% ^6 h }
0 ^7 I5 j! z5 d/ t6 `  K7 W0 \$ U( G/ } void lcd_pose(uchar X,uchar Y)//定位坐标
1 l& ?, }& i' k- j3 j+ l% [{
& ~5 a- `- B7 P7 I4 `         uchar S,pose;6 h, Y3 s/ s* J% l$ H% \
switch (X)
+ S/ g7 d2 ?6 w/ ]" D! N {
, P& r7 t" J7 r( {3 v* I case 0:, Y1 S: S/ R/ T( }1 V3 R
S=0x80; //液晶第一行显示
  a$ G; z, c' Y3 K8 C, q. Obreak;; n' c3 d! H9 ~  V( s4 K" J& s2 V
case 1:
0 s# M, S% `/ V$ W+ s3 m5 d S=0x90; //第二行显示
, A/ ~& z2 c$ |) G8 D7 @break;  L: {: Z) `; n6 L- ]8 j  j& v
case 2: //第三行显示9 F- I2 N; C3 R& n& X9 ?0 `7 ]
S=0x88;( j; [3 j) n* i- M5 |' y
break;
3 s, v! @+ E7 ~% _7 r* b case 3: //第四行显示+ l7 ?3 x. C7 }$ W) K' J9 z
S=0x98;: i, \) A. x4 R7 L  l
break;
$ i& l' Z9 O/ O7 J6 k }
1 d% N7 n4 J7 _, S% H% U" S. n pose=S+Y;
; ]+ X* U6 x" G write_cmd(pose);+ R% t1 m) i/ v2 z6 [! z5 b2 k1 W
}' v; `, P5 X+ c2 G9 ?7 [- i" m

: s3 A* v* ?; U# Y9 g# |3 b: P: _ void LCD12864_Init()
3 i4 `& L- ~7 t) b/ B, i         {# F8 s2 r: W1 l; K3 u: @/ I; f6 L, |
             //首先对LCD进行复位; l/ v4 H7 C' _3 Y+ b8 e3 b
                        LCD_RST=0;
7 g" N0 S% R8 a2 C( @5 }/ d                         delay_1ms(1);; J7 L  C. |2 h! V$ d# G7 S
             LCD_RST=1;. S5 s" s5 c5 V
                         delay_1ms(1);
% F5 c( k7 @, H% V4 {) g8 x* U3 T% N                         LCD_PSB=1;3 Q+ y3 K* X" Y9 O( P3 V4 z
                         delay_1ms(1);
& k/ W9 b1 r% h* m+ _4 `+ V: F, ^             /* 开始初始化的步骤 */
/ h( F0 i. Q/ V# w! b; `3 C             write_cmd(0x30);: w. s, A! J' R% |7 C" j
                         delay_1ms(1);
- n7 N/ |+ F$ h, D" t8 v0 q8 e           //  write_cmd(0x08);
$ a6 V- }# y! D; a0 l$ q7 y                         delay_1ms(1);
4 B& F: P# Z- {7 `5 A             write_cmd(0x01);
, D/ z7 }/ d8 i- q6 c                         delay_1ms(1);
& [# Q, C3 F' o3 [2 I, X; v             write_cmd(0x06);! `% c5 G$ p' ^, w
                         delay_1ms(1);! `( K& l9 J+ J
             write_cmd(0x0c);
- w2 j# H2 Y* P6 y           }9 Z5 W. ~2 X" s% r) q5 S
void write_zifu(uchar *p) //循环发送数组数据1 Z  @  A) }% P2 y4 A
{7 O0 g# w2 p+ e, y4 w" w
         while(*p!='\0'): N/ @) K. x, q! {: A* U2 |
         {
6 g0 `# B7 ?! |9 Q                 write_data(*p);9 m! \9 n0 t) q4 l$ u4 P/ v* L
                 p++;
6 ]# m1 \0 y1 Y2 |                 delay_1ms(5);3 _9 r4 y# i# u1 M2 M
         }
* p) U! e3 q8 Z- C }6 o7 F& n3 k9 E! s/ i: G! B9 {9 I
void main()
4 G0 Y9 e4 U: U: E {% k. B9 B* T5 G9 y  F
         LCD12864_Init();
. h2 l1 ?) @7 @# w8 S& i+ {         {
6 T' W. @: a0 z7 \7 L         lcd_pose(0,0);
7 z4 m5 V0 Y: X) |; k         write_zifu(dis1);
+ v) `# e! o$ a9 P" f! c         lcd_pose(1,0);7 D+ X/ {4 @$ Y4 ^) ?+ x: S% t
         write_zifu(dis2);/ H% n6 I) F- g2 Z$ H* p& i* H
         lcd_pose(2,0);- }* x  [0 b5 Q2 d4 r6 C6 Z
         write_zifu(dis3);$ H3 u) Z- ~- M' k" P" u
         lcd_pose(3,0);
  u3 v2 z% m9 F) W         write_zifu(dis4);
9 `/ w. ?0 }- i) t% p* ~, a4 w! v         }+ L6 P" I: h- N
         while(1);
$ Y. b" z6 t* H% `0 N6 j/ C  e4 P8 a }
: u* S9 R2 s* ^& _
  • 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:093 m3 O! ^$ E& o. p( O! f
    可以对着字库看看对应的16进制

    : }4 ]$ l6 a8 f8 }6 n# {7 ~, P找对应的库% O9 L+ @8 _+ d; k( ]. r5 V
  • TA的每日心情
    开心
    2023-5-30 15:22
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-22 07:06 , Processed in 0.078125 second(s), 28 queries , Gzip On.

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

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

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