你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103V NOKIA5110液晶

[复制链接]
STMCU小助手 发布时间:2023-1-7 11:59
4 a* R3 `/ s( u5 i' u6 m  s! B/ k
! M' k% b& S7 U5 W0 z
Nokia_5110.h头文件
<span]Nokia_5110.h头文件
<span]
; a/ O- {! z: ?4 v
#ifndef]#ifndef]# M1 M& b1 t# B
#include"HZ_12x12_pixel.h"
7 ^: K8 j/ v* W, B#include"english_6x8_pixel.h"
+ D( h; k: {- [/ G; V#define uchar unsigned char- M' _, |% N1 S
#define uint unsigned int3 `7 Q: R4 [% {& q# N8 r4 }2 I
#define ulong unsigned long
# k0 h% c& u" P2 B2 C# M( Y* B#define true 16 E6 `+ t" m: z6 R/ |
#define flase 0
/////////////引脚定义//////////////
<span]/////////////引脚定义//////////////
<span]void Delay_1uS(void);
8 |$ }" e7 u" e% y) xvoid LCD_Init(void);
& _, O1 r% ]( N4 ^  Vvoid LCD_set_XY(unsigned char X, unsigned char Y);; J) _* A3 p' w- s3 T2 I
/*-----------------------------------------------------------------------
4 C6 }- C4 a3 k7 ~7 nLCD_write_english_String  : 英文字符串显示函数
输入参数:*s]输入参数:*s]-----------------------------------------------------------------------*/
, v  M, J  T% ?+ X$ C/ z3 L* tvoid LCD_write_english_string(unsigned char X,unsigned char Y,char *s);0 w. `/ }, r( v4 _! {+ r) `3 ]
void TestLCD_Nokia5110(void);
unsigned]unsigned]" D2 b7 s+ d/ M! m
void displayonechar1212(uchar row,uchar page,uchar dd); //显示 12*12 点阵
' U0 `2 e; c& Xvoid write_byte(uchar dd,uchar a); //写数据或指令 0:指令 1:数据
#define]#define]#define c_LCD_Max_Dot_X 84
4 u9 a$ J- d7 ~) t#define c_LCD_Max_Dot_Y 48
0 z+ b# I! C. G6 y) P+ d
#define]
1 H! B1 e6 }; X, R" `# ~* U#define]
# y0 A1 j# [) b8 J# f* Qvoid delay_1us(void)                 //1us延时函数4 \; U6 K: X( r- R8 N; }
  {" \0 d- A+ f" i6 N( J2 g: m
   unsigned int i;
! l# S# f1 n2 |& m) _8 ~3 \  for(i=0;i<1000;i++);
0 u1 V  K# _1 F) f7 Q- ^2 t% D  }
]]/*****************************************************************/
/*-----------------------------------------------------------------------$ Z8 ?4 W' S/ ^% Y
LCD_write_byte]/*-----------------------------------------------------------------------5 y, d& B! {# v+ w+ t
LCD_write_byte]输入参数:data    :写入的数据;5 _4 t5 T! [! |
          command :写数据/命令选择;
-----------------------------------------------------------------------*/
# o4 }9 d/ |' H, u) {8 i; H2 |void]-----------------------------------------------------------------------*/5 x: q. h4 k$ f3 j' w* S
void]    //SCE = 0;
- H* T; F" N( X- B    //DC = 0;) ~3 I1 |4 F+ R0 X) r' o
    GPIO_ResetBits(GPIOD, NOKIA_SCE);" j' U- U( w: t) r" o
    GPIO_ResetBits(GPIOD, NOKIA_DC);
]]   //SCE = 1;) G# `* e: s0 N2 x' T
         GPIO_SetBits(GPIOD, NOKIA_SCE);" p* @/ k" f  u* O5 b9 j
}
/*-----------------------------------------------------------------------2 D! [  Z$ o* Q5 A
LCD_write_byte]/*-----------------------------------------------------------------------  F# b, Z  C& I) ^* z6 H" A
LCD_write_byte]输入参数:data    :写入的数据;& U, J0 B4 p2 B7 n& O2 l  n+ m
          command :写数据/命令选择;-------------------------*/+ o8 ~! c. P+ ~0 ~6 ~  J! f
