找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 47|回复: 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" : {# n  q1 [! Q+ c) P9 k
) c' Q8 a0 S3 ?1 v
lcd_code_item_t LCD_CODE_TAB[]= 2 T0 y* D0 n, f7 h9 j  h
{
6 ~, _* k  I7 ^( p$ ]7 v! X4 H( M" H  [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# n! p+ Q5 y  [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,},
5 O0 b, B3 v5 _& l; O0 b6 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,}, " ]% x9 U; ^$ I" S) S
  [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,},
0 e% i. e3 l/ N8 ]# O5 Q; \4 t  [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,},
1 ?# K( I; M1 q* _- h' [  [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,}, 8 T% t  q) x$ P3 }1 s9 Q0 O- u
  [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 u( s0 @( s; ?$ E, C8 H6 T  [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,}, - A4 ?8 |. b# ~! }# }2 Q0 U
  [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,}, ' V% \& }  d/ a4 v. K* U
  [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,}, 9 b0 w- q9 A5 E  y- f* o* r0 T+ C
   3 y$ P" K5 [3 @5 ^/ ~7 m
  [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- Q1 z4 E( V% k( ?/ i2 G
}; ' \) }+ X' P. F$ g' `$ d

" u) T9 y- B1 S( N  }void LCD_Open(void)
4 o$ `6 p5 P, V{ $ T: u( b2 b6 r2 l: q" l4 R$ _: C
   CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE);
5 M7 N" Y  V8 v7 N& f! y8 ~   CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);    % P3 j- }3 e$ ^8 L6 ~
    LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);
+ j: |1 A* p9 S: |: e. h    LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); 1 L+ g% K& f  q4 B$ f: X% u
   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); % j! V  G$ A  j' b5 J/ U2 N
% t/ H0 ^9 M! `
   LCD_ContrastConfig(LCD_Contrast_3V0);            
4 x  B2 W  ~! D, I: B; \9 p1 q   LCD_DeadTimeConfig(LCD_DeadTime_0);                 
$ g  J* M0 P  j8 d2 |   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7); 4 @8 s" r- y: r, E
    LCD_Cmd(ENABLE); - b% Q2 a; q" y) ]  H" J' D" l
} # x7 m8 [/ [" R2 t: y
3 \6 b5 O' |2 q; ]1 o5 B4 f+ z
void LCD_DispCharOnIndex(uint8ch, uint8 index) & J, L# u/ V1 T% F# ]  J
{
4 j6 K6 X, f" _  if(index>=LCD_INDEX_MAX_COUNT)
' I6 n+ ?/ A' k2 D  { 6 p5 `% P/ \& |7 W
    return ;
* G: ~! d& ~% q) d& z  } 3 i2 R& L) F* \. k# b1 \% G8 m
      
( F( C$ y) m* E6 S+ L  uint8lcd_code=LCD_CODE_TAB[ch].Byte; * V7 @( y5 `: ^
   4 ^4 q8 o  ~/ Q, B6 V
  if(lcd_code & BIT_MAST_COM0_L)   
3 g& m* F0 R0 d8 Y, A2 S1 f& u  {
8 q9 T( Y# r& C5 w. U    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);   
  n2 |6 f4 s8 x0 F! P9 B6 k* H0 ?  }
. Y" J4 v( C8 k7 h  else
2 \; q: z% \! ]( |  { 8 U# t! C% |7 L" F/ k) b, x
    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2);
2 b8 V7 z9 c  g1 h8 w' w0 S, Y  } 6 c1 I7 ~  @, `6 M0 Q% Q
   ! {' A2 b: n( ~5 r
  if(lcd_code & BIT_MAST_COM0_H)   
3 o, P1 s+ Z9 w/ f7 a3 h8 y  {
0 Q( P# H7 k' b5 M8 |0 I$ J- ]5 _    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);   , E9 p" b  @$ b! ]2 t  I
  }
3 c5 l4 y$ @! O" I4 y0 Y  else
, y) s1 f: \9 S! r, D  { $ B9 Z# @3 X4 P9 |, {& ~6 Z
    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1); ) x) E4 A9 q) E; A) N
  } $ O# c  @  ~9 S; M) x
   
# R& p  k. n* M3 K7 z/ E- t, I5 X  if(lcd_code & BIT_MAST_COM1_L)
4 v9 w5 ]+ p% F  J3 [; G  { % S4 A/ V$ e1 B7 A  E
    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);   8 A; ~/ E- p/ o0 Q! ?; P
  } 3 \6 F8 O" D, o& M) f
  else
& O$ d5 ^; q$ m4 s3 `- b  {
' U2 @- m1 j2 g7 ?$ ~6 r! _    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2); & r- \/ d0 g" m% V% E2 u' h+ d9 a8 I
  }
) i# I7 Y6 O9 l3 ?: n2 B6 o9 B   1 H1 e; ?+ P; G
   if(lcd_code & BIT_MAST_COM1_H)   
; Y5 b9 l) v  ~2 {* v  { - M1 V4 c( p% t5 m+ W* a4 A% x8 ?/ Y
    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);   ' N- c0 U5 J* b  L* w9 F
  }
% A8 n% H2 v# F0 S4 L' w  else
$ f4 r  b$ X' k  {
" `( d, [) a' |2 z% T5 z    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1); , y( w- w5 A. h* r2 r& v
  } : `) {9 j2 x. \' C; S
   9 }- I& J, p$ z* }; I
   if(lcd_code & BIT_MAST_COM2_L) + J2 f3 B! X4 t8 \5 w/ `
  {
# W2 I" ]$ n, `: T6 Q" l    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);   
9 A! ?. e2 Z2 y# P0 f9 F  }
! Q2 {; a1 V! U& E& }  else ! Y: }0 N3 D$ C/ M- T" _9 f
  {
" w6 e) D2 o% p- _; O  w    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2);
" Q& C! s$ {  `/ S# }; P, g  } * B1 n9 Y, ]9 \3 m
   
" {$ X* R; r! x+ w6 s   if(lcd_code & BIT_MAST_COM2_H)   
) c8 O: A2 J  S6 R. ~7 l+ l/ m  {
$ J  I0 M# n7 X* P    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);   & w7 y5 u. x9 ~; U1 C* p
  }
0 i3 C3 F" G; `1 B7 x) P* ~6 I9 D  else
) ^" a1 S; E: G# p0 u  { : d1 d) i& q) r" S2 H( c
    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1);
