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

使用stm8L152来点亮IO EEP LCD

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
#include "periph_lcd.h"
2 O7 e2 f1 n5 {% d6 F
0 X% E6 }5 n  x" h1 C7 u: N1 Zlcd_code_item_t LCD_CODE_TAB[]= ) I, k. |9 F8 a  H
{
. |( x/ j3 i) ~" N/ |& P  [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,},
; m' y: _( x! t1 ^. d  [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,}, " R0 V+ |0 Z% k7 X# U- u2 `9 E* y
  [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,},
$ P. j( I# m$ ~$ G6 J7 `7 U  [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,},
" ^% n3 n9 q8 r5 \1 @1 M) Y. @' i4 l  [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,},   }. z# T$ K* k7 z: H  c
  [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,},
% T3 w: i3 \; @+ m1 w; 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,},
: T/ H" s# p# D# e/ z; |3 p  [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,},
$ A/ A* x+ C3 M9 _0 K9 _  [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,},
. b: E5 D0 }4 b& l  [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,}, 3 z( n/ n; z+ m4 |8 L* X5 K5 I
   
1 }1 E9 d! s5 j0 {* 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,},6 W. o/ F& w, J7 e2 B; S" T6 b( l
}; 9 l6 Y8 ^; s5 y: T1 |- Q- j( W

7 [( f# ?5 P6 n! u' tvoid LCD_Open(void) 3 c1 ^  h; I+ ^! B/ n
{
# W! V* F4 \, |8 p& A- }: @   CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE); / j! e, a) n. D+ N# Z1 C# |5 U
   CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);   
' F) j5 D6 T& ~5 B) R1 ?    LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);
' T0 I- d4 z3 t* _) L    LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff);
3 U9 q& e6 @% l" }- l   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); + a/ `/ Z- @! j/ p" j& ?$ n$ z. g

1 I+ |8 e, z$ s% p   LCD_ContrastConfig(LCD_Contrast_3V0);            
4 E/ M$ j3 v: A+ i0 ]* B   LCD_DeadTimeConfig(LCD_DeadTime_0);                 $ E, j9 K* R; d* d4 t! H% l  F% A& Z
   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7); 5 ]  Z/ B0 z. R3 V6 C3 C7 U
    LCD_Cmd(ENABLE); + v! d# i$ L7 d1 ~: q2 o6 f
}
  K, t: v8 `4 I0 |8 D
9 }  Z/ m, s$ t; B" Pvoid LCD_DispCharOnIndex(uint8ch, uint8 index) $ d7 ]) Z4 p) G$ i
{ ' z+ Z, W5 S* h) ]" i& ?/ V( v/ h$ C  a
  if(index>=LCD_INDEX_MAX_COUNT)
/ F7 m$ \; Z; n( K  { ' F1 X0 }5 Y* }; u) n* u
    return ; * S9 \( k, x, {1 c! o" S4 R
  }
" R% b9 r+ F5 q) E( V5 V$ v2 Y      
0 T+ w* @1 \. F( z; Q: M7 p  uint8lcd_code=LCD_CODE_TAB[ch].Byte;
9 X$ p8 g9 w* V* ^" W, H: y   / B5 D$ ?, ]3 J( u, n! S
  if(lcd_code & BIT_MAST_COM0_L)    " |0 n( j( V" W* A( X2 X3 j
  {
8 c. b0 o* T) j& c    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);   
; a0 q& o  [0 O3 }: t  } $ J2 s: z' n7 N1 x
  else
; I# Y& y3 m- _3 ]9 _. q+ _  M  {
/ l% f1 j. j' n! R/ h8 W1 K    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2);
; B5 e. K8 a  K! O; ~) Z  } $ K* i# q6 y+ n) n
   . J* q! _7 R; z4 v, }/ Y
  if(lcd_code & BIT_MAST_COM0_H)   ) a" j% S% ?( A, o$ T; A# v
  {
. r$ F6 b6 w+ z- X! y3 X    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);   
3 _5 J6 f8 E+ b* j* G7 i4 x4 \+ g: |  } 4 }3 o# v8 c6 a8 u0 y, l
  else 1 y# d. J0 M6 h4 h: A
  {
- {' |. H+ k# @2 q    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1);
/ `0 z  T9 f: t' v  } " h" g9 \; _5 M5 _
   6 c5 f: _3 M2 l- W2 |. f
  if(lcd_code & BIT_MAST_COM1_L)
