|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include "periph_lcd.h"
* `2 E: \5 O [+ r2 P3 @+ P& [- B8 L; }. y- [. j( S
lcd_code_item_t LCD_CODE_TAB[]= ' G# `* A' T6 `( x, Q6 ?
{ 8 P" w7 @2 S) f( k5 @2 u6 M. D
[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,}, * Z! ^, Q7 ]) ]" |/ l1 j
[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,}, # K% W0 s$ ]0 f. X$ }; l
[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,}, ; y( \8 ~8 j8 [0 a5 @ Y
[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,},
8 l3 p4 @+ w8 c) e) ` [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,}, % U3 Q/ @4 @8 A j. z0 E
[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,},
8 P2 r1 `$ q1 f. {/ s [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,}, . m. I& x0 ^8 F/ h# e0 h4 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,},
2 o2 ]( w; k5 {. r" @5 N [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,}, - X# K$ t( |/ G/ ] k
[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,}, ; D# ^" F# b" { o3 g
9 f$ B4 p1 q. c* w, g" m
[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,},0 f5 v1 [& o/ V- X/ l
}; * ~4 `; m0 `$ @. e8 C
9 K# s9 X1 Y5 D6 U, Rvoid LCD_Open(void) , z& X% J& a4 D3 d- L
{
/ ]4 J! y. Q/ M/ K$ R2 o$ N9 ? CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE); 6 v% b5 j T7 V, X/ t- x3 b
CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64); % Y% P2 F7 e) n
LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);% Q+ J3 z: J3 d8 O% j6 `( v2 d# p
LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); % H% \+ L' }2 r" R. g
LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); / U. e% z) @0 }+ Q# g h
: c8 O9 Q a) H) ^3 X* A8 w
LCD_ContrastConfig(LCD_Contrast_3V0);
" e1 n8 D+ u& L" Y* J8 F# ^ LCD_DeadTimeConfig(LCD_DeadTime_0); - B( S4 }) [; Q; g! ?
LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);
7 Z" q% w3 F& h0 B* k& k4 p LCD_Cmd(ENABLE);
! [6 V* C& S& n( k% ~3 l3 U}
) S9 f+ s. f3 E+ v# F+ K. ?6 x0 O( X( R8 X' _
void LCD_DispCharOnIndex(uint8ch, uint8 index) ; Z/ p, N5 L2 x6 @& q) ~5 L5 W, g
{ 2 O: x m7 F9 G
if(index>=LCD_INDEX_MAX_COUNT)
9 E/ F r1 G$ d { 0 C/ g& M0 B" O; K
return ; ) G* g9 `1 C# [& P. B( ^% R$ d5 m
}
# ^5 ?9 X) T% `, M+ O
! c/ P. w: `2 X% G" o: N uint8lcd_code=LCD_CODE_TAB[ch].Byte; ; y7 |% ]! k$ W9 [
4 g. q0 y1 N9 }' ?! x
if(lcd_code & BIT_MAST_COM0_L) ) l: {$ J6 s3 X, J6 ?
{
/ B3 F0 e0 D- ~ bit_arry_set_bit((void *)LCD->RAM,28*0+index*2); , t, [7 _; g/ ^0 O k- J# v
}
% o$ e$ C; k% y: X8 m7 V1 C1 h else
) Y6 h2 x0 h {) P" y) G" Z {
8 E" P6 ?' b) c bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2);
7 O7 M, H4 ` N- T }
% ]; J N3 Q& [" i3 M& m5 U
: J2 K, J& H( @6 n' _# C if(lcd_code & BIT_MAST_COM0_H)
, P+ M, W2 @, E {
" T$ o& B9 H* M/ T bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);
2 D+ F, j; K9 J! v }
6 C3 x9 s: {" `% V3 F else 0 n8 u( T0 d( {4 Z2 @
{ , a% T8 ~! ^" ]7 l% @( P
bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1); : T3 \1 a2 r; S2 _* \( g" a
}
. a0 C3 B$ m/ }" V ! ~6 h" {' B* l5 F
if(lcd_code & BIT_MAST_COM1_L)
; W8 \$ x# x$ b( Q! o% n" B {
7 l* d8 W" T* o4 r. ~# p bit_arry_set_bit((void *)LCD->RAM,28*1+index*2); 0 S3 x$ l0 T$ I( K, o3 _: i
} $ t2 b1 l ~' e7 Y) M
else $ F: q g6 `3 `6 m& C
{
2 `) `! J- Z- u1 j0 V S1 v$ u9 f bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2);
1 t# j6 x# b2 F- z/ D5 k }
* A( B' \: t/ S) R$ k8 | : a7 O9 @$ V" _+ T0 g- w
if(lcd_code & BIT_MAST_COM1_H) . ~/ y) m8 d: G% P4 `) u' r
{
! U, n+ U/ n1 k% G9 E* M, x bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);
% O1 o3 @) |5 a+ w9 z9 Z5 @/ T6 \! H }
; \, Y4 v) i2 d; w6 J& F+ C else
7 _1 v% O; M- H& n ^! m* C* ]- } {
4 ]1 }! H# @3 m! n- F bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1);
" h0 x1 d, R& y1 F% V' Q- q! D }
% b7 t5 C, n/ v9 `6 ^" K1 N ; |0 a2 Z7 L4 A" X/ D$ m1 R9 Z7 s
if(lcd_code & BIT_MAST_COM2_L)
3 m4 O3 P, t8 F% h {
! C: L6 a) S* Q8 N: `2 k# Z! h2 z bit_arry_set_bit((void *)LCD->RAM,28*2+index*2); ( s% `. Q2 f9 t% K' M/ V
} ; L% B) F1 X5 c+ z' F0 `
else
6 r1 y9 Y9 ^1 T+ T- u5 ` { 8 G# n5 L. o0 C% ~ I* s$ C& o
bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); ' o9 l+ `* u$ ]9 a
} 2 F, [( d! H. h5 e& r9 v5 G
. K0 {/ P5 f2 o2 u: n$ }- E
if(lcd_code & BIT_MAST_COM2_H) ! L( R: ]. }4 G( F7 u2 ?
{
) V& R9 ?; n ^, O5 r p bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);
3 L7 d$ ~) B8 k! h }
4 j5 J$ m9 T# a# n else - v' K% R( s4 l v3 M, ]# L3 b5 \
{
9 }. C9 ]! h! ~5 X bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1); 0 Z7 i' t& G5 S3 s( d3 B" w
} 8 X ?# d2 \2 c8 }/ C+ o
( h2 p- T$ v5 ^% o! o if(lcd_code & BIT_MAST_COM3_L)
) A% a1 Q/ A( [* N+ r { * @2 t- F* d6 p+ o6 [, H
bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);
# G4 Y' n& B% f2 F" W) R/ g1 a }
* G0 l& x4 W; V2 [1 d) s* ? else
, S2 r% @( v x. B0 C {
{/ B: y3 M* @+ O6 U- y9 | bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2);
0 W: g9 u2 d! r1 ^' R1 Q5 d# { } 4 z4 \; _, m' W/ [5 }& U: i
' z; u# k! s/ h2 a8 f
if(lcd_code & BIT_MAST_COM3_H)
s5 Q% ?9 t6 f% D, e G$ g { ( a5 l% W4 q, q& W, g8 L& d B
bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);
' Y8 P/ B; ?9 Z } , j5 j' S M K
else ( n% K$ o; C& e$ |3 `( r
{
, Y1 f* u: n8 N/ l. P' O bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);
( x3 h2 Z8 k3 L0 r B2 e }
' G+ r8 f& a( J# J# x2 O; f1 _& J}
$ A- v5 w- Q: ~5 E6 b0 x: u8 k' P% D
void LCD_DispOffOnIndex(uint8index) , _8 @, _9 u. m
{ ! Z% K" h4 D- F5 g: _2 E; N
LCD_DispCharOnIndex(LCD_CHAR_OFF,index); " C# ]4 y+ U, x+ F3 i5 Q
}
. R' \; g; \" Z6 z9 D$ p( ]# Q' [* a# Y! [6 U; Z+ c5 e9 V: _# O8 s
( m# l6 }, G! X
void LCD_DispOffOnAllIndex(void) 1 H# b& E5 q8 p7 O) Z- m; T
{
+ ?2 J- b3 | K4 k/ m 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]
7 U: S4 x8 L1 ~) o3 U& t# F, @7 j { * F! g% Q* I! A2 } W1 a
LCD_DispCharOnIndex(LCD_CHAR_OFF,i);
$ N0 o& K8 L# g, I }
# V) G7 o6 d3 f. q# S8 f} " v4 P/ \7 |6 A- d! A
0 c* q5 N2 p( l3 {0 u8 A; O6 t
void LCD_DispUint16(uint16num, uint8 blank) 0 i: ?8 X- }3 d1 J
{ / U$ K! i0 D& M2 {
uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0};
x6 i s I. \9 Y: H uint8 bcd_index;
3 [9 T; Y8 }! X: C; i0 N7 e' l uint8 lcd_index;
, |4 }9 N, P+ ?; I9 R- x- _% N
/ ^$ |: I, O9 z; T* q9 Q9 k uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT); 5 d; Z, A6 Y1 [
/ b7 B; v: x/ @7 {/ f
u16_to_bcd_5(num,bcd); & O$ h& b4 [6 D+ v4 N, |
$ {9 c- u; [* k! X& V bcd_index=index_max_count-1; 7 X2 {8 b4 Z+ i! a0 m; p% s6 d
, f ]! w- Z1 g" u+ {
for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--)
5 R, Z) x7 I' D4 S. B N {
# E- O( `; x% X, q9 s lcd_index=index_max_count-1-bcd_index;
1 I; }9 g: j! {, W& P4 R; M LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index);
6 u, M, ~9 Y0 Z1 ?9 \: n1 C: Q2 m } ' }& ^; J6 y( x! C
8 H4 g; ~; o, i7 i for(;bcd_index!=0xff;bcd_index--) + V Z L2 W6 s& l) ~& N% d
{
6 \# Z \$ u. G6 d( b8 s1 {+ |. X lcd_index=index_max_count-1-bcd_index; 1 q4 p+ ~7 A4 Z% {' F2 ~! Z% {
LCD_DispCharOnIndex(bcd[bcd_index],lcd_index);
4 o8 Y l! z6 c/ g" O+ Y } 7 v1 I' a6 T2 m5 `
} 2 l; @ |9 J0 m$ o+ L1 d4 P m
( E8 D* T/ D. i. Z
#include "stm8l15x.h"
1 V" Q& U- n# i$ B" s. i0 P#include "uni_int.h" / \, S# `) M/ f( a y) Z
#include "delay.h"
# a% u" {1 O1 [2 Z' f* I- E#include "periph_lcd.h"
) m! K& D2 z1 u$ ?/ r
+ a0 _; H j8 a% s! n0 tint main()
. L( l, z; o" N+ q3 G; H{
- w7 i% h' k* h8 f# @$ s LCD_Open(); ! I$ W5 g; i) k$ S" y y
8 Z2 e# r/ W: {9 a& P- I# `
uint16 num=100; + G: p% }. \" s. ?$ y
; }+ h& J4 K: E3 n: p9 F while(1) ; e1 F. M" }, f" F U- U8 ~
{
) D& n j+ s3 ^* @4 V# n- a num--; 8 i2 d& g9 L) {7 c
LCD_DispUint16(num,LCD_CHAR_OFF);
5 J# Y) J. i/ A delay();
3 j( w; s7 [5 D; P1 y) ` }
`% e# }" ^# `}
3 T) |% p' t6 w5 _ h }2 ~4 i2 v) J[size=11.818181991577148px][size=11.818181991577148px]
8 O; F: y z* o1 y4 N- s0 D |
|