|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1602字符显示keil+protues详细讲解及说明' u9 ]- T8 q) E6 s* b o7 N
3 B: b, F1 b( S
+ n4 [9 F+ M5 U/ q8 n1 L
1602字符显示keil+protues详细讲解及说明8 s9 _; _6 I. @9 b C
' V! L( u/ k" x1 }6 v- Z# u源程序:
, ?! D9 u& v1 I8 h# _#include<reg52.h>
+ T; ~/ i% e0 r9 O) Z- Etypedef unsigned int u16;1 ?. p# ?, ^4 ?
typedef unsigned char u8;
! P$ R p3 j* D6 N
7 U1 ]6 v, e- t) g4 c( Y+ {#define DATA P0 //宏定义,相当于 define π 3.14,这里没有等号。
$ _2 {6 [, J# o1 D
9 w# Y+ R! c* p2 |sbit rs = P2^1; //rs,sw,en;可以理解成液晶的几个功能开关,无非就只有两种状态$ g8 O4 U/ j/ a2 W) J/ R: f4 ]7 v/ d
sbit rw = P1^5; //为0或1,对应的功能详细看使用手册。这里是把液晶的
. N* b/ @& W( L9 msbit en = P1^6; //这三个开关与单片机引脚定义为链接状态,以便单片机控制液晶。. `, X' H7 \5 J8 C1 Z# v0 e7 A- l
9 y c, r1 C) J% K7 _- V6 p4 N2 x1 {
void delay(u16 num)
1 N/ C, h2 \! h- j{
6 E u \+ Q) `3 a" I u16 x,y;
/ c4 J3 }/ E& Q% m( c for (x=num;x>0;x--)
2 T! k7 S. a1 w A for(y=110;y>0;y--); Z! D1 W9 @' D% r$ L; h4 [
0 W; g% r5 ]' \3 j, w0 q, V# Y
} {* ?9 Y. ~$ ?4 s* l
void write_cmd(u8 cmd) //写指令) T# g$ j" s0 v. o
{! [$ f6 R! \( Y+ J
rs=0; //选择指令寄存器
/ F; V R- P7 G rw=0; //进行写操作
# U2 [" w9 b9 F DATA = cmd; //把指令传给单片机6 A6 z% ]9 |8 X+ h4 s6 r
delay(5);
9 E+ J* @7 k4 `3 m. E8 \ en=1;. l0 f4 l0 T4 N
delay(5);# b3 I$ ^) k& u! j! z
en=0; //en为使能端,当en由高电平跳到底电平时,液晶模块执行命令。) G& @; Q5 `' c& X* e
}
2 ~5 C# N' r7 O1 |; o; I% Z4 B) jvoid write_data(u8 dat). R/ ]+ `" C% o: G5 {
{1 t0 A1 L% O( m# ?3 y. j/ O( F
rs=1; //选择数据寄存器; Z( V( R4 u4 G8 k h
rw=0; //进行写操作
6 S/ k2 D, y# y: J$ P6 O3 ?$ } DATA = dat; // 把数据传给单片机0 C# \/ X) t. R" |& h
delay(5);$ N. J k" ^. ^- J3 M+ q, G
en=1;
! p" H5 R" Z4 O) z4 f delay(5);
7 ?4 `9 W1 ^! r en=0;; D, o) F* D6 N+ u3 l6 h
}" W# I( n; Y: u. o$ s0 H. O. G T
void lcd_init() //初始化6 S& \+ C+ c6 }7 M( D7 ?
{) s4 `# ~! E3 K6 ^8 S7 ]$ }
write_cmd(0x02); //归为
?8 R' v0 W ]. S. y+ |" ?! ` write_cmd(0x06); //设置输入方式" V+ l6 ~3 R+ z) H3 }( Z
write_cmd(0x0e); //控制显示开关3 _9 p$ _$ T( j- r8 t e# p- ?! Y
write_cmd(0x38); //功能设置$ g* J2 \2 z5 }* o+ w2 n
write_cmd(0x01); //清屏1 R- e3 |& ^" N6 Z' f! s/ E
}
( q' V4 j' C4 L4 e+ Uvoid main()
3 _. {' Z( _+ [; h) _; T4 H{ \" f5 k9 i ~- ?( \
rw=0;
9 R# g0 g0 t! @' m$ C/ ~ rs=0;
; a+ H9 w) k3 ]( |: c: b en=0;$ Q* D- {/ X* R$ q0 y
lcd_init();
- L) z& |/ f. M/ t2 b write_cmd(0x80); //0x80,(0xc0)为在液晶上显示的地址;80为第一排显示,c0为第二排显示。% Z$ [* Y+ j/ o1 T! u. {4 [
write_data('x'); //显示的数据
) y# c' A* V. c' f$ O write_data('i');/ p' Q' ~4 u7 x- f; ]& W1 {6 ^
write_data('a');
7 {+ ^* ~ j" A% r' F: Q6 B write_data('o');
2 z M3 l4 H( t2 [) A write_data(' ');
2 {, a/ O6 ?- \9 P; K4 }* c: d5 ^ write_data('p');
5 M" b2 I( y* F- U. B write_data('e');$ N8 C1 y& ]+ @' b2 O# Y
write_data('n');9 I( Y0 c' J1 D% I: v# {
write_data('g');) G, z6 u& Y% s L: I& ?" d! q
write_data(' ');3 d: f3 P/ ^/ h* u, d
write_data('y');9 M5 F; }- O# n
write_data('o');+ J! W. b) x; h; U" X
write_data('u');
9 w7 P0 ?+ } n3 t write_cmd(0xc0); //第二排显示% b$ {1 B3 H: p
write_data('t'); //显示的数据
; T$ G" U5 v Awhile(1);' { J# \' `3 E4 u% G: q3 u& p
}* O; T/ v6 m5 Q7 i5 D
" B8 \1 Y$ L4 t下载:0 r9 r" b4 A$ B5 M( e
1 K" p5 q8 P) p" c* W
3 X+ M6 F0 G% O1 r% d |
|