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

使用stm8L152来点亮IO EEP LCD

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
#include "periph_lcd.h" % i" C6 ~; c3 _8 O1 d# s7 R

0 `8 X5 r- D" l0 Xlcd_code_item_t LCD_CODE_TAB[]= 2 {4 w8 N( y" |* ]
{
5 o" V, K) i- o6 V1 T. H0 ]  [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,},
, o: G  E8 P9 M3 C8 h  [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,}, , b( \6 r7 q/ s( ?6 G% U
  [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,}, . y# W2 J+ P) M
  [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,},
+ x# o/ T' T4 ~! v/ G  [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,}, ( T$ L( @3 z  w+ J* z( x2 N! n
  [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  }  L, S4 l$ O
  [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,},
1 i" m4 m! q9 r  [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,}, & s& w- I2 s' r2 t* q2 T
  [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,}, + l" C" @; b6 T, 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,}, 5 X3 M2 M- ^; C0 @
   4 _: {& X/ d+ E# C
  [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,},
( @* ^. \$ S- k  V+ D};
4 L# A, K3 i2 k( z4 p, O+ _  t2 U0 I& s) F- F9 ]
void LCD_Open(void) , \5 m7 h. t" D
{
$ a7 d3 I$ J4 M" ?% [! P3 @- B   CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE);
# t6 s* {/ F8 W  V; _7 A7 i, G   CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);   
' S( Z/ Q7 b: a* Y9 U6 j    LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);
- U/ l( I4 P1 f% Q% G% ?    LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff);
- h# Q# u3 ^* b! V3 `! X   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); $ U7 @9 x) e+ \; b3 Q8 K

4 \, t3 Z: }! g9 u   LCD_ContrastConfig(LCD_Contrast_3V0);            - d% O5 Y* F) G1 H
   LCD_DeadTimeConfig(LCD_DeadTime_0);                 
2 i& I: ]8 {% X" n   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7); - E7 S5 ?4 s8 A* h
    LCD_Cmd(ENABLE);
% d/ h0 F" i: q) z0 O}
$ Z, Q# U- m* O1 W  R( B4 Z! h. v, P/ I9 }8 f
void LCD_DispCharOnIndex(uint8ch, uint8 index)
) e: N- A  j4 N1 x/ A{ 0 u, |* ^% H' i) S
  if(index>=LCD_INDEX_MAX_COUNT)
0 k3 J. H' o8 }7 n9 n- h  {
7 C5 w8 Z" O: c0 ~  X9 k& Q7 S8 w    return ;
2 d& U& X( }$ D% P: N  }
# W3 F0 Q# j! S2 Z8 p0 t1 s6 y  W      : Y1 N1 M0 h$ G; B
  uint8lcd_code=LCD_CODE_TAB[ch].Byte;
5 I' z3 K9 P( c* B   
, a+ e/ j- t9 |8 M, o9 V* ~, f  if(lcd_code & BIT_MAST_COM0_L)    : z" R% r, {% d
  { - |; G( \4 M" ]1 ~' ~
    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);   " b5 M# c( D0 v. A, g; e) B$ A" F( p
  } # |- @' Q  c5 V& J
  else
& U& b9 W: J. u9 N9 Q4 j  { " J2 k& [4 c6 d6 {+ t
    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2); . O/ ]' d$ k' T" E0 E- L! O
  }
4 n" z5 a+ a( k0 T   % K8 Z( `! ?2 v5 N! }: c! R
  if(lcd_code & BIT_MAST_COM0_H)   
