|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include "periph_lcd.h"
9 }+ K" W( r5 s6 v# a1 ]' k2 }, b
9 x9 L% F0 [8 B" r; O$ V! Vlcd_code_item_t LCD_CODE_TAB[]=
3 _' P5 V n. y{ ( A5 t" q6 t8 u9 l3 W- z% W
[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 S( b% A0 h: _. ~7 c5 b8 a
[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,}, 0 A. l0 {+ |3 i# H/ x' Z- |
[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,}, - \* P5 G5 w2 k M0 O% O+ E H
[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,},
9 I+ ]% L, C4 e2 J! ^1 a [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,},
3 t% X7 @2 d( {) h. `: u& k5 _ [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,},
- x" C! _% v; h. O1 s% t- s" Q+ M" T [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,},
# u/ |: E: |6 T+ @: w- g [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,},
- A- y6 K& |; X7 q7 Q2 v/ u [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,}, " P" V1 e4 I% f- B) @9 D0 s
[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,}, & M" y' z1 j Q( V( [2 L
9 d1 q$ A# A: r [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,},
7 `3 D& B ~ W3 Q+ h, k2 ]}; + [, a1 Z" j+ O$ F+ F
) N7 j$ [, ]; }$ T3 z
void LCD_Open(void) ) l) M4 R' x# q0 @
{
5 g7 f7 b$ q# F4 K2 S CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE);
2 }1 [8 F3 l8 L% Y2 u- J CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);
3 q/ X, M& N( X$ s3 I LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);
6 c7 E/ ?5 z3 Y4 R9 J; b LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); , d4 d) Q+ `3 t3 e2 i( o. |, Q
LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); ' J% T+ l5 r9 w6 D. Z
1 n* \0 K! u8 @ LCD_ContrastConfig(LCD_Contrast_3V0);
, p8 q5 o! q5 w/ A. M3 r- ]9 h, d LCD_DeadTimeConfig(LCD_DeadTime_0); ( k4 J n( T! B7 d9 b; B* M" Y% D
LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7); 7 q/ W/ \" {5 c! i4 L" W4 ?/ w6 Y
LCD_Cmd(ENABLE); 1 E/ C5 I! h( v e& N
}
6 g2 [6 K) o( S- P+ Q' C9 A! Q* x6 |7 d+ b' W
void LCD_DispCharOnIndex(uint8ch, uint8 index) 0 j! B1 N1 v. N" ~7 q9 t4 _+ z1 I
{ . d7 H9 D8 C, h" X4 H. ~
if(index>=LCD_INDEX_MAX_COUNT)
' j/ d: ~8 t' u% H# } U {
6 ]' a* Q9 H( S9 B$ K: s return ;
% g* }" _2 P/ D; A. v/ P2 } } 5 P- J$ B7 ]* C
& s/ l* `2 g0 s1 m6 M! a& x5 K uint8lcd_code=LCD_CODE_TAB[ch].Byte;
% D' u' R% n+ |0 H0 l/ y
) g7 k, j/ v$ O' s. R if(lcd_code & BIT_MAST_COM0_L)
9 N7 Q4 ^5 n- y1 p4 V { ( K; j8 o' K7 D& \. B- x
bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);
5 @8 W2 E: ~2 Z } 5 X" N7 p3 G, L! [: i
else
H& J7 D/ A9 q% `" R2 ^ {
1 q% x. A: _+ y f. N bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2); ' O2 t8 D8 T% _" {) x' h. a& Z
} & R9 i" O" z7 Y' T( F0 B
! q) ]9 z( A! q. T q: A
if(lcd_code & BIT_MAST_COM0_H) 3 F D5 b1 h! K' H8 O
{
# U9 j0 k9 N) U bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);
& o2 P( j* m" }4 H% e } ( Z2 n, i; F% c# g7 T
else
( _) w( c1 ?& ? {
+ F# [3 M- W, } bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1); 6 G0 t# b) H7 ]+ H+ Y2 Q
}
5 L2 r. Z- D/ y. V
& z, t' Y8 q2 k0 v1 F# h if(lcd_code & BIT_MAST_COM1_L) 6 o0 d. A. N4 x1 l% E" u( `$ i9 h1 |
{
$ n% B5 m" I# h' n* z& s$ V bit_arry_set_bit((void *)LCD->RAM,28*1+index*2); $ o. W' s( X3 Y0 O
} + K- ^4 w3 ~. r( j5 i/ v
else
/ j3 O9 l" s0 P& ^5 ^ { r) e% [/ I3 F& @& w3 s
bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2);
+ q" Q! \/ h% O: R3 z+ r }
0 `3 `" E% j; ]* O: J ) U7 w7 V1 F8 |, k- z
if(lcd_code & BIT_MAST_COM1_H)
6 o( N& {4 a) A% ?2 X3 D {
5 ~. E2 S8 {% J+ m5 }1 j bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);
3 f2 e. g& ?: ^6 g: F: c } / ^7 {7 s- n( b) i6 y& O: L
else
0 |1 X0 V3 g0 |: g {
, H* P7 A' ?! ?7 D' g7 h bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1); 8 C( _3 Z7 k4 n4 S
} ' U* o& V: S3 t7 i# Z4 j
' k2 ?+ P. a, l/ l6 b
if(lcd_code & BIT_MAST_COM2_L) ' ~; F" R1 d0 w) ^3 ?, q! U, Q/ h& W& V
{
, q( c! W/ O9 R- h bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);
: D2 w* W2 D: v! Z* [" M }
- I" r" `2 O: S- J7 o else % a, Z+ C4 |9 ^* |8 M: ~
{ ! |3 j; `2 }$ C& I& m: K) H
bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); 1 K5 m( q7 V" p4 N) i
}
* e8 u- z; b: u. a$ o
" ^3 c; K1 J: }; T if(lcd_code & BIT_MAST_COM2_H)
! o1 i4 o3 @5 o+ a {
' Z6 C; [: A1 i2 C" r) y bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);
3 G9 B1 U) [" k }
$ f0 O6 f, `2 p: {1 u6 @ else 5 z+ Z& }2 s+ N. g& u1 ]) x8 e" H6 {3 I
{
1 C! T" p0 G6 `0 C+ c% ?4 E3 o+ Y bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1);
: Z0 Y/ W: b& t7 Z5 A- j } , X4 r2 V9 k1 L3 d, `
! h8 @7 D: }5 p* b5 i0 H$ }& S if(lcd_code & BIT_MAST_COM3_L)
# F0 L- A& R, m8 A { ' a2 f, ]7 ~) c: F7 P
bit_arry_set_bit((void *)LCD->RAM,28*3+index*2); ; c8 t, o9 L3 [) | F! O0 ^
} & t2 M$ s, t$ n
else & f8 d9 c1 Z$ n+ l1 ^/ @) [
{
" I' X8 K6 G; W4 g6 _ bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2);
+ O) c! {5 ]' ~( O. s9 F } 9 a4 u3 {9 b; E* d7 a, k7 b6 \
6 o" d- b4 S# i3 ~+ @. C% n% H' @
if(lcd_code & BIT_MAST_COM3_H)
, a0 k/ t- f3 B; ~5 o { ) N& L! I: O) [9 p% w
bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);
) l' c) i; h9 x" t0 g7 z2 O: J } & H! C* }$ |. r: f. O$ o; O
else
8 j& S. F8 n7 V$ t" B { 2 _! k/ J7 n: t9 y, F
bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1); 5 X4 D2 s9 X7 O5 Y
} . H, g& d" M1 y
}
2 p) X4 F7 m# o3 y3 c2 n1 I
7 t2 q" }. A5 \. mvoid LCD_DispOffOnIndex(uint8index)
% T1 x3 l) S2 u7 z; k{ ( W m. ^4 ^+ c( x/ B3 x( K: g
LCD_DispCharOnIndex(LCD_CHAR_OFF,index); % H6 [2 u( a) X. |- y# r$ l
} 4 u; Z+ Y5 \' U% R7 s+ c
) s/ s) z( i- n9 `; Z
; y+ O9 y$ _* O6 v- ~. {7 f7 y% qvoid LCD_DispOffOnAllIndex(void) - @& {; v; B k* M
{ 9 R M8 _6 ~! s
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]
+ Q' m+ b! _+ v# c, ?) A3 t { {" f) {' ~3 t2 ~5 n" Y
LCD_DispCharOnIndex(LCD_CHAR_OFF,i); ; f9 k2 w' U8 N7 g! N! y7 }) V
} 3 R. X2 }, h4 e5 k8 w8 i
}
8 g3 K& U2 A' r4 m$ t- [) ^
: R! m, `; s8 ?; Q. r7 m- Q; Cvoid LCD_DispUint16(uint16num, uint8 blank)
6 r* c/ Q) `0 c8 C! j- {) o{
4 x& m( l5 P& o1 e8 \ B; D& h uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0};
# x" _1 J3 |6 @( J1 k uint8 bcd_index;
0 k A7 @9 D1 q1 F' W uint8 lcd_index; & [& e; N s6 B9 u; r3 i
$ w/ B+ x9 R9 w* Q/ G% ]1 Q5 l
uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT);
O4 j4 Y1 ?. L# V: p( J ( l- L3 L1 `7 K2 V/ U) C0 M, e0 g
u16_to_bcd_5(num,bcd); ' Y% Z3 s0 }4 ?
0 P9 i2 q) S2 J* \& p5 ] ? bcd_index=index_max_count-1; 1 k+ N% t1 d6 R. r- F& S) l* b
" u0 a3 C" E) f* x- W for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--)
* e( Y) \1 ?1 W- d6 U. R { 8 K0 j" n0 Z \) S7 b
lcd_index=index_max_count-1-bcd_index; - C$ Z# `% c/ G* R9 y
LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index);
& e' u, r' G5 o5 f } 6 Y- \; s% L5 C4 {/ e
/ O- s' J( I7 ^# N, }0 r
for(;bcd_index!=0xff;bcd_index--)
" p6 Z* m3 e3 y* @ { * c8 F, K( s ?
lcd_index=index_max_count-1-bcd_index;
0 }1 L' B) c9 |, ] o& Y LCD_DispCharOnIndex(bcd[bcd_index],lcd_index);
: B/ i( _) v/ G' n4 B, d }
0 L( ]8 [7 }! M( t( z" |0 P}
. W% U( u( {$ b$ r& N3 H# D& m8 w3 j. W8 [6 r
#include "stm8l15x.h" 3 }( D+ E6 Q) _" V e
#include "uni_int.h"
! S+ l Q, V) u#include "delay.h" ; l' b1 l4 X6 |+ a2 r! h
#include "periph_lcd.h"
1 d2 F# j& b& K! X, E1 e: F
6 |3 ? C8 v# m6 M. m$ }( ~int main() 9 c5 A2 v' z5 R" R. {" X
{
: |2 w1 U" T8 Z5 G7 ~# h* [* ` LCD_Open(); 1 D2 o. [0 Y" X& Z
4 W3 w: z7 u3 n
uint16 num=100; g t) l7 T, N
% U5 R; {! n$ A3 y7 T1 C while(1) 6 r& Q1 N8 O" [0 g3 h
{
. d t' A/ o% i: Q5 u/ r num--; " W5 ]! ?$ K8 Z0 q/ F6 i8 M
LCD_DispUint16(num,LCD_CHAR_OFF);
l' ?6 t, J: u0 r% \9 O delay(); 2 ?/ s/ E7 H6 n) \
}
: {4 M; Y; S; l2 k2 j4 n9 ?3 D4 e0 F}+ \, Q6 T1 x- _
[size=11.818181991577148px][size=11.818181991577148px]
" c! O' B7 ^, x: P! L/ i |
|