|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
keil程序编译无错,但是无法在LCD1602上显示东西
1 C4 W+ l) m) A6 L, V% f5 c6 l8 A: n' s0 v6 e9 G
+ m3 C" B2 w1 w3 [8 Q/ ]我打算实现在lcd上显示时分秒功能,但是无法显示,求大神们指导啊!!!要哭了都!!!
. X# |) ^ g, L' ]9 g% p7 P* v: W#include<reg52.h>
; H! D: Z4 m6 w#define unit unsigned int
3 M: `) | A. t4 I5 h. x#define unit unsigned long int
1 T" h0 m( O5 p# k6 Y; ^#define unit unsigned char uchar code table[]={'0','1','2','3','4','5','6','7','8','9'};7 k+ y$ p% H5 {% n1 Z1 K& @( M
unsigned char table[];2 x$ ?) f' ~& E& j: g/ i. }4 \9 W- k# F
unsigned char table1[]=" : ";
+ Q5 A) B; R S$ r% U- @sbit RS_LCD=P0^7;
6 d+ Y" J+ K0 D3 zsbit RW_LCD=P0^6;1 x: \: C) I5 V% [
sbit EN_LCD=P0^5;7 Z- E6 r' v) }$ v' g- v
void init_lcd();3 S! I& i9 P, t
void init_zd();
6 b8 T: Z% j# ~/ r# v( w# Svoid Write_com(unsigned char com);
' R+ n% t& \" U7 o" jvoid Write_date(unsigned char date);3 z% `; k8 L5 E% I+ }7 p, H
void lcd_pos (unsigned char pos);
~( g! w6 ]( }4 `9 j+ n8 s3 {void delay(unit xms);3 t/ F, v3 k! h0 d* |. C5 _1 ?
void date_processing();
# o+ Z d! j/ L: n5 s% W4 j# Ounit sum = 0 ;: V6 s/ x" U$ U- _) h- w" P
unsigned char time_seconds=0;
1 `% [" _) w1 q" i- Munsigned char time_minutes=0;
! Y% b$ e c% Wunsigned char time_hours=0;
* q0 F; ?# l$ X3 l4 C& o. Cunsigned char x=0;
. j( v8 h5 R! f& V% A" L0 nvoid main()+ d) r+ E1 Z; l& n+ M3 R( Z; E
{
- X, I% p# l' U8 x: aunsigned char i;
+ y7 g2 ?* Q8 |9 o P8 ginit_lcd();
0 [9 {& y9 h O0 k6 V$ {: y8 d# Winit_zd();) q+ `& _) i. I0 R8 j8 E# ^( J
while(1);8 n# d0 m4 a1 e7 P4 @
{0 z; h% n) d, m
date_processing();
1 j; L% N) ]7 b) Y& Wlcd_pos (0x41);
, m* B, S1 d e5 HWrite_date(table[time_hours/10]);' P/ E" H4 T1 J3 t |6 |0 V0 D) Z
delay(5);. F% F, v0 s, S+ A! E
Write_date(table[time_hours%10]);
0 q6 d, D% ~* d( R/ L5 Rdelay(5);
$ r# \$ Z. _) N8 Q! Cfor(i=0;i<3;i++)+ |! q: V o8 k" p
{/ ~; S. J9 B$ N. {! p( G. h
Write_date(table1);" D# m0 U( z3 [ N+ c1 _& I
delay(5);% U+ t7 l6 T! t) T
}3 G6 `" @0 P, Z' j9 v
Write_date(table[time_minutes/10]);* u( R" b: H8 K7 t9 \
delay(5);
) b) p) |( z* [7 A( l7 b9 JWrite_date(table[time_minutes%10]);
1 j) e: F7 m/ e& T" Fdelay(5);' t. P# Y) S# O+ ]: q
for(i=0;i<3;i++)
1 C& ^0 R% F* H A{( M& N8 V$ y7 M7 j
Write_date(table1);
7 }2 s. B0 m* U: |* E- ]delay(5);0 e j4 m: Y- P7 ]
}% a3 \: T1 S; X# F% C
Write_date(table[time_seconds/10]);
6 @. }! {' l7 p9 p6 jdelay(5);' k/ C6 y4 ]5 l# W% Y2 G
Write_date(table[time_seconds%10]);, G5 T3 T5 z" k
delay(500);( J& q! I: _ [" G0 Z2 C; ~) q8 x( S/ q
Write_com(0x01);4 r- Q9 Q! n9 i7 ?9 @
}
; F1 K9 \9 r) s! j2 b4 R}
& q% v" G+ U( t8 a* ~void date_processing()
, Y" h$ @' o8 |5 w# |{
% J' ` S3 y# xtime_hours=sum/3600;- ]% N- ]' i& F/ P
time_minutes=(sum%3600)/60;/ g; F- w' {0 L+ T
time_seconds=(sum%3600)/60;) s& V3 ?5 e* [" p6 p
if(time_hours==24)
. j' d; M9 V' m% ~4 {- Y{) s) {3 k. ^* r
sum=0;" ?# i9 a, f) I& L
}- z; y9 y5 u1 T' s4 W0 h; e
}$ D2 k1 B- L; W
void init_zd()2 Z6 m3 j% X' P8 W! N
{
f% T! u/ u. t: `4 r0 U/ MTMOD=0x01;, u1 D1 V: n6 [% O7 {5 X
TH0=(65536-50000)/256;5 y6 P* e) } f- X
TL0=(65536-50000)%256;
3 R! k; I9 N# C+ F& G% T) I: x* vEA=1;
& e; o: U+ T, e# o8 \ET0=1;
# w1 ~* x1 I0 U2 w8 W/ @+ R" FTR0=1;2 M0 H, f$ a8 V7 x* S
}3 o) r# U" @$ Z' `9 p
void lcd_pos (unsigned char pos)
# \# Q0 r* i2 U- | t7 Q{
$ f# o, W! w4 o2 |( _ Write_com(pos|0x80);
a5 {0 b) N( ?0 |}$ a- s; O% e# n8 s) @
void IT_0() interrupt 1
! c2 {, [* v* ]1 Z5 w{
( S, c+ }7 C. l( x9 }1 o c1 `2 I) ^TH0=(65536-50000)/256;
8 a1 O+ A+ @9 r% BTL0=(65536-50000)%256;' W0 r" g8 S! F. [
x++;
: ?9 Q/ ]6 V8 h y9 Uif(x==20)2 R$ a* x7 V/ |# _
{. I1 U' `8 @7 o6 O
x=0;
7 k( ~1 v0 ~* @ ~6 k Msum++;) H# L( B6 G% Y
}
$ B: l, ^# @. a8 D}
; n1 j5 t g7 M2 f4 \void init_lcd()0 C* a7 |6 N0 n$ |4 O2 }' N6 h% v
{: P: E! C$ V% u' i$ M! T
Write_com(0x38);
v% c. ~9 {% g* Vdelay(5);% T7 l0 M3 A3 P4 f
Write_com(0x0c);$ ]! {( g/ c8 b' d
delay(5);
* M. o: \( T/ w' M! H9 b$ kWrite_com(0x06);
& p( {2 t- p- J% z. Z( z* A8 wdelay(5);
" b( X1 T3 A8 O2 r8 P6 @3 Q3 DWrite_com(0x01);9 }5 Y$ O# m6 K
delay(5);$ i; i$ S" X- S5 r( r
}
+ b! K4 z' R) ]0 O' vvoid Write_com(char com)
" Y+ [% W/ }1 P8 C{
) L9 P( f/ c: {RS_LCD=0;
! A3 ^* j+ y: u# NRW_LCD=0;
: T, ~: y" Z* `1 V* e7 ?0 {* bEN_LCD=0;0 i* g" e; a, `! U6 i- R, c
delay(5);+ G: @) e; v! L `/ L g. y
P2=com;8 d& h% N: S ?, `! F2 q! q
delay(5);9 G4 n2 N# W. `- a
EN_LCD=1;) x1 `+ J5 |4 I" s
delay(5);4 X% o0 R* \$ C- F0 w9 }
EN_LCD=0;
/ Q! F u' k2 `6 `- Y}
% k$ B6 U2 F$ W. E4 }* e w, k# h3 Kvoid Write_date(unsigned char date)
8 w$ C3 _! D9 F( E5 z" x{- a$ E e7 z% D2 X2 W
RS_LCD=1;
/ C% f% L' J7 n5 r; S4 L( PRW_LCD=0;9 V' n7 J$ [7 a1 b
EN_LCD=0;8 U( ^" t" L4 P8 w% c
delay(5);
) w) V# C1 \! t' t& A3 Q% S2 Y( G+ RP2=date;% J! W( S+ C5 p" w4 G: A
delay(5);
; a, A4 V; P, M: p tEN_LCD=1;3 O, Z! }' h$ w) w v1 p, i
delay(5);
: H8 r' K7 `; ^EN_LCD=0;, Z. P+ ^" _ _) v
}
* I% w9 N3 f ]" G% D& e3 Z8 Pvoid delay(unit xms)
' f3 j; k% P2 w$ B6 q U0 A$ e{
* u( D6 ~. G1 F6 V) P4 A- G4 [& Gunit i,j;
" \/ c0 ^8 E- Ufor(i=xms;i>0;i--)9 j6 F }; K0 \( k8 l/ A
for(j=100;j>0;j--)# s2 f2 G* G9 j0 F* S" {+ x+ X
;
! O( v+ W! \" m: K}* \) Y4 d7 w G; d8 B
|
|