找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 46|回复: 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" 8 E7 B' x+ }; {' g4 _% G

. c3 b- a6 G/ |lcd_code_item_t LCD_CODE_TAB[]=   k3 o* l3 j6 q6 G. I
{
3 R  c7 Z1 h* D8 W  [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,}, * c. F  \9 D/ n" K
  [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,}, : ~9 F) D) x# E
  [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,},
: J- u$ I5 W6 D; m3 X! @0 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,},
! L& h  I6 @2 n- J; ]  [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,},
) @2 ], W0 O( {8 A* Y: x/ 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,}, " }$ R# f8 o- T: u7 _
  [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,}, ' S, n6 [1 g- E0 Q7 X9 g* W% z$ s0 j
  [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,},
6 Y) T. J9 J3 {3 ?  [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,},
- K9 Q$ ]* Z6 [: f0 j  [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,}, . C: A: Q+ D5 n. ^6 q, E
   ! Z( G) O8 j/ u5 C# A1 L( h$ 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,}," O7 T3 v* `; m! f# U; C3 ?8 `3 m; d: n
}; % _& M' |+ a+ p* k+ Q" {

, p* v/ ^: Z7 b: \; Bvoid LCD_Open(void)
1 k$ o' g1 K1 O. @) H{
% q4 O& P2 ~- w7 `. L' c' H   CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE);
* k' m% K7 Z3 z( V  i8 O, i   CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);    6 O" S3 I3 Z9 [2 `0 ?. g
    LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);$ e7 l' L+ F$ }% @
    LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff);
8 {! F* @5 J. A; @. h$ [   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); / Z: E, S6 l: x. `; B' G
: f% j7 I  @: A5 F, Q1 M# T2 M
   LCD_ContrastConfig(LCD_Contrast_3V0);            
8 B9 V3 k& L9 {   LCD_DeadTimeConfig(LCD_DeadTime_0);                 
7 q( E. W/ N/ G6 \   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7); $ w( l2 O# b" G3 V3 q. R( p: i
    LCD_Cmd(ENABLE);
3 s( y% i: ^0 b7 y: O* ~! }}
3 b8 v0 T9 Z0 J) t$ ^. Y; v# E1 I0 K5 b. x
void LCD_DispCharOnIndex(uint8ch, uint8 index)
6 h0 [0 m7 q' s{
/ x8 x( w9 {! |. T  if(index>=LCD_INDEX_MAX_COUNT)
& Q, M% s# S5 E3 k$ Y  { 6 F% M" x  }0 x- }' ?, C
    return ; ! k' m, Z  `; o
  }
) M( l# f: n7 j" m      
' R7 Z/ o) D2 t1 B  uint8lcd_code=LCD_CODE_TAB[ch].Byte;
) W8 g6 W/ f# c7 f* ~) w   
) o$ F' _; r/ x  if(lcd_code & BIT_MAST_COM0_L)    " o) S' m1 [7 E% e0 U
  {
# V6 F5 d3 X2 x. s    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);   
, f! w' z, }% ^  }
6 {4 K5 L* A/ C, ^. h% i3 @  else
& @4 l: |7 R6 T; |; q  {
7 f! V! _0 f: ^    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2); ( G$ [: ^9 W' ]* a
  }
8 O9 i9 q/ u6 q% }; B4 j3 h   $ c/ |' P6 |# h5 N
  if(lcd_code & BIT_MAST_COM0_H)   
! l, q+ Z# ?% x# t8 y- }8 w& O8 w  { / f% k1 i- z- }8 R
    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);   
  E: p1 Q( f4 V4 |6 e: A, Y  l  }
$ J  O8 o/ i# V3 q1 ^  else
$ F# F0 }# H" U# `: N2 @* a  { ) a$ i- ^6 T! \% l. n2 }0 W" q
    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1); 8 m) C+ e" q& _& U
  }
