找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 52|回复: 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"   Y, k; K3 V6 m, T

  G/ S: F4 R& V) Q) Llcd_code_item_t LCD_CODE_TAB[]=
, N% `3 F  t! K+ \" g* O{ " ^6 T; E# u/ f5 b1 _
  [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,},
$ e: {  a9 G# @+ e" I. F! W  [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,},
3 C' a! Y( r* h% l1 s% S& e4 {9 [  [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,}, - h+ X) j. ~% z2 r
  [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,}, 5 \" j- N/ S& c% ?6 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,},
8 n, B& J# x+ M# ?- O  y, M' m+ }1 W  [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,},   u# L) ?1 u$ T; x6 N
  [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,},
6 L- P/ b$ m) A/ A6 Y  [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,},
7 u$ H  h' T$ J( K( B, 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,},   a; E" S8 C7 k0 U% i- M! R
  [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,}, 1 j3 h  U4 U6 f5 l* j) g# W# \/ W3 j
   ' i* p5 y6 j& O8 v' A* g
  [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,},) t" K1 F1 S% Y8 T
};
" S3 W& K/ J9 ]
6 F6 g$ C  @) k' wvoid LCD_Open(void)
- B% ?( j0 U% @{
! S' [6 l0 Q3 H0 i% I1 p   CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE); ; ^4 n# [  K# y3 ?! _5 G
   CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);    5 o  w: r, a7 k8 p
    LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);
, O- z/ \% \5 h; x$ X+ C' b. c    LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); % ~" V+ S8 S$ M6 E( D1 a" p
   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); , _5 ^. Y2 b: ~9 M
4 O- ]* m$ H* ?- k6 P7 M6 [
   LCD_ContrastConfig(LCD_Contrast_3V0);            
4 `! _# k! C. j% w! X. f0 E: T   LCD_DeadTimeConfig(LCD_DeadTime_0);                 7 H) Z/ v; y0 C% D. X# }8 T
   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);
+ J) e$ f. F6 [    LCD_Cmd(ENABLE); ( E4 ]  o+ f5 d4 |- k; f# c
} 2 p  n: H3 F- Z7 C( `+ u; s3 m

5 V6 ?: Z$ o- R% |4 B: T2 _void LCD_DispCharOnIndex(uint8ch, uint8 index) 1 \. q/ t8 K! r4 l
{
$ v# K9 {2 h* ~( Z5 V0 W) t  if(index>=LCD_INDEX_MAX_COUNT) 0 U) P; s4 |# s# E0 O: \' X6 F
  {
( ^2 r( U8 }% m/ \$ `    return ;
6 B  q( ^  K$ Q) q- }  }
( w, x6 d' \2 r8 V9 Q* o9 A' d0 @      
- e' n5 y9 Z& F6 R1 J) q  uint8lcd_code=LCD_CODE_TAB[ch].Byte;
* x- p" M: {, E# P   
# R+ }' f% }# S1 ]: m! ~; O  if(lcd_code & BIT_MAST_COM0_L)   
4 k4 T: E) ]: G/ R( }5 J  {
; w1 E# c& M7 g8 S: \    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);   
$ l, A5 a! R4 A) Y: m% F  }
( |; _5 \" R3 d* N" y- P9 w  else , ]* O+ i, y, H- k/ s7 I
  { & o( Y* @5 _3 z( Q8 K, X7 U
    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2); 7 B8 f6 ^) k, m! S. k- J
  }
4 S9 Q# z1 X0 x) y* m   
* j& ?6 O: B0 n# m  if(lcd_code & BIT_MAST_COM0_H)   2 q  w0 ]2 b; [" L( ?/ K& y
  { ; e% b5 ]# U0 Q$ u% p) ~
    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);   
