找回密码
 注册
关于网站域名变更的通知
查看: 469|回复: 2
打印 上一主题 下一主题

使用stm8L152来点亮IO EEP LCD

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-6-16 10:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
#include "periph_lcd.h" 1 s5 I8 C; z, {: a9 n( N4 G& d

, Z5 i: I* X+ K) Ulcd_code_item_t LCD_CODE_TAB[]= % B0 A; @/ O# u/ e/ X7 l
{ $ q1 h# {7 y4 Y& x  q. 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,},
# X+ N2 i* e& `7 c3 t- Y  [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,},
  d2 e: f" G! o& N  ^* _5 A  [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,},
. _' i$ i' l$ B" G6 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,}, % |' a0 T0 b3 z3 R! `' d
  [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,}, " h/ E8 i( l9 a/ e6 k
  [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,},
* K: A7 X7 o2 Y6 _  [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,},
* x4 O4 W' ^' D" s  [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,},
& `7 ~' {1 p0 O' q7 D) W9 K! d  [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,},
* M" c2 _3 @$ i# p  [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,},
3 Z: N7 c! b" G# q4 Y$ H; V! ?   
  O0 D/ f' d$ `9 |0 s  [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 s/ R6 E5 I; d- d& i1 v! I}; ) z& ?( X& g6 {/ e& J

; k9 b+ {9 [: j( wvoid LCD_Open(void) ( w$ m0 P- }3 m% E
{ ' J6 A( N% |( Y) h0 d7 G9 U4 K
   CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE);
+ A7 H- j, r5 b" u  k! g   CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);   
; J* g! Z1 s) P    LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);7 J3 y9 J' c6 n6 {
    LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff);
. @' o. [% X4 u! Q7 D+ S- U   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); $ z* x2 _1 f6 F! u1 n4 {  l. V
2 [: f( B0 j' |$ B3 L
   LCD_ContrastConfig(LCD_Contrast_3V0);            ) x- o" F! E$ X4 ?& |
   LCD_DeadTimeConfig(LCD_DeadTime_0);                 
8 D, B( L5 |. K) C4 z! C   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7); 2 ], ]/ t% H( N2 ?" y8 U8 G  M
    LCD_Cmd(ENABLE); & Q  c7 @2 o4 U5 W# z7 F: B
} ; W3 [5 k% f; p& A. Q! K. a* d! d' l( I

- X/ T; k+ K+ Q, Jvoid LCD_DispCharOnIndex(uint8ch, uint8 index)
9 C+ y2 z/ t2 ?{
  z: `4 i* T: B* w8 w  if(index>=LCD_INDEX_MAX_COUNT)
; o/ H8 @2 k" a$ C3 H7 {  {
% G2 a. ?3 H- P    return ; % l: I" g( j. H! H' g! d
  }
+ W/ O; Z4 [0 [+ e0 Q1 g/ T9 S      6 A% v$ w$ y; S) E* _
  uint8lcd_code=LCD_CODE_TAB[ch].Byte; 4 l; P, H/ b5 e0 f2 V
   : P' A# n# R6 @- M8 |
  if(lcd_code & BIT_MAST_COM0_L)   
3 V. l" T" T2 ~  F# {  {
( O0 f. G0 M) a4 _6 n0 U    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);   9 D7 X, f; l$ ?$ K
  } / B+ B+ Q: m7 R; ^, c6 \; S* H
  else / ~) e2 t  A( {; l, u. k2 T$ \
  { 7 x0 k0 m# n$ Y' M
    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2);
4 y/ ^- j" t. ?  }
$ ?5 H7 S' T. x6 L0 r6 }# W7 Z) K   
3 ^# C( r! A9 b1 _2 {  if(lcd_code & BIT_MAST_COM0_H)   + V: A% u, c0 W8 u# t: A, k
  { 3 _% X9 U$ i, Y6 i3 A9 l5 S1 [' w4 }
    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);   ' n1 w9 z7 d+ X5 L
  }
" z1 u8 L- H9 L# `  else
! A+ y! w' h' x  { % r$ S8 h. a( n6 N, C- v  e5 l
    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1); 5 f* k6 i5 O- h( R( @
  }
3 T  j1 S! W3 D& M, ]& j) f5 A7 b- {   " I7 N' C2 z3 n8 |* ?1 M: E- _% v
  if(lcd_code & BIT_MAST_COM1_L)
  q" G4 S6 Z) k! g9 H5 W- n  {
/ i* e$ h" t0 f$ J) O. w: u% q( e    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);   
2 O% S3 q* S2 r  U- s/ A' T( Y  }
  Z9 Y0 r& e0 F6 y/ j  else
7 K* e6 ^9 }/ `# y" D! M, q  {
: E: o2 V  I/ Z" H* R  b* n$ x* \    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2);
' Z/ {# T& B" i& I: U* I  }
  w0 C8 J5 g5 L! I  R3 H   3 p& K5 A- J; d4 x6 E' {" D
   if(lcd_code & BIT_MAST_COM1_H)   
8 J* n# S* |6 }* h3 [' V( E1 P  { 6 \/ z2 o5 d/ J& u/ y0 U# v. I
    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);   
0 P  o: w( T; }+ g/ m, R  }
# |' v  o1 x7 ?  else 8 N0 `: ]: O. Z2 }
  { 4 u: X; O2 C+ G; M6 q2 B6 J. F! K
    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1); 5 [3 _6 v2 D6 [' V9 _, _
  }
2 P" T% D6 F' Y' ]# Q8 ]) a& G   $ M5 {" P3 ~5 ?) q
   if(lcd_code & BIT_MAST_COM2_L) - A) Y9 z( b1 V  W! X1 O8 A8 J
  { : W0 L  S' r% c' X
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);   
$ n% t* ^* d: c0 V0 u( h! T" @6 N' a6 k  }
( w8 d) W( q. N8 D7 G% W  else
+ O/ {+ O, Q$ {6 w  {
5 Y! e  ~* m7 y0 ]1 k    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2);
  H( \5 z9 x! }  a" Q8 I  } / z! }4 ?' F1 S+ p8 b
   
! G$ ~) P4 e2 x' X: k2 _/ ~* z   if(lcd_code & BIT_MAST_COM2_H)   
+ \6 }" w9 `( x% M( L; U3 c  {   X8 ~# F  y- V+ A" D
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);   
  V* M3 L  X2 n- H5 F8 e0 A* {  }
* o/ Q/ G0 a% a; {) e0 M  else   Z, P% P8 Q' A- r  O4 M5 @& Z
  { / G9 w3 Q3 i$ P, l
    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1);
$ e6 p) u" `* g2 ~& b  } $ N+ [5 f8 u  k
   % s7 f8 u4 D2 y- {2 E$ F1 A
   if(lcd_code & BIT_MAST_COM3_L) 3 L& w4 U. ^& N) |
  {
1 o) R8 k& K0 J8 m- n    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);   5 M- R7 ^- J9 L3 f- l* Z4 f
  } + \# {. k; h# t7 q
  else
