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

使用stm8L152来点亮IO EEP LCD

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
#include "periph_lcd.h"
# O. l. G( _& C; m( R5 V" M- j7 |
, e8 F% J% z2 X" n/ slcd_code_item_t LCD_CODE_TAB[]=
% N* F  b" Y4 r$ ^{ 2 Z4 r) A- j' q+ K. r' Y( ^6 g
  [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,},
+ n$ h" Z$ g, T0 I9 ?  [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,}, 5 R4 O# k- q% d; i3 m$ X  S
  [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,},
3 j: e' v6 i/ h. _: C- r  [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,}, . t) k6 M$ s4 Q. B5 h: I  K
  [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,},   g+ o; x6 n4 j! j! c9 A3 y
  [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,}, + s) y9 l; }& ]" W9 ^) [: P7 c9 a
  [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,}, " y+ B* E9 W) [5 s9 H
  [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,},
' g+ R' s$ }8 h" ~  X3 B  [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,},
: f3 C" z+ r/ U+ G2 C1 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,},
- S3 q+ J: ~& [" ?2 v2 U; v. ]5 p   
! q: y% Z" B4 E* b5 L3 ^$ v* _, \7 c: I  [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,},- f4 ]2 f. n# \/ L+ }" I2 b
};
8 x& g. h1 x, X) M% k0 I9 V
! I, o/ o3 n9 |  f* |6 Z2 J& tvoid LCD_Open(void) + l1 q, U  H. [2 d: ]; S
{
9 T6 H, @' T. Y9 m' Q   CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE); * \. {  U6 b5 G9 d/ `
   CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);    ; Q: @5 u  h% C; K5 J/ c% \
    LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);* q! _+ W1 f/ V, b
    LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); # I' L4 i+ ~! i# g5 _2 p
   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03);
  Q9 \. i" @- Y: L. b# t# Z. l  {0 |) T0 i
   LCD_ContrastConfig(LCD_Contrast_3V0);            % z. h4 Z0 u/ d/ y" ~" B8 V
   LCD_DeadTimeConfig(LCD_DeadTime_0);                 
# m+ h' v1 d1 J6 Q: R# t0 i$ A0 T   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);
) g4 Z8 A. E* N3 [' n! h    LCD_Cmd(ENABLE);
" Q7 ^8 Z" @' W1 `+ v3 n( ]& m}
8 o+ _$ i9 I% A- d
/ n! m) m" g) v; k9 uvoid LCD_DispCharOnIndex(uint8ch, uint8 index) ) d; S& ^, W* E% X0 j8 f
{ % ^' y( J# W5 G5 S, M
  if(index>=LCD_INDEX_MAX_COUNT)
+ P7 D1 S- w: O4 ~; V) V& ~  { * [8 N  U6 ~/ ?- E. B( a" q! b
    return ; ; N* a6 C8 y2 F
  }
0 j/ M+ Z7 Q6 H, ~, O% i      
! X4 L. O+ b4 P) X( ~  uint8lcd_code=LCD_CODE_TAB[ch].Byte;
& j$ I$ L  d* {$ S" D8 D4 f# {   * \! v! U4 R+ g# Z7 T/ `
  if(lcd_code & BIT_MAST_COM0_L)   
* P, Y; y5 u, S, P) ?& ]  {
) y0 ]" E  `0 D& Z" q    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);   
8 W4 U+ Z/ u$ s5 R2 H3 j" g  } 9 b2 ^* Z) {: K3 j4 `9 O5 B& G
  else 7 z9 i/ M8 Z  R; f, E
  { 0 u, m' w$ H' q4 S
    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2);
# q; t, ~- ]) E; a( E0 E* r  } ! @! y2 p( b/ g
   
# P! t2 X* B1 Q  if(lcd_code & BIT_MAST_COM0_H)   : A: T5 C# X1 p. v. X, {
  { * {0 o5 T- }5 T4 b8 a) s
    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);   
