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

使用stm8L152来点亮IO EEP LCD

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
#include "periph_lcd.h"
# c  j1 U& ]! S' X9 W; r: R4 P0 d
lcd_code_item_t LCD_CODE_TAB[]=
2 H9 t5 [% |& t( u* |{
1 d$ Z! n  M& l* 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,}, + W* {: Y+ T' g+ s4 l& a
  [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 }7 [) X9 K: _4 J3 R- q& q  [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& M3 X1 |5 ]" C
  [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,},
. c& j# m: A9 l2 d3 Q# 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,},
7 n2 y! ]. r: I  M6 ]- e) {' M  [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 ]5 S& H4 L$ I' F8 p  [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,}, . T3 I$ d6 N- w. V* A( g0 i8 ~
  [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 t" P- z# n0 h, h; D* J) {6 ]% q
  [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,}, 1 W1 h. j" b: }, {, Z
  [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,},
. U/ H  H4 |- Z6 b! [  W$ t   
, u* c7 k  O+ p1 u  [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,},
# E, u* m' t2 g% C+ U3 C: S};
0 r3 |& |: ]- A! t* G' M* ]2 F! e3 `' O) D
void LCD_Open(void) / R6 |& K* f* U. P4 F
{ ' r: l  W( d3 \  t
   CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE); $ Z- d: y  C. \: \% q
   CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);    9 G7 W9 r8 O- V. B& q" A
    LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);
% _1 k7 b& K" V    LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff);
1 y1 G4 A; q* A; M   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); ; V. e- T  |+ `( Y9 f

9 E7 d: _& E- h- a, q   LCD_ContrastConfig(LCD_Contrast_3V0);            
" R. t4 i9 D- Y0 q: b  H   LCD_DeadTimeConfig(LCD_DeadTime_0);                 ) ~# e6 l% p  O$ j0 w
   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7); ; a/ O; A4 E1 X7 }5 z" j
    LCD_Cmd(ENABLE);
* d) }4 i3 R+ h( }3 z7 R}
6 {! z% ]( q' E2 x4 W& b+ M  @* \5 S9 K, C
void LCD_DispCharOnIndex(uint8ch, uint8 index)
+ ]% E7 c, b" e. i  V4 l{
, t6 l" b! g/ r- l1 O/ C' Z  if(index>=LCD_INDEX_MAX_COUNT)
: A4 `& V8 X/ }* W' l5 v  { 7 F8 |! X! H0 J* j9 i! m5 l
    return ;
& C' S* @- R7 S# Z9 A% C2 m  }
% K9 M- T' i9 w      , y5 Y+ X8 X$ J  v& f+ I7 I" z
  uint8lcd_code=LCD_CODE_TAB[ch].Byte; $ M( T# I. m  _. c/ z: c. ^
   
- k  B: y: B- O1 [% x5 N  if(lcd_code & BIT_MAST_COM0_L)    * C& C7 N0 E9 }/ k& w+ W
  {
; Z% k" D' m4 F* ?  M  |) `    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);   
7 N" s5 H$ R* v5 q( N  }
# u/ V) r& t% w8 q% K. y" R  else ; r: G9 e/ }5 n( B6 j& B
  {
( g. L) U! J- R7 T3 J  A4 t3 x    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2); ' ]. q6 B3 w5 K% f' \
  } ; D5 R5 p0 U) g1 z+ [5 u% J
   8 F1 ^" F1 l- W
  if(lcd_code & BIT_MAST_COM0_H)   $ ]; _' y, t; k! w6 t2 @  [  X: o
  { 0 P# v3 ^# Z6 `
    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);   
