找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 55|回复: 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"
* `2 E: \5 O  [+ r2 P3 @+ P& [- B8 L; }. y- [. j( S
lcd_code_item_t LCD_CODE_TAB[]= ' G# `* A' T6 `( x, Q6 ?
{ 8 P" w7 @2 S) f( k5 @2 u6 M. D
  [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,}, * Z! ^, Q7 ]) ]" |/ l1 j
  [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,}, # K% W0 s$ ]0 f. X$ }; l
  [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,}, ; y( \8 ~8 j8 [0 a5 @  Y
  [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,},
8 l3 p4 @+ w8 c) e) `  [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,}, % U3 Q/ @4 @8 A  j. z0 E
  [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 P2 r1 `$ q1 f. {/ s  [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,}, . m. I& x0 ^8 F/ h# e0 h4 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,},
2 o2 ]( w; k5 {. r" @5 N  [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,}, - X# K$ t( |/ G/ ]  k
  [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,}, ; D# ^" F# b" {  o3 g
   9 f$ B4 p1 q. c* w, g" 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,},0 f5 v1 [& o/ V- X/ l
}; * ~4 `; m0 `$ @. e8 C

9 K# s9 X1 Y5 D6 U, Rvoid LCD_Open(void) , z& X% J& a4 D3 d- L
{
/ ]4 J! y. Q/ M/ K$ R2 o$ N9 ?   CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE); 6 v% b5 j  T7 V, X/ t- x3 b
   CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);    % Y% P2 F7 e) n
    LCD_Init(LCD_Prescaler_8,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);% Q+ J3 z: J3 d8 O% j6 `( v2 d# p
    LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); % H% \+ L' }2 r" R. g
   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03); / U. e% z) @0 }+ Q# g  h
: c8 O9 Q  a) H) ^3 X* A8 w
   LCD_ContrastConfig(LCD_Contrast_3V0);            
" e1 n8 D+ u& L" Y* J8 F# ^   LCD_DeadTimeConfig(LCD_DeadTime_0);                 - B( S4 }) [; Q; g! ?
   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);
7 Z" q% w3 F& h0 B* k& k4 p    LCD_Cmd(ENABLE);
! [6 V* C& S& n( k% ~3 l3 U}
) S9 f+ s. f3 E+ v# F+ K. ?6 x0 O( X( R8 X' _
void LCD_DispCharOnIndex(uint8ch, uint8 index) ; Z/ p, N5 L2 x6 @& q) ~5 L5 W, g
{ 2 O: x  m7 F9 G
  if(index>=LCD_INDEX_MAX_COUNT)
9 E/ F  r1 G$ d  { 0 C/ g& M0 B" O; K
    return ; ) G* g9 `1 C# [& P. B( ^% R$ d5 m
  }
