找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 51|回复: 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"
9 }+ K" W( r5 s6 v# a1 ]' k2 }, b
9 x9 L% F0 [8 B" r; O$ V! Vlcd_code_item_t LCD_CODE_TAB[]=
3 _' P5 V  n. y{ ( A5 t" q6 t8 u9 l3 W- z% 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,}, 5 S( b% A0 h: _. ~7 c5 b8 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,}, 0 A. l0 {+ |3 i# H/ x' Z- |
  [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,}, - \* P5 G5 w2 k  M0 O% O+ E  H
  [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,},
9 I+ ]% L, C4 e2 J! ^1 a  [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,},
3 t% X7 @2 d( {) h. `: u& k5 _  [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,},
- x" C! _% v; h. O1 s% t- s" Q+ M" T  [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,},
# u/ |: E: |6 T+ @: w- g  [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- y6 K& |; X7 q7 Q2 v/ 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,}, " P" V1 e4 I% f- B) @9 D0 s
  [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,}, & M" y' z1 j  Q( V( [2 L
   
9 d1 q$ A# A: r  [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,},
7 `3 D& B  ~  W3 Q+ h, k2 ]}; + [, a1 Z" j+ O$ F+ F
) N7 j$ [, ]; }$ T3 z
void LCD_Open(void) ) l) M4 R' x# q0 @
{
5 g7 f7 b$ q# F4 K2 S   CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE);
2 }1 [8 F3 l8 L% Y2 u- J   CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);   
3 q/ X, M& N( X$ s3 I    LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);
6 c7 E/ ?5 z3 Y4 R9 J; b    LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); , d4 d) Q+ `3 t3 e2 i( o. |, Q
   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); ' J% T+ l5 r9 w6 D. Z

1 n* \0 K! u8 @   LCD_ContrastConfig(LCD_Contrast_3V0);            
, p8 q5 o! q5 w/ A. M3 r- ]9 h, d   LCD_DeadTimeConfig(LCD_DeadTime_0);                 ( k4 J  n( T! B7 d9 b; B* M" Y% D
   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7); 7 q/ W/ \" {5 c! i4 L" W4 ?/ w6 Y
    LCD_Cmd(ENABLE); 1 E/ C5 I! h( v  e& N
}
6 g2 [6 K) o( S- P+ Q' C9 A! Q* x6 |7 d+ b' W
void LCD_DispCharOnIndex(uint8ch, uint8 index) 0 j! B1 N1 v. N" ~7 q9 t4 _+ z1 I
{ . d7 H9 D8 C, h" X4 H. ~
  if(index>=LCD_INDEX_MAX_COUNT)
' j/ d: ~8 t' u% H# }  U  {
6 ]' a* Q9 H( S9 B$ K: s    return ;
% g* }" _2 P/ D; A. v/ P2 }  } 5 P- J$ B7 ]* C
      
& s/ l* `2 g0 s1 m6 M! a& x5 K  uint8lcd_code=LCD_CODE_TAB[ch].Byte;
% D' u' R% n+ |0 H0 l/ y   
) g7 k, j/ v$ O' s. R  if(lcd_code & BIT_MAST_COM0_L)   
9 N7 Q4 ^5 n- y1 p4 V  { ( K; j8 o' K7 D& \. B- x
    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);   
5 @8 W2 E: ~2 Z  } 5 X" N7 p3 G, L! [: i
  else
  H& J7 D/ A9 q% `" R2 ^  {
1 q% x. A: _+ y  f. N    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2); ' O2 t8 D8 T% _" {) x' h. a& Z
  } & R9 i" O" z7 Y' T( F0 B
   ! q) ]9 z( A! q. T  q: A
  if(lcd_code & BIT_MAST_COM0_H)   3 F  D5 b1 h! K' H8 O
  {
# U9 j0 k9 N) U    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);   
& o2 P( j* m" }4 H% e  } ( Z2 n, i; F% c# g7 T
  else
( _) w( c1 ?& ?  {
+ F# [3 M- W, }    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1); 6 G0 t# b) H7 ]+ H+ Y2 Q
  }
5 L2 r. Z- D/ y. V   
& z, t' Y8 q2 k0 v1 F# h  if(lcd_code & BIT_MAST_COM1_L) 6 o0 d. A. N4 x1 l% E" u( `$ i9 h1 |
  {
$ n% B5 m" I# h' n* z& s$ V    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);   $ o. W' s( X3 Y0 O
  } + K- ^4 w3 ~. r( j5 i/ v
  else
/ j3 O9 l" s0 P& ^5 ^  {   r) e% [/ I3 F& @& w3 s
    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2);
