|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
keil程序编译无错,但是无法在LCD1602上显示东西5 ^3 U' z$ E: `5 J# B' \
5 Z$ \, O# {, B) o/ M
% S8 \3 w F- n' x* u6 H. p. u
我打算实现在lcd上显示时分秒功能,但是无法显示,求大神们指导啊!!!要哭了都!!!
% f& g5 g' N6 Q& B* s$ H. I#include<reg52.h>
, `( J# r- R n5 W3 ?#define unit unsigned int/ I. R: C0 T$ K$ O! ?1 f. Y
#define unit unsigned long int
4 {/ p% b6 z9 u; ~#define unit unsigned char uchar code table[]={'0','1','2','3','4','5','6','7','8','9'};
, G( X% O/ E7 ^9 s m8 j8 Junsigned char table[];7 g' I. f& d d6 ?
unsigned char table1[]=" : ";
5 p0 O7 X2 }6 ~- J4 M6 x/ n% T Tsbit RS_LCD=P0^7;
- i- @" h5 \1 A* vsbit RW_LCD=P0^6;( }& i6 d- A2 a, {* l
sbit EN_LCD=P0^5;" F6 f4 ^: y6 h3 R- {( ?; @( O9 i& u
void init_lcd();
) E c$ L( L7 s4 r) Svoid init_zd();
. x t' R- {, X' s+ gvoid Write_com(unsigned char com);
+ P+ ]0 F" j* Jvoid Write_date(unsigned char date);
/ f( ]8 O- [& ]9 Yvoid lcd_pos (unsigned char pos);( X7 ?; d' E" j; d
void delay(unit xms);
: ~& c0 V, a" R3 F6 w6 h4 i" `0 r2 rvoid date_processing();
2 q$ L3 {# u( U0 _unit sum = 0 ;
X- z7 Z( i: @" r# Sunsigned char time_seconds=0;
( g% W. E- K$ O N. punsigned char time_minutes=0;9 q) d9 T* e) D* \3 b0 T. [
unsigned char time_hours=0;, L! r2 O; ^% j% Z& b! K
unsigned char x=0; T4 t6 ~( ?( x- c8 d. g. E
void main()
' O6 N" O( r" p, h+ e) t{- g7 E. C1 y% N; f
unsigned char i;
* P, j+ K8 u9 w; U1 i5 |init_lcd();' a A5 l4 D. V6 ^# X0 R% @: _
init_zd();
& Y' H0 J& t' o; Vwhile(1);
+ W7 ]. i! l0 L$ `0 c+ j{
2 Q8 p: E1 B8 u: @1 J( U1 `1 @) tdate_processing();! z8 d0 u. i" @# z! m) M
lcd_pos (0x41);) K: i+ [" @& _/ m9 C
Write_date(table[time_hours/10]);
6 L! o: V# Y& Sdelay(5);
0 W: H3 L: f9 x9 T6 z$ Z/ RWrite_date(table[time_hours%10]);2 t$ I. J a$ L; D7 ^# F+ X
delay(5);
2 R# v% V/ N; K( E* a1 [1 Wfor(i=0;i<3;i++)% I" v& d# c1 t; Q- W5 T
{
; C2 Y" R5 x* t" Y7 U+ r |+ MWrite_date(table1);
' V a1 { C! Z4 Jdelay(5);; I3 @* `) r* A# I0 I m
}0 n% l( T; T( B5 b$ W3 E
Write_date(table[time_minutes/10]);
f h4 i: Y" E# ~' B4 p" tdelay(5);+ {0 _2 A4 K! F1 V( _
Write_date(table[time_minutes%10]);' A. I1 _5 f: p1 p9 t3 {
delay(5);2 s; @" e! ^; v6 k& n" P( z
for(i=0;i<3;i++)4 `% c0 {- n6 O% q0 @- [% R7 {) D
{& c" n7 U+ [ u. I: Q: {! I; L$ V
Write_date(table1);3 N: ^ c q. [
delay(5);
4 u( {3 ^& i- L4 v2 u}
6 M) G4 _( r6 t* u" l. B4 jWrite_date(table[time_seconds/10]);8 R# M$ @8 T3 o+ `) c
delay(5);
6 \7 s% o- O8 XWrite_date(table[time_seconds%10]);& G- I7 _# q- X7 w& m
delay(500);
* X. l1 C( E* }3 T$ t0 o& WWrite_com(0x01);
+ d! d" m: x* A6 e) t( {, R; ?}- H1 U9 G+ o# y2 j/ f! h
}
# J- z6 @5 z4 w i* Y, T8 M$ k0 @void date_processing()
3 ~* G% D3 w+ I4 g. D+ B{
% E/ ]7 r& _9 X/ C" T( k! t- q* Gtime_hours=sum/3600;7 {0 r. k5 n5 r
time_minutes=(sum%3600)/60;7 s: n- W8 d( D1 ], Y W$ w9 a
time_seconds=(sum%3600)/60;
7 {. H: D. S# Q) x& I7 uif(time_hours==24)
7 v; v. E6 s Q# r+ c% @" Q) n{
) j% @8 U, O# j' U/ i4 Msum=0;2 W6 Z* s6 P9 q
}7 }. ?0 R+ ~! |: R8 L& M) P
}
3 d1 ~% v( l8 u5 E' U' ~: [& Hvoid init_zd()
# Q% I8 \( S6 r8 G G4 i( [{
2 X1 P7 v- Y/ z' r$ }TMOD=0x01;
8 j+ x3 M7 Q7 f! S% ]( qTH0=(65536-50000)/256;' t% L0 P& K! k f
TL0=(65536-50000)%256;/ S7 }# b* y# G3 @8 n$ H
EA=1;8 {" z: R! J& B) O# {2 O
ET0=1;6 P$ s% m: w9 u* d
TR0=1;* D7 b4 @( b7 L0 `" k
}, c1 U9 p8 |* r: i
void lcd_pos (unsigned char pos), r: q3 |2 V/ L' Y
{
* }" c* S: a$ o8 V' x Write_com(pos|0x80);% T2 {8 I/ o, h6 u
}7 y K$ \& y6 P3 Y
void IT_0() interrupt 1
' }' ~/ B4 t' E0 o9 H( {/ _{; C& ]1 X2 o+ X2 H1 @/ L
TH0=(65536-50000)/256;3 U7 q* y; ~, E
TL0=(65536-50000)%256;
2 d6 A) \4 V2 Y# d* t) \ @9 J l! l( _x++;$ `' c1 }0 b3 @% N/ K
if(x==20)
# z i6 D' p) m$ ]{* k* f- E/ ]8 n: E+ d& D
x=0;, k0 p: Z) u) P) q: E
sum++;/ Q$ d: l; Y8 f% D1 p
}3 z2 W" J2 ^% W" l' T
}- n& R4 ~2 ]; F( t( ^9 P' B
void init_lcd()
. [2 X1 ?0 E4 Z# x# x{$ U4 O) a9 w) o- Y* `/ a0 j
Write_com(0x38);
% C! g: ^& m: U$ jdelay(5);# }( H7 z! \! w1 y3 p
Write_com(0x0c);
; {+ ~$ ?& {, s% H Fdelay(5);5 C4 `# S& l6 q- t, W
Write_com(0x06);
, q3 s+ ?8 |" Z2 v2 i* pdelay(5);" n( n( f+ D1 m; R
Write_com(0x01);
, x: F$ G7 P) _7 b. ndelay(5);# i- Q' G$ _5 L4 D( b
} h# X, m9 B3 _) ^
void Write_com(char com)7 w$ R- C7 Z/ m. |
{/ e9 y4 n2 k2 q. c: c, f
RS_LCD=0;
@7 P+ d( `1 I. h8 oRW_LCD=0;* w; L/ y% R4 [, \/ l
EN_LCD=0;% R4 G' R6 ~% s0 y
delay(5);
6 L# w. v& E$ ^% |4 IP2=com;
: m1 E0 s. ^# c$ X7 \9 I# Xdelay(5);' h) l: Z6 r! a+ T$ X& G- U0 A8 d" q7 N
EN_LCD=1;
2 C8 l# `, M# w8 ddelay(5);# ^3 `2 _4 H/ }9 [8 T
EN_LCD=0;
9 @; W- J% e) U9 W" f}
r) u! I% g* }8 w* z9 T! Evoid Write_date(unsigned char date)
( c0 o4 ?: d! D" J4 x; w8 k{7 p6 e0 `0 t. v1 V8 C6 j! e0 b. L
RS_LCD=1;
, i% a! v6 C2 }" dRW_LCD=0;( C; U: e. ~) Y
EN_LCD=0;% a- T$ Y8 D& o6 Z8 i+ G
delay(5);
Z. K) [- m1 h. h: R- pP2=date;1 t! H8 _5 S' e( C, z" V
delay(5);& h d9 X" y" d+ v @1 `# L3 ^! Y
EN_LCD=1;
r7 \, U. \! @/ r0 M. S2 X4 l5 \delay(5);
' ]8 L1 D# m* r% E$ z# {EN_LCD=0;/ P( J9 ?% O q* m4 n; V
}+ @$ m4 ] q. K& _2 I# y _
void delay(unit xms)% u5 i) P# D6 {; P6 O
{
+ J" h+ k2 p+ y2 T1 Z d: [ I% r: zunit i,j;( o) c% B9 P4 }* l
for(i=xms;i>0;i--)6 E1 c: H" Z, o/ z3 N. @
for(j=100;j>0;j--)
5 l; E8 u4 t4 F o( j;+ D/ Y. m- N, y/ E7 n9 F/ {
}# a: b3 \$ z1 N4 b, e) I+ K p5 f
|
|