# ^5 ?9 X) T% `, M+ O      
! c/ P. w: `2 X% G" o: N  uint8lcd_code=LCD_CODE_TAB[ch].Byte; ; y7 |% ]! k$ W9 [
   4 g. q0 y1 N9 }' ?! x
  if(lcd_code & BIT_MAST_COM0_L)    ) l: {$ J6 s3 X, J6 ?
  {
/ B3 F0 e0 D- ~    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);   , t, [7 _; g/ ^0 O  k- J# v
  }
% o$ e$ C; k% y: X8 m7 V1 C1 h  else
) Y6 h2 x0 h  {) P" y) G" Z  {
8 E" P6 ?' b) c    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2);
7 O7 M, H4 `  N- T  }
% ]; J  N3 Q& [" i3 M& m5 U   
: J2 K, J& H( @6 n' _# C  if(lcd_code & BIT_MAST_COM0_H)   
, P+ M, W2 @, E  {
" T$ o& B9 H* M/ T    bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);   
2 D+ F, j; K9 J! v  }
6 C3 x9 s: {" `% V3 F  else 0 n8 u( T0 d( {4 Z2 @
  { , a% T8 ~! ^" ]7 l% @( P
    bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1); : T3 \1 a2 r; S2 _* \( g" a
  }
. a0 C3 B$ m/ }" V   ! ~6 h" {' B* l5 F
  if(lcd_code & BIT_MAST_COM1_L)
; W8 \$ x# x$ b( Q! o% n" B  {
7 l* d8 W" T* o4 r. ~# p    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);   0 S3 x$ l0 T$ I( K, o3 _: i
  } $ t2 b1 l  ~' e7 Y) M
  else $ F: q  g6 `3 `6 m& C
  {
2 `) `! J- Z- u1 j0 V  S1 v$ u9 f    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2);
1 t# j6 x# b2 F- z/ D5 k  }
* A( B' \: t/ S) R$ k8 |   : a7 O9 @$ V" _+ T0 g- w
   if(lcd_code & BIT_MAST_COM1_H)   . ~/ y) m8 d: G% P4 `) u' r
  {
! U, n+ U/ n1 k% G9 E* M, x    bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);   
% O1 o3 @) |5 a+ w9 z9 Z5 @/ T6 \! H  }
; \, Y4 v) i2 d; w6 J& F+ C  else
7 _1 v% O; M- H& n  ^! m* C* ]- }  {
4 ]1 }! H# @3 m! n- F    bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1);
" h0 x1 d, R& y1 F% V' Q- q! D  }
% b7 t5 C, n/ v9 `6 ^" K1 N   ; |0 a2 Z7 L4 A" X/ D$ m1 R9 Z7 s
   if(lcd_code & BIT_MAST_COM2_L)
3 m4 O3 P, t8 F% h  {
! C: L6 a) S* Q8 N: `2 k# Z! h2 z    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);   ( s% `. Q2 f9 t% K' M/ V
  } ; L% B) F1 X5 c+ z' F0 `
  else
6 r1 y9 Y9 ^1 T+ T- u5 `  { 8 G# n5 L. o0 C% ~  I* s$ C& o
    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2); ' o9 l+ `* u$ ]9 a
  } 2 F, [( d! H. h5 e& r9 v5 G
   . K0 {/ P5 f2 o2 u: n$ }- E
   if(lcd_code & BIT_MAST_COM2_H)   ! L( R: ]. }4 G( F7 u2 ?
  {
) V& R9 ?; n  ^, O5 r  p    bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);   
3 L7 d$ ~) B8 k! h  }
4 j5 J$ m9 T# a# n  else - v' K% R( s4 l  v3 M, ]# L3 b5 \
  {
9 }. C9 ]! h! ~5 X    bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1); 0 Z7 i' t& G5 S3 s( d3 B" w
  } 8 X  ?# d2 \2 c8 }/ C+ o
   