+ q" Q! \/ h% O: R3 z+ r  }
0 `3 `" E% j; ]* O: J   ) U7 w7 V1 F8 |, k- z
   if(lcd_code & BIT_MAST_COM1_H)   
6 o( N& {4 a) A% ?2 X3 D  {
5 ~. E2 S8 {% J+ m5 }1 j    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);   
3 f2 e. g& ?: ^6 g: F: c  } / ^7 {7 s- n( b) i6 y& O: L
  else
0 |1 X0 V3 g0 |: g  {
, H* P7 A' ?! ?7 D' g7 h    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1); 8 C( _3 Z7 k4 n4 S
  } ' U* o& V: S3 t7 i# Z4 j
   ' k2 ?+ P. a, l/ l6 b
   if(lcd_code & BIT_MAST_COM2_L) ' ~; F" R1 d0 w) ^3 ?, q! U, Q/ h& W& V
  {
, q( c! W/ O9 R- h    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);   
: D2 w* W2 D: v! Z* [" M  }
- I" r" `2 O: S- J7 o  else % a, Z+ C4 |9 ^* |8 M: ~
  { ! |3 j; `2 }$ C& I& m: K) H
    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); 1 K5 m( q7 V" p4 N) i
  }
* e8 u- z; b: u. a$ o   
" ^3 c; K1 J: }; T   if(lcd_code & BIT_MAST_COM2_H)   
! o1 i4 o3 @5 o+ a  {
' Z6 C; [: A1 i2 C" r) y    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);   
3 G9 B1 U) [" k  }
$ f0 O6 f, `2 p: {1 u6 @  else 5 z+ Z& }2 s+ N. g& u1 ]) x8 e" H6 {3 I
  {
1 C! T" p0 G6 `0 C+ c% ?4 E3 o+ Y    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1);
: Z0 Y/ W: b& t7 Z5 A- j  } , X4 r2 V9 k1 L3 d, `
   
! h8 @7 D: }5 p* b5 i0 H$ }& S   if(lcd_code & BIT_MAST_COM3_L)
# F0 L- A& R, m8 A  { ' a2 f, ]7 ~) c: F7 P
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);   ; c8 t, o9 L3 [) |  F! O0 ^
  } & t2 M$ s, t$ n
  else & f8 d9 c1 Z$ n+ l1 ^/ @) [
  {
" I' X8 K6 G; W4 g6 _    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2);
+ O) c! {5 ]' ~( O. s9 F  } 9 a4 u3 {9 b; E* d7 a, k7 b6 \
   6 o" d- b4 S# i3 ~+ @. C% n% H' @
   if(lcd_code & BIT_MAST_COM3_H)   
, a0 k/ t- f3 B; ~5 o  { ) N& L! I: O) [9 p% w
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);   
) l' c) i; h9 x" t0 g7 z2 O: J  } & H! C* }$ |. r: f. O$ o; O
  else
8 j& S. F8 n7 V$ t" B  { 2 _! k/ J7 n: t9 y, F
    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1); 5 X4 D2 s9 X7 O5 Y
  }   . H, g& d" M1 y
}
2 p) X4 F7 m# o3 y3 c2 n1 I
7 t2 q" }. A5 \. mvoid LCD_DispOffOnIndex(uint8index)
% T1 x3 l) S2 u7 z; k{ ( W  m. ^4 ^+ c( x/ B3 x( K: g
   LCD_DispCharOnIndex(LCD_CHAR_OFF,index); % H6 [2 u( a) X. |- y# r$ l
} 4 u; Z+ Y5 \' U% R7 s+ c

) s/ s) z( i- n9 `; Z
; y+ O9 y$ _* O6 v- ~. {7 f7 y% qvoid LCD_DispOffOnAllIndex(void) - @& {; v; B  k* M
{ 9 R  M8 _6 ~! s
    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]
+ Q' m+ b! _+ v# c, ?) A3 t    {   {" f) {' ~3 t2 ~5 n" Y
       LCD_DispCharOnIndex(LCD_CHAR_OFF,i); ; f9 k2 w' U8 N7 g! N! y7 }) V
    } 3 R. X2 }, h4 e5 k8 w8 i
}
8 g3 K& U2 A' r4 m$ t- [) ^
: R! m, `; s8 ?; Q. r7 m- Q; Cvoid LCD_DispUint16(uint16num, uint8 blank)
6 r* c/ Q) `0 c8 C! j- {) o{
4 x& m( l5 P& o1 e8 \  B; D& h    uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0};
# x" _1 J3 |6 @( J1 k    uint8 bcd_index;
0 k  A7 @9 D1 q1 F' W    uint8 lcd_index; & [& e; N  s6 B9 u; r3 i
    $ w/ B+ x9 R9 w* Q/ G% ]1 Q5 l
    uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT);
  O4 j4 Y1 ?. L# V: p( J    ( l- L3 L1 `7 K2 V/ U) C0 M, e0 g
    u16_to_bcd_5(num,bcd); ' Y% Z3 s0 }4 ?
   