: N+ W9 E4 ~& P# P( @+ U: C$ }   * b& {; r5 t+ Q3 n% j8 g
  if(lcd_code & BIT_MAST_COM1_L) + _& w* i+ p; O, S
  {
1 }* Q7 ]' G  h    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);   
* p0 s, T. K9 d( y8 w  } : r  e) ]1 v. r2 b6 L1 R1 x
  else
$ M+ ?( g2 ^8 B7 K, O; i9 m  {
8 N9 N5 D6 b4 U. g# `! ?# v% y6 T    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2);
2 L  j. `! b9 Z6 l: K3 x  }
/ o/ E( J( h+ z6 k- w   
+ Q/ g! B- o& r& Z: ?+ o2 r6 |' O   if(lcd_code & BIT_MAST_COM1_H)   2 s6 r* ~1 D" M" ^  N
  {
) a. k* n. Z# U* p6 v1 y1 V    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);   5 U  O* o( V8 O; {; y+ c
  }
- U1 a, @) @2 d4 ?" C) @/ u  else
. ^$ A! R$ e9 X& @) }8 t  {
: d) j* a+ S* r: {3 r" O    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1); * F; f9 o& G0 \& A. Y
  } % S$ ~% M9 w# e) N* m/ C
   2 v2 K4 k; _9 V9 q
   if(lcd_code & BIT_MAST_COM2_L) 7 T# @! O9 N7 p) P! y# H) ~
  { 0 P4 r2 {: w1 _! J) P$ P! q: g
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);   
) f( R) Y1 I! H4 N; A5 U* q  } $ R- V0 S. ~% U+ u" _
  else - b9 l+ u7 d7 Y  E" J$ t
  { 0 g9 g7 P! R1 U- y* H" P
    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2);
% D6 I2 v9 G9 P$ o/ }$ Y) v  } * ]) h" X' s2 H
   0 M) g' {6 E! \% D4 w  Y
   if(lcd_code & BIT_MAST_COM2_H)     j: t$ I9 C! _6 \# @& Y& \5 D
  { 0 @, m8 U7 p: l9 N( @
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);   % q+ K6 D8 Z. H
  }
  h* }  w# ?6 }& z; U5 a  else   |, T& v( P8 K7 Q
  {
# R7 k- X: m8 g6 \& h9 |$ C* s; `    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1);
4 }( k  o# O: Z7 z  }
  Q' O/ y% X$ `% C8 h8 g4 ]5 l5 j# O   4 {) ?: q9 c/ \! E. d( B0 T
   if(lcd_code & BIT_MAST_COM3_L)
5 v6 n6 J3 F$ D0 |  { 0 C/ X: E  v3 ~- D
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);   9 T  B. z* W! b) S1 i5 _1 ^
  }   l7 j" @, W9 G9 ~5 K
  else , d; K" ^0 u3 a, K# G) Q% y
  {
; |6 _" z: b0 {1 |3 U3 W" [3 S; G% R    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2); ! E7 `: L8 ~6 X
  }
; M: @: S  f' e4 a   
+ \+ Z2 t# l2 ], m  j5 a, b. |% l   if(lcd_code & BIT_MAST_COM3_H)   
" Q$ P/ h2 N0 G! z& }  {
/ w6 Z6 v" O3 @    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);   ' E6 j) j2 r& q$ H
  } % ]; q9 A# d+ f) I/ K! u; l
  else
/ G! A9 P9 R2 `1 E) C  { : h0 V  ]" j# E% f
    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);
/ u/ o, J$ L" |  y7 E  }   
) V% M2 ^; z2 `% `6 ^; C; Z}
/ _$ a" C. k' l/ z
5 a1 x. y! t! p" n* W0 Cvoid LCD_DispOffOnIndex(uint8index) 8 H1 R3 I1 ?' G. L
{ ) G/ j" ^8 R# F/ E' F
   LCD_DispCharOnIndex(LCD_CHAR_OFF,index);