* I! J; D3 x% K1 n/ c  }
6 ]. f& M. f% u! B# l+ S; ?! T  else . Q0 Z8 t: U- |0 i1 l) d6 h# u8 o
  {
, _* B9 e# t, k$ h9 |; ~    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1);
& Q9 ?$ p: T7 X. o6 D9 T: h  } ; H" B$ y' e: X2 V. x% {
   
) ~4 E! s& C) Z0 z8 l- w7 m% g  if(lcd_code & BIT_MAST_COM1_L)
% Q; r% W2 ?( O3 ?* n% h  {
3 a& y5 B$ M  N3 t8 `    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);   4 M" [7 P/ ^3 B2 ?5 G6 t' X
  }
* n! C4 Q% V' R- G( q  else
5 V; u5 {4 [7 N% e  H  P. [  {
$ M; j* J) E) R  O: t5 @( b! z0 g/ y# O    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2);
, ^$ r5 L# B& U4 P2 _* I  }
5 i' z$ l# i! z8 Q   2 b, U- X' @0 h2 X3 T0 a
   if(lcd_code & BIT_MAST_COM1_H)   : W9 N$ ?3 }& G1 e$ \
  {
5 j" r3 v  {( l, {! ?    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);   % G, ?- Z: s) p7 \' Q" X0 V
  } # @0 t3 q3 J  a  N9 t5 {
  else ' H# i% |2 C: A4 j( o
  {
- \+ u% @. i# r2 a6 a    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1); ) X6 U: i: H9 S' P( d0 C
  }
7 P5 o! o( q% c- r) U; x   
. Z% g$ g0 F- _7 p5 O7 J   if(lcd_code & BIT_MAST_COM2_L)
  I3 A# c0 C0 ~& @3 D% _& a* ^) j  { % L4 O5 J! h7 n# l7 D: W
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);   & s$ p8 X* Z$ {. H
  }
6 Y, ~( Q$ E4 s+ F: E  else ! }6 Z: h/ t1 F* w
  {
. S* i/ B( ]- _7 \; e; R    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); 8 X8 k  ]9 ]' Q! h% r4 z/ r. _
  } : z, Q3 W! f7 L
   
' J! t3 S3 Z& I0 P( v: d  K% z   if(lcd_code & BIT_MAST_COM2_H)   ) Y5 M4 I& O: @4 |
  { 3 H' e- E: k+ ^
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);   
2 f& v7 `) z/ c  }
; h, S0 I( \: j  P+ O  else
( \: B2 \4 }7 ?% \  { ) {( X% W0 g6 O8 t& P- h6 U, ?+ N
    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1); : s+ \0 S8 Q6 p
  }
% `+ Z+ m1 {5 y4 c7 r+ O; E, t- e   $ ?* ~% x, F& G7 T$ Y0 N
   if(lcd_code & BIT_MAST_COM3_L)   @8 I0 O  g; m, N, `! ^6 ^" ]
  { ) I. \! l7 t# D: z, j8 H
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);   6 C$ S9 k2 Q. ^9 I" C' {
  } " Z/ g3 b! W7 W, Q9 n5 O
  else 5 o) _/ M/ t- r  K0 K- O4 m
  {
7 B  A4 B4 B+ \    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2);
2 F' j4 a0 X. v0 e  }
' x' L% c3 E  O" _. i   
. J$ w% ?! s( s+ b" P! M9 g7 q   if(lcd_code & BIT_MAST_COM3_H)   
7 v3 P  C, V6 Q  { & S! Y$ y5 c! o- `1 @; D' O
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);   3 D- }; ]2 j, c! G
  }
9 F! O  k' Y& Z, D  else   k( c$ ^/ n8 b2 E
  {
6 |/ ^  d/ W" n' q- N3 s    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);
; R- k/ z# q" p" ~' P' r6 \  }   % B! M- c, H( x! m# L7 `
}
. T* |+ |  n7 V) |$ D8 W, @( q) i7 g$ j7 z
void LCD_DispOffOnIndex(uint8index)
. K9 }: m- {4 _- `. `1 m, x{ . ]1 ^; e' @( U) `9 B% {
   LCD_DispCharOnIndex(LCD_CHAR_OFF,index);
3 R: T" v$ F4 f}
* f/ g9 ^! x. z3 Z% l0 J9 U- v! l$ P7 G7 v4 I2 A1 m' {
7 B- D4 \4 Q7 s
void LCD_DispOffOnAllIndex(void)
" `2 g; x( V$ |{
1 c5 W  `2 j* 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]
2 f, r* }! d* `3 ]( j; w. s    { & e7 `2 c8 U4 g: y# d5 I$ T/ }- r/ H
       LCD_DispCharOnIndex(LCD_CHAR_OFF,i); : b8 M( T4 C* T3 N$ T+ z) n# ?
    }
4 |# ~- H* R( ?' l) c. R}
( J$ f9 G+ Z! e) o
! W& ?+ W( q& }1 D/ n  w" ~" Rvoid LCD_DispUint16(uint16num, uint8 blank) 8 _1 Y! e7 L3 Z) X
{ 6 R3 @* w7 e9 M5 V. r
    uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0}; & c% X. L3 ~3 P
    uint8 bcd_index; , t6 |/ f: j# X; R
    uint8 lcd_index; 1 q: b; C2 c, V$ O5 E: u
   
6 i, j5 H4 @  {4 c( ]: E6 B+ c    uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT); 2 A) Q' N/ e2 Y# f, C+ C
   
% Q4 H1 }: A- P4 N) L& H1 M) L. i5 s    u16_to_bcd_5(num,bcd); ) h2 B5 ?1 e) {3 c' P  G& Z
    ' `, F, f; P9 F' l
    bcd_index=index_max_count-1;
2 u6 S! R* T5 ]2 u# z7 i   
& ]" D% h/ s6 |  [    for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--)
  u$ F% j8 |0 e. r  ], v, C    {
0 W- \3 ~9 ?0 o: d& D' r7 T7 Q4 U. h      lcd_index=index_max_count-1-bcd_index;   ( A1 W! _- Q. J. E& B* b! @' _& c: ~
      LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index); 0 U4 g. z( X8 V# d. g* V
    }