6 X, o5 ?; Q- n2 o  }
# J! D3 @8 |- Q5 M   
8 W. Y% x! A' M; x8 \0 ~5 U   if(lcd_code & BIT_MAST_COM3_L)
2 R: `/ |/ s  ?7 t2 h* S4 `  {
, q9 _/ t1 `# T8 v+ v: |    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);   
' N8 {, X+ W4 g6 p0 e0 a' ?  }
% Y% L2 c+ J3 ^  else - F6 e& z, p! N: g& W8 K
  {
9 p6 k. f' n' p    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2); # j* ?, O+ {& c3 c" o
  }
8 [' G  o8 h0 _7 u8 ~   
9 @+ a/ i/ y8 a: z' {6 L# l2 a   if(lcd_code & BIT_MAST_COM3_H)   
6 R! L& f. W7 a  {   d" @% _: Q7 n1 h2 d9 V& T
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);   4 b, l) V" i4 u& a  k9 ]# v% p* K
  }
6 A3 w/ Y8 y2 a6 H  A, P  else - s+ ]9 P, e; a
  { - w& A! }- m3 P; V
    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);
( y6 ^: e7 d# ?0 m3 G; p# E  }   . p# X) C# q/ |/ z* F
} 1 O/ z. f3 V4 n2 ^
9 v0 ~8 `* G( A* y6 D3 A
void LCD_DispOffOnIndex(uint8index)
4 W( r3 u2 _- b3 O{ 5 e/ N8 H7 {7 F6 X! W. u
   LCD_DispCharOnIndex(LCD_CHAR_OFF,index); $ R/ c/ q- b$ P6 j8 B
}
7 c  I4 v: A+ L) v/ b  \4 B" k, F& }& d
$ k; w3 i( ]* k2 [' Y  I
void LCD_DispOffOnAllIndex(void)
% W3 P  b3 J9 T5 Y{
4 Q8 \6 H! R9 E' A( v    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]
  h. R; i; o$ E+ w) q    { 9 A8 x+ V+ ^7 T5 l
       LCD_DispCharOnIndex(LCD_CHAR_OFF,i); ! S. N3 G/ ^6 B( g6 d' w9 o
    }
6 @/ Q5 k9 _9 b% m% q: g& v. I( f} & x& v* K; H) N/ J
3 c0 o) c+ `- U+ E2 S! L
void LCD_DispUint16(uint16num, uint8 blank) % Y- e+ e, ?! H
{ 0 u, {$ H4 ~, l
    uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0}; ' U  @$ X! T6 j( Q  T1 B, ?
    uint8 bcd_index; # n, U0 J1 a% _& J+ a$ a  f
    uint8 lcd_index;
" U" I! L4 z8 M2 l# A' H   
7 t2 I" V9 c- b* I1 ?4 A, R    uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT);
0 X2 y' \4 T+ A' \: j   
# N* i- M8 }+ C# o8 x    u16_to_bcd_5(num,bcd);
: ~6 z; _4 T$ y7 `, S% @7 G- r   
* i5 ]1 {) Y; h5 `! W: \9 \    bcd_index=index_max_count-1;
/ d" Y' ?  C5 ?6 w& }2 E9 z   
. c7 Z  E2 c+ n! j0 s- t    for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--) , C- y$ ^- y- x5 R
    { $ P1 ?6 Y( v- e; A$ x5 v& r. K1 L* x
      lcd_index=index_max_count-1-bcd_index;   & U* w3 J7 L6 G. P" w7 B" W
      LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index);
$ j6 i( Y" }, s% O$ b    } 3 @( z2 c, Q, h# g9 \7 {5 U
    6 J7 [1 C9 E+ m
     for(;bcd_index!=0xff;bcd_index--) 8 v& i" L% V- x% ]8 b" \7 ^
    {
' p8 s& S2 E0 T8 t0 P      lcd_index=index_max_count-1-bcd_index;   ; G9 r0 l: a! e( F* _; B
      LCD_DispCharOnIndex(bcd[bcd_index],lcd_index);
7 [9 y; w+ G# X1 z" r    }      u; c$ e  T) E9 z' N1 D+ g
}
  J+ b2 L  Z2 j1 [9 f% O$ f% d6 o% K" Z1 O  D8 i. |7 @0 n( z
#include "stm8l15x.h" 0 {. S" a( {- T! Z2 J, q2 n
#include "uni_int.h"
2 j! ^2 s* j, S  `" v( r#include "delay.h" & v5 }. W, e- t1 `0 [, O
#include "periph_lcd.h"
% k6 ^2 }9 ]# ^' @4 J" x* @, b( z) S( i3 [1 h) V6 D) N6 a  E
int main()
' B3 ]# u$ L" X  X{   2 P+ Y( q) s  b6 H" {' M
   LCD_Open();
9 P4 r7 C& h! s6 F2 @$ [5 r    ( _9 q5 }% l9 `3 h5 l( K4 E
   uint16 num=100;
! }3 R% |' `. m$ m1 ^7 A- Z    $ W9 \# ^1 x7 B  {) V+ m9 a
    while(1) 5 [2 ^; ?& X: z6 q4 }
    {         
  U" v& I" h% {' O7 b4 f         num--;
/ l" z( K: Y& o' u8 O! O# t( e4 F         LCD_DispUint16(num,LCD_CHAR_OFF); 3 r  O( G: c# n- }. C
         delay();                             
( T# v$ d. m1 \( R    }
( ?3 ~3 b1 `% L3 x$ w}" }7 d, r, U/ ]; w2 V
[size=11.818181991577148px][size=11.818181991577148px]1 N; e  ~, }; z% W

stm8l15x_io.rar

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

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

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-24 03:47 , Processed in 0.061055 second(s), 36 queries , Gzip On.

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

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

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