找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 53|回复: 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"
# @. m! K* F: C
1 k: ?0 I1 Z' T# ?( M0 j% {lcd_code_item_t LCD_CODE_TAB[]= 1 Y. f: Z: f9 w) \
{
& b$ `* z) t% @* |  [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,},
. w! B0 Z  g3 A" t  [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,}, : {! w# e  Z2 Y+ Z
  [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,}, 0 L& A: g$ l; P6 E1 W$ G& 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,},
! n7 Z& A! n: F  Y7 ]3 r  p6 h  [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,}, - [3 R) L# D" ^) |
  [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 h+ W& d! G5 J. g  [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,},
& w6 p, e. S. C  Z$ ^  [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,}, 5 N% I3 v0 m8 q* Y4 U( g2 _6 I
  [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 Y6 h5 w6 W; u7 e
  [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,},
: W* O9 @$ L& t# f. s! K   
% L4 \4 V6 s' h; O+ d  [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 b4 u" C! ?" U
}; 8 N! H  J$ Y: H5 U
; q# ?" W! j, \. O8 U
void LCD_Open(void)
, t( D: n& A1 i$ d# }( Z) V{
9 `4 a, v7 y7 r   CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE); : l: V( ?  L4 [( i& ^2 @
   CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);    % c9 R& G. ]/ K+ D5 }1 ]$ a; u
    LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);  Q# H5 N$ w+ [- N, E& o
    LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); ( P5 F1 C0 G! z2 N
   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); " C+ @1 M, C  ?6 B# m. K- |2 V* q

/ C$ S) t  g$ Y- ?& B& r   LCD_ContrastConfig(LCD_Contrast_3V0);            
. o' |' d# D! R6 ]7 x) J" B   LCD_DeadTimeConfig(LCD_DeadTime_0);                 ' s' q- M/ Z3 E
   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);
/ @& {) I. k) D; A; Z& D    LCD_Cmd(ENABLE);
& h" n+ ~. K! b8 g}
, n% `- j; D% H5 a& J1 N  Q5 H: P% m0 g# X
void LCD_DispCharOnIndex(uint8ch, uint8 index)
5 r6 T4 z- ~" I2 c{ ( M+ x5 O/ K# a9 K. t0 B4 g/ h
  if(index>=LCD_INDEX_MAX_COUNT) / O4 ]8 T  O( Z: Q2 B2 b* o
  { 4 [9 A- u8 M1 \! U
    return ;
7 h# P6 U9 u) b. n/ c6 ?  } : b9 t' w9 o2 R8 r; z
      / k* l% e% p! H! \, m2 l
  uint8lcd_code=LCD_CODE_TAB[ch].Byte;   O, ^& h0 a6 _: k- f' @0 q  j" r
   9 |9 Y" S9 o7 G& O* z9 M
  if(lcd_code & BIT_MAST_COM0_L)    9 n8 N* S( \+ U
  { 0 I( g( _/ s$ D3 E' [  }7 W! y  l; Y
    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);   1 D0 |& L2 \8 ^
  }
* N/ J1 t$ v+ ?' z, {: |6 K  else
+ x/ p  u+ L0 j  { ' F; O7 J" q' T' n
    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2); % ~- i0 d( W/ G! J9 f
  } ' |, z/ J0 y9 e
   
6 q7 I9 s. s4 _( ]( R) s1 k  if(lcd_code & BIT_MAST_COM0_H)   $ e, M; A8 T% F2 `6 @- H
  { 4 v: b) g7 K( v  y1 G/ r
    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);   / P) x7 P* J& ~  x+ P$ b
  }
0 ~# G3 m: Q- k  else
9 |* f+ Q& u$ d- }# M+ i2 o3 Q2 g  {
1 T0 u* s7 l9 N+ i8 r5 |- U* Y% p    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1); , Y8 M/ ?! x: S& l! V, b8 E
  }