( h2 p- T$ v5 ^% o! o   if(lcd_code & BIT_MAST_COM3_L)
) A% a1 Q/ A( [* N+ r  { * @2 t- F* d6 p+ o6 [, H
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);   
# G4 Y' n& B% f2 F" W) R/ g1 a  }
* G0 l& x4 W; V2 [1 d) s* ?  else
, S2 r% @( v  x. B0 C  {
  {/ B: y3 M* @+ O6 U- y9 |    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2);
0 W: g9 u2 d! r1 ^' R1 Q5 d# {  } 4 z4 \; _, m' W/ [5 }& U: i
   ' z; u# k! s/ h2 a8 f
   if(lcd_code & BIT_MAST_COM3_H)   
  s5 Q% ?9 t6 f% D, e  G$ g  { ( a5 l% W4 q, q& W, g8 L& d  B
    bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);   
' Y8 P/ B; ?9 Z  } , j5 j' S  M  K
  else ( n% K$ o; C& e$ |3 `( r
  {
, Y1 f* u: n8 N/ l. P' O    bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);
( x3 h2 Z8 k3 L0 r  B2 e  }   
' G+ r8 f& a( J# J# x2 O; f1 _& J}
$ A- v5 w- Q: ~5 E6 b0 x: u8 k' P% D
void LCD_DispOffOnIndex(uint8index) , _8 @, _9 u. m
{ ! Z% K" h4 D- F5 g: _2 E; N
   LCD_DispCharOnIndex(LCD_CHAR_OFF,index); " C# ]4 y+ U, x+ F3 i5 Q
}
. R' \; g; \" Z6 z9 D$ p( ]# Q' [* a# Y! [6 U; Z+ c5 e9 V: _# O8 s
( m# l6 }, G! X
void LCD_DispOffOnAllIndex(void) 1 H# b& E5 q8 p7 O) Z- m; T
{
+ ?2 J- b3 |  K4 k/ m    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]
7 U: S4 x8 L1 ~) o3 U& t# F, @7 j    { * F! g% Q* I! A2 }  W1 a
       LCD_DispCharOnIndex(LCD_CHAR_OFF,i);
$ N0 o& K8 L# g, I    }
# V) G7 o6 d3 f. q# S8 f} " v4 P/ \7 |6 A- d! A
0 c* q5 N2 p( l3 {0 u8 A; O6 t
void LCD_DispUint16(uint16num, uint8 blank) 0 i: ?8 X- }3 d1 J
{ / U$ K! i0 D& M2 {
    uint8 bcd[__MAX(5,LCD_INDEX_MAX_COUNT)]={0};
  x6 i  s  I. \9 Y: H    uint8 bcd_index;
3 [9 T; Y8 }! X: C; i0 N7 e' l    uint8 lcd_index;
, |4 }9 N, P+ ?; I9 R- x- _% N   
/ ^$ |: I, O9 z; T* q9 Q9 k    uint8 index_max_count=__MAX(5,LCD_INDEX_MAX_COUNT); 5 d; Z, A6 Y1 [
    / b7 B; v: x/ @7 {/ f
    u16_to_bcd_5(num,bcd); & O$ h& b4 [6 D+ v4 N, |
   
$ {9 c- u; [* k! X& V    bcd_index=index_max_count-1; 7 X2 {8 b4 Z+ i! a0 m; p% s6 d
    , f  ]! w- Z1 g" u+ {
    for(;(bcd[bcd_index]==0)&&(bcd_index!=0);bcd_index--)
5 R, Z) x7 I' D4 S. B  N    {
# E- O( `; x% X, q9 s      lcd_index=index_max_count-1-bcd_index;   
1 I; }9 g: j! {, W& P4 R; M      LCD_DispCharOnIndex(LCD_CHAR_OFF,lcd_index);
6 u, M, ~9 Y0 Z1 ?9 \: n1 C: Q2 m    } ' }& ^; J6 y( x! C
   
8 H4 g; ~; o, i7 i     for(;bcd_index!=0xff;bcd_index--) + V  Z  L2 W6 s& l) ~& N% d
    {
6 \# Z  \$ u. G6 d( b8 s1 {+ |. X      lcd_index=index_max_count-1-bcd_index;   1 q4 p+ ~7 A4 Z% {' F2 ~! Z% {
      LCD_DispCharOnIndex(bcd[bcd_index],lcd_index);
4 o8 Y  l! z6 c/ g" O+ Y    }    7 v1 I' a6 T2 m5 `
} 2 l; @  |9 J0 m$ o+ L1 d4 P  m
( E8 D* T/ D. i. Z
#include "stm8l15x.h"
1 V" Q& U- n# i$ B" s. i0 P#include "uni_int.h" / \, S# `) M/ f( a  y) Z
#include "delay.h"
# a% u" {1 O1 [2 Z' f* I- E#include "periph_lcd.h"
) m! K& D2 z1 u$ ?/ r
+ a0 _; H  j8 a% s! n0 tint main()
. L( l, z; o" N+ q3 G; H{   
- w7 i% h' k* h8 f# @$ s   LCD_Open(); ! I$ W5 g; i) k$ S" y  y
    8 Z2 e# r/ W: {9 a& P- I# `
   uint16 num=100; + G: p% }. \" s. ?$ y
   
; }+ h& J4 K: E3 n: p9 F    while(1) ; e1 F. M" }, f" F  U- U8 ~
    {         
) D& n  j+ s3 ^* @4 V# n- a         num--; 8 i2 d& g9 L) {7 c
         LCD_DispUint16(num,LCD_CHAR_OFF);
5 J# Y) J. i/ A         delay();                             
3 j( w; s7 [5 D; P1 y) `    }
  `% e# }" ^# `}
3 T) |% p' t6 w5 _  h  }2 ~4 i2 v) J[size=11.818181991577148px][size=11.818181991577148px]
8 O; F: y  z* o1 y4 N- s0 D

stm8l15x_io.rar

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

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

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-2-19 07:10 , Processed in 0.056586 second(s), 35 queries , Gzip On.

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

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

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