' X! v2 G" W; B" f}
8 k5 n* `4 \$ F, a6 @0 ^' g
2 o, U0 N- [, y* v! _9 t
$ L& U+ Q; [& r5 l& s6 A* nvoid LCD_DispOffOnAllIndex(void) ' m& P: Q+ Q0 D
{ 2 ~- \3 n2 g8 ~, ?( R/ y
    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]
" ]% c+ v5 r4 x    {
- L, }6 [% A9 Z  L& ~4 k/ U       LCD_DispCharOnIndex(LCD_CHAR_OFF,i); / w; r% [9 ?' B  {' @
    } / p* c, s( W, ?9 @
} 6 n2 }5 X3 n3 o! }

) C: z% w5 P" l1 Hvoid LCD_DispUint16(uint16num, uint8 blank)   s6 u3 J; g0 G+ v$ }9 c
{
. ~, q* y% b4 ~/ x. ^: V2 d4 \    uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0};
/ D% a1 W6 v$ }+ w6 s    uint8 bcd_index;
. e4 K" J6 _& k. A3 J* G    uint8 lcd_index;
4 r! B. k* U0 B. }9 g1 b    ' ]6 o0 X& A+ n7 i# k
    uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT); % O+ V0 ^! j5 l" Q" V
    ( _6 C# @' W/ `$ F4 Q  c8 i# M7 p
    u16_to_bcd_5(num,bcd); ) l! O4 r0 k. s7 B: I) l
   
; B: R+ [  g) }8 I( w  C    bcd_index=index_max_count-1;
% ~  r1 K8 T8 L# u5 z   
7 I) I4 X+ L  u" L' L& R7 F    for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--)
' Z+ {  S% t3 x    {
! L, a9 L3 J! f; ^8 A      lcd_index=index_max_count-1-bcd_index;   : C) n; m* {6 ?
      LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index); + n" ]5 D. F/ q
    } ) o4 u+ P! C# Y7 e
    2 k& T' L& V" A+ f, P5 ?
     for(;bcd_index!=0xff;bcd_index--)
( c0 R# Q( @/ b5 I' y    { 6 P* y; Z: i6 Q
      lcd_index=index_max_count-1-bcd_index;   
/ p- t* j( R. g. r" V; D/ Q1 H      LCD_DispCharOnIndex(bcd[bcd_index],lcd_index); : q% j- t. [# O( D/ [9 y( v% b7 ~
    }    - b* }1 L8 ]6 ]( Z9 w  C
} 3 c( m. d+ D: u1 j" c2 a

/ t" ~- b3 n' G, l5 b#include "stm8l15x.h"
. K, m& h/ |6 Q& y7 I- O) q/ ~#include "uni_int.h"
" x) U" g1 ^. C. j#include "delay.h"
2 @8 n' L" s' {# a8 w6 A7 u#include "periph_lcd.h" / U* _0 @+ J8 Q1 Y$ z. Z# s

2 F3 e9 I( y( s# r) o$ K7 hint main()
3 A8 A* }. ^, H# m% g* `{   ) x+ C$ M) D) _9 b
   LCD_Open(); / ^/ b2 d  Y7 f' r0 w
    # }1 v/ z( v  f# S
   uint16 num=100; ' L7 U; ?3 I# a& Z8 {/ h# d/ p. M" d7 F
    , Z$ ~! y5 R, ]1 Y
    while(1)
1 q6 _1 ^; o8 E  X6 I# b    {            [5 g0 {( o5 j& w
         num--; ) K+ ^& P2 L7 Z
         LCD_DispUint16(num,LCD_CHAR_OFF); " \! L; b$ m' x9 X7 u
         delay();                             
' X( D  t- K" ^! E    }
- R2 [, p7 V: u; Y4 Q4 a! [}# G2 v& [3 d  V& @9 D
[size=11.818181991577148px][size=11.818181991577148px]
4 R" j( S3 Q$ y* B" F

stm8l15x_io.rar

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

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

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-24 01:10 , Processed in 0.059219 second(s), 36 queries , Gzip On.

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

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

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