$ Q! n$ y$ j3 ]0 I: S   " c4 \/ C; \/ y5 w; b$ a
  if(lcd_code & BIT_MAST_COM1_L) / b. \# T+ W, J
  { - E" E, T$ e/ ^+ m
    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);   
$ P9 l4 ~' t8 a  }
) F+ M$ y5 B# S' |6 A2 B  else
+ i4 ^6 y& W4 `  {
  k- D: N, R% K+ J) c  Y/ u/ q    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2); / w+ j. I5 k5 X
  } ; Z- V4 k: Z# A& o- @" }
   
8 T) R) w- R0 X! d" r5 V# U% Q   if(lcd_code & BIT_MAST_COM1_H)   
; @" i: A. h2 m0 J  {
  U5 J- `0 p0 m4 Z+ X    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);   
% }8 j( L, x' a# t. M9 C  } ; Q/ H" ]0 Z! _. }
  else
& ?7 e% n( W. u  { ' H7 \; A7 L& ^' v
    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1);
/ ^, V1 v3 @/ _  } # ^' j' J5 }) X/ I
   + l% p" v+ X6 U
   if(lcd_code & BIT_MAST_COM2_L)
7 n, W9 O8 ~3 `2 Q5 f% ~  {
* Z4 E& k& x+ W" D# Y* `    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);   $ G8 Q3 [$ q7 r+ {% @; {  s' O; ^
  }
6 f) E$ u2 J  M$ i1 c* B  else 9 J3 q) n7 K  V
  {
6 L' z& m; O* o, `2 m% S7 Y1 e$ G    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2);
- b; k/ D9 n: s+ @" E& Q  } 4 N) @$ B8 V, k  I  i& N* A& L5 g' V$ G
   8 U% M: ~: m* Y; R  T8 _
   if(lcd_code & BIT_MAST_COM2_H)   
) m9 J0 m! J# p. R' @' e" k# _( A  {
' _5 O- h# R2 M0 v9 l9 q; b. v! k1 q# d    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);   6 W. A/ G" ^6 C' Y2 \( C. f  ~
  }
) e$ [, P  N3 X  s' g! J3 N  else 9 Z- n" b- Q) J4 n. g
  {
& \4 N6 W) \- M    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1);
* o/ U2 B/ B) K) m1 q8 y  } 2 a' Q( ~; I' _2 t% M3 K
   * Z9 N" O) R, D  d. g
   if(lcd_code & BIT_MAST_COM3_L) ) L3 {2 C+ W1 z9 \/ ?; b% e; p0 t
  { 4 h4 L7 |. q! }
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);   8 x% {! p0 i9 z
  } ; h' A! Q/ t2 [! l$ {# C
  else
8 L% A+ L9 J8 w9 x5 u; r6 T. b  { ) d' K9 k6 R# y- E* @% N  Q
    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2); 1 i& G9 y5 d7 p; Y! d
  }
