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

LCD1602的简单显示

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
LCD1602的简单显示
+ S: I8 [" d& j; x; R  g6 o
$ M0 `& ^) d- C" n) v& U9 t, l3 ~
/ v3 w0 W7 j9 {& e
闲来无事,做几块板,就想做一下LCD1602的显示板. N0 [# k4 `. R7 l3 F# O" V
自己从写程序到仿真,从原理图设计,画PCB图,腐蚀钻孔,再到焊接,终于完成。* I- b$ u' f. t

" S* }% i9 j& {* R
2 ]( i; ~' C) K8 N0 k7 J, k, P
8 H! h: L$ s+ r2 X6 Z- s, a * l7 u5 s2 G; E- d/ h
; s, @3 Q7 X0 A5 y& G; e0 k; G
; d. \  ^9 q* Z) m8 d

2 t( x: V/ y6 B& W2 E4 F" s) t
. w& i' W. X5 D% i) P; x4 t
& T" [! ^) E/ Q0 n; z  /********************LCD1602 双行显示*****************************/
' d5 N. m) k, N1 B! J" ~$ |0 ?* X8 i1 u9 Y5 a4 R" G9 g
$ N; S3 D7 m% l; ~
#include
/ X& I5 T* F: o  h% D, p#define uint unsigned int% K) ]/ i* ^$ q7 T; n) ?3 O
#define uchar unsigned char
8 @$ s6 q7 k( A+ u9 n- N8 o& @6 F0 H. X
/***************************第一行显示********************************/
6 R$ [. j0 N* [/ I/ h7 puchar code table0[]="Xiao Qi ^_^ ";! w6 h3 Z: f: {' P
/***************第二行显示****************************************/
! m- I- C. K9 ~" Uuchar code table1[]="I LOVE YOU 1314";
/ L) b* Z& g2 f3 Iuchar num;
  _& `9 j1 d4 G( S6 g: S/**************1602的各端口与单片机衔接*/; d2 A5 x, H9 ^6 }
#define DB P0                //P0口为LCD数据线1 A6 i3 c; n$ s, n
sbit RS=P2^7;                //P3.4为LCD的RS端口
' A; {) q4 m3 ?. }0 Usbit RW=P2^6;                //P3.5为LCD的RW端口
  Q! W8 [; Q+ y1 W% o. Osbit E=P2^5 ;                 //P3.6为LCD的E端口3 }$ T' ^" m$ `3 X4 n. Y4 x
5 @. P. i# Q& i( o
/***************毫秒级************延时函数**************************************/# @4 j7 W: j: {
void delay(uint z)
! H1 z3 ~* s" I) B2 Q5 v0 H/ L{
7 I* A. o  L6 {8 y1 K) B        uint x,y;
9 b/ O5 a. i+ ?. c% ?1 f        for(x=z;x>0;x--);8 X' z  F& @) Q# P. `* U
        for(y=1100;y>0;y--);8 E5 Y& v9 D6 L0 y: o* u7 C- ]- Q% r
}4 L/ ]$ J! r6 x

0 L( n1 A- |% A7 T3 c# u/***********************向LCD写命令函数**************************************/% n1 T' e/ n4 f! _8 x
5 m! h7 v% K: H- x! f( ?) ]
void write_com(uchar dat)
% b+ P! E7 I9 N) Z: _8 N+ f# L) M{
! q* E+ b+ N2 f$ x; r        delay(5);0 F5 x/ d/ q9 ?
        RS=0;
* r2 f9 s, g9 d- b2 Q/ S6 F        RW=0;
( |" g, ^: W2 e4 g        DB=dat;
, F- R& z' C" o/ d        delay(5);
7 `! u% }7 u7 C" D$ U: E        E=1;
" C  Y( [; Q1 `+ j  _5 J. ?        delay(5);* w) @7 z; B" ?1 [% L
        E=0;
2 O$ Q& p7 ]- J; J}3 ]9 M9 t- E" D4 P- |/ A9 v. E