& n  R" N1 I' f3 k: t3 e  {
  }) b7 y& J# A4 c8 Z    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);   ( q7 q$ s/ i* Y0 E
  }
' v3 `4 @4 p0 N7 |! P7 s; q5 Q4 B! }' D  else 0 m  ], [% j+ W' _* W2 s+ r9 ~
  { + y3 Y! r/ u  `) Y  d! U
    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2);
$ L" p& p5 S- i* |- Z  }
1 Y% s6 T# ?1 v3 }/ f8 j& E   
$ o+ j5 Y" t) l( q   if(lcd_code & BIT_MAST_COM1_H)   $ Z! ~0 W# P$ Z
  {
! f3 h/ h' j. T, f/ j0 E    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);   
9 Z7 m2 R. T7 X# o  } 4 Y& l  A. S+ A/ @+ s3 d
  else
! K" Z# i" F) Q' `; }% @' w  {
, h( t2 F. x) d& p1 O+ N4 }; j/ X6 ^' l; p    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1);
1 e+ v3 i7 q$ k8 `; Y  }
4 b6 f! Y7 i9 l2 }6 f  s, k   ! k# L# P# ?5 ]4 J6 i! [* B& D
   if(lcd_code & BIT_MAST_COM2_L) * o4 E% E, }, D2 s3 t; ~! V
  { ! h. S" e) x% a' K! f
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);   , B0 _* W* ^& G' |" P
  } ; ~4 \1 G$ t3 E$ a2 d8 Q- x/ N: S: Y
  else : f0 N& M5 Z- U" z8 K% B3 t# k
  {
2 L" U0 T% T5 C4 {& l% W    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); 9 j& E' R, d+ k2 {6 {& y, b: r
  } ! ?# S5 T8 O2 R
   
4 ~  j4 L# L- f7 Z; o3 h  y/ D5 L   if(lcd_code & BIT_MAST_COM2_H)   
' l. F7 j% u  z/ i% H+ z  {
5 m3 W$ f% y; w/ p2 |. A& P/ ~    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);   
, Y! r% s" p: r  }
) r6 M$ ]3 p, g6 y1 q5 C  v  else - Z3 I/ i- Q4 o" R8 j+ u# F
  {
% F# I' r  P5 Y+ m' T+ k    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1);
7 Q; q: c6 ^, X  }
9 h0 }" j" \4 B1 K   
7 ]1 k; J: L# ^; x3 k8 F9 o4 g3 C# y   if(lcd_code & BIT_MAST_COM3_L) & C# A/ o9 k6 B$ O6 e" p
  {
6 Z1 H9 E4 d3 ?* b# H! l    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);   * K+ P5 r( }0 t4 j" x2 B8 P
  } ( C3 l3 Y9 a7 b- s# K1 d, d9 Q, s
  else 1 O# Q3 }6 D' R5 s- {! H
  { " G/ P( |( _$ U0 {: N
    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2);
$ `0 X$ z: S7 v) g2 ~1 c  }
9 @6 N: D4 @+ a: T5 @3 i   
, T  t2 r; P& K0 U+ I   if(lcd_code & BIT_MAST_COM3_H)   " ^, N. k- ?3 G- W% W
  { ) a" b$ V6 S7 O- m, r# K
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);   * U3 N+ Q; X4 x5 U7 b2 H
  } ; W' x) D9 O' `, u
  else
. }/ G$ c; o7 J) G. m, b% W, Z  {
3 m# c3 |5 b- b9 r" H    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1); 5 v( ^" A3 `) U2 Y; Q- H& h& h$ e. Q
  }   ( `2 w  e; |: A, u6 w3 t) f! `1 N
}
& A, K8 O, p4 {
* G- Y  t7 U7 A7 w' D5 o. ?void LCD_DispOffOnIndex(uint8index) % _7 O& C$ W" o) w3 {( v9 y$ P
{
6 u# L& E$ j- J2 D& g/ |. }6 x+ j   LCD_DispCharOnIndex(LCD_CHAR_OFF,index);
& o0 y. o- w* \/ W3 Z+ [9 F' x}
( @0 Y) }( }" W9 {$ ~2 I3 ^. K& h% u, O& ?# F! B

6 v. p& z% k0 t. ]void LCD_DispOffOnAllIndex(void) & M0 v$ A6 u/ E7 Z; R2 {
{
0 a9 Q1 J8 S$ w$ K" G    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]
% T; r0 [" K7 }: X    {
- T# N, m  X# Z* l  T$ P       LCD_DispCharOnIndex(LCD_CHAR_OFF,i);
7 Q7 l3 K. U0 c% \    }
; H- r; v# V9 s4 D2 ~9 y) u* v: Z$ D} % p& x7 j9 l: c+ E! M9 ~& \
' O4 _2 g' F, }% ?! T! O- |* r
void LCD_DispUint16(uint16num, uint8 blank) ' h1 O$ A" J9 s6 r5 `
{ , m! l. x+ S% Y. ~2 A
    uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0};
5 q5 T6 Y* |5 Z    uint8 bcd_index; 2 a; ]; H( l& O
    uint8 lcd_index; ) R2 K6 o  M5 n; r9 i2 u( i* J
    9 w( @4 \0 y6 d
    uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT);
. {5 G+ r$ F5 J8 U$ \0 s   
- z& R) [( z  A' v& \* k    u16_to_bcd_5(num,bcd); - n9 u. J& ]& a9 `6 R
    ) E- ?1 g9 _9 d. d. E9 q
    bcd_index=index_max_count-1;
. K( D) n9 p9 V4 Z    $ s0 x3 I& R6 i/ ^. p
    for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--) . ~. k. Y$ r& h: h# Q2 H  y
    {
, m" [% C# `2 B& t      lcd_index=index_max_count-1-bcd_index;   
# x/ H2 P1 S0 M/ _) Z7 M8 H      LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index);
5 L8 [: j: G3 d, b    } : e  F$ ?; L! K0 {' ?7 ^
    : C: ]$ l% F9 l! @
     for(;bcd_index!=0xff;bcd_index--)
! i8 `# c2 w# x6 r" g    {
' D) k  r1 B( z5 y* z7 f: R      lcd_index=index_max_count-1-bcd_index;   
3 Z  @2 D: X! D      LCD_DispCharOnIndex(bcd[bcd_index],lcd_index); ) |* \. Z( u' s! u& l
    }    + O; Q. f/ c* I: h: r; u* y
} : }( D4 E& s5 Y2 j
: Q: \- h. H; f- y+ o/ U# V- g! r, U& O
#include "stm8l15x.h" ! }- s/ B: S' v- L+ R- ~
#include "uni_int.h" 8 P$ p# k9 _3 ~/ e6 d5 g& M+ e
#include "delay.h"
' M3 d5 i  @' E/ u: c. ]. r- B#include "periph_lcd.h"
9 h* i0 Y* M/ R% U3 |8 C1 X: k$ j9 I- N% R( l7 r9 h
int main() , n$ l4 a8 o6 F; v5 @* s
{   * s; A% @/ f2 e* L: E3 R% p8 S8 M
   LCD_Open();
9 U4 d# u7 m( F4 j    0 V. F& J; I5 W2 K* ?& t1 ^) Z  p$ f
   uint16 num=100; 9 A$ I# s$ j( `0 ^
    ) E( _$ q9 M* @, j1 P, K7 `! i
    while(1)
+ u! N. C8 {) k9 m" r    {          ) K* g; k, B. }" t7 ]7 p& M- u
         num--;
' e, j: F+ ~! O: q! c         LCD_DispUint16(num,LCD_CHAR_OFF); 1 }, u- v6 f, Y# E
         delay();                             ( R5 v9 F9 v3 t7 K8 B6 g
    }
- [2 n" C$ n& z}. A  ]8 S: {% r8 m- L" k
[size=11.818181991577148px][size=11.818181991577148px]1 y! y( A$ ^: y' e

stm8l15x_io.rar

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-1 00:47 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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