; b1 H) m0 J, v( a   - U0 v# ^( t! J. e' C: A
   if(lcd_code & BIT_MAST_COM3_H)   
+ d$ G( i& I5 r: a% Q8 M1 ^, {  { & e9 }" D6 u1 _. r* v  A+ U! W/ T
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);   % L- J! O( M( c
  } 0 n6 V4 G( W; S. S  T
  else % L, x7 ]! O5 ~7 R
  {   i% P7 Z, \- t8 Q
    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);   [" t$ v5 z! R1 @
  }   
8 n# r6 H- @- H5 G}
! W9 j% r4 a# m6 P% d" V. z# ]$ \% {4 j0 {
void LCD_DispOffOnIndex(uint8index) 7 P" r" g/ A0 S% x
{ * A" _( n: C8 m# V8 U; X
   LCD_DispCharOnIndex(LCD_CHAR_OFF,index);
8 X3 Q+ L8 v* c6 R}
) x% R, d' }8 ]  a# m( ^0 M) x& d( j. m+ a
. P$ j: \( j8 E- ?. @2 F1 L
void LCD_DispOffOnAllIndex(void)
7 l6 j( `0 f; w# T{
5 V$ w5 u: O3 N6 F" l6 J8 _8 ?    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]
+ x4 o% I7 n$ I5 C' T4 E0 k    {
  m3 s% A9 q- u       LCD_DispCharOnIndex(LCD_CHAR_OFF,i); / t/ k' Y$ Q3 q9 Q" q
    } + s; c: A1 h1 B
}
( k6 W3 M0 W. w/ O. P1 @8 N" d
* {- B7 _9 F% l8 L, k( z% Avoid LCD_DispUint16(uint16num, uint8 blank) , X  b. b& g9 m" L- K6 M/ d
{
1 L! z! f7 P5 l" S4 y2 ^    uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0};
  e! G) W, m1 M0 x$ F5 P    uint8 bcd_index;
2 a* S# r" k9 {2 E( t2 R; `    uint8 lcd_index;
' p4 E$ V$ p, R3 W    2 z7 x* Z" E- l) u) m. R: w: r
    uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT);
* K$ y9 _& W3 \8 v2 Z4 J) m! [- u  T    , H! ~) u9 ~. a: y
    u16_to_bcd_5(num,bcd); 9 v5 j+ j1 m9 z
   
3 k* _3 m. d+ a8 E& [0 t4 O8 J5 {4 x    bcd_index=index_max_count-1; . a5 Z- u/ k$ n! l) j3 T
   
9 T+ z* J, c- O: L& W    for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--) + S' f6 ]; A4 n- }6 d. x; y
    {
. }, D) F% _( e" C      lcd_index=index_max_count-1-bcd_index;   
- w/ {( c$ {* E0 R, D      LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index); , z7 z3 D  M' w; ?
    }
' u1 C& N7 p) [, N( ]. a   
: k/ h! i! f7 L1 \6 a8 Y; v     for(;bcd_index!=0xff;bcd_index--)
$ M1 Q% z% I* i1 z5 G    {
' e7 H7 V9 P$ h; E% }      lcd_index=index_max_count-1-bcd_index;   
: h% D2 {# P9 a$ O2 p0 Y      LCD_DispCharOnIndex(bcd[bcd_index],lcd_index); 0 w$ M. c3 ?) t# d1 H
    }   
' d1 ?' [0 T! T5 S% o7 c} 5 ]9 N+ Y- k6 R8 A4 n& T
8 g; r9 U* W2 {4 e- Y/ g
#include "stm8l15x.h" - H( o" ?4 U0 b* D1 T& B% l
#include "uni_int.h" 7 _; s5 E+ z! s9 ^' i& Y" C, J
#include "delay.h"
  i  v2 U- U3 b/ H5 [#include "periph_lcd.h" ! V+ |6 F  ]6 H, O* ^& V4 t
) F' @) u4 A1 ^/ E
int main()
3 z! v% {" O0 C! m. _% Z{   ( W3 l0 I: x5 B, T1 X% G8 `- w8 @
   LCD_Open();
5 p/ B: W* i2 K* J, E+ @    7 h8 X* `2 m) ^8 C. H9 Y
   uint16 num=100; ' R+ N% S3 E" f" O& B2 W! B
   
3 }$ ~2 w; z5 O7 ]5 N8 G! z    while(1)
  r  p  ^0 c( y. F( n    {         
8 p5 o4 C0 ?) c; Y* {         num--;
( d: ?+ x' Z# f# w* c         LCD_DispUint16(num,LCD_CHAR_OFF);
' u9 v8 g/ J. M1 m         delay();                             / l/ J* m5 V& A4 I
    } $ H' e# k% }$ {9 r( W
}+ `1 X" J% G: |. B" ^: C
[size=11.818181991577148px][size=11.818181991577148px]
4 B: i/ S: j& i+ }' {7 x$ g, k/ {/ v& J

stm8l15x_io.rar

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

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

本版积分规则

关闭

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

巢课

技术风云榜

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

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

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

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

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