|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include "periph_lcd.h"
: q# ?0 j ]& b" _, Y: }
" H) Q) O. h% t; \lcd_code_item_t LCD_CODE_TAB[]= ) `0 M7 n: B8 C
{ 7 D, U7 a& e e2 b2 x
[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,}, 5 {8 W0 h9 R* } q% r* s+ \
[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,},
1 h. C1 ?; }4 ]$ | [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,}, + [2 s! l3 s1 m$ J9 B- c. Q; ?( E
[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,}, 2 G1 o8 x, p, \1 h9 u3 K+ z
[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,}, . |5 B5 F6 e' b
[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,},
6 F0 w3 ^/ e# y0 H9 ` [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,}, ; J* D+ L% S0 _6 Q$ H7 r5 ]
[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,}, + x7 z% G Y5 P3 _2 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,},
$ |4 e4 R$ G0 {5 i; I [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,}, / _: G6 U' u% s- h7 O
) h0 R+ P' n7 C. w- C, X# I
[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,},% C! q! a. A- y
}; $ a3 j H0 S" y# ^7 Z& t
0 f, V. z* J/ \( x( w) j; jvoid LCD_Open(void)
) B5 C8 D, ^" P& J. [{ 5 |( R# f* b6 x8 T* [) C6 s6 f
CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE); 2 B/ J5 j9 |0 S' X9 \' Q# S/ o
CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);
4 C; C" @9 W" z2 F. _0 x LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);
+ Q- `+ |' k4 Z1 C! z ~: c LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); + S( a4 F. {# z) ^: [
LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03);
; [ C9 j1 k9 n% ^# k& P9 p. b& _* K
LCD_ContrastConfig(LCD_Contrast_3V0); * e! y* I8 M0 g9 _4 J6 h
LCD_DeadTimeConfig(LCD_DeadTime_0); s0 y. D9 X8 E9 Q Q% S
LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7); , y' A0 N# a% j+ b9 e* }! V
LCD_Cmd(ENABLE); % s! T! H6 }+ Y' E0 T: W+ s- x
}
7 R" w/ {4 p5 b& O
- K" _. u7 V0 q, G" d/ ?void LCD_DispCharOnIndex(uint8ch, uint8 index) 0 @. `8 b7 E1 l
{ & @6 y, `# j& w' C6 e
if(index>=LCD_INDEX_MAX_COUNT)
- A* y$ O! f$ Q" K# e d1 Z { 5 O) H$ J1 s4 g8 M& J
return ;
2 _: l9 g/ H5 R B3 _% j1 T } : {! K5 {7 L4 V7 \+ c
( v: Z" Q2 V' K: a' K uint8lcd_code=LCD_CODE_TAB[ch].Byte; # T6 i( O& I8 I
/ U) |2 {; o H4 k if(lcd_code & BIT_MAST_COM0_L) 0 Z$ W! v; ]) {2 E
{ 0 w% ?) |; f1 d- ]& B$ Z! Z$ ?
bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);
# A# V2 _3 o7 v: [ }
' T/ R7 W" G# T ^' W3 N) |7 i else
* Z* U! I" |2 ], x( o { 0 a6 G. f! Z, L v9 P( v9 c* M' ?
bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2);
2 z* U* e: Y. b$ h6 ~9 R } ) T8 q: T6 @& R; a; U1 P+ S
( f0 G# q5 C- r- R" q+ M: c if(lcd_code & BIT_MAST_COM0_H) 4 U8 ?7 W. P7 E3 A3 ]0 {
{
7 \! v1 h: C* s4 d bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);
8 a; p5 W! l* L) E" N7 R } $ \$ w3 s; a! f2 v* f+ v) l7 N! o
else 6 c8 [+ C9 S$ |1 h1 @: Y5 H' L
{ 4 M7 X/ z+ e4 b M
bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1);
3 P1 q/ `. k m }
" G. |: L, n. V9 u7 e. \
4 b9 L' T/ W! p8 j9 Y# h2 d: X1 o if(lcd_code & BIT_MAST_COM1_L)
' o/ h ]8 Y. W% t( y. j { 8 b8 x$ l8 r( j( T& ?/ E& M! Z
bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);
3 G3 V5 g: M& f8 R } 8 l$ @5 H4 q5 C: v3 U) b, |
else
& i O; ^+ |" c4 g7 r5 m. g% L) I T {
M' C: X$ b4 t0 d bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2); 1 g. X$ s, `0 H3 o$ L# r7 C# |
} ! s6 V0 h5 K' m! ?: [
/ Y$ K: t- P& y0 D3 y4 Q e6 K6 y
if(lcd_code & BIT_MAST_COM1_H)
$ |# q- H1 M3 g# g7 n+ W6 ^# _4 T {
i" K: C0 P6 N. m bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);
/ g7 H) k$ I; w" g5 ]) S% g9 ] \8 F }
6 z# Q" I( L: b2 i4 _3 i9 V) ~, w else " x2 C$ D6 D* q S+ d* c& d
{
; {. M% X( s( r9 m bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1); % }7 H7 o8 O2 V8 K2 F
} ! L! Q5 Y5 s# V; I7 x" `
; B$ p3 {6 y- K$ |2 x7 J& L( C
if(lcd_code & BIT_MAST_COM2_L)
: A7 r* A2 Q4 F0 P; d {
; u$ g, a/ {# X( Z6 e5 y2 O bit_arry_set_bit((void *)LCD->RAM,28*2+index*2); ! W* U1 G$ ^* u
} ; V' s, f$ i# j8 l! C* D: J
else
; @. V$ h& k8 }5 o% s) N {
3 l) `: A% t' H+ s+ G/ v7 `( ~ bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2);
+ \- K* g5 | |" x! h$ V }
$ R6 h8 r' M, R
$ |. X# r# @" A' B# w/ S2 s if(lcd_code & BIT_MAST_COM2_H)
1 S/ X7 g p$ f( O/ G( @ { ; E' L1 o( n/ Z. Z. t; i$ G
bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1); $ o8 @ i5 ^: H; P. l `! V
}
1 a. w0 `1 i6 b: ~ else
& |' Y3 N" E, `# O { 9 c* @" K4 [# C+ @8 v, X
bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1); - Q& q2 t9 \1 {2 p( n9 X8 Y- o* {
} , T1 i7 J9 {4 ~" n# w. j5 r
' w' Q% T0 \6 F# u4 u v' P! ]0 b
if(lcd_code & BIT_MAST_COM3_L) 0 C, ]! e6 @$ F# m
{ 9 Q# O' l Q0 F! W$ h
bit_arry_set_bit((void *)LCD->RAM,28*3+index*2); 7 K; w: D, D& n5 ^6 q+ x4 a
} $ O3 i. H- O) p) x0 O
else * @- y3 M) B t! d C0 f( D
{
1 t, r$ N6 i: m$ _ bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2); 5 S4 q# k# t7 O% W: E, t* I
}
( B* \' g6 r. e& i- p5 Z 8 {6 V1 e- K3 p( s6 t5 Z) M
if(lcd_code & BIT_MAST_COM3_H) 3 T9 v1 ?& b8 J+ ]; `5 D
{
0 j$ G7 Q- {* R3 S. p bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1); % Y$ k$ x; G/ J' H+ c f) ~2 _* C
}
2 L) F: ?9 p2 Y3 y& _& B, c; Z1 } else : ^& E3 z8 e2 a* }
{ ' [3 W& z5 y/ ^' `4 i
bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);
9 M7 H9 v: n& S0 t } 2 q7 E0 k4 K: T* G$ T: x
}
; U9 |& J w3 ]8 b# O0 {+ o- e5 _& D% e1 o' X( ?+ g
void LCD_DispOffOnIndex(uint8index)
1 E9 e" R' V0 r5 F( s% s3 Q{ ; s/ ?' @& P8 a4 u& d1 X9 s% K
LCD_DispCharOnIndex(LCD_CHAR_OFF,index); . f" G& c! @) Z3 o5 L: |: l) I" v X
} a' p3 r; p e5 k4 i! _7 Y
5 F# D: D \$ J9 K
+ i6 u1 P2 H* D# b3 S2 J9 _void LCD_DispOffOnAllIndex(void) ; A3 n( s7 z( l' [
{ - \( X5 x7 e6 H% q# N7 A: g F8 _/ ~9 O5 c
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]! \) U! F. u( i, C
{
* a3 K, u0 j; d LCD_DispCharOnIndex(LCD_CHAR_OFF,i);
4 k( C: z2 O0 X+ L5 m8 ]. \( ` } p: C1 J+ `1 T0 M
}
2 C# y; ^6 q+ v% y# p* o/ w! ? M' h0 p. S0 P
void LCD_DispUint16(uint16num, uint8 blank) % ]: q Z" d* K' b
{
0 L M! K/ m3 m4 B% e uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0}; ( ]. b4 `+ z* c) u4 u( ]5 S$ _
uint8 bcd_index;
0 Q: H0 d7 N+ ?' P uint8 lcd_index; ' w: k8 N$ W' [$ }( K) J
, D" ~ I V" y! l o
uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT); ! F; V/ ~; c$ @0 {" ?/ X/ U
- K. _0 A& u9 @/ g: H4 i4 g u16_to_bcd_5(num,bcd); 4 b7 Z4 A/ \% b4 Y) P1 E9 p
5 u) j- w K. U$ M
bcd_index=index_max_count-1; " B+ w K- T, w, ^& h8 z6 l
6 a" ~2 S3 a A; ^ for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--) 2 b7 r8 r8 E2 w. ^ i
{
7 S6 M" u2 Y1 X; x lcd_index=index_max_count-1-bcd_index; ' y% o! M) e- `2 }8 l/ A7 W2 ]# v) K+ _
LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index); 3 o7 `' J; a- h8 d
} % H: b: U% r2 t/ m% h. s- V7 W
+ `, m. Z# J' `1 v& R" x5 _. p
for(;bcd_index!=0xff;bcd_index--)
( M' [1 Z, o% r/ z" u+ S {
0 t! r" N( n3 Y7 o' t lcd_index=index_max_count-1-bcd_index;
" y% C; y3 X: v; |4 @; B LCD_DispCharOnIndex(bcd[bcd_index],lcd_index);
5 }* \' H0 W4 a5 A8 { } $ @0 D7 i; U* G0 {4 L
}
8 K+ v: X+ d. q+ B6 i0 p
& m) i \4 \0 d) @# I4 d#include "stm8l15x.h" : I- [/ I1 `1 y5 U
#include "uni_int.h" * \7 L) L4 U, \
#include "delay.h" 3 e+ l: q' H# h1 `
#include "periph_lcd.h" 8 p$ m. U3 h3 r* P4 l$ i, X8 R& J
/ B9 D4 M8 x6 J" [/ W i( Rint main()
. R( o1 N0 i5 c, L4 L{ % ^5 @9 \+ t/ S9 \! s; \% M
LCD_Open(); : ?6 D0 h5 `: q
' y) Q0 M! ` |9 S uint16 num=100;
; `" @; K* Q0 \) h- L: F / Z" M n! e3 R6 H" Z; O! d
while(1)
: a! G- B1 G9 I" @$ y# } { * B/ |. e1 J- H
num--;
6 y8 M) p- M! j LCD_DispUint16(num,LCD_CHAR_OFF);
7 E: t8 r+ e( U8 F, d delay();
& O$ Z" O, `1 E" n }
; d/ [# h9 k! T! t}5 z" o4 j. b/ t
[size=11.818181991577148px][size=11.818181991577148px]: b* h& [" J2 F# j# [/ f, _7 ]# G
|
|