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

使用stm8L152来点亮IO EEP LCD

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
#include "periph_lcd.h" ) }) }1 D" ^: G" X4 Q5 S
% }. W7 Z1 D0 {8 z, X
lcd_code_item_t LCD_CODE_TAB[]= 0 i/ `+ O" Y1 P: m
{
2 \# F, |+ @/ y1 W, \1 ]  [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,},
* l! i" R  J0 p6 G" c  g) J5 W  [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,},
* u$ ^% T0 h) c  [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,}, , u' J& d+ N8 u' C3 M
  [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,},
, `7 ]" R- B( o8 d; 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,},
, p8 Y/ y6 A( I7 \  i7 Z. f  [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,}, 1 W5 n' |& A+ A# y' f/ y
  [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,},
5 R* W5 ?. C, l  x8 _  [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,}, - q. ~9 a5 i; E% z
  [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,}, " }$ T+ Z) X, M+ \
  [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,}, 5 z. V' `: |  x$ i
   * p" V2 J  ~8 V
  [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 q. [) i9 g5 S$ w};
0 v) k# t3 e8 C; H& U. G
- M4 a% C/ M6 u3 I7 gvoid LCD_Open(void) . j4 ]3 S4 j8 a1 W- `
{
5 l+ d. Y" T0 ^# b" C4 u   CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE);
9 q7 O' p6 m# j, f, g- n! {7 f   CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);   
$ K6 I2 H% c3 D$ x. F    LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);1 B6 X$ ~: Y2 A, T; m
    LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); : C  m# R' x: X" n; S
   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03);
9 F( H$ [- s  d6 @& T
+ _) t! s$ l% m   LCD_ContrastConfig(LCD_Contrast_3V0);            
1 ~, d. ~! U7 c  ~6 ^   LCD_DeadTimeConfig(LCD_DeadTime_0);                 9 L. n2 e0 l7 w7 d5 R0 }3 w
   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);
2 a/ U! o, P0 R( B. \    LCD_Cmd(ENABLE);
0 @6 N( r; I" L& |} * K) d3 ?& o+ c' z5 v( h
, s! h4 ]9 G/ r4 N$ g& e" P% W2 t
void LCD_DispCharOnIndex(uint8ch, uint8 index) * X& F: d- Y1 _& d
{
* M* Q- Y( h' z  `/ K( f  if(index>=LCD_INDEX_MAX_COUNT)
# c! |1 N5 `3 \1 g  { " W! d7 {! d8 M6 A
    return ; " Y  \. n: c! Q& k+ e' A" t5 _
  } 5 h6 ]$ G5 u" X. y4 b
      
7 ^4 y7 l3 G+ T$ W  uint8lcd_code=LCD_CODE_TAB[ch].Byte;
- h4 }1 j  M- o- |8 u( @  r   
" G7 b6 t) o4 G7 c  if(lcd_code & BIT_MAST_COM0_L)   
; S. l: D9 K- H5 \# O  { 0 f! s7 o& y9 x. b
    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);   
" p8 r4 d1 I$ R- H. X+ N  }
' O: e$ P+ V# p' U. @+ B# _% j$ l$ e  else
" c; V' }  z8 g8 L2 X  {
* E1 M4 _! }5 d5 R3 N' z    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2);
8 ]0 W' E$ y! n8 ]) R9 i2 |, l  } " q% V3 y) ?5 g
   
