找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 54|回复: 0
打印 上一主题 下一主题

使用stm8L152来点亮IO EEP LCD

[复制链接]

193

主题

569

帖子

1397

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

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

EDA365欢迎您!

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

x
#include "periph_lcd.h" ; c4 ?  I- h9 g- F

: c0 R- K+ ~! s* g8 ~6 O" Glcd_code_item_t LCD_CODE_TAB[]= $ b+ @, Z1 O0 S* s& Z- T
{
( K' @  g, s3 h* @" |7 ]  [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,}, + S9 Z9 }* Z1 q7 [9 i
  [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,}, 8 q3 `) f/ K& E+ J) ^* M; T
  [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,},
  a  d: _6 m# |: A$ a" |+ n  [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,}, ) Q6 e3 U/ z  r& ~/ _1 F/ 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,}, " X5 x* F6 {* b& k  w
  [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,}, 9 o) j# ?" N, m. W
  [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,}, ; B% s. g6 ]" S8 C, R% [* a. W
  [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,},
9 e+ C7 E8 U2 |% e/ f  [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,},
4 O& p7 e( j6 I4 g  [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,},
& p2 D7 S$ V5 u   : R! |0 |# R% y# g' |( o* f
  [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,},
8 S, @, U8 V4 t* V8 S  J};
3 K' w. z4 ^) N. S/ p' ^) J! O3 |+ e7 m3 ^9 ?
void LCD_Open(void) * g9 U& ]+ z% z! ^  A& s9 p
{
* }# P' S( }) R1 T# X4 E6 m! G, f' a   CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE);
5 z0 C2 ~' Y8 ]) n" l   CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);   
4 K7 g2 \0 g3 P1 J    LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);
: ^5 q. x- o" M3 K    LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); 5 O/ G7 ?3 a9 P# D/ s
   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); / |6 ~% R, [0 K( J3 v( H
+ W, j; \  x+ c" C
   LCD_ContrastConfig(LCD_Contrast_3V0);            
: F2 O) U' |: E$ D+ u, h4 Z$ U   LCD_DeadTimeConfig(LCD_DeadTime_0);                 / M' ?$ c% q& n& ^& h: A/ D# a
   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);
, ~5 s7 X9 W/ Q# t+ P& [    LCD_Cmd(ENABLE); " s8 A( @* ], ?* B% K! @
}
" O/ v5 I4 D7 g/ O& n' y- @5 ?' J* I+ E6 k) V/ k4 u* [9 Q
void LCD_DispCharOnIndex(uint8ch, uint8 index) 6 r( R' C3 i( Z' i) a
{ 4 f3 i: g2 J7 w$ Q
  if(index>=LCD_INDEX_MAX_COUNT) 6 e0 F  t: @8 N4 @9 z; c7 G) }
  {
# k% b% s: a8 W% N! J5 d    return ; / U* S, r. l/ j8 _4 z2 }
  } 8 X1 J! ^( U% ?! [# u  _
      + s* K5 c* f' j- [
  uint8lcd_code=LCD_CODE_TAB[ch].Byte;
. L1 g0 ]0 v0 k! Z) b! K   3 E# Y: J  m) _  ?
  if(lcd_code & BIT_MAST_COM0_L)   
& P" a! u9 s7 R0 P& v% ]6 p  { $ z* @9 |, i: u  F
    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);   
( a  j/ R* X) F& P9 {$ E  }
) \, ]" W: |4 L4 b0 W, Y  else
' z9 O/ B$ T& a) N# K  { & o" P* }) X# ]) c4 f
    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2); # k1 ?4 y3 b$ }6 ]* T
  }
- f4 I; |3 X9 E   # N4 R' G; y- k6 Z; M" N- v
  if(lcd_code & BIT_MAST_COM0_H)   % W# R8 K2 n, F0 I% z
  {
) l# b% h& f; ^  q& r8 u    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);   
9 f, ~1 n" Q' G  H6 ?) K% _  } 8 L. z2 k9 s3 N' A5 R1 x- S9 v9 \
  else
* b7 ?# u+ T! j, V! s  {
/ A6 M. Z; l1 ^    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1);
0 ^" r1 z) r* _8 o1 f  } ; m9 y/ K& L5 R% \
   
% f6 i7 ?# Z$ ?1 M7 e0 J: i4 C" p  if(lcd_code & BIT_MAST_COM1_L)
( I9 k' ]1 Z4 j5 K1 _  { 8 d2 t5 d1 f0 D2 Q
    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);   
7 m( b- \0 ?: l  }
; D( m& \' x" u  else
) i( N) n& q: J4 o' T! G  {
! t7 A; R# B; s  R, P2 ?: t    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2);
/ I$ T0 @' W6 L) d0 c2 R( Y  } - l0 M! T8 y! ~- s1 Z
   
5 d9 ^( T& g9 p5 k* t% ]" E   if(lcd_code & BIT_MAST_COM1_H)   
& o/ |" a6 j! |1 O7 u  { ' g8 Z8 L7 G9 v
    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);   
4 ~, z1 L9 u! V/ {! j4 H  }
& b  ]9 }' B) y5 L1 q  else . t2 u( N& i% G, W+ p- b
  {
9 a, U8 P% k9 s( Y: I" n) L    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1);
- x) e6 n1 \4 N+ Z; |8 m% f3 b  }
  u4 S* c; a4 q5 V$ l: h   8 E2 ]% S. o: R& l2 O, O3 f8 K3 @
   if(lcd_code & BIT_MAST_COM2_L)
' n, `8 O# p  C9 ]# i  { + L9 v# R; ?- b8 ~
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);   ! _. E- [- a  s# M0 S: f
  }
0 ^& d! l2 {' I0 r, u0 N4 k  else + L4 ^7 o  n+ f
  {
8 d7 C" f" L# b2 t    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); ! L4 b$ @/ v6 z* m& A+ s( v& Z) H0 V. _
  }
1 m! \* u: E& Q5 i" S) M- G     W2 i  t0 r% @- U
   if(lcd_code & BIT_MAST_COM2_H)   
1 C5 O: I- V- ?& {5 M( j5 n: Q  {
' X3 z% \& _" {9 |. ~$ f8 H    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);   
; _/ s  i% |6 \( v  }
" B+ g+ }7 i5 r8 T8 ]2 Z. w  else
' i, O- ?& o" \  { - H0 \, W, T9 n
    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1);
( [) H* X5 Q# X, q  } # @7 A8 L2 M  ~, s
   : W5 m& r! c0 _9 i, M. m3 d
   if(lcd_code & BIT_MAST_COM3_L) % i5 C3 t* e& M2 ]1 l$ q
  { , [' D' l0 A) T' [6 N
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);   6 f' x  x- A( `7 j
  }
7 V6 T8 N* a. N+ L. w  else
, l% B  e) k" l  {
0 K1 @: }9 e# I    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2); & ^2 E2 h# u, F4 m8 E  y
  }