6 B8 x) {4 i: n1 ?; G$ j  { ( G$ S/ m( X$ p# o! B5 P9 R! X
    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);   
$ h  F1 H) N: N0 B% o: z$ r  }
1 x0 Q# _4 Q$ {  else
0 x+ a# k: w, q( A$ Z, E5 c' }# @! L( a  {
+ v3 _+ ]+ @/ E; Y5 U) W    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1); ' V9 K2 [) |+ H2 ]; `- X( I
  }
  L7 z) Z$ B, e. U( I6 O   * M" W7 Q# T1 C- l7 ^
  if(lcd_code & BIT_MAST_COM1_L) * |" s1 M7 U: [
  {
0 K) ?! ~& j% f3 i; p    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);   
( J6 H. H' `/ K5 s5 g  } % \5 d9 p. L0 u1 ]$ J
  else
' j: e. [1 K' {+ T6 t2 }  {
1 F# u+ b- i1 U# ?    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2); / J9 T3 X" A' o/ @  ^* _9 t
  } 3 ?" B. _" D; f! A
   
2 |" D* {3 i. F/ t+ T   if(lcd_code & BIT_MAST_COM1_H)   
+ D' X$ F& ~) m& u! T3 X+ V  {
8 q% n( S; @( a/ |; A+ D    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);   0 m$ n4 ]+ F- D, G
  }
# G8 Z) a1 ?: N- S# V8 h' x  else   R7 T9 c% ]; u) S. x6 W& X
  { 4 E) {6 ~* d" Q* P# h0 s0 c
    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1);
5 j& }7 p4 s: {$ K2 E  }
* h( G+ v! r. O* ?* x3 }* |, [- S, g     ~$ X2 v" t- A- V" ~2 P
   if(lcd_code & BIT_MAST_COM2_L)
* I" y  |0 R# n7 E4 T' o1 y- N  { ; m( W- t7 Z' g% o; k! `0 a0 P
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);   
" T% }: j" w4 C0 V+ ~1 M4 W  }
- V1 ?  M1 j5 D% [% S* e# Q  else
; z! Q% K" ~  [# N1 k5 N  {
0 s; l5 t% [3 p) X3 S7 `    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); # l4 U: H) u" h9 s' j, b
  }
2 |6 l! {) `7 H: ?7 t. G* z   6 E7 @# F5 k- x
   if(lcd_code & BIT_MAST_COM2_H)   
. s0 e7 m( H0 C" B: ~; I  { + y4 v% k  `1 b. x" B) v
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);   ! I' f1 H; d# `! }
  }   C  ~# W- U0 v2 I* X9 K
  else / v: f" h. f  _$ N8 ]3 h
  {
; |( h  T) b& a: K    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1); - e& O7 o5 h' O1 F, ]% k+ w
  }
9 H% v& O% C6 c# ^$ y4 Z   . e9 I$ G5 p- {0 ]. G
   if(lcd_code & BIT_MAST_COM3_L) / j: x5 b. ^0 h" X$ @' X
  {
0 U+ c+ Z3 \) B# a$ C. W    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);   
4 e6 b% l% l* B4 {  }
* P6 t# ?7 Z( a0 u  W  else / t) r# A( Y1 a- X6 |
  { 8 P( e9 o) j7 b: q3 P
    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2); - j. ?( I% S" Z% |( k- K& R6 e
  } 7 v" H6 K' i: G2 _1 z# a- f9 Y
   
3 U# ?6 J& f# Z% P   if(lcd_code & BIT_MAST_COM3_H)   ' @! _; R( B3 ~# t( r
  { 4 w+ k+ i% G9 V, U6 |
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);   
2 }- C' j: t4 V; A2 O) r& F3 l8 ]7 h  }   X: ?/ E& v# A' a$ I( n
  else
! A! h: L7 C3 l' b  {
* m# ~  g' ?5 D: a3 T6 x    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);   @7 k! i( b# [$ I7 Y/ K
  }   ! ], U& v& Q7 B
} % C# U5 W7 F- |  }4 D% k# h, K
  S/ t5 Z8 ^4 Y& U+ Z1 e  ?# n
