|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include "periph_lcd.h"
# c j1 U& ]! S' X9 W; r: R4 P0 d
lcd_code_item_t LCD_CODE_TAB[]=
2 H9 t5 [% |& t( u* |{
1 d$ Z! n M& l* 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,}, + W* {: Y+ T' g+ s4 l& 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,},
1 }7 [) X9 K: _4 J3 R- q& q [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,}, ( p& M3 X1 |5 ]" C
[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,},
. c& j# m: A9 l2 d3 Q# 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,},
7 n2 y! ]. r: I M6 ]- e) {' M [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 ]5 S& H4 L$ I' F8 p [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,}, . T3 I$ d6 N- w. V* A( g0 i8 ~
[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,}, 6 t" P- z# n0 h, h; D* J) {6 ]% q
[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,}, 1 W1 h. j" b: }, {, Z
[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,},
. U/ H H4 |- Z6 b! [ W$ t
, u* c7 k O+ p1 u [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,},
# E, u* m' t2 g% C+ U3 C: S};
0 r3 |& |: ]- A! t* G' M* ]2 F! e3 `' O) D
void LCD_Open(void) / R6 |& K* f* U. P4 F
{ ' r: l W( d3 \ t
CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE); $ Z- d: y C. \: \% q
CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64); 9 G7 W9 r8 O- V. B& q" A
LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);
% _1 k7 b& K" V LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff);
1 y1 G4 A; q* A; M LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); ; V. e- T |+ `( Y9 f
9 E7 d: _& E- h- a, q LCD_ContrastConfig(LCD_Contrast_3V0);
" R. t4 i9 D- Y0 q: b H LCD_DeadTimeConfig(LCD_DeadTime_0); ) ~# e6 l% p O$ j0 w
LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7); ; a/ O; A4 E1 X7 }5 z" j
LCD_Cmd(ENABLE);
* d) }4 i3 R+ h( }3 z7 R}
6 {! z% ]( q' E2 x4 W& b+ M @* \5 S9 K, C
void LCD_DispCharOnIndex(uint8ch, uint8 index)
+ ]% E7 c, b" e. i V4 l{
, t6 l" b! g/ r- l1 O/ C' Z if(index>=LCD_INDEX_MAX_COUNT)
: A4 `& V8 X/ }* W' l5 v { 7 F8 |! X! H0 J* j9 i! m5 l
return ;
& C' S* @- R7 S# Z9 A% C2 m }
% K9 M- T' i9 w , y5 Y+ X8 X$ J v& f+ I7 I" z
uint8lcd_code=LCD_CODE_TAB[ch].Byte; $ M( T# I. m _. c/ z: c. ^
- k B: y: B- O1 [% x5 N if(lcd_code & BIT_MAST_COM0_L) * C& C7 N0 E9 }/ k& w+ W
{
; Z% k" D' m4 F* ? M |) ` bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);
7 N" s5 H$ R* v5 q( N }
# u/ V) r& t% w8 q% K. y" R else ; r: G9 e/ }5 n( B6 j& B
{
( g. L) U! J- R7 T3 J A4 t3 x bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2); ' ]. q6 B3 w5 K% f' \
} ; D5 R5 p0 U) g1 z+ [5 u% J
8 F1 ^" F1 l- W
if(lcd_code & BIT_MAST_COM0_H) $ ]; _' y, t; k! w6 t2 @ [ X: o
{ 0 P# v3 ^# Z6 `
bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);
* I! J; D3 x% K1 n/ c }
6 ]. f& M. f% u! B# l+ S; ?! T else . Q0 Z8 t: U- |0 i1 l) d6 h# u8 o
{
, _* B9 e# t, k$ h9 |; ~ bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1);
& Q9 ?$ p: T7 X. o6 D9 T: h } ; H" B$ y' e: X2 V. x% {
) ~4 E! s& C) Z0 z8 l- w7 m% g if(lcd_code & BIT_MAST_COM1_L)
% Q; r% W2 ?( O3 ?* n% h {
3 a& y5 B$ M N3 t8 ` bit_arry_set_bit((void *)LCD->RAM,28*1+index*2); 4 M" [7 P/ ^3 B2 ?5 G6 t' X
}
* n! C4 Q% V' R- G( q else
5 V; u5 {4 [7 N% e H P. [ {
$ M; j* J) E) R O: t5 @( b! z0 g/ y# O bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2);
, ^$ r5 L# B& U4 P2 _* I }
5 i' z$ l# i! z8 Q 2 b, U- X' @0 h2 X3 T0 a
if(lcd_code & BIT_MAST_COM1_H) : W9 N$ ?3 }& G1 e$ \
{
5 j" r3 v {( l, {! ? bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1); % G, ?- Z: s) p7 \' Q" X0 V
} # @0 t3 q3 J a N9 t5 {
else ' H# i% |2 C: A4 j( o
{
- \+ u% @. i# r2 a6 a bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1); ) X6 U: i: H9 S' P( d0 C
}
7 P5 o! o( q% c- r) U; x
. Z% g$ g0 F- _7 p5 O7 J if(lcd_code & BIT_MAST_COM2_L)
I3 A# c0 C0 ~& @3 D% _& a* ^) j { % L4 O5 J! h7 n# l7 D: W
bit_arry_set_bit((void *)LCD->RAM,28*2+index*2); & s$ p8 X* Z$ {. H
}
6 Y, ~( Q$ E4 s+ F: E else ! }6 Z: h/ t1 F* w
{
. S* i/ B( ]- _7 \; e; R bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); 8 X8 k ]9 ]' Q! h% r4 z/ r. _
} : z, Q3 W! f7 L
' J! t3 S3 Z& I0 P( v: d K% z if(lcd_code & BIT_MAST_COM2_H) ) Y5 M4 I& O: @4 |
{ 3 H' e- E: k+ ^
bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);
2 f& v7 `) z/ c }
; h, S0 I( \: j P+ O else
( \: B2 \4 }7 ?% \ { ) {( X% W0 g6 O8 t& P- h6 U, ?+ N
bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1); : s+ \0 S8 Q6 p
}
% `+ Z+ m1 {5 y4 c7 r+ O; E, t- e $ ?* ~% x, F& G7 T$ Y0 N
if(lcd_code & BIT_MAST_COM3_L) @8 I0 O g; m, N, `! ^6 ^" ]
{ ) I. \! l7 t# D: z, j8 H
bit_arry_set_bit((void *)LCD->RAM,28*3+index*2); 6 C$ S9 k2 Q. ^9 I" C' {
} " Z/ g3 b! W7 W, Q9 n5 O
else 5 o) _/ M/ t- r K0 K- O4 m
{
7 B A4 B4 B+ \ bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2);
2 F' j4 a0 X. v0 e }
' x' L% c3 E O" _. i
. J$ w% ?! s( s+ b" P! M9 g7 q if(lcd_code & BIT_MAST_COM3_H)
7 v3 P C, V6 Q { & S! Y$ y5 c! o- `1 @; D' O
bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1); 3 D- }; ]2 j, c! G
}
9 F! O k' Y& Z, D else k( c$ ^/ n8 b2 E
{
6 |/ ^ d/ W" n' q- N3 s bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);
; R- k/ z# q" p" ~' P' r6 \ } % B! M- c, H( x! m# L7 `
}
. T* |+ | n7 V) |$ D8 W, @( q) i7 g$ j7 z
void LCD_DispOffOnIndex(uint8index)
. K9 }: m- {4 _- `. `1 m, x{ . ]1 ^; e' @( U) `9 B% {
LCD_DispCharOnIndex(LCD_CHAR_OFF,index);
3 R: T" v$ F4 f}
* f/ g9 ^! x. z3 Z% l0 J9 U- v! l$ P7 G7 v4 I2 A1 m' {
7 B- D4 \4 Q7 s
void LCD_DispOffOnAllIndex(void)
" `2 g; x( V$ |{
1 c5 W `2 j* J 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]
2 f, r* }! d* `3 ]( j; w. s { & e7 `2 c8 U4 g: y# d5 I$ T/ }- r/ H
LCD_DispCharOnIndex(LCD_CHAR_OFF,i); : b8 M( T4 C* T3 N$ T+ z) n# ?
}
4 |# ~- H* R( ?' l) c. R}
( J$ f9 G+ Z! e) o
! W& ?+ W( q& }1 D/ n w" ~" Rvoid LCD_DispUint16(uint16num, uint8 blank) 8 _1 Y! e7 L3 Z) X
{ 6 R3 @* w7 e9 M5 V. r
uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0}; & c% X. L3 ~3 P
uint8 bcd_index; , t6 |/ f: j# X; R
uint8 lcd_index; 1 q: b; C2 c, V$ O5 E: u
6 i, j5 H4 @ {4 c( ]: E6 B+ c uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT); 2 A) Q' N/ e2 Y# f, C+ C
% Q4 H1 }: A- P4 N) L& H1 M) L. i5 s u16_to_bcd_5(num,bcd); ) h2 B5 ?1 e) {3 c' P G& Z
' `, F, f; P9 F' l
bcd_index=index_max_count-1;
2 u6 S! R* T5 ]2 u# z7 i
& ]" D% h/ s6 | [ for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--)
u$ F% j8 |0 e. r ], v, C {
0 W- \3 ~9 ?0 o: d& D' r7 T7 Q4 U. h lcd_index=index_max_count-1-bcd_index; ( A1 W! _- Q. J. E& B* b! @' _& c: ~
LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index); 0 U4 g. z( X8 V# d. g* V
}
( p6 m& O) y. a6 M, j 2 ^; C4 }4 i1 @( b4 X& j" x
for(;bcd_index!=0xff;bcd_index--) 1 b* s# F1 o7 P
{ / y( M7 z$ k6 R1 x0 s- r4 s/ I
lcd_index=index_max_count-1-bcd_index; - `9 A% C! U+ Y3 I" l
LCD_DispCharOnIndex(bcd[bcd_index],lcd_index); 0 S) z+ X3 H+ N! b& Y
}
) d9 i2 j Y2 k3 ]8 b}
0 p* l8 w7 v; t9 F: u0 ?' q& R5 N+ s
#include "stm8l15x.h" ' ]- X4 M% W* t. ^- U, W" i2 ^
#include "uni_int.h" + A: }6 L W2 T$ b+ l
#include "delay.h" 7 Z t' H" R. E# O. e# O
#include "periph_lcd.h" - g; T6 m, n" g8 r7 c+ G
) Q5 ]" r, z- iint main()
% a- k5 w& V1 {: F& @: S3 y{ 4 Y) y7 t( s; S" w0 S
LCD_Open(); ' b( e3 ^; J/ K1 u; ?
" p2 J8 q" p: G$ ]4 N uint16 num=100; $ N' y$ z4 @5 |. g4 [
0 L8 p M X) }5 L
while(1)
4 D# N9 t* v' o8 d- _ {
5 Z: T3 _; E9 [4 m, w% c num--; 9 B& g& k6 k3 m
LCD_DispUint16(num,LCD_CHAR_OFF);
1 [# Z7 o9 L" h delay();
0 J$ u: ~6 b# c: N) R3 _2 ` } , C+ N( S# |" j/ K4 U+ M
}
' w6 {% |9 N( D- F$ B. |2 ^: L[size=11.818181991577148px][size=11.818181991577148px]
5 Y, ?- n8 g& h" v' T |
|