找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 50|回复: 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"
: q# ?0 j  ]& b" _, Y: }
" H) Q) O. h% t; \lcd_code_item_t LCD_CODE_TAB[]= ) `0 M7 n: B8 C
{ 7 D, U7 a& e  e2 b2 x
  [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,}, 5 {8 W0 h9 R* }  q% r* s+ \
  [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,},
1 h. C1 ?; }4 ]$ |  [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,}, + [2 s! l3 s1 m$ J9 B- c. Q; ?( E
  [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,}, 2 G1 o8 x, p, \1 h9 u3 K+ z
  [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,}, . |5 B5 F6 e' b
  [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,},
6 F0 w3 ^/ e# y0 H9 `  [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,}, ; J* D+ L% S0 _6 Q$ H7 r5 ]
  [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,}, + x7 z% G  Y5 P3 _2 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,},
$ |4 e4 R$ G0 {5 i; I  [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,}, / _: G6 U' u% s- h7 O
   ) h0 R+ P' n7 C. w- C, X# 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,},% C! q! a. A- y
}; $ a3 j  H0 S" y# ^7 Z& t

0 f, V. z* J/ \( x( w) j; jvoid LCD_Open(void)
) B5 C8 D, ^" P& J. [{ 5 |( R# f* b6 x8 T* [) C6 s6 f
   CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE); 2 B/ J5 j9 |0 S' X9 \' Q# S/ o
   CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);   
4 C; C" @9 W" z2 F. _0 x    LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);
+ Q- `+ |' k4 Z1 C! z  ~: c    LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); + S( a4 F. {# z) ^: [
   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03);
; [  C9 j1 k9 n% ^# k& P9 p. b& _* K
   LCD_ContrastConfig(LCD_Contrast_3V0);            * e! y* I8 M0 g9 _4 J6 h
   LCD_DeadTimeConfig(LCD_DeadTime_0);                   s0 y. D9 X8 E9 Q  Q% S
   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7); , y' A0 N# a% j+ b9 e* }! V
    LCD_Cmd(ENABLE); % s! T! H6 }+ Y' E0 T: W+ s- x
}
7 R" w/ {4 p5 b& O
- K" _. u7 V0 q, G" d/ ?void LCD_DispCharOnIndex(uint8ch, uint8 index) 0 @. `8 b7 E1 l
{ & @6 y, `# j& w' C6 e
  if(index>=LCD_INDEX_MAX_COUNT)
- A* y$ O! f$ Q" K# e  d1 Z  { 5 O) H$ J1 s4 g8 M& J
    return ;
2 _: l9 g/ H5 R  B3 _% j1 T  } : {! K5 {7 L4 V7 \+ c
      
( v: Z" Q2 V' K: a' K  uint8lcd_code=LCD_CODE_TAB[ch].Byte; # T6 i( O& I8 I
   
/ U) |2 {; o  H4 k  if(lcd_code & BIT_MAST_COM0_L)    0 Z$ W! v; ]) {2 E
  { 0 w% ?) |; f1 d- ]& B$ Z! Z$ ?
    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);   
# A# V2 _3 o7 v: [  }
' T/ R7 W" G# T  ^' W3 N) |7 i  else
* Z* U! I" |2 ], x( o  { 0 a6 G. f! Z, L  v9 P( v9 c* M' ?
    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2);
2 z* U* e: Y. b$ h6 ~9 R  } ) T8 q: T6 @& R; a; U1 P+ S
   
( f0 G# q5 C- r- R" q+ M: c  if(lcd_code & BIT_MAST_COM0_H)   4 U8 ?7 W. P7 E3 A3 ]0 {
  {
7 \! v1 h: C* s4 d    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);   
8 a; p5 W! l* L) E" N7 R  } $ \$ w3 s; a! f2 v* f+ v) l7 N! o
  else 6 c8 [+ C9 S$ |1 h1 @: Y5 H' L
  { 4 M7 X/ z+ e4 b  M
    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1);
3 P1 q/ `. k  m  }
" G. |: L, n. V9 u7 e. \   
4 b9 L' T/ W! p8 j9 Y# h2 d: X1 o  if(lcd_code & BIT_MAST_COM1_L)
' o/ h  ]8 Y. W% t( y. j  { 8 b8 x$ l8 r( j( T& ?/ E& M! Z
    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);   