void LCD_DispOffOnIndex(uint8index)
# T2 E7 h$ `8 I{ # R# a2 C4 S  [7 ]
   LCD_DispCharOnIndex(LCD_CHAR_OFF,index); 8 _3 H" R+ H! X; }3 u! }! Y5 v
}
+ V8 u/ ]/ V9 x) D* j$ B4 U$ Z& X. u: A$ h- E, P1 _8 B
+ j1 E) o: O3 g, L/ s+ Y
void LCD_DispOffOnAllIndex(void)
1 }2 k" |5 z; C* T) L{ . ]6 h1 _2 V3 S2 P4 M- j& ~
    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]! \6 H6 }- _2 ]: a0 E4 P6 q3 \
    { 8 C& S& `8 V6 J5 {
       LCD_DispCharOnIndex(LCD_CHAR_OFF,i);
! d: M* e8 I3 I% {1 z    }
. {& H8 ?$ W, ]. K6 D$ n' e}
: X2 W4 e8 w: g6 t. N3 R3 F8 H' d0 |3 l, b+ M& d2 I! J
void LCD_DispUint16(uint16num, uint8 blank)
+ R  h3 u) b1 A$ w. w{ ! q& U$ A* h- c6 P' M
    uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0}; 6 H2 D6 n& h  A7 v6 B6 p
    uint8 bcd_index; 4 G/ A' X9 V4 D8 s
    uint8 lcd_index;
7 f0 ~1 y; |. }+ \$ g1 m   
5 C' p+ E( L, ^. @+ x2 m    uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT);
6 E6 f' ?4 t4 S! U& {   
4 Z" E+ N+ P9 g7 P    u16_to_bcd_5(num,bcd);
- J) Y5 B! ]; E" f    $ R0 |" [9 B$ A. j3 f, D4 L4 N
    bcd_index=index_max_count-1; ' {) ]( c1 u2 ?( W9 l6 i  M
   
5 f/ R! p) f5 D  A    for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--)
+ S4 C7 D! S+ E1 L    { 9 p2 H* Z4 H1 Z) o; `6 [
      lcd_index=index_max_count-1-bcd_index;   
- `* O/ v' i" z; S. |6 C4 [- ]      LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index);
0 W% [! c& M2 I0 K6 d; C0 U/ ]9 P    }
5 F- E+ {! M. G# G, M# L6 h   
) f( ^2 v  d* O7 L& b     for(;bcd_index!=0xff;bcd_index--) , X& W+ F% G3 U4 l; @# S$ L
    { 7 H( c0 s3 R- V7 D
      lcd_index=index_max_count-1-bcd_index;   3 X( Y+ g- x/ Q
      LCD_DispCharOnIndex(bcd[bcd_index],lcd_index); 4 T$ ~' B: w9 ^+ h
    }   
# M/ c9 g7 u: W} 1 r7 U  E( \+ u
  T" v4 j9 {0 [9 c. }& A& I6 J
#include "stm8l15x.h"
' ~& _! a5 r4 [, G5 @7 z% A#include "uni_int.h"
/ A1 U9 m: X2 S3 F0 F#include "delay.h" % U: o9 H; H# b. `! _, U
#include "periph_lcd.h" ( s* _9 d+ a8 [8 t9 n+ s, s

5 O/ F8 l& N# {$ u6 L0 b! Dint main()
; n2 a4 o( x$ N) U( |6 q4 N{   
) S) B# v7 T! q7 Y4 K9 g2 e6 r   LCD_Open(); & M' \2 P2 y! ~2 p# E2 |4 @
    # ?7 `* {& r7 b$ S3 S! I$ I7 `5 b6 {
   uint16 num=100; % z3 K, l2 T" l4 l9 ?
    . P1 ~0 q) F! n' G, U  V
    while(1) 5 A1 m' L; o; b3 q. r4 J
    {         
. o" |' n$ r* I2 x8 v         num--; 0 `; s; g+ y* `. `  J
         LCD_DispUint16(num,LCD_CHAR_OFF);
/ O) d5 Y% J6 {* H) v% j         delay();                             
5 m/ p% w* C7 s' q) n1 @5 W4 s    }
6 g8 j& M3 l+ y9 M0 H1 G}- N+ @; Z% ]% b* {' w
[size=11.818181991577148px][size=11.818181991577148px]
; Q1 l" O3 c8 t' U3 l% D6 u9 h

stm8l15x_io.rar

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-20 08:33 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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