void LCD_write_Data(unsigned char ucWriteData)$ |4 `' g5 _. C8 D: e2 o; m
{" u& e5 P7 N3 U: w
    unsigned char uci;
]] for(uci=0;uci<8;uci++). ]" p2 m2 z9 f6 J2 E/ u, S. L
{/ h" C- ^1 @; E* \4 w. T
  if(ucWriteData & 0x80); ^) F# g/ W# X* c: t; }
  {; }2 n' H, ?! X; f
   //SDIN = 1;
7 B: z. O0 W1 ?7 \' ~* T! L1 h                        GPIO_SetBits(GPIOD, NOKIA_SDIN);" a! m1 w3 G! e1 R. W- |; J
    }
1 s% P" x% q. B! R  X  else
8 L1 l8 N  T' u5 O2 z" G$ `* g  {
  t! w. j* M, k! b5 g0 o   //SDIN = 0;. R. M2 j: k) f& U3 R$ [5 T3 C
                        GPIO_ResetBits(GPIOD, NOKIA_SDIN);
' R! z1 k# A3 o+ i    }* w% ?' [- V; f2 t
  //SCLK = 0;% J# W; k2 D, n- [4 D( b
                GPIO_ResetBits(GPIOD, NOKIA_SCLK);7 k4 O$ E8 h1 i+ G/ U& ?5 ~6 h
  ucWriteData = ucWriteData << 1;
* _! H+ Y( l! v. w  //SCLK = 1;3 a: J& m- x: f$ b9 h' P
                 GPIO_SetBits(GPIOD, NOKIA_SCLK);* y% _: {8 \" N0 R! i+ h
}
]]}
3 M; V0 ]* }+ a; {/*-----------------------------------------------------------------------
' J/ c! K8 |) TLCD_set_XY        : 设置LCD坐标函数
输入参数:X]输入参数:X]5 N: [; O# F( R/ [' g
void setadd(unsigned char a,unsigned char d)//设定地址
  S9 U& H% R2 y/ ?: I{
$ a( E0 P4 n4 `: n4 zwrite_byte((a|0x80),0);
/ z, J9 }. v+ {2 j' }write_byte((d|0x40),0);. m, V4 v9 u. t
}
% E" c- f) I( |3 M, D; F9 F/*-----------------------------------------------------------------------
; c. U3 r2 H1 q3 YLCD_clear         : LCD清屏函数
-----------------------------------------------------------------------*/
! N1 Z# d% u2 s# I9 ]! Dvoid]-----------------------------------------------------------------------*/
7 H4 R! J! E3 Yvoid]// LCD_write_CMD(0x0c);
8 K8 Y! O; T# P6 G/ V// LCD_write_CMD(0x80);
]]}
2 S4 f$ p$ O1 n1 M" G' R) g
void]
' P7 q- g% G: M0 L: L, @3 Zvoid]
. t& D! n1 H+ e! J  // 产生一个让LCD复位的低电平脉冲! S! A, J# i* ?0 q  e% c
//RST = 0;5 T, g# |, D7 e6 l# e! r
        GPIO_ResetBits(GPIOD, NOKIA_RST);
" B8 Y* i  P: @$ Q/ C9 f, e2 d    ( C1 U. E' T8 Q
    delay_1us();0 Y: U8 X& I' _8 K- o
    //RST = 1;/ S9 T$ z: z3 w4 Q) s+ @% F# N
        GPIO_SetBits(GPIOD, NOKIA_RST);
