|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include "periph_lcd.h"
# @. m! K* F: C
1 k: ?0 I1 Z' T# ?( M0 j% {lcd_code_item_t LCD_CODE_TAB[]= 1 Y. f: Z: f9 w) \
{
& b$ `* z) t% @* | [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,},
. w! B0 Z g3 A" t [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,}, : {! w# e Z2 Y+ 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,}, 0 L& A: g$ l; P6 E1 W$ G& 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,},
! n7 Z& A! n: F Y7 ]3 r p6 h [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 R) L# D" ^) |
[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 h+ W& d! G5 J. g [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,},
& w6 p, e. S. C Z$ ^ [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,}, 5 N% I3 v0 m8 q* Y4 U( g2 _6 I
[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 Y6 h5 w6 W; u7 e
[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,},
: W* O9 @$ L& t# f. s! K
% L4 \4 V6 s' h; O+ d [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 b4 u" C! ?" U
}; 8 N! H J$ Y: H5 U
; q# ?" W! j, \. O8 U
void LCD_Open(void)
, t( D: n& A1 i$ d# }( Z) V{
9 `4 a, v7 y7 r CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE); : l: V( ? L4 [( i& ^2 @
CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64); % c9 R& G. ]/ K+ D5 }1 ]$ a; u
LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External); Q# H5 N$ w+ [- N, E& o
LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); ( P5 F1 C0 G! z2 N
LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); " C+ @1 M, C ?6 B# m. K- |2 V* q
/ C$ S) t g$ Y- ?& B& r LCD_ContrastConfig(LCD_Contrast_3V0);
. o' |' d# D! R6 ]7 x) J" B LCD_DeadTimeConfig(LCD_DeadTime_0); ' s' q- M/ Z3 E
LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);
/ @& {) I. k) D; A; Z& D LCD_Cmd(ENABLE);
& h" n+ ~. K! b8 g}
, n% `- j; D% H5 a& J1 N Q5 H: P% m0 g# X
void LCD_DispCharOnIndex(uint8ch, uint8 index)
5 r6 T4 z- ~" I2 c{ ( M+ x5 O/ K# a9 K. t0 B4 g/ h
if(index>=LCD_INDEX_MAX_COUNT) / O4 ]8 T O( Z: Q2 B2 b* o
{ 4 [9 A- u8 M1 \! U
return ;
7 h# P6 U9 u) b. n/ c6 ? } : b9 t' w9 o2 R8 r; z
/ k* l% e% p! H! \, m2 l
uint8lcd_code=LCD_CODE_TAB[ch].Byte; O, ^& h0 a6 _: k- f' @0 q j" r
9 |9 Y" S9 o7 G& O* z9 M
if(lcd_code & BIT_MAST_COM0_L) 9 n8 N* S( \+ U
{ 0 I( g( _/ s$ D3 E' [ }7 W! y l; Y
bit_arry_set_bit((void *)LCD->RAM,28*0+index*2); 1 D0 |& L2 \8 ^
}
* N/ J1 t$ v+ ?' z, {: |6 K else
+ x/ p u+ L0 j { ' F; O7 J" q' T' n
bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2); % ~- i0 d( W/ G! J9 f
} ' |, z/ J0 y9 e
6 q7 I9 s. s4 _( ]( R) s1 k if(lcd_code & BIT_MAST_COM0_H) $ e, M; A8 T% F2 `6 @- H
{ 4 v: b) g7 K( v y1 G/ r
bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1); / P) x7 P* J& ~ x+ P$ b
}
0 ~# G3 m: Q- k else
9 |* f+ Q& u$ d- }# M+ i2 o3 Q2 g {
1 T0 u* s7 l9 N+ i8 r5 |- U* Y% p bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1); , Y8 M/ ?! x: S& l! V, b8 E
}
$ Q! n$ y$ j3 ]0 I: S " c4 \/ C; \/ y5 w; b$ a
if(lcd_code & BIT_MAST_COM1_L) / b. \# T+ W, J
{ - E" E, T$ e/ ^+ m
bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);
$ P9 l4 ~' t8 a }
) F+ M$ y5 B# S' |6 A2 B else
+ i4 ^6 y& W4 ` {
k- D: N, R% K+ J) c Y/ u/ q bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2); / w+ j. I5 k5 X
} ; Z- V4 k: Z# A& o- @" }
8 T) R) w- R0 X! d" r5 V# U% Q if(lcd_code & BIT_MAST_COM1_H)
; @" i: A. h2 m0 J {
U5 J- `0 p0 m4 Z+ X bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);
% }8 j( L, x' a# t. M9 C } ; Q/ H" ]0 Z! _. }
else
& ?7 e% n( W. u { ' H7 \; A7 L& ^' v
bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1);
/ ^, V1 v3 @/ _ } # ^' j' J5 }) X/ I
+ l% p" v+ X6 U
if(lcd_code & BIT_MAST_COM2_L)
7 n, W9 O8 ~3 `2 Q5 f% ~ {
* Z4 E& k& x+ W" D# Y* ` bit_arry_set_bit((void *)LCD->RAM,28*2+index*2); $ G8 Q3 [$ q7 r+ {% @; { s' O; ^
}
6 f) E$ u2 J M$ i1 c* B else 9 J3 q) n7 K V
{
6 L' z& m; O* o, `2 m% S7 Y1 e$ G bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2);
- b; k/ D9 n: s+ @" E& Q } 4 N) @$ B8 V, k I i& N* A& L5 g' V$ G
8 U% M: ~: m* Y; R T8 _
if(lcd_code & BIT_MAST_COM2_H)
) m9 J0 m! J# p. R' @' e" k# _( A {
' _5 O- h# R2 M0 v9 l9 q; b. v! k1 q# d bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1); 6 W. A/ G" ^6 C' Y2 \( C. f ~
}
) e$ [, P N3 X s' g! J3 N else 9 Z- n" b- Q) J4 n. g
{
& \4 N6 W) \- M bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1);
* o/ U2 B/ B) K) m1 q8 y } 2 a' Q( ~; I' _2 t% M3 K
* Z9 N" O) R, D d. g
if(lcd_code & BIT_MAST_COM3_L) ) L3 {2 C+ W1 z9 \/ ?; b% e; p0 t
{ 4 h4 L7 |. q! }
bit_arry_set_bit((void *)LCD->RAM,28*3+index*2); 8 x% {! p0 i9 z
} ; h' A! Q/ t2 [! l$ {# C
else
8 L% A+ L9 J8 w9 x5 u; r6 T. b { ) d' K9 k6 R# y- E* @% N Q
bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2); 1 i& G9 y5 d7 p; Y! d
}
; b1 H) m0 J, v( a - U0 v# ^( t! J. e' C: A
if(lcd_code & BIT_MAST_COM3_H)
+ d$ G( i& I5 r: a% Q8 M1 ^, { { & e9 }" D6 u1 _. r* v A+ U! W/ T
bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1); % L- J! O( M( c
} 0 n6 V4 G( W; S. S T
else % L, x7 ]! O5 ~7 R
{ i% P7 Z, \- t8 Q
bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1); [" t$ v5 z! R1 @
}
8 n# r6 H- @- H5 G}
! W9 j% r4 a# m6 P% d" V. z# ]$ \% {4 j0 {
void LCD_DispOffOnIndex(uint8index) 7 P" r" g/ A0 S% x
{ * A" _( n: C8 m# V8 U; X
LCD_DispCharOnIndex(LCD_CHAR_OFF,index);
8 X3 Q+ L8 v* c6 R}
) x% R, d' }8 ] a# m( ^0 M) x& d( j. m+ a
. P$ j: \( j8 E- ?. @2 F1 L
void LCD_DispOffOnAllIndex(void)
7 l6 j( `0 f; w# T{
5 V$ w5 u: O3 N6 F" l6 J8 _8 ? 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]
+ x4 o% I7 n$ I5 C' T4 E0 k {
m3 s% A9 q- u LCD_DispCharOnIndex(LCD_CHAR_OFF,i); / t/ k' Y$ Q3 q9 Q" q
} + s; c: A1 h1 B
}
( k6 W3 M0 W. w/ O. P1 @8 N" d
* {- B7 _9 F% l8 L, k( z% Avoid LCD_DispUint16(uint16num, uint8 blank) , X b. b& g9 m" L- K6 M/ d
{
1 L! z! f7 P5 l" S4 y2 ^ uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0};
e! G) W, m1 M0 x$ F5 P uint8 bcd_index;
2 a* S# r" k9 {2 E( t2 R; ` uint8 lcd_index;
' p4 E$ V$ p, R3 W 2 z7 x* Z" E- l) u) m. R: w: r
uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT);
* K$ y9 _& W3 \8 v2 Z4 J) m! [- u T , H! ~) u9 ~. a: y
u16_to_bcd_5(num,bcd); 9 v5 j+ j1 m9 z
3 k* _3 m. d+ a8 E& [0 t4 O8 J5 {4 x bcd_index=index_max_count-1; . a5 Z- u/ k$ n! l) j3 T
9 T+ z* J, c- O: L& W for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--) + S' f6 ]; A4 n- }6 d. x; y
{
. }, D) F% _( e" C lcd_index=index_max_count-1-bcd_index;
- w/ {( c$ {* E0 R, D LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index); , z7 z3 D M' w; ?
}
' u1 C& N7 p) [, N( ]. a
: k/ h! i! f7 L1 \6 a8 Y; v for(;bcd_index!=0xff;bcd_index--)
$ M1 Q% z% I* i1 z5 G {
' e7 H7 V9 P$ h; E% } lcd_index=index_max_count-1-bcd_index;
: h% D2 {# P9 a$ O2 p0 Y LCD_DispCharOnIndex(bcd[bcd_index],lcd_index); 0 w$ M. c3 ?) t# d1 H
}
' d1 ?' [0 T! T5 S% o7 c} 5 ]9 N+ Y- k6 R8 A4 n& T
8 g; r9 U* W2 {4 e- Y/ g
#include "stm8l15x.h" - H( o" ?4 U0 b* D1 T& B% l
#include "uni_int.h" 7 _; s5 E+ z! s9 ^' i& Y" C, J
#include "delay.h"
i v2 U- U3 b/ H5 [#include "periph_lcd.h" ! V+ |6 F ]6 H, O* ^& V4 t
) F' @) u4 A1 ^/ E
int main()
3 z! v% {" O0 C! m. _% Z{ ( W3 l0 I: x5 B, T1 X% G8 `- w8 @
LCD_Open();
5 p/ B: W* i2 K* J, E+ @ 7 h8 X* `2 m) ^8 C. H9 Y
uint16 num=100; ' R+ N% S3 E" f" O& B2 W! B
3 }$ ~2 w; z5 O7 ]5 N8 G! z while(1)
r p ^0 c( y. F( n {
8 p5 o4 C0 ?) c; Y* { num--;
( d: ?+ x' Z# f# w* c LCD_DispUint16(num,LCD_CHAR_OFF);
' u9 v8 g/ J. M1 m delay(); / l/ J* m5 V& A4 I
} $ H' e# k% }$ {9 r( W
}+ `1 X" J% G: |. B" ^: C
[size=11.818181991577148px][size=11.818181991577148px]
4 B: i/ S: j& i+ }' {7 x$ g, k/ {/ v& J |
|