0 P9 i2 q) S2 J* \& p5 ]  ?    bcd_index=index_max_count-1; 1 k+ N% t1 d6 R. r- F& S) l* b
   
" u0 a3 C" E) f* x- W    for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--)
* e( Y) \1 ?1 W- d6 U. R    { 8 K0 j" n0 Z  \) S7 b
      lcd_index=index_max_count-1-bcd_index;   - C$ Z# `% c/ G* R9 y
      LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index);
& e' u, r' G5 o5 f    } 6 Y- \; s% L5 C4 {/ e
    / O- s' J( I7 ^# N, }0 r
     for(;bcd_index!=0xff;bcd_index--)
" p6 Z* m3 e3 y* @    { * c8 F, K( s  ?
      lcd_index=index_max_count-1-bcd_index;   
0 }1 L' B) c9 |, ]  o& Y      LCD_DispCharOnIndex(bcd[bcd_index],lcd_index);
: B/ i( _) v/ G' n4 B, d    }   
0 L( ]8 [7 }! M( t( z" |0 P}
. W% U( u( {$ b$ r& N3 H# D& m8 w3 j. W8 [6 r
#include "stm8l15x.h" 3 }( D+ E6 Q) _" V  e
#include "uni_int.h"
! S+ l  Q, V) u#include "delay.h" ; l' b1 l4 X6 |+ a2 r! h
#include "periph_lcd.h"
1 d2 F# j& b& K! X, E1 e: F
6 |3 ?  C8 v# m6 M. m$ }( ~int main() 9 c5 A2 v' z5 R" R. {" X
{   
: |2 w1 U" T8 Z5 G7 ~# h* [* `   LCD_Open(); 1 D2 o. [0 Y" X& Z
    4 W3 w: z7 u3 n
   uint16 num=100;   g  t) l7 T, N
   
% U5 R; {! n$ A3 y7 T1 C    while(1) 6 r& Q1 N8 O" [0 g3 h
    {         
. d  t' A/ o% i: Q5 u/ r         num--; " W5 ]! ?$ K8 Z0 q/ F6 i8 M
         LCD_DispUint16(num,LCD_CHAR_OFF);
  l' ?6 t, J: u0 r% \9 O         delay();                             2 ?/ s/ E7 H6 n) \
    }
: {4 M; Y; S; l2 k2 j4 n9 ?3 D4 e0 F}+ \, Q6 T1 x- _
[size=11.818181991577148px][size=11.818181991577148px]
" c! O' B7 ^, x: P! L/ i

stm8l15x_io.rar

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

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

本版积分规则

关闭

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

巢课

技术风云榜

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

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

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

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

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