请选择 进入手机版 | 继续访问电脑版

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

STM32F103V NOKIA5110液晶

[复制链接]
STMCU小助手 发布时间:2023-1-7 11:59

0 f: U* [- n& J0 h. z& J( F0 k8 Y/ s# [- V
Nokia_5110.h头文件
<span]Nokia_5110.h头文件
<span]

& `# X$ f' ]/ g6 O
#ifndef]#ifndef]
. A; w3 d& `; H) f2 M  N/ Q9 i( x9 ^#include"HZ_12x12_pixel.h", O& ^9 J& h5 g# o& @' r: [
#include"english_6x8_pixel.h"
/ ~) w' E7 |( f#define uchar unsigned char
. t% U0 K$ G. ?0 ^  S; S+ R#define uint unsigned int
/ E6 E  v/ |. U8 N+ H) g#define ulong unsigned long$ E# R2 M% I7 U* w& Y
#define true 1/ T+ J6 s3 w. u. g; l4 h; _
#define flase 0
/////////////引脚定义//////////////
<span]/////////////引脚定义//////////////
<span]void Delay_1uS(void);
+ C5 K7 _, q  Q9 r, s. S5 T( }void LCD_Init(void);; ~2 O7 y* v- n) F/ a
void LCD_set_XY(unsigned char X, unsigned char Y);3 G3 q  a. f4 V. ^% j
/*-----------------------------------------------------------------------
2 {8 ^9 j' A, @$ wLCD_write_english_String  : 英文字符串显示函数
输入参数:*s]输入参数:*s]-----------------------------------------------------------------------*/0 _  u0 n# t- U6 M# h6 \5 V
void LCD_write_english_string(unsigned char X,unsigned char Y,char *s);) y' ^+ Z9 A+ g* t0 }
void TestLCD_Nokia5110(void);
unsigned]unsigned]
: F0 l: ^3 V! f/ Evoid displayonechar1212(uchar row,uchar page,uchar dd); //显示 12*12 点阵2 C- o# A& R4 @2 [$ D1 ^6 P
void write_byte(uchar dd,uchar a); //写数据或指令 0:指令 1:数据
#define]#define]#define c_LCD_Max_Dot_X 84
" r* l9 {" F# ^/ S; k; k' e#define c_LCD_Max_Dot_Y 48
% z& g% @, j/ E5 `
#define]
+ M3 N& K' f: k0 N4 d#define], `% u. ?7 y9 j" ^* t$ X! d
void delay_1us(void)                 //1us延时函数7 T  l0 ?; s. j" o
  {: e7 ?4 r, f4 `0 z
   unsigned int i;" q+ ]6 {  }8 y$ w1 R% C4 e
  for(i=0;i<1000;i++);
( K; r# j9 Q6 J  }
]]/*****************************************************************/
/*-----------------------------------------------------------------------
. E+ f0 w+ l2 Q! j1 O- I! p' RLCD_write_byte]/*-----------------------------------------------------------------------
# B- A; {  |* s6 Y% h; hLCD_write_byte]输入参数:data    :写入的数据;
8 l6 T9 e4 z* v5 ~0 S5 f          command :写数据/命令选择;
-----------------------------------------------------------------------*/
- I; ]3 |( I; L- Y/ y, N' Yvoid]-----------------------------------------------------------------------*/) k! J8 @* u4 T# W8 }6 L: ]2 C
void]    //SCE = 0;- I& _* z! Y/ t- m
    //DC = 0;$ h1 I" T/ I( i# N: q1 X
    GPIO_ResetBits(GPIOD, NOKIA_SCE);. a7 l1 r& b% R8 z! c* d
    GPIO_ResetBits(GPIOD, NOKIA_DC);
]]   //SCE = 1;+ G: _2 z/ p7 F/ y
         GPIO_SetBits(GPIOD, NOKIA_SCE);* @" D) X' B  F6 _# Q3 a  u9 Q' e
}
/*-----------------------------------------------------------------------
4 f9 G, q; U$ y( PLCD_write_byte]/*-----------------------------------------------------------------------8 s4 j- o% v; @2 X; S: P0 S( P
LCD_write_byte]输入参数:data    :写入的数据;8 u/ C( @1 j5 X# u$ N
          command :写数据/命令选择;-------------------------*/! b* r) V+ b7 Y: k. B+ `9 K
void LCD_write_Data(unsigned char ucWriteData)' f$ O* p# l4 U0 Q1 k1 h
{! {/ g( |* W& m1 k5 U$ A: X6 Y
    unsigned char uci;
]] for(uci=0;uci<8;uci++)
9 Z. C# k+ A; `9 _! z/ m4 Z {
9 _( s7 _! b! N; }. O  if(ucWriteData & 0x80)
. A% j" I- V3 h" v5 P7 d  {
* G& M6 q% ^$ W3 [1 N6 t/ p   //SDIN = 1;2 K8 t( e# F$ [$ B; U
                        GPIO_SetBits(GPIOD, NOKIA_SDIN);; [& {" e' A  e! Q( y6 M
    }
0 l# S1 Q0 _* Q( v  else
. J7 j* T( a" r& v' U. ]  {1 N' T2 n: D. I) M
   //SDIN = 0;
5 R# O$ m& ]8 i$ i" c                        GPIO_ResetBits(GPIOD, NOKIA_SDIN);
$ \* g' j, L. p* C& f9 Y4 B' ?    }" Q' @1 G& z/ L) ^% R
  //SCLK = 0;/ Q# g- s7 \! i
                GPIO_ResetBits(GPIOD, NOKIA_SCLK);; {" Z3 W  e" k2 E6 ]
  ucWriteData = ucWriteData << 1;
; |/ y) k" L6 U8 r9 T3 a  //SCLK = 1;
7 v5 v5 Y6 Y- f  |* f                 GPIO_SetBits(GPIOD, NOKIA_SCLK);
* k+ _# P9 n6 I: j }
]]}1 a( Y) h6 X: t3 B  e' D
/*-----------------------------------------------------------------------
* l$ n) d2 F* A# b2 `7 |3 TLCD_set_XY        : 设置LCD坐标函数
输入参数:X]输入参数:X]% D8 J4 h  V& ?" Q( K& s' E& @
void setadd(unsigned char a,unsigned char d)//设定地址
1 i  H& A& W0 n* m$ K; n{9 z* w. ]1 o. v9 a0 a
write_byte((a|0x80),0);
  D! S( K$ n' I- _+ Uwrite_byte((d|0x40),0);
2 U0 l, {! w6 y}( L6 {$ h! E# a
/*-----------------------------------------------------------------------
* F- {+ ~/ s+ w4 KLCD_clear         : LCD清屏函数
-----------------------------------------------------------------------*/2 h/ y  ~/ i6 m) V" @: O8 E1 X6 K
void]-----------------------------------------------------------------------*/
! l4 t' l- {5 ?5 U6 Ovoid]// LCD_write_CMD(0x0c);
9 M4 ~9 f  q& t% f! L- j& a// LCD_write_CMD(0x80);
]]}
. w9 W$ p: f5 O3 u3 ?3 j
void]" t1 d! C1 v0 G. O% q4 T
void]9 d7 [" w+ Q0 [: Z0 Q
  // 产生一个让LCD复位的低电平脉冲/ x8 r0 X1 l: D% c
//RST = 0;
5 Y1 B" W3 o! |& G2 H9 E        GPIO_ResetBits(GPIOD, NOKIA_RST);; i& M% }5 {" n, }3 z  e  U
   