; H# ]- P6 ^* T* y* f  }
- G9 F' _( I( T$ \, j+ Y  else
5 R+ P, O0 \0 {- e. n; Y1 k5 e  {
4 z) d6 R9 ]8 J( @$ l7 e    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1); , k# Q5 ]7 Q5 X. N& h
  } ; B) u  p) v* L- Y! X# m3 f4 P" b
   / s$ b/ S6 `5 w3 l& v  X
  if(lcd_code & BIT_MAST_COM1_L)
3 N$ }# n- ~. Y0 c0 `& ?: k  { 3 @# w! H0 I" O5 E' R: [" e
    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);   3 `, K* p* h: J! _  h! q
  } 9 G/ o! i* A0 ?2 u8 F' {- r
  else
& l3 ?( I8 J9 Z5 _  { 2 _1 t. J# z* j$ V
    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2);
4 H% v& t' t7 \/ A0 G  }
+ U. I* J$ m: D2 V3 v7 V+ b   
4 N% ], Y- F8 Q) h   if(lcd_code & BIT_MAST_COM1_H)   
! b! \$ f) ~4 V. e: z* e9 N, W, ~  { 4 v: {- o& K/ Q6 a  O+ e# E; g
    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);   
/ j8 j& d) d" B. c3 e( F& s  } % v5 \7 V6 w" X  a
  else
; P0 n2 `- I( Q3 }: X  {
1 F3 G) U7 Q( X4 i* T5 t& Y, @    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1);
& r: B5 `- W* F& W3 k% M: X  } ) X# N! Y7 I: |5 [
   ; ]* j! K1 U7 {
   if(lcd_code & BIT_MAST_COM2_L) $ O' O% P% l, n
  { & a0 J% ]; U# l5 n4 A$ V" _( b
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);   4 v  x; k4 d8 Y, W2 w/ [0 i' @
  }
) M+ K  X) w& G* I, x  else
- l- a; M! y: R" q& }6 B1 L/ z  { 2 ~6 s; W3 D( S: X# p1 J) T$ L
    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); 3 ^, O: j& q/ r% g5 W0 E+ g
  }   U: J* X& l. F
   
! {4 K* E, K# b8 m   if(lcd_code & BIT_MAST_COM2_H)   
, P+ |6 g6 g+ _5 K$ @3 [: W  {
. w: E9 T9 l7 D6 X' A. ^2 Z    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);   
8 X3 A9 w( D, J9 z+ C  }
1 Q2 f2 v. H: y( c) a  else
3 n! H$ L+ t$ B/ Y  {
  I# T: ]& P6 E  ]9 l0 D7 {    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1); ( o* Q4 ?2 \) G( M
  }
1 \, m. k4 [! _- b$ d) G6 U   
- q1 o( b& y( c* T) v. q   if(lcd_code & BIT_MAST_COM3_L) 2 [+ P6 F% b4 \) W" W. i5 P0 n1 F
  { ( I2 c* R' Y( ~) f& n- Y# [; m% T4 D
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);   6 ?  v: \# m! `  b% S* V5 q; {
  } # _, k, r# f2 P8 C2 j0 z" J
  else
* M/ p% I% r3 e* _' i  {
3 h! b' Y8 x# v! O& Z* E* {    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2);
$ ?) ?2 [* I/ B' a. Z* W  u  } / Z$ i9 m" T: n6 p* N
   
" V/ c% S; @+ E- f) c   if(lcd_code & BIT_MAST_COM3_H)   
! z# j0 d  T% c+ ?  { : s' h' g& p* S$ j
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);   ! v5 w) Y  N- t& @/ j! N2 M! e
  }