! b% g) {( A8 F& l! ]+ v  {/***************向LCD写数据函数*/
5 s+ L# J+ }4 V$ E% m! i- I
, A- O5 J" L" i9 ]void write_data(uchar dat)- L% q! t. {; u% z' b
{
9 J' ]. v  J! r; c8 H6 ?6 D8 G        delay(5);
6 U: V7 f, D% x        RS=1;
5 a: p* y; g8 {' W        RW=0;
' g. z; }  b) f9 C6 b; W. K        DB=dat;  C1 Q! s# C1 _9 M' w# \
        delay(5);
1 ?" B5 l* l/ S) w/ Y2 W        E=1;7 n# L1 ]/ [2 U9 n' ]: I
        delay(5);
4 F" N+ F% P  C" Z        E=0;
/ q6 H; k! Z2 M" K3 q' }}/ W3 l& z" X" m
# x9 {; H! s& u& n
/*LCD初始化函数*/
; j( I6 J) [) k4 g6 d' o. Q9 a! Rvoid init()- h2 ?2 ]) E# W0 A9 x! N
{
$ Q! f, Y* e6 X2 j7 I: W% `1 |        delay(1);
# F8 @( Z! s% M        E=1;' v, `- {5 ^7 r! U
        write_com(0x38);                //功能设置***********设置8位格式,2行,5x10( d2 A) F- s- X& F" R
        delay(1);
6 l+ J( s8 r) H% H$ f; }( z        write_com(0x0c);                 //显示开关控制*******设置整体显示  开光标 光标反白显示7 ?6 m1 J* s2 ?; s
        delay(1);                                
& \# B& K% U' h4 u        write_com(0x06);                //进入模式设置指令***向右移 AC(地址计数器)增加1  整个显示移动
+ a8 b6 L; }/ ~6 M7 n0 C1 a6 u        delay(1);
  Z" H, O8 L* a; i1 |        write_com(0x01);                //清显示*************清除屏幕显示( y2 B/ Q; m; R- U. c: a5 c
        delay(10);) ?, {. ]) F0 R' ]+ T8 @5 A2 v4 b
        write_com(0x10);                //归位***************将游标归位 移到开始位置( s; m7 ?# m( C) Q' t
}
, }3 @/ `- q* z, q( Q6 z; M5 q/ z; g# `' L! E; q3 Q6 G3 i3 ~
/*LCD显示位置设置*/( a# \; E. x6 u3 L3 V" Y
void set_xy(uchar x,uchar y)
, P- [& N) `: B: u{}3 Y! p8 i, Z! H2 y5 `( ~4 J* f* r+ i8 a

- [% U8 I7 R- e: g- h8 @  \# L8 r' a
0 w% C2 U' |. G2 M
/*主函数*/                           
/ w8 |4 e& ^! J) P
* h. |% F8 _2 U3 f! i- S9 A8 Zvoid main()
( p% h  ?% L8 }! Z8 U5 Z5 y {3 z. d7 \. `4 N
                  init();                                                        //初始化
' v5 M# G1 n; N8 e' n. h
3 [, H3 T$ F) P& f9 Q6 w5 z5 ~( @) R' p9 M* n# Y/ z7 x  e
# X) _, B4 ^  S: Z' _
        /********第一行显示******************************************************/# |* i1 K0 H! G5 Z1 U6 e/ {! M  R
        write_com(0x80);                                //开始指定第一行第一个字符位置0x80
! x1 \9 D5 z2 X0 @  R1 J" g        for(num=0;num<12;num++)                        //向1602写入第一行内容
2 M0 ~6 h+ @; p! n7 O        {                                                                //4 ~. R. v% M2 d3 o
        delay(500);                                                //3 \/ v# `0 L( Q
                write_data(table0[num]);        //) Q9 l' }8 g' w6 Y1 w& r
                                                                        //5 w% b" S/ _3 k. m- m9 u/ u
        }
1 E) b* b# J1 r4 F9 D% S5 e8 R" h* {+ J: W4 b$ s; g7 N

* J7 w$ K% M- [/ H1 R3 H/*************888****第二行显示***********************/
/ _2 ?: f; r+ y3 O! V        delay(10000);9 r) |) K6 a2 a% {8 M3 c8 s% F
        write_com(0x80+0x40);                        //开始指定第二行第一个字符位置0x80+0x40(第一行+0x40)% ^9 \0 K& G0 g  y0 ?) }% X) a
        for(num=0;num<15 ;num++)                        //向1602写入第二行内容
. U! G0 Y/ U; h2 n  E        {                                                                //; |0 `1 b" w0 u( p* j
                delay(500);                                        //
8 |' U# N' p; Z8 x& j: V                write_data(table1[num]);    //# ^$ G) z+ P& I
                                                                          //5 i# z3 R) X. C" @4 Z8 _
        }! b, a1 s- D9 y5 z, Q4 ]/ W2 A( L
        delay(50000);) `& b3 k( Z: O1 j2 i' J
        delay(65535);. J" W# ?5 ~4 M( m7 U
        delay(65535);' C3 z1 D' j( \8 ]
        delay(65535);
" D# ~4 \0 t5 _2 P7 b- e
6 h9 s& p* u& s        delay(65535);
& ?+ N; \" C/ n  w  J1 I3 o$ R    delay(65535);
! K9 Q+ K# E. Q1 |# u  Q        delay(65535);
5 n: |. _! e( ^2 p" |        delay(50000);) S, M, l9 P8 ~/ Z: n
        delay(65535);
# U( G- {8 H. G( u# c        delay(65535);' ?' B2 V# j6 ?1 M1 d% j( \

0 o; I& M' J) V! S, u }         ' v- c" }' G+ T$ n, J+ i9 `" y

: X. L2 B- g# r下载:
1 o* W; e9 a, F. \9 H: s
游客,如果您要查看本帖隐藏内容请回复

+ Y6 b1 C9 @8 Y! P& o& t
. ^9 z+ c: p1 w- v2 B' T8 |
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-6 20:41 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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