4 r8 _! ~* `+ ], x6 |" G9 G   6 c' l. J$ q- U
   if(lcd_code & BIT_MAST_COM3_H)   
3 I# X( t1 `3 G( g* }3 r1 N% ?0 g: l  {
% r1 X4 |& ^2 w* U9 U    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);   ) I, M: T) A' v" f; e; m8 Y: F- |
  }
0 U# w+ F6 ^) ]& I, c  \  F8 T; y  else
* }! P: V: \- z) {5 W7 S% b7 d" b  {
$ Y4 S3 T  u  e. A) T    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);
" s, |6 m9 k- {" ?! w9 p3 X, t: `! z  }   
3 O' D; @% W( }* _+ E" i} " u  S$ x* K; B) |3 ?6 W
8 p$ a' ]6 c4 D) h" D7 R9 x# M
void LCD_DispOffOnIndex(uint8index) 9 T2 l# e4 C9 x) @6 Z8 \
{ & \0 j$ R/ p- t8 |8 J/ c- n( n2 F" L
   LCD_DispCharOnIndex(LCD_CHAR_OFF,index);
# G0 G4 L; V4 B0 x}   s0 L# h9 d; J% U$ t

8 q6 ^$ f# u: I! X
! f! h8 T) m* A, Evoid LCD_DispOffOnAllIndex(void) % U9 |/ ^6 ^4 k' p0 P
{   m9 Z. R& |0 g* f1 f
    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]
& {/ D) E4 {  g9 \    {
, Q, P/ \$ ~! [/ c" U4 i1 P& X5 _       LCD_DispCharOnIndex(LCD_CHAR_OFF,i);
  o: `5 U# k0 U$ n3 u, u" r+ ?    }
