|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include "periph_lcd.h" ) }) }1 D" ^: G" X4 Q5 S
% }. W7 Z1 D0 {8 z, X
lcd_code_item_t LCD_CODE_TAB[]= 0 i/ `+ O" Y1 P: m
{
2 \# F, |+ @/ y1 W, \1 ] [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,},
* l! i" R J0 p6 G" c g) J5 W [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,},
* u$ ^% T0 h) c [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,}, , u' J& d+ N8 u' C3 M
[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,},
, `7 ]" R- B( o8 d; D [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,},
, p8 Y/ y6 A( I7 \ i7 Z. f [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,}, 1 W5 n' |& A+ A# y' f/ y
[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,},
5 R* W5 ?. C, l x8 _ [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,}, - q. ~9 a5 i; E% z
[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,}, " }$ T+ Z) X, M+ \
[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,}, 5 z. V' `: | x$ i
* p" V2 J ~8 V
[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,},
3 q. [) i9 g5 S$ w};
0 v) k# t3 e8 C; H& U. G
- M4 a% C/ M6 u3 I7 gvoid LCD_Open(void) . j4 ]3 S4 j8 a1 W- `
{
5 l+ d. Y" T0 ^# b" C4 u CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE);
9 q7 O' p6 m# j, f, g- n! {7 f CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);
$ K6 I2 H% c3 D$ x. F LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);1 B6 X$ ~: Y2 A, T; m
LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); : C m# R' x: X" n; S
LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03);
9 F( H$ [- s d6 @& T
+ _) t! s$ l% m LCD_ContrastConfig(LCD_Contrast_3V0);
1 ~, d. ~! U7 c ~6 ^ LCD_DeadTimeConfig(LCD_DeadTime_0); 9 L. n2 e0 l7 w7 d5 R0 }3 w
LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);
2 a/ U! o, P0 R( B. \ LCD_Cmd(ENABLE);
0 @6 N( r; I" L& |} * K) d3 ?& o+ c' z5 v( h
, s! h4 ]9 G/ r4 N$ g& e" P% W2 t
void LCD_DispCharOnIndex(uint8ch, uint8 index) * X& F: d- Y1 _& d
{
* M* Q- Y( h' z `/ K( f if(index>=LCD_INDEX_MAX_COUNT)
# c! |1 N5 `3 \1 g { " W! d7 {! d8 M6 A
return ; " Y \. n: c! Q& k+ e' A" t5 _
} 5 h6 ]$ G5 u" X. y4 b
7 ^4 y7 l3 G+ T$ W uint8lcd_code=LCD_CODE_TAB[ch].Byte;
- h4 }1 j M- o- |8 u( @ r
" G7 b6 t) o4 G7 c if(lcd_code & BIT_MAST_COM0_L)
; S. l: D9 K- H5 \# O { 0 f! s7 o& y9 x. b
bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);
" p8 r4 d1 I$ R- H. X+ N }
' O: e$ P+ V# p' U. @+ B# _% j$ l$ e else
" c; V' } z8 g8 L2 X {
* E1 M4 _! }5 d5 R3 N' z bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2);
8 ]0 W' E$ y! n8 ]) R9 i2 |, l } " q% V3 y) ?5 g
# |) Y- z- k. w3 m) o0 | if(lcd_code & BIT_MAST_COM0_H) 6 v: n2 o+ J7 z. ]' H4 M0 v
{ 1 _0 E& u, n, [& n5 z
bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);
9 T! Z( z2 s8 |0 X, p' p1 I }
* S: ^5 i6 Y4 W" O else 8 n# X& l5 B* X2 g
{
# n7 a$ _0 @1 x- | bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1); 6 [( c+ x" y( T, D! L" F. V- E
} % ~4 j2 |3 `/ S2 F
8 f) B+ K* D' n/ u X: u+ F. `& t
if(lcd_code & BIT_MAST_COM1_L) . q; {' A1 I5 X4 a; Q: |
{ : g+ v; k6 x& W- w
bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);
) `" A6 `% V% I# z3 L# r' h" A& } }
: Y) Q$ E) L) j: q else # T; o9 w5 R% D8 N
{ - a {! o: y( a, e6 ^/ e
bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2); ) Y8 a9 W# P$ H x3 D' Q9 w7 ^
} / ?4 v6 I) S: d9 k1 E" _6 ^9 {
- G, u* {( L& m) X T( p, h
if(lcd_code & BIT_MAST_COM1_H) 4 i! d+ O$ ?! |4 x
{
4 `1 e& f# L' f' w* X/ I bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);
6 n* f: [+ {# u( p+ K } 6 ^7 d* D* C2 p" v% z7 I. s& a
else
3 i& e- K+ o/ M- Z { 3 U( o1 v) I' b7 t: P
bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1); + t* I, _. D {
} / m( Z. M% F9 M! \. s' r6 v! Y
5 ^7 H; U9 a0 j2 `* t, z& J if(lcd_code & BIT_MAST_COM2_L)
! t- M9 {( W2 c# Q6 Z- y# z { 3 {1 } c2 z4 t& u' p7 m
bit_arry_set_bit((void *)LCD->RAM,28*2+index*2); 8 J) Z5 ^" L( Q) P
}
) Y/ n* U" G5 E' y5 q* p! f else
# e, G) K+ h/ s) h9 F+ {) |1 o { : c3 ?/ Q f$ c
bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); 9 V' _* w' l% u' Z5 U
} # x) }$ i! l6 [6 d: R
9 G1 w d$ h% @2 c
if(lcd_code & BIT_MAST_COM2_H) 8 Q6 M8 x# U7 a" i5 Z% h, r! w) T
{ " v. W+ O' f* n+ M2 c8 ~
bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1); , U9 R- e! N& n
} * |2 S! x$ C$ g* G2 u
else / _) W J; d1 ]1 N K$ f1 A9 Y. e
{
( g5 B( D# I& N, I8 x* @) t- M1 O, t bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1);
; X+ A! I; Q4 r M) K } - Q; b6 A" O2 |. Q' ?- }2 R% c
B5 c0 {+ h3 R$ J8 a
if(lcd_code & BIT_MAST_COM3_L)
" Q8 N( ]$ n! q7 @3 _6 M { ( g* S: l$ D5 r+ y
bit_arry_set_bit((void *)LCD->RAM,28*3+index*2); , L A" y6 C8 K4 p' A' _
} `1 m$ R. q* ~ Z# O& V1 }8 h
else + j, G7 S- v5 W; y; `2 h# l% [9 U* C
{ ) T. b! ?6 }4 u# r! ^' e( Z! k. ~
bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2); 2 e+ D$ r) E' p. K
} 6 Q- }, U! H+ z' e9 b9 N" u& Y5 l
& I& Q( O' n/ q# e, H0 t if(lcd_code & BIT_MAST_COM3_H)
3 a. S8 k" M) w$ n; n# f {
0 {7 J1 a, R/ Q" r, E bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1); , l& C( H" L }
}
' A6 ]+ t1 O0 z& P( }5 \ else
, |, q3 j1 O" E5 C( s x' F { ! P5 m7 ~1 I3 a9 k5 M$ B+ B
bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1); + [' b3 s, X( {! A: r# _! K( |
}
4 D- X* R( S- l" `. N+ \0 {}
/ N9 ?5 L8 B% j- D! ^2 p/ }1 Y& e/ ]1 c H2 z `
void LCD_DispOffOnIndex(uint8index)
/ L/ n1 [& ?2 G; z# I{ : d# [# T I7 r: m
LCD_DispCharOnIndex(LCD_CHAR_OFF,index); # O) r3 p2 }" `6 v+ r" X
} / S x& T1 ~9 G: [* z- p9 M G
7 [1 W, F0 b% T* Z; u1 k
$ Q& p. g5 z( r$ ]+ Dvoid LCD_DispOffOnAllIndex(void)
, ?1 ^% j4 s% X! k8 H9 m{ . D3 G: |* }4 W. n
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]
9 V) w# v T: K- E+ K {
5 n+ x; c1 j- o LCD_DispCharOnIndex(LCD_CHAR_OFF,i);
/ O$ q) R! f% _ t } 8 z0 C9 A' s: P. x
} # T7 e1 D" |' j; U Y; R
8 }: }7 t1 J3 M) X
void LCD_DispUint16(uint16num, uint8 blank) x9 T! }. m; H: m3 L1 I, W5 l, B
{
. W: T* a' w6 v( Z3 W uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0}; 0 v! o5 d1 I( G
uint8 bcd_index; * A+ @. K3 K) h f
uint8 lcd_index; 5 }( u& }4 } R# q- a% R9 f" K
. @+ L; M) C4 Z) d% E
uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT); 0 V6 u! D q4 u8 d& O* e9 g4 z" G
' j+ L7 T. d) [3 S( \
u16_to_bcd_5(num,bcd); ( a5 E' g* j- `9 v/ ~
6 V$ s6 I" j9 Q) n. F: } bcd_index=index_max_count-1;
$ y' r% i( b0 K1 y8 M* b! O 7 L; `% r- c( y) i+ B M( V2 }/ L
for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--) , k/ q; E$ R# l) E
{ + }$ |6 L m0 Q, O: u2 l4 u+ t# X; v
lcd_index=index_max_count-1-bcd_index; 5 |+ v& [3 v& X$ ~& T+ V) _
LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index);
- M$ j3 u* a0 ^( G& {. v }
: {4 G$ p* c, T. o, L 8 W6 C. C- r) [7 t. [5 {0 f
for(;bcd_index!=0xff;bcd_index--)
A; ? C: G+ F1 h$ v {
8 U0 u: s. U% a W) t lcd_index=index_max_count-1-bcd_index;
2 R/ A( ]3 g: q8 p" _' r2 W LCD_DispCharOnIndex(bcd[bcd_index],lcd_index); * m) l# R: ?/ D. ~
} " k9 j' i% B8 l* h( a/ [
}
& d8 ]! {8 ^- A2 t5 \
. @3 `( G5 B; g; |#include "stm8l15x.h"
J# d4 u8 p8 U: r9 B! C0 _& L#include "uni_int.h" 8 A. o6 M6 C0 ^' b
#include "delay.h" * r4 Q p' o! L+ H% r/ ~
#include "periph_lcd.h"
9 b" J N7 i& {- M6 A4 g) L/ J2 S
& h; l4 P2 d- r$ e# ]int main() 0 y; z e6 x8 j8 O# Z9 p
{ % m, X6 d/ P3 c Z
LCD_Open();
2 E: W1 V# H) _0 U1 l: D 2 |) {4 l1 o0 O) M$ Y7 f$ N9 H% D
uint16 num=100;
. o0 Q7 G/ b* O" z$ }9 i ; H/ g' q$ W+ _
while(1) 2 i% j6 a& S1 M5 f3 B" q) m
{
" N$ |* G3 b6 M# @ num--;
, t9 L9 K: K3 Z# f) ?0 H% ^4 H LCD_DispUint16(num,LCD_CHAR_OFF); 3 q0 d9 R6 v9 P' v4 m# m( U5 X( h
delay(); 2 ]5 u0 T) k9 S: u
}
4 r. l4 j( T# ]- H l$ m}
9 A5 Y! ?! ?4 M7 ~; [5 T[size=11.818181991577148px][size=11.818181991577148px]! \) W6 A; X$ E0 u4 P
|
|