- Q: M$ K' S- C7 p+ P2 O1 v  { 6 L' ~  N3 q& l8 I7 l8 E% X
    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2); * j0 c( s, k6 u& S& x" I
  } 2 C+ Q; O4 E& f3 C
   " J7 F8 G! D6 |7 G
   if(lcd_code & BIT_MAST_COM3_H)   ( C7 Y: K# U% Y+ s" O. \
  { " _/ T1 n" T- G( r8 k0 ^5 v  [
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);   
( v$ X  K* a) K8 {* w9 V% I; x1 A  }
' G9 Q, p- j& s! t- W7 [, d  else 1 [, ?7 y- ~6 L$ Q" t" r0 A
  { 4 y0 O' Y1 g' s* {  ^. a! r
    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);
$ }: J: f( X+ F  }   
- ~; k% R3 ~! r3 F$ k}
# }- F+ v) ?7 V% B5 [$ P& G- c5 S2 `4 o: y- t
void LCD_DispOffOnIndex(uint8index) - ^1 N0 v% M6 a/ M9 J2 }- @
{ & Q( v$ G; ]4 V# w# l/ \
   LCD_DispCharOnIndex(LCD_CHAR_OFF,index);
4 P$ K4 u. {( r- D$ s, U5 B4 p}
6 S( Y- w) k0 Z% J' {! W& k
$ G3 V) J8 Q; r' f" C& _7 Q5 X! {) }: G) G, T6 @
void LCD_DispOffOnAllIndex(void)   t: d  C$ p2 S9 o# F
{
0 n( @. f7 S& n; Q1 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]. V# T$ Z" Q/ B) D  C% Y- O! J% t
    {
; H/ Q  H$ b2 u& X* w       LCD_DispCharOnIndex(LCD_CHAR_OFF,i); . o- i* }1 x3 @/ w: p9 C2 L- p
    } 2 u: k) a+ d3 \( J" D
} % X6 g: X0 f5 W* e
4 t: ~7 e" w% ^+ [
void LCD_DispUint16(uint16num, uint8 blank)
9 z9 q& @& M- G{ - M8 w7 u6 A4 R2 }& C9 n: _
    uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0};