: {3 f6 k4 ~  c/ \- p. E    delay_1us();4 c/ d, `. @) `6 k6 K' m7 R6 C
    //RST = 1;. d3 i) X( \% P6 W
        GPIO_SetBits(GPIOD, NOKIA_RST);
+ S3 b$ w- x& @( G    //SCE = 0;
& R' B" o" L" k  x    //DC = 0;
+ f, q; S+ t! @( k3 G/ E2 J     GPIO_ResetBits(GPIOD, NOKIA_SCE);
, X4 [4 w# P$ ^1 @/ W! o( }. Q9 N     GPIO_ResetBits(GPIOD, NOKIA_DC);
]]    LCD_write_CMD(0x21); // 使用扩展命令设置LCD模式,PD=0,V=0,H=1
  U) B6 n9 a$ ~& P: Y    LCD_write_CMD(0xc0); // 设置偏置电压
5 F; P% z+ I: h& \; V3 G; f    LCD_write_CMD(0x06); // 温度校正! F1 a1 _$ A1 q5 u
    LCD_write_CMD(0x13); // 1:48
]]  //  LCD_write_CMD(Nokia5110_DispMode_Reverse);! t6 ?3 j7 k  D1 [0 e2 J
           // 关闭LCD
]]9 [5 t; Z6 V; A
/*-----------------------------------------------------------------------4 \8 S# @- g! n# v& K( X6 }$ p
LCD_write_char    : 显示英文字符
输入参数:c]输入参数:c]    c -= 32;
]]void write_byte(uchar dd,uchar a)//写一字节 0:指令 1:数据4 V" A4 c; M. P: Q3 V  ~
{
9 ^# d) D% X( S% S  H3 {- L( kchar i;6 F; }) v! w/ B$ K+ w( A- H0 ]) }
//SCE=0;2 X% U4 O7 o, S* A
//DC=a;
3 Y  J5 y, x: \- N# mGPIO_ResetBits(GPIOD, NOKIA_SCE);
+ s# P7 @& H/ `9 j6 i   if(a==0)GPIO_ResetBits(GPIOD, NOKIA_DC);- g3 f" [7 M: X! p( K
   if(a==1)GPIO_SetBits(GPIOD, NOKIA_DC);          e! @2 K3 @) t" i+ l* B
for(i=0;i<8;i++)% x- ?1 X1 @. c( o' L+ ^
{
: f* \- ~- t, k7 p0 S/ R- nif(dd&mask_table)  p8 r7 k1 f) r4 J: ^# S
//SDIN=1;
8 O7 Q$ k* V; {& p' e: V        GPIO_SetBits(GPIOD, NOKIA_SDIN);) F9 U( Z5 R; o+ v% b9 ~7 Y
else6 P; X& a- d8 Y5 |/ S' y  N
//SDIN=0;
. J: U  W( `2 _* d$ l//SCLK=0;6 l  P! v& j5 z" V
//SCLK=1;
( ]! R6 q7 J  u4 @7 a) z        GPIO_ResetBits(GPIOD, NOKIA_SDIN);
1 V! s0 M2 c2 C7 l/ T% r        GPIO_ResetBits(GPIOD, NOKIA_SCLK);7 N+ c% f" M6 u" ?, x5 f
        GPIO_SetBits(GPIOD, NOKIA_SCLK);
]]. ^: N+ i5 h: Y- d
/*-----------------------------------------------------------------------
* y  w" N9 r0 f$ n6 ZLCD_write_english_String  : 英文字符串显示函数
输入参数:*s]输入参数:*s]-----------------------------------------------------------------------*/# |, ]4 g" J( w% J
void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
* [* D- k: H; L' Y1 r2 L* l{
& \! W1 X  N, V1 `7 S$ F    LCD_set_XY(X,Y);1 v; n2 {. b9 [" Q! B4 C
    while (*s)
  d: Z& }$ B! E3 _# e6 G; L' t    {
! s" Q0 ?" h) V& t7 x   LCD_write_char(*s);- f( |; U2 I( v) A2 {+ @2 r3 ~3 {
   s++;# K) Q3 D2 T5 Z
   }0 G* @7 J6 e2 l% M
}& H' k3 b6 {) w* H$ U  L0 Q" y! K
//****************************************************/' J7 k( N, s* s% J% q
//显示12(宽)*12(高)点阵列汉字6 x5 r7 U7 v) _6 M
void displayonechar1212(uchar row, uchar page,uchar dd) //row:列 page:页 dd:字符6 v! b, F# H! a  Z, T5 f/ T
{# @% H: e5 k' j% H/ X* d( A  h
uchar row_i,xx,num=0;* x; c, I' q3 P9 O7 l
for(xx=0;xx<2;xx++)
2 }) ^7 i7 o/ J: p& {. h. p. s6 R{3 c0 K, A+ s6 }% U: s- W" ?
setadd(row,page);// 列,页
& h5 S9 G9 t6 C, a% Z4 Gfor(row_i=num; row_i<num+12;row_i++) write_byte(hzk1212[dd][row_i],1);' q  S- w) x" B- T
num=num+12;page++;& p9 m2 E, ^% F+ g* O+ X* P
}
$ s6 C  `, p( @& r}
]]
#endif

5 Z- u2 b6 n9 I0 ?: G
转载自:eefocus! v. }0 g! t1 z
收藏 评论0 发布时间:2023-1-7 11:59

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版