9 d/ O1 F- `7 m  }: ?) ~; y  else / n: _" U- N4 [1 D# s2 c
  {
. n, x8 I! Z) O( h& S    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1); , D" x# p* K+ K5 K( l8 ^! d4 f" o
  }   9 u; z4 ~6 U3 V: u5 {2 A
}
! I, f' {( F7 v& d/ A1 @( S1 V: [2 V! c' [1 |& O
void LCD_DispOffOnIndex(uint8index)
& |4 H. @. f6 S! J$ L! _  _{
3 t0 `( G7 z3 b8 S/ d% C1 i   LCD_DispCharOnIndex(LCD_CHAR_OFF,index);
, p1 d% d" @9 y: w2 P' I7 e} , d, q9 c, N7 ?: B& }, @

8 U6 C8 H! s* q1 v" B! w7 ^5 x9 h6 j& e6 l- P+ K
void LCD_DispOffOnAllIndex(void) & n& H6 g& R- x# `# e* \  i# P
{ " a) Z: ]( B' S5 O* X6 y* z
    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]
: h( S2 I# w! n" [$ A    {
6 f' ^3 D' q' D9 ^* h  w       LCD_DispCharOnIndex(LCD_CHAR_OFF,i);
& {4 _# h) m! q' B+ |    } * a* B( q, c" [
} & v; [+ s% T7 R# w/ p4 ]/ e) p
, N- B9 J1 e0 ~7 I
void LCD_DispUint16(uint16num, uint8 blank)
" y6 c- E' z8 W$ V) u' N+ U{
* z( |2 |4 {5 ^( m    uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0}; ! R9 z! {7 w5 K4 p1 Z/ {" a. f
    uint8 bcd_index;
0 i7 }. x8 T% s3 |- J4 Z    uint8 lcd_index; 1 R# f3 h& A7 n" H
   
: L; F1 ~$ y( d1 g7 Y% ^& K    uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT); " {" @8 O) n# A1 B9 u
   
6 T+ {* y7 z* T: k5 L" o2 a" }    u16_to_bcd_5(num,bcd);
1 q3 U! ~" Z6 h' Y. v( p. l    4 O* R/ P8 o  [
    bcd_index=index_max_count-1;
! Y' Z& P9 W* Z* Q9 u8 M( ~2 a1 O    ' p5 P% M  {. {6 k- U* m
    for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--) , d9 u- H3 A2 j# x: {' `8 ?& C
    { * M! t6 ?, Z9 Y( j; L1 P$ c
      lcd_index=index_max_count-1-bcd_index;   
; F* Y! l( G. q9 S/ k      LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index); ! |1 R" G8 o% o  M; t
    } 6 U2 v, a% S: y6 [# J' s3 y& ~! }2 ]
    : Z# w5 H1 x3 H1 W  z% i' I) z
     for(;bcd_index!=0xff;bcd_index--) . Q, v! z0 ]( S* g
    { # g5 y- i2 [  l: h+ }; J( }+ n
      lcd_index=index_max_count-1-bcd_index;   
* I; D; r; w% F% E: o      LCD_DispCharOnIndex(bcd[bcd_index],lcd_index); - g6 l$ y; y3 Q  H3 T
    }    / N1 j7 S& ~; ?# u. m
}
! e* y3 x$ W* v) Y/ Y( T: a' O8 M. d- P4 a" j! ]9 O! ?
#include "stm8l15x.h" ; Q  R+ c; z4 ^$ I5 Q* w
#include "uni_int.h"
5 @, `: b5 n3 ^3 x- }2 K+ Q#include "delay.h" 6 l3 z$ h6 p6 d0 `1 A* M
#include "periph_lcd.h" 3 E7 e. n' _" z- |2 x$ F/ L
6 U: ]0 t" o/ q9 E3 z9 m
int main()
8 T" w" e6 D( A; \' m{   : {$ ^! q8 \7 E! T  ]5 I
   LCD_Open(); ( m; c$ a7 B) }. z) D/ }
    ! H& q" z! t$ Z+ j0 _4 l8 \, ?* E  R
   uint16 num=100;
6 _* V* o, Q; {: C: u+ [2 O0 W    : C6 V/ E2 X1 O" y5 _
    while(1) + ?& @) X! h- }0 R; m$ V$ m
    {         
0 B7 l& G. S, Y0 l4 z5 {         num--; . w: G( I4 ]9 f+ }+ p
         LCD_DispUint16(num,LCD_CHAR_OFF);
- {$ c7 l& C( V4 G0 d, V8 G* O/ q         delay();                             : w4 ^9 o) |" v, z6 }
    } 5 X! ?4 ~; t% t
}
, N$ n, m8 ]& d  G, o[size=11.818181991577148px][size=11.818181991577148px]1 ?  f4 R* G' t( i3 M* m  t* N- `8 _9 k

stm8l15x_io.rar

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-10 08:00 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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