|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include "periph_lcd.h" Y, k; K3 V6 m, T
G/ S: F4 R& V) Q) Llcd_code_item_t LCD_CODE_TAB[]=
, N% `3 F t! K+ \" g* O{ " ^6 T; E# u/ f5 b1 _
[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,},
$ e: { a9 G# @+ e" I. F! 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,},
3 C' a! Y( r* h% l1 s% S& e4 {9 [ [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,}, - h+ X) j. ~% z2 r
[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,}, 5 \" j- N/ S& c% ?6 g
[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,},
8 n, B& J# x+ M# ?- O y, M' m+ }1 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,}, u# L) ?1 u$ T; x6 N
[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,},
6 L- P/ b$ m) A/ A6 Y [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,},
7 u$ H h' T$ J( K( B, t [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,}, a; E" S8 C7 k0 U% i- M! R
[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,}, 1 j3 h U4 U6 f5 l* j) g# W# \/ W3 j
' i* p5 y6 j& O8 v' A* g
[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,},) t" K1 F1 S% Y8 T
};
" S3 W& K/ J9 ]
6 F6 g$ C @) k' wvoid LCD_Open(void)
- B% ?( j0 U% @{
! S' [6 l0 Q3 H0 i% I1 p CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE); ; ^4 n# [ K# y3 ?! _5 G
CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64); 5 o w: r, a7 k8 p
LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);
, O- z/ \% \5 h; x$ X+ C' b. c LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); % ~" V+ S8 S$ M6 E( D1 a" p
LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); , _5 ^. Y2 b: ~9 M
4 O- ]* m$ H* ?- k6 P7 M6 [
LCD_ContrastConfig(LCD_Contrast_3V0);
4 `! _# k! C. j% w! X. f0 E: T LCD_DeadTimeConfig(LCD_DeadTime_0); 7 H) Z/ v; y0 C% D. X# }8 T
LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);
+ J) e$ f. F6 [ LCD_Cmd(ENABLE); ( E4 ] o+ f5 d4 |- k; f# c
} 2 p n: H3 F- Z7 C( `+ u; s3 m
5 V6 ?: Z$ o- R% |4 B: T2 _void LCD_DispCharOnIndex(uint8ch, uint8 index) 1 \. q/ t8 K! r4 l
{
$ v# K9 {2 h* ~( Z5 V0 W) t if(index>=LCD_INDEX_MAX_COUNT) 0 U) P; s4 |# s# E0 O: \' X6 F
{
( ^2 r( U8 }% m/ \$ ` return ;
6 B q( ^ K$ Q) q- } }
( w, x6 d' \2 r8 V9 Q* o9 A' d0 @
- e' n5 y9 Z& F6 R1 J) q uint8lcd_code=LCD_CODE_TAB[ch].Byte;
* x- p" M: {, E# P
# R+ }' f% }# S1 ]: m! ~; O if(lcd_code & BIT_MAST_COM0_L)
4 k4 T: E) ]: G/ R( }5 J {
; w1 E# c& M7 g8 S: \ bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);
$ l, A5 a! R4 A) Y: m% F }
( |; _5 \" R3 d* N" y- P9 w else , ]* O+ i, y, H- k/ s7 I
{ & o( Y* @5 _3 z( Q8 K, X7 U
bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2); 7 B8 f6 ^) k, m! S. k- J
}
4 S9 Q# z1 X0 x) y* m
* j& ?6 O: B0 n# m if(lcd_code & BIT_MAST_COM0_H) 2 q w0 ]2 b; [" L( ?/ K& y
{ ; e% b5 ]# U0 Q$ u% p) ~
bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);
- `1 A& V+ J3 G' j9 e } ! e% j$ C: y& R& a) I
else % F ?* r% J8 O" l& {
{
; j0 L1 ?2 a0 F" l5 n bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1);
1 n$ b1 j% [" h! c } 6 n5 P7 H! j$ \( k u0 m6 t! p( S
6 `- J' {' H& @1 ?
if(lcd_code & BIT_MAST_COM1_L) : ?( _5 a( R" F# {6 M
{ 4 u; L' _; p2 U+ B
bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);
- a; b& b a6 ` } 1 `$ g2 J( D' x3 y
else
& u1 U7 k7 O1 r/ S/ K! U% c4 n& h* o { 7 I6 i: C' F: E" p3 [5 i
bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2); : q1 `" u: b1 v% C- D* T. a
} / m8 t- C0 d9 k
& \7 t) v* d, v, M if(lcd_code & BIT_MAST_COM1_H)
& r3 T( M3 H) m( n' p( h { % i/ U' f4 M! o/ I9 e! t2 v
bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1); 6 w9 b# h2 F9 L& R. v
} 9 ~6 a# y+ n% m$ O
else
) z/ C7 B7 D8 ^, q a {
! L# i8 i7 |( ~" E' i bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1);
& [ ~, J* X' k( m; Q. q+ f }
9 H6 D) J+ l! O0 J( T5 w6 W
; I5 {4 G1 ]6 N8 j2 B if(lcd_code & BIT_MAST_COM2_L) 0 N+ g' t4 F6 s* L8 P
{ F, e- R5 K8 f2 t- l
bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);
# t6 V" ~* _$ @/ L P }
: \; g/ H6 {0 o4 q% Y$ G! c+ f else 2 z: V/ X2 w+ A7 o7 W
{ # t, D7 d! l6 Z
bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); / v1 q7 F% r1 w6 [& D: B# g1 u
}
$ k) o) u6 \. Q: @ % A. O) A2 \: L5 X( f
if(lcd_code & BIT_MAST_COM2_H) - z6 V' w! z! o1 |" @
{ " N6 S1 ?0 }3 j% ~, L6 \. E* T1 f
bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1); ; X; K/ j8 C$ R* s" Y/ G
} ( b. E1 A+ E U. E* [1 Q' T5 Y
else % w- u: S+ o5 z' o+ w
{
( s/ T) ]8 G8 w6 F. }3 U) a bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1); 1 b- R8 p, D& L5 I
} # \3 o: {4 \" `. P# c! Y5 m
% q7 N0 y" e I1 W$ P: M7 X if(lcd_code & BIT_MAST_COM3_L) # b5 Y' ]- s- Y# L$ ?0 ]
{
' ^0 @/ F$ v9 N( K8 M/ E; y; C% R bit_arry_set_bit((void *)LCD->RAM,28*3+index*2); % [% A$ u: g/ D" `% n$ ]
} 4 c$ m" x" M6 B
else
+ z. a7 a9 [: s* M { % e3 Q6 a9 D [1 `
bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2); 3 M3 {# M$ A, Z3 S
} " B/ `6 A, ]+ v. `2 I# ?7 [6 V
: b7 ^. v; @ i
if(lcd_code & BIT_MAST_COM3_H)
7 I5 E1 G1 E( B8 t7 `+ B- X- \ { ) r/ s* S# f, o% ]7 B7 Y3 Z# p
bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);
9 P/ l& t6 y# t }
_! D4 q" N7 R! I$ t8 G else
" S9 N, j" A/ w { # o% G0 M; O- i" d2 n
bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);
, m# G, @+ _' Z9 p3 Z } 5 f& k$ T- u9 r
}
6 B. J: ?9 n" V/ G/ p2 U9 a1 A1 }4 d
void LCD_DispOffOnIndex(uint8index)
0 ~. B( u" }7 J, `0 h0 I{
6 \; A) Q+ D2 b( k+ T' F5 b3 S LCD_DispCharOnIndex(LCD_CHAR_OFF,index);
5 V& p7 Z$ Z" v' K ?1 J} & j# C$ u+ }9 Y& k9 R
$ |1 K' c4 X! S Q( v. Q! r
5 A; g3 e9 A% Q/ ~2 l/ Tvoid LCD_DispOffOnAllIndex(void) 4 {) a' h2 D7 ~/ b' q' R
{ % W& o' F* v2 n8 @$ P+ R
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]' i# S+ l4 q& D- ~8 \
{ " H# i* ?7 W/ g; _4 n
LCD_DispCharOnIndex(LCD_CHAR_OFF,i); : e6 ^) r! q5 {" T9 s q2 g) F2 O
}
# X: a) ]9 g2 G) k! l} 9 G; s# Q8 t$ _4 w& [
" b9 x! O8 p# W; @7 |) fvoid LCD_DispUint16(uint16num, uint8 blank) 0 Z1 i( K \& r. O7 e4 n. Z6 B
{
$ W1 i! L" E' y8 j- K& W5 g uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0}; 5 U5 ]$ \3 b) Z: ~. b& i6 m1 g
uint8 bcd_index;
0 b3 t. G8 |+ f t. G M% |. O uint8 lcd_index; ( ^6 a9 Z! u+ ~. d( i
9 w6 L8 H# x+ H0 V uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT);
9 d0 o/ D7 _- o. {
5 \3 |" G1 H5 q3 z3 T u16_to_bcd_5(num,bcd); 8 ~% Z) G) k' _
& Q* u: m# m, k: f0 a
bcd_index=index_max_count-1;
5 |( P, e# x9 d" L: G. B
& M/ ?' _2 l; l% ` for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--)
. |' @$ {) `6 W { + q* F2 R* M1 ~# h) S; _* k. v
lcd_index=index_max_count-1-bcd_index;
% r' u" ~0 z9 h9 ]7 w LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index); & [- Y+ n% D8 N& X
} ; _4 h: z" e& u4 g% M+ p0 z# |3 X
6 x$ n! N+ c* H4 \) y C$ Y
for(;bcd_index!=0xff;bcd_index--) 8 k5 I: ?# k3 l' x+ J
{
8 O1 Q* c+ z7 z. n lcd_index=index_max_count-1-bcd_index; . n2 J- {: n5 @# N5 k: I h
LCD_DispCharOnIndex(bcd[bcd_index],lcd_index);
0 e$ |9 l: O0 @* [ } ; O0 P8 ^# T/ d
} 4 {9 S2 c9 u0 E
' y$ i' _- K' c* E
#include "stm8l15x.h" % U6 i' j7 A/ ?8 @0 c% R% ~& h
#include "uni_int.h"
: F" q& j- ~) j1 R, K- W/ m#include "delay.h"
n. t2 V, ?% V0 u% e* v#include "periph_lcd.h"
& o5 L/ C3 ~8 t. o9 N
J V$ Z9 Z5 F+ Uint main()
3 x8 j' U* h, u: S" q- _6 {- \{
3 W, h$ {' ~- S1 R" U% x- d; | LCD_Open();
! a% O5 K8 O/ C# Z
) \! l' T7 G: C9 B! `: n uint16 num=100;
" U7 ` L l% k% }5 c; |. x% T' q2 D
% ?. P0 B8 r2 \+ O while(1) & h3 A( j- G1 j2 @3 U' u/ d- c
{
8 W0 x7 [* Q, { G# k num--;
+ }8 |2 f3 q5 C9 U LCD_DispUint16(num,LCD_CHAR_OFF); + M5 U4 A/ C8 c# @! ?. S, z( u/ }
delay(); 9 W0 c6 D: l7 m5 v
}
C8 X% J4 I" `9 d, J* n}; d+ ?: m4 z! S- x, y
[size=11.818181991577148px][size=11.818181991577148px]' v- ?& Q) h( T# \+ ^* X
|
|