0 G9 K' k. ?4 L. R( z( I; c, ~/ T    uint8 bcd_index;
* p: m4 R# a( K0 C4 F    uint8 lcd_index; % R' x3 W( k& |4 L. ?) F
    - f: Q4 J& M, F, ~* \- _' B
    uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT); . _) J% k8 g2 O9 q
   
1 M$ Q8 }9 K) w* A/ K, R    u16_to_bcd_5(num,bcd);
% }* l9 e& C3 o+ Y    1 k5 S3 R6 U9 |& D) P5 x( p
    bcd_index=index_max_count-1;
/ P% M7 R2 Q- R! M1 p" `    # \6 ]7 s1 \0 f2 Y
    for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--)
. B, I* y9 R: O6 j+ c  G    {
# W) }4 y* o5 p. ^" ^      lcd_index=index_max_count-1-bcd_index;   
+ \# E9 F: B% M$ P5 _2 I' h      LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index); 8 S1 x+ y1 y/ Q6 n( p" z
    }
2 [1 [/ N6 j! K% u   
5 `* k" u% {. k; X+ B     for(;bcd_index!=0xff;bcd_index--) 8 F( O7 u( u- p
    { % L& @4 {8 t# X" }6 j; d
      lcd_index=index_max_count-1-bcd_index;   
. Z% |6 l& b# c: p9 l' @0 P6 ]      LCD_DispCharOnIndex(bcd[bcd_index],lcd_index); : l6 e1 \8 `; C# P$ [/ s6 Y' ?
    }    . l. l, L2 h5 l1 b
}
2 [4 d9 K( U5 ^2 h4 h0 m6 G7 d' l+ y
5 |+ Z' q# E. E: @$ L" w/ l#include "stm8l15x.h"
& c" g# j- a6 I+ t2 V8 U6 Q#include "uni_int.h" % M, z5 ?1 d4 O5 |. M6 r
#include "delay.h"
: ]1 Z' D. v9 {; @. W- D' C# J#include "periph_lcd.h"
8 o' Y) @# A* p* F" u' \( `- T4 G8 O
int main()
' k2 `0 q& p# G% e6 O{   6 d: u  i/ f) P( \2 ~
   LCD_Open();
. v4 [0 E: @  H% ~7 A2 w; f' G5 [    3 y" R6 B3 N% B$ I4 f! p, d, v/ N% v
   uint16 num=100;
# k1 O( A# z: Q8 R6 s- b0 H   
# I* H1 h8 E; S4 [: v  Z' K    while(1) 8 U; \5 o+ ], ^( _
    {         
0 ~/ P" y( _- ?) s& F3 x. T2 j         num--;
  ?! |! }+ v( s7 R- O3 H         LCD_DispUint16(num,LCD_CHAR_OFF); # ~- G/ y6 M, C; d  _
         delay();                             
% V5 ^% v7 V5 y  N) M5 q    }
9 K! }4 P( h* F9 O9 T}
# I+ r+ O6 n" q( d2 S. `  f[size=11.818181991577148px][size=11.818181991577148px]
) T7 Q: n+ A3 B( p) X

stm8l15x_io.rar

944.82 KB, 下载次数: 0, 下载积分: 威望 -5

该用户从未签到

3#
发表于 2019-3-5 23:44 | 只看该作者
看看楼主的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-21 11:27 , Processed in 0.109375 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表