# |) Y- z- k. w3 m) o0 |  if(lcd_code & BIT_MAST_COM0_H)   6 v: n2 o+ J7 z. ]' H4 M0 v
  { 1 _0 E& u, n, [& n5 z
    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);   
9 T! Z( z2 s8 |0 X, p' p1 I  }
* S: ^5 i6 Y4 W" O  else 8 n# X& l5 B* X2 g
  {
# n7 a$ _0 @1 x- |    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1); 6 [( c+ x" y( T, D! L" F. V- E
  } % ~4 j2 |3 `/ S2 F
   8 f) B+ K* D' n/ u  X: u+ F. `& t
  if(lcd_code & BIT_MAST_COM1_L) . q; {' A1 I5 X4 a; Q: |
  { : g+ v; k6 x& W- w
    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);   
) `" A6 `% V% I# z3 L# r' h" A& }  }
: Y) Q$ E) L) j: q  else # T; o9 w5 R% D8 N
  { - a  {! o: y( a, e6 ^/ e
    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2); ) Y8 a9 W# P$ H  x3 D' Q9 w7 ^
  } / ?4 v6 I) S: d9 k1 E" _6 ^9 {
   - G, u* {( L& m) X  T( p, h
   if(lcd_code & BIT_MAST_COM1_H)   4 i! d+ O$ ?! |4 x
  {
4 `1 e& f# L' f' w* X/ I    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);   
6 n* f: [+ {# u( p+ K  } 6 ^7 d* D* C2 p" v% z7 I. s& a
  else
3 i& e- K+ o/ M- Z  { 3 U( o1 v) I' b7 t: P
    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1); + t* I, _. D  {
  } / m( Z. M% F9 M! \. s' r6 v! Y
   
5 ^7 H; U9 a0 j2 `* t, z& J   if(lcd_code & BIT_MAST_COM2_L)
! t- M9 {( W2 c# Q6 Z- y# z  { 3 {1 }  c2 z4 t& u' p7 m
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);   8 J) Z5 ^" L( Q) P
  }
) Y/ n* U" G5 E' y5 q* p! f  else
# e, G) K+ h/ s) h9 F+ {) |1 o  { : c3 ?/ Q  f$ c
    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); 9 V' _* w' l% u' Z5 U
  } # x) }$ i! l6 [6 d: R
   9 G1 w  d$ h% @2 c
   if(lcd_code & BIT_MAST_COM2_H)   8 Q6 M8 x# U7 a" i5 Z% h, r! w) T
  { " v. W+ O' f* n+ M2 c8 ~
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);   , U9 R- e! N& n
  } * |2 S! x$ C$ g* G2 u
  else / _) W  J; d1 ]1 N  K$ f1 A9 Y. e
  {
( g5 B( D# I& N, I8 x* @) t- M1 O, t    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1);
; X+ A! I; Q4 r  M) K  } - Q; b6 A" O2 |. Q' ?- }2 R% c
     B5 c0 {+ h3 R$ J8 a
   if(lcd_code & BIT_MAST_COM3_L)
" Q8 N( ]$ n! q7 @3 _6 M  { ( g* S: l$ D5 r+ y
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);   , L  A" y6 C8 K4 p' A' _
  }   `1 m$ R. q* ~  Z# O& V1 }8 h
  else + j, G7 S- v5 W; y; `2 h# l% [9 U* C
  { ) T. b! ?6 }4 u# r! ^' e( Z! k. ~
    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2); 2 e+ D$ r) E' p. K
  } 6 Q- }, U! H+ z' e9 b9 N" u& Y5 l
   
& I& Q( O' n/ q# e, H0 t   if(lcd_code & BIT_MAST_COM3_H)   
3 a. S8 k" M) w$ n; n# f  {
0 {7 J1 a, R/ Q" r, E    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);   , l& C( H" L  }
  }
' A6 ]+ t1 O0 z& P( }5 \  else
, |, q3 j1 O" E5 C( s  x' F  { ! P5 m7 ~1 I3 a9 k5 M$ B+ B
    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1); + [' b3 s, X( {! A: r# _! K( |
  }   