5 o! H, Y( W7 R& C} / S' V  ]5 g* G7 B4 h9 _1 @
! s7 V/ E5 L( W2 ?2 j
void LCD_DispUint16(uint16num, uint8 blank)
$ o# h3 Q7 |8 Y. Y$ z{
% B6 `( E$ I9 {    uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0};   h  A% N2 q% _2 K4 U; j/ E
    uint8 bcd_index;
0 M) Q( u+ J1 n    uint8 lcd_index; ! ]( _! E0 F/ _6 F' U* A
   
  z8 O" B& m4 j% p) w5 F    uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT); ( A, r" N: Y0 y& m4 ^
    , t' U1 p: e, e8 a' P; D
    u16_to_bcd_5(num,bcd); / ~( E$ E) _9 l; N8 ^
    3 }& H; m! T0 A2 O1 s0 M+ S6 l: ]4 B
    bcd_index=index_max_count-1;
3 G3 ^4 O; T& {4 p9 K    ! f2 n: M3 S$ ~7 e: t4 R2 K
    for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--) * c. k5 R' L% o" p5 \- N- Q
    {
$ z; O/ u* G9 L; o, p1 Y; s      lcd_index=index_max_count-1-bcd_index;   
. f8 ~5 ^; P) u* W/ b, P      LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index);
7 F5 f/ d0 v1 `; O' m    }
+ S( a. n9 \# F3 t# M5 q& s5 W   
8 X8 C- N8 w* C/ n) c+ N     for(;bcd_index!=0xff;bcd_index--)
7 ?2 A; ?- E( p    {
5 Y, x2 V1 N! t$ F6 m3 l: @8 @      lcd_index=index_max_count-1-bcd_index;   , |3 u" k% p. b9 _; }# @
      LCD_DispCharOnIndex(bcd[bcd_index],lcd_index); 2 X9 R+ y6 T! C6 u4 o
    }   
2 q) r1 N* k! E, l: c; f4 e}
1 b6 S! Y) m! n" l2 I* T3 f, N! V4 R6 W
#include "stm8l15x.h"
! k4 l3 _/ K  r#include "uni_int.h" * W* I" x- L$ ^8 p& A1 x2 N
#include "delay.h"
0 H8 G% V# k$ B#include "periph_lcd.h"
5 l9 y( Y9 x' Q) r; d  U+ l$ d+ K$ g: i' J5 b  H; \$ W
int main()
  }, ?. o1 g- ^  \$ V2 [% M{   
) n: N* m$ M; A2 ?7 O- o8 B   LCD_Open(); / f. W+ c$ G/ H
    3 g  |; X. o' i, G5 `' z
   uint16 num=100;
, M. h) `/ i( B8 R   
' h6 d, n4 q3 c  m; V. j' |/ {    while(1) - i+ l" N7 l1 G1 G$ l" O: [
    {         
1 I4 U6 v: w# A. \# ~. J& D         num--;
, X9 w6 Z' v& U, b         LCD_DispUint16(num,LCD_CHAR_OFF); ( Q9 z3 }8 y$ \) |; w% E  I
         delay();                             
  q( l- W& f) A9 s, ~7 o    }
3 I4 c1 S, \  m" Q5 R% x" U6 @}
! [" E/ H) u! y" I/ k. c[size=11.818181991577148px][size=11.818181991577148px]
) C$ J- l/ i: Z3 ]

stm8l15x_io.rar

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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-2-19 07:05 , Processed in 0.055698 second(s), 36 queries , Gzip On.

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

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

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