( p6 m& O) y. a6 M, j    2 ^; C4 }4 i1 @( b4 X& j" x
     for(;bcd_index!=0xff;bcd_index--) 1 b* s# F1 o7 P
    { / y( M7 z$ k6 R1 x0 s- r4 s/ I
      lcd_index=index_max_count-1-bcd_index;   - `9 A% C! U+ Y3 I" l
      LCD_DispCharOnIndex(bcd[bcd_index],lcd_index); 0 S) z+ X3 H+ N! b& Y
    }   
) d9 i2 j  Y2 k3 ]8 b}
0 p* l8 w7 v; t9 F: u0 ?' q& R5 N+ s
#include "stm8l15x.h" ' ]- X4 M% W* t. ^- U, W" i2 ^
#include "uni_int.h" + A: }6 L  W2 T$ b+ l
#include "delay.h" 7 Z  t' H" R. E# O. e# O
#include "periph_lcd.h" - g; T6 m, n" g8 r7 c+ G

) Q5 ]" r, z- iint main()
% a- k5 w& V1 {: F& @: S3 y{   4 Y) y7 t( s; S" w0 S
   LCD_Open(); ' b( e3 ^; J/ K1 u; ?
   
" p2 J8 q" p: G$ ]4 N   uint16 num=100; $ N' y$ z4 @5 |. g4 [
    0 L8 p  M  X) }5 L
    while(1)
4 D# N9 t* v' o8 d- _    {         
5 Z: T3 _; E9 [4 m, w% c         num--; 9 B& g& k6 k3 m
         LCD_DispUint16(num,LCD_CHAR_OFF);
1 [# Z7 o9 L" h         delay();                             
0 J$ u: ~6 b# c: N) R3 _2 `    } , C+ N( S# |" j/ K4 U+ M
}
' w6 {% |9 N( D- F$ B. |2 ^: L[size=11.818181991577148px][size=11.818181991577148px]
5 Y, ?- n8 g& h" v' T

stm8l15x_io.rar

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-28 05:56 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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