|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include "periph_lcd.h" ; c4 ? I- h9 g- F
: c0 R- K+ ~! s* g8 ~6 O" Glcd_code_item_t LCD_CODE_TAB[]= $ b+ @, Z1 O0 S* s& Z- T
{
( K' @ g, s3 h* @" |7 ] [LCD_CHAR_0] ={.COM0_L=1,.COM0_H=0,.COM1_L=1,.COM1_H=1,.COM2_L=0,.COM2_H=1,.COM3_L=1,.COM3_H=1,}, + S9 Z9 }* Z1 q7 [9 i
[LCD_CHAR_1] ={.COM0_L=0,.COM0_H=0,.COM1_L=0,.COM1_H=1,.COM2_L=0,.COM2_H=1,.COM3_L=0,.COM3_H=0,}, 8 q3 `) f/ K& E+ J) ^* M; T
[LCD_CHAR_2] ={.COM0_L=1,.COM0_H=0,.COM1_L=1,.COM1_H=0,.COM2_L=1,.COM2_H=1,.COM3_L=0,.COM3_H=1,},
a d: _6 m# |: A$ a" |+ n [LCD_CHAR_3] ={.COM0_L=1,.COM0_H=0,.COM1_L=0,.COM1_H=1,.COM2_L=1,.COM2_H=1,.COM3_L=0,.COM3_H=1,}, ) Q6 e3 U/ z r& ~/ _1 F/ K
[LCD_CHAR_4] ={.COM0_L=0,.COM0_H=0,.COM1_L=0,.COM1_H=1,.COM2_L=1,.COM2_H=1,.COM3_L=1,.COM3_H=0,}, " X5 x* F6 {* b& k w
[LCD_CHAR_5] ={.COM0_L=1,.COM0_H=0,.COM1_L=0,.COM1_H=1,.COM2_L=1,.COM2_H=0,.COM3_L=1,.COM3_H=1,}, 9 o) j# ?" N, m. W
[LCD_CHAR_6] ={.COM0_L=1,.COM0_H=0,.COM1_L=1,.COM1_H=1,.COM2_L=1,.COM2_H=0,.COM3_L=1,.COM3_H=1,}, ; B% s. g6 ]" S8 C, R% [* a. W
[LCD_CHAR_7] ={.COM0_L=0,.COM0_H=0,.COM1_L=0,.COM1_H=1,.COM2_L=0,.COM2_H=1,.COM3_L=0,.COM3_H=1,},
9 e+ C7 E8 U2 |% e/ f [LCD_CHAR_8] ={.COM0_L=1,.COM0_H=0,.COM1_L=1,.COM1_H=1,.COM2_L=1,.COM2_H=1,.COM3_L=1,.COM3_H=1,},
4 O& p7 e( j6 I4 g [LCD_CHAR_9] ={.COM0_L=1,.COM0_H=0,.COM1_L=0,.COM1_H=1,.COM2_L=1,.COM2_H=1,.COM3_L=1,.COM3_H=1,},
& p2 D7 S$ V5 u : R! |0 |# R% y# g' |( o* f
[LCD_CHAR_OFF]={.COM0_L=0,.COM0_H=0,.COM1_L=0,.COM1_H=0,.COM2_L=0,.COM2_H=0,.COM3_L=0,.COM3_H=0,},
8 S, @, U8 V4 t* V8 S J};
3 K' w. z4 ^) N. S/ p' ^) J! O3 |+ e7 m3 ^9 ?
void LCD_Open(void) * g9 U& ]+ z% z! ^ A& s9 p
{
* }# P' S( }) R1 T# X4 E6 m! G, f' a CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE);
5 z0 C2 ~' Y8 ]) n" l CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);
4 K7 g2 \0 g3 P1 J LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);
: ^5 q. x- o" M3 K LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); 5 O/ G7 ?3 a9 P# D/ s
LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); / |6 ~% R, [0 K( J3 v( H
+ W, j; \ x+ c" C
LCD_ContrastConfig(LCD_Contrast_3V0);
: F2 O) U' |: E$ D+ u, h4 Z$ U LCD_DeadTimeConfig(LCD_DeadTime_0); / M' ?$ c% q& n& ^& h: A/ D# a
LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);
, ~5 s7 X9 W/ Q# t+ P& [ LCD_Cmd(ENABLE); " s8 A( @* ], ?* B% K! @
}
" O/ v5 I4 D7 g/ O& n' y- @5 ?' J* I+ E6 k) V/ k4 u* [9 Q
void LCD_DispCharOnIndex(uint8ch, uint8 index) 6 r( R' C3 i( Z' i) a
{ 4 f3 i: g2 J7 w$ Q
if(index>=LCD_INDEX_MAX_COUNT) 6 e0 F t: @8 N4 @9 z; c7 G) }
{
# k% b% s: a8 W% N! J5 d return ; / U* S, r. l/ j8 _4 z2 }
} 8 X1 J! ^( U% ?! [# u _
+ s* K5 c* f' j- [
uint8lcd_code=LCD_CODE_TAB[ch].Byte;
. L1 g0 ]0 v0 k! Z) b! K 3 E# Y: J m) _ ?
if(lcd_code & BIT_MAST_COM0_L)
& P" a! u9 s7 R0 P& v% ]6 p { $ z* @9 |, i: u F
bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);
( a j/ R* X) F& P9 {$ E }
) \, ]" W: |4 L4 b0 W, Y else
' z9 O/ B$ T& a) N# K { & o" P* }) X# ]) c4 f
bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2); # k1 ?4 y3 b$ }6 ]* T
}
- f4 I; |3 X9 E # N4 R' G; y- k6 Z; M" N- v
if(lcd_code & BIT_MAST_COM0_H) % W# R8 K2 n, F0 I% z
{
) l# b% h& f; ^ q& r8 u bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);
9 f, ~1 n" Q' G H6 ?) K% _ } 8 L. z2 k9 s3 N' A5 R1 x- S9 v9 \
else
* b7 ?# u+ T! j, V! s {
/ A6 M. Z; l1 ^ bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1);
0 ^" r1 z) r* _8 o1 f } ; m9 y/ K& L5 R% \
% f6 i7 ?# Z$ ?1 M7 e0 J: i4 C" p if(lcd_code & BIT_MAST_COM1_L)
( I9 k' ]1 Z4 j5 K1 _ { 8 d2 t5 d1 f0 D2 Q
bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);
7 m( b- \0 ?: l }
; D( m& \' x" u else
) i( N) n& q: J4 o' T! G {
! t7 A; R# B; s R, P2 ?: t bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2);
/ I$ T0 @' W6 L) d0 c2 R( Y } - l0 M! T8 y! ~- s1 Z
5 d9 ^( T& g9 p5 k* t% ]" E if(lcd_code & BIT_MAST_COM1_H)
& o/ |" a6 j! |1 O7 u { ' g8 Z8 L7 G9 v
bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);
4 ~, z1 L9 u! V/ {! j4 H }
& b ]9 }' B) y5 L1 q else . t2 u( N& i% G, W+ p- b
{
9 a, U8 P% k9 s( Y: I" n) L bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1);
- x) e6 n1 \4 N+ Z; |8 m% f3 b }
u4 S* c; a4 q5 V$ l: h 8 E2 ]% S. o: R& l2 O, O3 f8 K3 @
if(lcd_code & BIT_MAST_COM2_L)
' n, `8 O# p C9 ]# i { + L9 v# R; ?- b8 ~
bit_arry_set_bit((void *)LCD->RAM,28*2+index*2); ! _. E- [- a s# M0 S: f
}
0 ^& d! l2 {' I0 r, u0 N4 k else + L4 ^7 o n+ f
{
8 d7 C" f" L# b2 t bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); ! L4 b$ @/ v6 z* m& A+ s( v& Z) H0 V. _
}
1 m! \* u: E& Q5 i" S) M- G W2 i t0 r% @- U
if(lcd_code & BIT_MAST_COM2_H)
1 C5 O: I- V- ?& {5 M( j5 n: Q {
' X3 z% \& _" {9 |. ~$ f8 H bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);
; _/ s i% |6 \( v }
" B+ g+ }7 i5 r8 T8 ]2 Z. w else
' i, O- ?& o" \ { - H0 \, W, T9 n
bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1);
( [) H* X5 Q# X, q } # @7 A8 L2 M ~, s
: W5 m& r! c0 _9 i, M. m3 d
if(lcd_code & BIT_MAST_COM3_L) % i5 C3 t* e& M2 ]1 l$ q
{ , [' D' l0 A) T' [6 N
bit_arry_set_bit((void *)LCD->RAM,28*3+index*2); 6 f' x x- A( `7 j
}
7 V6 T8 N* a. N+ L. w else
, l% B e) k" l {
0 K1 @: }9 e# I bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2); & ^2 E2 h# u, F4 m8 E y
}
4 r8 _! ~* `+ ], x6 |" G9 G 6 c' l. J$ q- U
if(lcd_code & BIT_MAST_COM3_H)
3 I# X( t1 `3 G( g* }3 r1 N% ?0 g: l {
% r1 X4 |& ^2 w* U9 U bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1); ) I, M: T) A' v" f; e; m8 Y: F- |
}
0 U# w+ F6 ^) ]& I, c \ F8 T; y else
* }! P: V: \- z) {5 W7 S% b7 d" b {
$ Y4 S3 T u e. A) T bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);
" s, |6 m9 k- {" ?! w9 p3 X, t: `! z }
3 O' D; @% W( }* _+ E" i} " u S$ x* K; B) |3 ?6 W
8 p$ a' ]6 c4 D) h" D7 R9 x# M
void LCD_DispOffOnIndex(uint8index) 9 T2 l# e4 C9 x) @6 Z8 \
{ & \0 j$ R/ p- t8 |8 J/ c- n( n2 F" L
LCD_DispCharOnIndex(LCD_CHAR_OFF,index);
# G0 G4 L; V4 B0 x} s0 L# h9 d; J% U$ t
8 q6 ^$ f# u: I! X
! f! h8 T) m* A, Evoid LCD_DispOffOnAllIndex(void) % U9 |/ ^6 ^4 k' p0 P
{ m9 Z. R& |0 g* f1 f
for(uint8 i=0;i<lcd_index_max_count;i++)[size][="" font][="" backcolor][=""color][color="#333333][backcolor=rgb(242," 250,=""254)][size="11.818181991577148px]" [="" color]
& {/ D) E4 { g9 \ {
, Q, P/ \$ ~! [/ c" U4 i1 P& X5 _ LCD_DispCharOnIndex(LCD_CHAR_OFF,i);
o: `5 U# k0 U$ n3 u, u" r+ ? }
5 o! H, Y( W7 R& C} / S' V ]5 g* G7 B4 h9 _1 @
! s7 V/ E5 L( W2 ?2 j
void LCD_DispUint16(uint16num, uint8 blank)
$ o# h3 Q7 |8 Y. Y$ z{
% B6 `( E$ I9 { uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0}; h A% N2 q% _2 K4 U; j/ E
uint8 bcd_index;
0 M) Q( u+ J1 n uint8 lcd_index; ! ]( _! E0 F/ _6 F' U* A
z8 O" B& m4 j% p) w5 F uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT); ( A, r" N: Y0 y& m4 ^
, t' U1 p: e, e8 a' P; D
u16_to_bcd_5(num,bcd); / ~( E$ E) _9 l; N8 ^
3 }& H; m! T0 A2 O1 s0 M+ S6 l: ]4 B
bcd_index=index_max_count-1;
3 G3 ^4 O; T& {4 p9 K ! f2 n: M3 S$ ~7 e: t4 R2 K
for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--) * c. k5 R' L% o" p5 \- N- Q
{
$ z; O/ u* G9 L; o, p1 Y; s lcd_index=index_max_count-1-bcd_index;
. f8 ~5 ^; P) u* W/ b, P LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index);
7 F5 f/ d0 v1 `; O' m }
+ S( a. n9 \# F3 t# M5 q& s5 W
8 X8 C- N8 w* C/ n) c+ N for(;bcd_index!=0xff;bcd_index--)
7 ?2 A; ?- E( p {
5 Y, x2 V1 N! t$ F6 m3 l: @8 @ lcd_index=index_max_count-1-bcd_index; , |3 u" k% p. b9 _; }# @
LCD_DispCharOnIndex(bcd[bcd_index],lcd_index); 2 X9 R+ y6 T! C6 u4 o
}
2 q) r1 N* k! E, l: c; f4 e}
1 b6 S! Y) m! n" l2 I* T3 f, N! V4 R6 W
#include "stm8l15x.h"
! k4 l3 _/ K r#include "uni_int.h" * W* I" x- L$ ^8 p& A1 x2 N
#include "delay.h"
0 H8 G% V# k$ B#include "periph_lcd.h"
5 l9 y( Y9 x' Q) r; d U+ l$ d+ K$ g: i' J5 b H; \$ W
int main()
}, ?. o1 g- ^ \$ V2 [% M{
) n: N* m$ M; A2 ?7 O- o8 B LCD_Open(); / f. W+ c$ G/ H
3 g |; X. o' i, G5 `' z
uint16 num=100;
, M. h) `/ i( B8 R
' h6 d, n4 q3 c m; V. j' |/ { while(1) - i+ l" N7 l1 G1 G$ l" O: [
{
1 I4 U6 v: w# A. \# ~. J& D num--;
, X9 w6 Z' v& U, b LCD_DispUint16(num,LCD_CHAR_OFF); ( Q9 z3 }8 y$ \) |; w% E I
delay();
q( l- W& f) A9 s, ~7 o }
3 I4 c1 S, \ m" Q5 R% x" U6 @}
! [" E/ H) u! y" I/ k. c[size=11.818181991577148px][size=11.818181991577148px]
) C$ J- l/ i: Z3 ] |
|