4 D- X* R( S- l" `. N+ \0 {}
/ N9 ?5 L8 B% j- D! ^2 p/ }1 Y& e/ ]1 c  H2 z  `
void LCD_DispOffOnIndex(uint8index)
/ L/ n1 [& ?2 G; z# I{ : d# [# T  I7 r: m
   LCD_DispCharOnIndex(LCD_CHAR_OFF,index); # O) r3 p2 }" `6 v+ r" X
} / S  x& T1 ~9 G: [* z- p9 M  G

7 [1 W, F0 b% T* Z; u1 k
$ Q& p. g5 z( r$ ]+ Dvoid LCD_DispOffOnAllIndex(void)
, ?1 ^% j4 s% X! k8 H9 m{ . D3 G: |* }4 W. n
    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]
9 V) w# v  T: K- E+ K    {
5 n+ x; c1 j- o       LCD_DispCharOnIndex(LCD_CHAR_OFF,i);
/ O$ q) R! f% _  t    } 8 z0 C9 A' s: P. x
} # T7 e1 D" |' j; U  Y; R
8 }: }7 t1 J3 M) X
void LCD_DispUint16(uint16num, uint8 blank)   x9 T! }. m; H: m3 L1 I, W5 l, B
{
. W: T* a' w6 v( Z3 W    uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0}; 0 v! o5 d1 I( G
    uint8 bcd_index; * A+ @. K3 K) h  f
    uint8 lcd_index; 5 }( u& }4 }  R# q- a% R9 f" K
    . @+ L; M) C4 Z) d% E
    uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT); 0 V6 u! D  q4 u8 d& O* e9 g4 z" G
    ' j+ L7 T. d) [3 S( \
    u16_to_bcd_5(num,bcd); ( a5 E' g* j- `9 v/ ~
   
6 V$ s6 I" j9 Q) n. F: }    bcd_index=index_max_count-1;
$ y' r% i( b0 K1 y8 M* b! O    7 L; `% r- c( y) i+ B  M( V2 }/ L
    for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--) , k/ q; E$ R# l) E
    { + }$ |6 L  m0 Q, O: u2 l4 u+ t# X; v
      lcd_index=index_max_count-1-bcd_index;   5 |+ v& [3 v& X$ ~& T+ V) _
      LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index);
- M$ j3 u* a0 ^( G& {. v    }
: {4 G$ p* c, T. o, L    8 W6 C. C- r) [7 t. [5 {0 f
     for(;bcd_index!=0xff;bcd_index--)
  A; ?  C: G+ F1 h$ v    {
8 U0 u: s. U% a  W) t      lcd_index=index_max_count-1-bcd_index;   
2 R/ A( ]3 g: q8 p" _' r2 W      LCD_DispCharOnIndex(bcd[bcd_index],lcd_index); * m) l# R: ?/ D. ~
    }    " k9 j' i% B8 l* h( a/ [
}
& d8 ]! {8 ^- A2 t5 \
. @3 `( G5 B; g; |#include "stm8l15x.h"
  J# d4 u8 p8 U: r9 B! C0 _& L#include "uni_int.h" 8 A. o6 M6 C0 ^' b
#include "delay.h" * r4 Q  p' o! L+ H% r/ ~
#include "periph_lcd.h"
9 b" J  N7 i& {- M6 A4 g) L/ J2 S
& h; l4 P2 d- r$ e# ]int main() 0 y; z  e6 x8 j8 O# Z9 p
{   % m, X6 d/ P3 c  Z
   LCD_Open();
2 E: W1 V# H) _0 U1 l: D    2 |) {4 l1 o0 O) M$ Y7 f$ N9 H% D
   uint16 num=100;
. o0 Q7 G/ b* O" z$ }9 i    ; H/ g' q$ W+ _
    while(1) 2 i% j6 a& S1 M5 f3 B" q) m
    {         
" N$ |* G3 b6 M# @         num--;
, t9 L9 K: K3 Z# f) ?0 H% ^4 H         LCD_DispUint16(num,LCD_CHAR_OFF); 3 q0 d9 R6 v9 P' v4 m# m( U5 X( h
         delay();                             2 ]5 u0 T) k9 S: u
    }
4 r. l4 j( T# ]- H  l$ m}
9 A5 Y! ?! ?4 M7 ~; [5 T[size=11.818181991577148px][size=11.818181991577148px]! \) W6 A; X$ E0 u4 P

stm8l15x_io.rar

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-5 02:40 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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