4 S2 w- p6 C! J) ^+ F' I8 s% a* m    //SCE = 0;
: G1 n7 @, s0 R' ?* L. t    //DC = 0;7 Q! `: U2 a+ w3 J4 y
     GPIO_ResetBits(GPIOD, NOKIA_SCE);. o% H- b! n: b4 o
     GPIO_ResetBits(GPIOD, NOKIA_DC);
]]    LCD_write_CMD(0x21); // 使用扩展命令设置LCD模式,PD=0,V=0,H=11 w, M# D# c; s( G9 V0 y
    LCD_write_CMD(0xc0); // 设置偏置电压, E8 R' N! L6 ?
    LCD_write_CMD(0x06); // 温度校正; |$ J1 M6 X! t' e$ U
    LCD_write_CMD(0x13); // 1:48
]]  //  LCD_write_CMD(Nokia5110_DispMode_Reverse);
" I. r3 t" C1 Q9 g; B' Y5 C) ^           // 关闭LCD
]]6 \) x7 ]5 e( U$ a3 v
/*-----------------------------------------------------------------------* ~1 h! f5 x/ i8 C- l
LCD_write_char    : 显示英文字符
输入参数:c]输入参数:c]    c -= 32;
]]void write_byte(uchar dd,uchar a)//写一字节 0:指令 1:数据
' ^% y! T* n0 I* G9 f{
8 L4 {" o' N- }- G, Dchar i;
% x$ J1 p% B) Q- R//SCE=0;  G+ c. M" [7 o
//DC=a;
' m+ v5 ?& L+ A( u; SGPIO_ResetBits(GPIOD, NOKIA_SCE);/ [( o. ^( v- u
   if(a==0)GPIO_ResetBits(GPIOD, NOKIA_DC);
  M4 q# o% P  q2 n; Y   if(a==1)GPIO_SetBits(GPIOD, NOKIA_DC);        
3 ~9 U* q& _6 ufor(i=0;i<8;i++)
- u3 H7 y) k3 f1 M/ i) \) J- b{
4 P0 E2 x# h3 q  z" ]if(dd&mask_table)
% t6 c9 F& I( p2 g% i% H' B" ~; c//SDIN=1;
# `" B9 F. L! K1 [        GPIO_SetBits(GPIOD, NOKIA_SDIN);
/ v% H2 p3 j6 L7 m# M: i. }else
8 p& ?; D3 O8 \//SDIN=0;
7 b* S  m1 k( t; \2 T! f- {1 b//SCLK=0;- Y( o/ ?& T# v
//SCLK=1;
* o9 ?+ C! F& w$ O& n        GPIO_ResetBits(GPIOD, NOKIA_SDIN);1 y* f! b& b) e0 G/ p. _
        GPIO_ResetBits(GPIOD, NOKIA_SCLK);
+ K9 g. ]% j" f" {0 U+ w0 c        GPIO_SetBits(GPIOD, NOKIA_SCLK);
]]. `+ c: S0 d" p* l9 ?: ?/ b0 L
/*-----------------------------------------------------------------------. M9 D: b/ P( e9 ^/ b& G
LCD_write_english_String  : 英文字符串显示函数
输入参数:*s]输入参数:*s]-----------------------------------------------------------------------*/
* b* G% w4 g1 }9 j+ E: cvoid LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
% C9 {) O$ y; [+ v% `! u7 ~9 l  W{: p% C. J% y+ J3 Z# [9 m
    LCD_set_XY(X,Y);
2 }  [0 }! F! v    while (*s)
- U6 y. h/ Z- f! v    {& t9 ~' K6 ~5 q3 ~  R: K
   LCD_write_char(*s);/ [- L: h( C' C2 v2 r
   s++;
2 \& K" Y, O/ g6 L" e   }- N5 p# Q7 n$ Y( j. d+ t
}) _! w2 I0 J+ J8 S- a+ s! R
//****************************************************/" f2 G1 i: O% K# s/ a
//显示12(宽)*12(高)点阵列汉字
/ j; n$ {* \2 d2 z  |2 Wvoid displayonechar1212(uchar row, uchar page,uchar dd) //row:列 page:页 dd:字符/ h0 l% W* B+ J$ c# C
{$ f7 c: p$ T  ~, [
uchar row_i,xx,num=0;' m9 ^) k4 K: l
for(xx=0;xx<2;xx++)
0 d& q8 L* x# w5 ]6 O! }{
, M( `5 U$ H. z6 s) osetadd(row,page);// 列,页# ^1 B0 ?4 M4 V8 g  k: a2 N! b6 E/ r
for(row_i=num; row_i<num+12;row_i++) write_byte(hzk1212[dd][row_i],1);  I( l8 D4 ]$ y8 ~8 D
num=num+12;page++;- d! @8 _* L0 F" [- ~& p$ B: _6 L' p
}$ J: F; T" u$ ?0 O
}
]]
#endif
# K5 B, }5 o0 O6 H
转载自:eefocus1 `# d% O4 _1 v* m' G
赞 收藏 评论0 发布时间:2023-1-7 11:59

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版