3 G3 V5 g: M& f8 R  } 8 l$ @5 H4 q5 C: v3 U) b, |
  else
& i  O; ^+ |" c4 g7 r5 m. g% L) I  T  {
  M' C: X$ b4 t0 d    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2); 1 g. X$ s, `0 H3 o$ L# r7 C# |
  } ! s6 V0 h5 K' m! ?: [
   / Y$ K: t- P& y0 D3 y4 Q  e6 K6 y
   if(lcd_code & BIT_MAST_COM1_H)   
$ |# q- H1 M3 g# g7 n+ W6 ^# _4 T  {
  i" K: C0 P6 N. m    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);   
/ g7 H) k$ I; w" g5 ]) S% g9 ]  \8 F  }
6 z# Q" I( L: b2 i4 _3 i9 V) ~, w  else " x2 C$ D6 D* q  S+ d* c& d
  {
; {. M% X( s( r9 m    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1); % }7 H7 o8 O2 V8 K2 F
  } ! L! Q5 Y5 s# V; I7 x" `
   ; B$ p3 {6 y- K$ |2 x7 J& L( C
   if(lcd_code & BIT_MAST_COM2_L)
: A7 r* A2 Q4 F0 P; d  {
; u$ g, a/ {# X( Z6 e5 y2 O    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);   ! W* U1 G$ ^* u
  } ; V' s, f$ i# j8 l! C* D: J
  else
; @. V$ h& k8 }5 o% s) N  {
3 l) `: A% t' H+ s+ G/ v7 `( ~    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2);
+ \- K* g5 |  |" x! h$ V  }
$ R6 h8 r' M, R   
$ |. X# r# @" A' B# w/ S2 s   if(lcd_code & BIT_MAST_COM2_H)   
1 S/ X7 g  p$ f( O/ G( @  { ; E' L1 o( n/ Z. Z. t; i$ G
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);   $ o8 @  i5 ^: H; P. l  `! V
  }
1 a. w0 `1 i6 b: ~  else
& |' Y3 N" E, `# O  { 9 c* @" K4 [# C+ @8 v, X
    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1); - Q& q2 t9 \1 {2 p( n9 X8 Y- o* {
  } , T1 i7 J9 {4 ~" n# w. j5 r
   ' w' Q% T0 \6 F# u4 u  v' P! ]0 b
   if(lcd_code & BIT_MAST_COM3_L) 0 C, ]! e6 @$ F# m
  { 9 Q# O' l  Q0 F! W$ h
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);   7 K; w: D, D& n5 ^6 q+ x4 a
  } $ O3 i. H- O) p) x0 O
  else * @- y3 M) B  t! d  C0 f( D
  {
1 t, r$ N6 i: m$ _    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2); 5 S4 q# k# t7 O% W: E, t* I
  }
( B* \' g6 r. e& i- p5 Z   8 {6 V1 e- K3 p( s6 t5 Z) M
   if(lcd_code & BIT_MAST_COM3_H)   3 T9 v1 ?& b8 J+ ]; `5 D
  {
0 j$ G7 Q- {* R3 S. p    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);   % Y$ k$ x; G/ J' H+ c  f) ~2 _* C
  }
2 L) F: ?9 p2 Y3 y& _& B, c; Z1 }  else : ^& E3 z8 e2 a* }
  { ' [3 W& z5 y/ ^' `4 i
    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);
9 M7 H9 v: n& S0 t  }   2 q7 E0 k4 K: T* G$ T: x
}
; U9 |& J  w3 ]8 b# O0 {+ o- e5 _& D% e1 o' X( ?+ g
void LCD_DispOffOnIndex(uint8index)
1 E9 e" R' V0 r5 F( s% s3 Q{ ; s/ ?' @& P8 a4 u& d1 X9 s% K
   LCD_DispCharOnIndex(LCD_CHAR_OFF,index); . f" G& c! @) Z3 o5 L: |: l) I" v  X
}   a' p3 r; p  e5 k4 i! _7 Y
5 F# D: D  \$ J9 K

