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

LCD1602的简单显示

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
LCD1602的简单显示
% V# F$ _& _( M4 q3 h* v0 ]2 g
# }4 j8 I3 h. @
+ v% [: m' Q# v
闲来无事,做几块板,就想做一下LCD1602的显示板/ g) e) X, g3 }0 `! a8 a" t* M6 Z
自己从写程序到仿真,从原理图设计,画PCB图,腐蚀钻孔,再到焊接,终于完成。: f7 q8 z6 R2 \/ I' g

- U& _1 r5 p% V0 G; }4 e / `& x6 {# [: y% Q# |0 M6 }

' N+ i, H4 ^  o5 {
8 k! i: b* ]; p# H& {9 g( g& A! K& L
& V2 j8 y7 Q1 ~. M7 k  ^2 Z0 S) T/ N

0 z% W/ `$ s0 `# K% d  Q
, J7 _5 m" Z7 H, a- q7 a1 C9 D9 A: G
' T) v  g: [, e1 I$ `' d( Z
! f9 }, j9 y5 E% T
  /********************LCD1602 双行显示*****************************/
' o  e4 b) y! ~% Z, k3 x5 ^' ]
  d; {0 C1 E# D% Q* Z! h+ O
% @- @+ S. O( o0 E#include
& E% B9 w1 b/ W5 B* v: S; p3 }) B6 A#define uint unsigned int
$ l3 e- y8 X7 j#define uchar unsigned char
: |- s, E' }/ ^- z& e1 y8 ?& B' K( J$ y% i" c4 }" E5 i6 D
/***************************第一行显示********************************/
/ w9 R# s4 W2 y$ `. S8 m( m+ Ouchar code table0[]="Xiao Qi ^_^ ";
0 E( N$ N* l0 V% D8 h- S% x% D/***************第二行显示****************************************/
8 P% O- c/ T/ L2 w4 ^5 ^& ^% buchar code table1[]="I LOVE YOU 1314";% ]6 j; ^* o* u: @! e- Q4 P; t
uchar num;% _( ?! `9 b( H
/**************1602的各端口与单片机衔接*/+ B2 p, q( }4 n% F% g
#define DB P0                //P0口为LCD数据线% y/ i- E8 A0 ]3 V/ j4 c
sbit RS=P2^7;                //P3.4为LCD的RS端口0 v* _( g5 r9 |1 ^/ J
sbit RW=P2^6;                //P3.5为LCD的RW端口1 k0 s' d% G6 ^2 T/ @* i  n( ?
sbit E=P2^5 ;                 //P3.6为LCD的E端口
, t2 ^7 c- E' \  U3 w7 I& b0 l) \* R  o, U; l! u
/***************毫秒级************延时函数**************************************/
( T) f1 Y" Q, I- s" Uvoid delay(uint z)
& u. x" e5 x+ h{
/ q- T" Q( E6 G9 p" {; F        uint x,y;
9 w7 q7 `$ r/ {# J) J) ?        for(x=z;x>0;x--);
( k% ?% x: o* L" X8 C: i* F        for(y=1100;y>0;y--);
/ G/ y9 _7 |& @4 @- S}
6 v8 c; R0 q5 V1 [& U, w! w$ x1 H" B) Y; V2 {) ~% B2 H
/***********************向LCD写命令函数**************************************/
+ T2 \8 ^6 G' r7 c6 K( Y- X0 O: R. p5 R3 o
void write_com(uchar dat)
+ l# p- F7 P& r{
+ K# D, V& e% _; ~2 P- H- g        delay(5);
8 @* m* H7 `1 t7 T1 }; r: K        RS=0;
; H( E# ?+ l% Q- K, t( a        RW=0;( @# m( l7 [' g- O. F
        DB=dat;4 W+ v0 d! g$ A8 }! J( v
        delay(5);3 N* m2 }6 `# l- e, D, [
        E=1;  W( C9 ^) I' u2 u4 d
        delay(5);( X+ ^. x. S7 w0 H6 Z1 z1 ]& v$ g1 y. L
        E=0;2 v$ x; x! n# ^, @+ p
}
+ d' e. o* J2 m( I. @: [- y) e: Q) \* g
/***************向LCD写数据函数*/8 `/ _5 W0 a; p3 L
' Z8 U+ U' J6 i3 M  ~1 H
void write_data(uchar dat)  z7 p% C1 Z7 }& u7 k
{. i" N: Z2 _4 \2 M7 E! @
        delay(5);8 m9 T( }( K' O0 c8 M0 l+ @! B/ c
        RS=1;
: ~! d0 Z2 g! ~. M        RW=0;9 e4 `& h9 A# a9 O. V0 ^
        DB=dat;
7 n0 G  d2 {# d1 c* e- K7 a3 c! Q        delay(5);
# \; y# |9 N1 S9 |4 e5 ?- B        E=1;
  v& |8 [1 [- t" l( K        delay(5);
$ t# l. e# W8 I& [* q: v- ~$ }, e2 B. ]        E=0;
% `( _* k# k* r6 w7 x/ |}
5 Y, P3 {4 L$ h+ F  J7 i/ p8 g3 ]0 F& g. N. ?8 E. V) I  A0 n
/*LCD初始化函数*/
" A( \$ Y, v% L  r+ Nvoid init()
6 A( X* ]8 i0 T% p9 h/ ^{
1 j+ ~" T; L2 b  R! g! T        delay(1);  _. D- _0 h; N) d
        E=1;
/ z; Z  e3 `5 k. I/ T9 b0 s        write_com(0x38);                //功能设置***********设置8位格式,2行,5x10; S9 u  c8 l8 j7 A5 A* u% K; b
        delay(1);
9 z" U; _" V% X$ C1 A! M        write_com(0x0c);                 //显示开关控制*******设置整体显示  开光标 光标反白显示
2 S8 |' x% v' x' y- b        delay(1);                                ! C# Q( ?/ q# J# D/ A- J2 B* y
        write_com(0x06);                //进入模式设置指令***向右移 AC(地址计数器)增加1  整个显示移动. i1 n  r4 G# [. v- m' G7 l
        delay(1);! v) b  ?3 ?3 K: N
        write_com(0x01);                //清显示*************清除屏幕显示
7 i% [# r3 B  C! s0 y+ f9 U) d+ r  X, z        delay(10);
3 L  G- ^7 z# ^, C/ s, Y        write_com(0x10);                //归位***************将游标归位 移到开始位置. Y7 @* F- {) R1 n& ^
}8 r: {; _" R& f4 {/ g6 @) z, f
0 Z6 r2 T+ P3 D; Q
/*LCD显示位置设置*/1 P6 ?+ I* E- L( F6 K, v6 w
void set_xy(uchar x,uchar y), @$ @) g7 `7 k) J$ K5 a
{}8 }, Z6 U* o" z8 l+ l
3 Y. q( y6 }. P4 P, \- ]
) p+ l6 |" ?5 l8 t  x! s% j0 T9 l- u

6 A% H8 p8 Y" |8 {- Q9 q /*主函数*/                           % U) _5 F- z3 }* _& y- i% w

/ O5 O; }; W3 nvoid main()
* X7 t( m& j' c; ~7 p' q {2 q6 T& B" @2 y6 Q4 Q7 R5 ~  N
                  init();                                                        //初始化- {3 D0 r7 z+ H! ?  [

0 g4 ]7 P3 b0 |, j, j
& K0 h2 Y& ]: z& N# y; p  h% s  t& W3 c! a
        /********第一行显示******************************************************/& T7 m3 A% b3 ]. D* u! }
        write_com(0x80);                                //开始指定第一行第一个字符位置0x80
8 B5 I9 C: ?6 K: K        for(num=0;num<12;num++)                        //向1602写入第一行内容, O" x8 Q- n1 ~. m5 L2 L
        {                                                                //) J4 x1 Y+ e3 ^
        delay(500);                                                //
# f  g* m) S  [2 y                write_data(table0[num]);        //
) `: ^# t4 u9 Z" k- z8 x                                                                        //7 L; s' g: F% A7 q/ T
        }
% Z9 @/ N$ _1 x
3 m5 S% V7 w. _1 O6 z" ?: M4 w. S' w+ F3 t. o* l
/*************888****第二行显示***********************/  P- o! [$ w$ {- D
        delay(10000);$ M8 S+ [0 q  u$ z4 p2 T* |
        write_com(0x80+0x40);                        //开始指定第二行第一个字符位置0x80+0x40(第一行+0x40)
* f0 }# U% u- d% v  U. x        for(num=0;num<15 ;num++)                        //向1602写入第二行内容
6 Y" s, @# G( T  m3 {9 {        {                                                                //$ \7 E( w5 N8 {: m+ T! X
                delay(500);                                        //
( M; S9 I9 r/ T# M                write_data(table1[num]);    //
  Z: F2 \- ?* E                                                                          //" T6 n% a$ k; l7 F7 M8 u
        }- U9 N! W: y& b
        delay(50000);1 A/ k( _/ i' o4 Y( U
        delay(65535);
9 l4 j( Q! A1 p6 R2 U4 ]        delay(65535);; a/ j( i# W+ {, v/ u$ E. B; V' s# y! _
        delay(65535);
1 i1 `: p% ]" @' J; f$ V) l8 B, \" `) t  O/ o" m
        delay(65535);
4 Z4 |9 G2 ~# Y6 j& H- f' J4 g    delay(65535);
* I' e7 Y, g& S. g: [! a        delay(65535);
+ U# J" M5 E7 N# d% b. X! l        delay(50000);) V# {- o; K" e. Z+ T- q5 y- f" ?
        delay(65535);5 T' J3 `" H: B+ V+ j4 b
        delay(65535);
% A% W; i' B! x4 {, O' T  N' ~4 ?
. }0 j, o8 I: V. d3 _ }         6 C4 z. W3 M, a$ H7 p! S
. p+ d; a" F6 e( ?! \; m0 D
下载:4 _) j4 O6 J+ ^% k+ Q6 T, b$ Q
游客,如果您要查看本帖隐藏内容请回复
: e* ?3 y: Q/ O! y' u; s
7 W1 g8 s6 K, Y. ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-22 03:25 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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