- `1 A& V+ J3 G' j9 e  } ! e% j$ C: y& R& a) I
  else % F  ?* r% J8 O" l& {
  {
; j0 L1 ?2 a0 F" l5 n    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1);
1 n$ b1 j% [" h! c  } 6 n5 P7 H! j$ \( k  u0 m6 t! p( S
   6 `- J' {' H& @1 ?
  if(lcd_code & BIT_MAST_COM1_L) : ?( _5 a( R" F# {6 M
  { 4 u; L' _; p2 U+ B
    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);   
- a; b& b  a6 `  } 1 `$ g2 J( D' x3 y
  else
& u1 U7 k7 O1 r/ S/ K! U% c4 n& h* o  { 7 I6 i: C' F: E" p3 [5 i
    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2); : q1 `" u: b1 v% C- D* T. a
  } / m8 t- C0 d9 k
   
& \7 t) v* d, v, M   if(lcd_code & BIT_MAST_COM1_H)   
& r3 T( M3 H) m( n' p( h  { % i/ U' f4 M! o/ I9 e! t2 v
    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);   6 w9 b# h2 F9 L& R. v
  } 9 ~6 a# y+ n% m$ O
  else
) z/ C7 B7 D8 ^, q  a  {
! L# i8 i7 |( ~" E' i    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1);
& [  ~, J* X' k( m; Q. q+ f  }
9 H6 D) J+ l! O0 J( T5 w6 W   
; I5 {4 G1 ]6 N8 j2 B   if(lcd_code & BIT_MAST_COM2_L) 0 N+ g' t4 F6 s* L8 P
  {   F, e- R5 K8 f2 t- l
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);   
# t6 V" ~* _$ @/ L  P  }
: \; g/ H6 {0 o4 q% Y$ G! c+ f  else 2 z: V/ X2 w+ A7 o7 W
  { # t, D7 d! l6 Z
    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); / v1 q7 F% r1 w6 [& D: B# g1 u
  }
$ k) o) u6 \. Q: @   % A. O) A2 \: L5 X( f
   if(lcd_code & BIT_MAST_COM2_H)   - z6 V' w! z! o1 |" @
  { " N6 S1 ?0 }3 j% ~, L6 \. E* T1 f
    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);   ; X; K/ j8 C$ R* s" Y/ G
  } ( b. E1 A+ E  U. E* [1 Q' T5 Y
  else % w- u: S+ o5 z' o+ w
  {
( s/ T) ]8 G8 w6 F. }3 U) a    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1); 1 b- R8 p, D& L5 I
  } # \3 o: {4 \" `. P# c! Y5 m
   
% q7 N0 y" e  I1 W$ P: M7 X   if(lcd_code & BIT_MAST_COM3_L) # b5 Y' ]- s- Y# L$ ?0 ]
  {
' ^0 @/ F$ v9 N( K8 M/ E; y; C% R    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);   % [% A$ u: g/ D" `% n$ ]
  } 4 c$ m" x" M6 B
  else
+ z. a7 a9 [: s* M  { % e3 Q6 a9 D  [1 `
    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2); 3 M3 {# M$ A, Z3 S
  } " B/ `6 A, ]+ v. `2 I# ?7 [6 V
   : b7 ^. v; @  i
   if(lcd_code & BIT_MAST_COM3_H)   
7 I5 E1 G1 E( B8 t7 `+ B- X- \  { ) r/ s* S# f, o% ]7 B7 Y3 Z# p
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);   
9 P/ l& t6 y# t  }
  _! D4 q" N7 R! I$ t8 G  else
" S9 N, j" A/ w  { # o% G0 M; O- i" d2 n
    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);
, m# G, @+ _' Z9 p3 Z  }   5 f& k$ T- u9 r
}
6 B. J: ?9 n" V/ G/ p2 U9 a1 A1 }4 d
void LCD_DispOffOnIndex(uint8index)
0 ~. B( u" }7 J, `0 h0 I{
6 \; A) Q+ D2 b( k+ T' F5 b3 S   LCD_DispCharOnIndex(LCD_CHAR_OFF,index);
5 V& p7 Z$ Z" v' K  ?1 J} & j# C$ u+ }9 Y& k9 R

$ |1 K' c4 X! S  Q( v. Q! r
5 A; g3 e9 A% Q/ ~2 l/ Tvoid LCD_DispOffOnAllIndex(void) 4 {) a' h2 D7 ~/ b' q' R
{ % W& o' F* v2 n8 @$ P+ R
    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]' i# S+ l4 q& D- ~8 \
    { " H# i* ?7 W/ g; _4 n
       LCD_DispCharOnIndex(LCD_CHAR_OFF,i); : e6 ^) r! q5 {" T9 s  q2 g) F2 O
    }
# X: a) ]9 g2 G) k! l} 9 G; s# Q8 t$ _4 w& [

" b9 x! O8 p# W; @7 |) fvoid LCD_DispUint16(uint16num, uint8 blank) 0 Z1 i( K  \& r. O7 e4 n. Z6 B
{
$ W1 i! L" E' y8 j- K& W5 g    uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0}; 5 U5 ]$ \3 b) Z: ~. b& i6 m1 g
    uint8 bcd_index;
0 b3 t. G8 |+ f  t. G  M% |. O    uint8 lcd_index; ( ^6 a9 Z! u+ ~. d( i
   
9 w6 L8 H# x+ H0 V    uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT);
9 d0 o/ D7 _- o. {   
5 \3 |" G1 H5 q3 z3 T    u16_to_bcd_5(num,bcd); 8 ~% Z) G) k' _
    & Q* u: m# m, k: f0 a
    bcd_index=index_max_count-1;
5 |( P, e# x9 d" L: G. B   
& M/ ?' _2 l; l% `    for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--)
. |' @$ {) `6 W    { + q* F2 R* M1 ~# h) S; _* k. v
      lcd_index=index_max_count-1-bcd_index;   
% r' u" ~0 z9 h9 ]7 w      LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index); & [- Y+ n% D8 N& X
    } ; _4 h: z" e& u4 g% M+ p0 z# |3 X
    6 x$ n! N+ c* H4 \) y  C$ Y
     for(;bcd_index!=0xff;bcd_index--) 8 k5 I: ?# k3 l' x+ J
    {
8 O1 Q* c+ z7 z. n      lcd_index=index_max_count-1-bcd_index;   . n2 J- {: n5 @# N5 k: I  h
      LCD_DispCharOnIndex(bcd[bcd_index],lcd_index);
0 e$ |9 l: O0 @* [    }    ; O0 P8 ^# T/ d
} 4 {9 S2 c9 u0 E
' y$ i' _- K' c* E
#include "stm8l15x.h" % U6 i' j7 A/ ?8 @0 c% R% ~& h
#include "uni_int.h"
: F" q& j- ~) j1 R, K- W/ m#include "delay.h"
  n. t2 V, ?% V0 u% e* v#include "periph_lcd.h"
& o5 L/ C3 ~8 t. o9 N
  J  V$ Z9 Z5 F+ Uint main()
3 x8 j' U* h, u: S" q- _6 {- \{   
3 W, h$ {' ~- S1 R" U% x- d; |   LCD_Open();
! a% O5 K8 O/ C# Z   
) \! l' T7 G: C9 B! `: n   uint16 num=100;
" U7 `  L  l% k% }5 c; |. x% T' q2 D   
% ?. P0 B8 r2 \+ O    while(1) & h3 A( j- G1 j2 @3 U' u/ d- c
    {         
8 W0 x7 [* Q, {  G# k         num--;
+ }8 |2 f3 q5 C9 U         LCD_DispUint16(num,LCD_CHAR_OFF); + M5 U4 A/ C8 c# @! ?. S, z( u/ }
         delay();                             9 W0 c6 D: l7 m5 v
    }
  C8 X% J4 I" `9 d, J* n}; d+ ?: m4 z! S- x, y
[size=11.818181991577148px][size=11.818181991577148px]' v- ?& Q) h( T# \+ ^* X

stm8l15x_io.rar

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

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

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-2-19 06:39 , Processed in 0.059074 second(s), 36 queries , Gzip On.

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

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

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