+ i6 u1 P2 H* D# b3 S2 J9 _void LCD_DispOffOnAllIndex(void) ; A3 n( s7 z( l' [
{ - \( X5 x7 e6 H% q# N7 A: g  F8 _/ ~9 O5 c
    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]! \) U! F. u( i, C
    {
* a3 K, u0 j; d       LCD_DispCharOnIndex(LCD_CHAR_OFF,i);
4 k( C: z2 O0 X+ L5 m8 ]. \( `    }   p: C1 J+ `1 T0 M
}
2 C# y; ^6 q+ v% y# p* o/ w! ?  M' h0 p. S0 P
void LCD_DispUint16(uint16num, uint8 blank) % ]: q  Z" d* K' b
{
0 L  M! K/ m3 m4 B% e    uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0}; ( ]. b4 `+ z* c) u4 u( ]5 S$ _
    uint8 bcd_index;
0 Q: H0 d7 N+ ?' P    uint8 lcd_index; ' w: k8 N$ W' [$ }( K) J
    , D" ~  I  V" y! l  o
    uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT); ! F; V/ ~; c$ @0 {" ?/ X/ U
   
- K. _0 A& u9 @/ g: H4 i4 g    u16_to_bcd_5(num,bcd); 4 b7 Z4 A/ \% b4 Y) P1 E9 p
    5 u) j- w  K. U$ M
    bcd_index=index_max_count-1; " B+ w  K- T, w, ^& h8 z6 l
   
6 a" ~2 S3 a  A; ^    for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--) 2 b7 r8 r8 E2 w. ^  i
    {
7 S6 M" u2 Y1 X; x      lcd_index=index_max_count-1-bcd_index;   ' y% o! M) e- `2 }8 l/ A7 W2 ]# v) K+ _
      LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index); 3 o7 `' J; a- h8 d
    } % H: b: U% r2 t/ m% h. s- V7 W
    + `, m. Z# J' `1 v& R" x5 _. p
     for(;bcd_index!=0xff;bcd_index--)
( M' [1 Z, o% r/ z" u+ S    {
0 t! r" N( n3 Y7 o' t      lcd_index=index_max_count-1-bcd_index;   
" y% C; y3 X: v; |4 @; B      LCD_DispCharOnIndex(bcd[bcd_index],lcd_index);
5 }* \' H0 W4 a5 A8 {    }    $ @0 D7 i; U* G0 {4 L
}
8 K+ v: X+ d. q+ B6 i0 p
& m) i  \4 \0 d) @# I4 d#include "stm8l15x.h" : I- [/ I1 `1 y5 U
#include "uni_int.h" * \7 L) L4 U, \
#include "delay.h" 3 e+ l: q' H# h1 `
#include "periph_lcd.h" 8 p$ m. U3 h3 r* P4 l$ i, X8 R& J

/ B9 D4 M8 x6 J" [/ W  i( Rint main()
. R( o1 N0 i5 c, L4 L{   % ^5 @9 \+ t/ S9 \! s; \% M
   LCD_Open(); : ?6 D0 h5 `: q
   
' y) Q0 M! `  |9 S   uint16 num=100;
; `" @; K* Q0 \) h- L: F    / Z" M  n! e3 R6 H" Z; O! d
    while(1)
: a! G- B1 G9 I" @$ y# }    {          * B/ |. e1 J- H
         num--;
6 y8 M) p- M! j         LCD_DispUint16(num,LCD_CHAR_OFF);
7 E: t8 r+ e( U8 F, d         delay();                             
& O$ Z" O, `1 E" n    }
; d/ [# h9 k! T! t}5 z" o4 j. b/ t
[size=11.818181991577148px][size=11.818181991577148px]: b* h& [" J2 F# j# [/ f, _7 ]# G

stm8l15x_io.rar

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

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

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-2-19 06:14 , Processed in 0.055504 second(s), 36 queries , Gzip On.

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

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

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