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

[STM32F401-DISCO开发板]实验二、驱显黑白LCD_6903,串口调试

[复制链接]
zhjb1 发布时间:2017-12-10 09:47
[STM32F401-DISCO开发板]实验一、STM32F401 DISCO开发板介绍,点亮LED9 [% _, W6 z/ ^" c# \
[STM32F401-DISCO开发板]实验三、2路ADC采样+2路PWM输出实验
# |/ @) f/ @4 I9 E* ^; }+ p
  y# [: i; X9 w' s; d# v/ P$ ~  Z: k" u1 y6 e6 c8 @) R
这款显示器是黑白的,横向65点阵纵向102点阵,采用8X6点阵非标ASCII码,一行可以显示17个英文X8行,基本够用了。( p. \; T4 b* p1 j/ J" U( B) g
首先在项目目录中创建一个incs文件夹,将6903.h文档拷贝进去;而后在IAR项目中创建1个文件夹,命名为incs,并且将incs文件夹中的6903.h加进去。: v, [( j4 I- e9 r) t, j
6903.h代码如下:& q% {/ I+ W% P. d1 B9 [+ v
DigitalOut sdat(PE_15);
: u1 o9 g8 @, T( BDigitalOut sclk(PE_13);6 ]% ?1 G7 F9 l9 y5 O$ b0 F) A- q
DigitalOut sreg(PE_11);
: s- S' f' k$ ZDigitalOut sres(PE_9);
  M4 b* _) g( w$ Rextern int k;* n% m. m; Y; u" P+ s
//6903 102X65LCD7 k0 W2 n& ?" |0 O, O8 l* |4 b5 C
const unsigned char asc2[][6]={//8x6 Dots 32-126[0-94]
1 W0 o7 v# P# D0 u: i# ]{0x00,0x3E,0x45,0x49,0x51,0x3E},//0  U% q, P* {  ^% u" i
{0x00,0x00,0x21,0x7F,0x01,0x00},//1
5 w8 f6 R% ?2 O8 n. Q6 C/ k{0x00,0x31,0x43,0x45,0x49,0x31},//2; f. T9 j1 L! ]( w+ u' W
{0x00,0x22,0x49,0x49,0x49,0x36},//3% g5 J1 A; i1 T5 w& w& f: z
{0x00,0x04,0x0C,0x14,0x7F,0x04},//4
% [- _! m% K/ g{0x00,0x72,0x51,0x51,0x51,0x4E},//5-5- D# e) \" d5 f/ s% v% i! S
{0x00,0x3E,0x49,0x49,0x49,0x06},//6
  y8 Z7 @' \! e$ M! _6 O+ I{0x00,0x40,0x43,0x4C,0x50,0x60},//7
8 j# S# J7 c5 E3 i5 x6 `5 ?{0x00,0x36,0x49,0x49,0x49,0x36},//8
" x) Y: ]9 l3 m+ H, e$ T{0x00,0x30,0x48,0x48,0x48,0x3F},//90 @: T! s) ]* y- @* [+ B
{0x00,0x1F,0x24,0x64,0x24,0x1F},//A-10. a- j2 C1 Y  ?# K3 F! R' T
{0x00,0x41,0x7F,0x49,0x49,0x36},//B( t' p" X4 [) i+ X5 T1 s& ]
{0x00,0x3E,0x41,0x41,0x41,0x22},//C: v7 l$ O) n& l4 Z0 R7 x
{0x00,0x41,0x7F,0x41,0x41,0x3E},//D* P% m: j7 g- A
{0x00,0x41,0x7F,0x49,0x49,0x63},//E" c* @) }' r& F8 Y; G
{0x00,0x41,0x7F,0x49,0x5C,0x60},//F-15
. w% L( S  b2 h0 M! `{0x00,0x3E,0x41,0x45,0x47,0x24},//G' e, @, q/ n. u3 H7 \6 }
{0x41,0x7F,0x08,0x08,0x08,0x7F},//H
  Q' d& l+ F/ W2 t9 |  g{0x00,0x00,0x41,0x7F,0x41,0x00},//I
$ W5 r6 w$ |5 j$ a{0x00,0x42,0x41,0x7F,0x40,0x40},//J6 Q  R- a. q6 K; |2 c
{0x00,0x41,0x7F,0x59,0x24,0x43},//K-204 \/ r6 v/ ~, D# D/ I& k
{0x00,0x40,0x7F,0x41,0x01,0x03},//L9 v8 l$ r0 @" r0 K- Y, b9 j% k
{0x00,0x7F,0x20,0x1E,0x20,0x7F},//M. r. k" J3 Q$ K/ `0 ]
{0x00,0x7F,0x30,0x18,0x06,0x7F},//N
, n+ b: i% H6 s  t8 ~2 X7 L. f{0x00,0x3E,0x41,0x41,0x41,0x3E},//O
. c" k( g$ x  _2 H* e& {{0x00,0x41,0x7F,0x49,0x48,0x30},//P-25
# C. w$ v" Y/ h6 C- |9 T  [! y{0x00,0x3E,0x41,0x47,0x42,0x3D},//Q
9 e' l6 l1 S6 a# G  m( P{0x00,0x41,0x7F,0x49,0x4C,0x33},//R, D% r+ W% D0 j+ J% r
{0x00,0x32,0x49,0x49,0x49,0x26},//S
( E0 c; T7 {/ A$ V2 D" E, W  M{0x00,0x60,0x41,0x7F,0x41,0x60},//T
% N: Y: t/ D6 Q# y* I6 j# t{0x00,0x7E,0x01,0x01,0x01,0x7E},//U-306 H, K- n* }; R$ ]* u; C: H! V
{0x00,0x7C,0x02,0x01,0x02,0x7C},//V; Q  O4 o" `  h; d
{0x00,0x7C,0x03,0x3C,0x03,0x7C},//W$ \- X. s- y9 o( y
{0x00,0x43,0x24,0x18,0x24,0x43},//X
% X- r0 S+ f7 u( @/ V, G/ x+ P- O1 l{0x00,0x60,0x18,0x07,0x18,0x60},//Y2 t# H, g6 h, U( a! u
{0x00,0x63,0x45,0x49,0x51,0x63},//Z-35  ^7 \( s$ O" \$ {# y! v+ s3 B
{0x00,0x00,0x00,0x01,0x00,0x00},//.
) p& x5 [5 I6 C, Z3 z& ^{0x00,0x14,0x14,0x14,0x14,0x14},//=( f- E4 x2 b7 B  r5 B8 z
{0x00,0x08,0x08,0x3E,0x08,0x08},//+
6 u- k2 h( ?! ]3 V{0x00,0x08,0x08,0x08,0x08,0x08},//-2 ?( u0 R' {8 l
{0x00,0x00,0x00,0x24,0x00,0x00},//:-40: u2 F* c+ z2 M+ k3 G2 U9 J
};
+ f0 V$ C2 W$ Y. X4 s. D0 t//Write Plus! x$ z  {9 K3 o* O; ^8 }( S- p6 V
void wri(void){sclk=0;sclk=1;}+ }7 n8 w: @) B* o4 P: }
//Write a byte to lcd dt=data,com=reg/data* Y1 K1 {9 f0 j2 l) Y0 v* B
void b2l(unsigned char dt,unsigned char com){& l& n) s) c% \! V/ p
unsigned char i;" T: g% U8 N* R6 |1 v
if(com)sreg=1;else sreg=0;
3 O6 L5 j9 `- z; y' I" A for(i=0;i<8;i++){6 p0 g% Y- q4 S; x5 _0 W
  if(dt&0x80){sdat=1;}else{sdat=0;};
$ S( u8 W( n; a2 n  dt=dt<<1;
9 p; t+ f, Q, S  wri();8 C& h/ S+ w4 O4 ]0 |- O
}
) b/ k# X' X$ H8 j( o1 x2 ]}' z7 h  e, E8 d7 T
//Set lcd display X,Y
6 R$ m7 p4 n' I$ y' ?" g- b$ Yvoid setXY(unsigned char X,unsigned char Y){
/ m- v& U( ?3 x2 L4 v' H  r b2l(0x40 | Y,0);//column6 J$ P1 [( G+ X* z) m
b2l(0x80 | X,0);//row
) N5 v1 d: N! a! m* K}; {6 S) v- s" S" M
//lcd Clear. `! K) T% _2 V
void lcdClear(void){5 ~4 x' i4 x9 z8 y0 V9 ^0 ]1 ]% e
unsigned char t,k;9 u( _8 g0 S( h! o7 p$ n
setXY(0,0);/ w6 S: K, G( P; u4 U- v
for(t=0;t<9;t++){for(k=0;k<102;k++){b2l(0x00,1);}}  L$ @) q4 E4 g9 f
}$ w3 l# S0 T, u% v  T5 k
//display a ASCII code/ X. @) s7 S& D+ M
void c2l(unsigned char x,unsigned char y,unsigned char c){# N+ R  S. D1 b# Z
unsigned char line;
' z2 c* h7 y- K# X/ V7 f setXY(x*6,y);    3 s& ^2 j# K" Y0 l) Z0 b* ^
for (line=0;line<6;line++) b2l(asc2[c][line],1);: b3 q- o4 j& Z% g
}' R0 i) V: {( s9 C* {
//LCD6903 Initial 102x647 e% @( D; {# W7 X% P
void lcdInit(void){
/ H+ L, U* A9 I0 b8 s. Q' O' T* ~4 T wait(0.20);4 t% k( `- g0 z7 x: A1 @7 o, F  |
sres=0;4 b6 i* p9 o  v0 o, ?
wait(0.20);
6 p; i, H+ S, U) \2 P1 W4 [4 w sres=1;+ y0 _+ q5 b6 m* ^
wait(0.20); - ?" |& P2 n$ U. A
b2l(0x25,0);//00100 PD=1dcOn|=0Dcoff V=0Up|=1Left H==1
6 z: ]; G1 Z5 {( t. q& y wait(0.005);
# y5 k+ ^0 r7 E b2l(0x14,0);//Plus width L000~111=1/6-1/7-1/8-1/9//14=1/7
" l* ]7 R. ^' ~/ y9 C wait(0.005);
3 v7 K' A  d: L- L: X b2l(0xB4,0);//SET VOP~8.96V
( H0 N+ q0 X% W( G- x# H wait(0.005);
3 T; o3 n, z1 U b2l(0x20,0);//PD=0,H=0,V=0
. b5 T7 M3 q& {) s b2l(0x0C,0);//Set off8 |) P, b# D3 K( s& i: G/ }/ }% N
wait(0.005);0 _5 L! H; d. Q( b+ v! y# ~5 N
}) Z/ h' R+ ?' A4 M
//Display ASCII Test) _# ]5 a7 q, W0 j! H0 V, y
void dispAsc(void){( p0 T# O9 i9 E
int i,j;
) r, O3 K2 d% d5 j7 p1 r- F! \ for(i=0;i<8;i++){
2 G% n' t2 o. h1 C5 Q3 Z, b  for(j=0;j<17;j++){9 Y+ J9 K2 l4 x: ^+ f' k
   c2l(j,i,k);
: F4 ~* U7 g% q/ I   if(k>39){k=0;}else{k++;}
7 y5 M. Z% t" k; H( A9 k2 T: Y& W% G  }) N5 @& Y% @1 r" G4 K# M# {
}/ ?' `+ {9 r3 b  Q  ~7 l
}
2 {% t3 j1 l* F0 c% t! s//END Files//  L5 y1 M( k1 F1 f9 }
main.cpp的前边加上:
) Q; V7 ~0 p1 z  p# v6 A#include "6903.h"0 [- w1 J# f8 B' M/ Q, U* I
接着加上:3 ]8 E, m7 p5 `) }/ @
Serial lptOut(USBTX, USBRX);//由PinNames.h定义的串口:PA_2,PA_3) A3 O) r  M1 p/ K
DigitalOut myled(PD_12);//定义PD_12绿的的LED: p+ h& K4 G' o0 U" u' _: E0 L
接着定义一个公共变量:
, @+ T1 N( t8 jint k=0;
1 s( A( @: e( cmain主函数如下:
0 \7 c' A5 w  w5 B* Nint main(){
0 \: l, d! R, S& j$ y* r1 h lcdInit();/ b' S$ _" }9 D; w' g) v1 [7 o; a' m
lcdClear();  `* G9 a+ k/ w, ?. Y! s! r/ m
lptOut.printf("LCD6903 Test !\n\r");
) {5 {# E2 X7 C. R while(1){
3 m' I( P! p4 f; T  dispAsc();7 C4 r& x8 ]  ?4 ~+ U
  myled = !myled;
( F/ v! t- Q- Z" s  lptOut.printf("LCD6903 Test ! \n\r");1 }( i. t! s& k$ }3 W6 \
  wait(0.5f);
5 G0 b* X; Y8 N! S  lcdClear();: A  v2 x3 a6 u+ O& S
}
: J! H+ `- |: o$ m}" @3 s) S1 ~- U" V
串口速率设置在mbed_config.h文件中。
9 n8 C, w; V; [* e6 C& h; N+ t编译下载后程序运行为:在PA_2——串口RX,PA_3——串口TX,输出“LCD6903 Text !”。照片21为LCD6903以及虚拟串口硬件连接,照片22是LCD6903 轮显刷屏ASCII码,截图23是串口输出的显示数据。
$ j8 K& y0 l( u3 z

21

21

22

22

23

23
赞 收藏 评论2 发布时间:2017-12-10 09:47

举报

2个回答
anywill 回答时间:2017-12-10 10:23:19
占沙发
zhjb1 回答时间:2017-12-10 10:54:55
anywill 发表于 2017-12-10 10:23: d- i1 Z* n! n! x7 m7 s0 T
占沙发

# F2 Z# o, X: O7 R+ \/ d/ T谢谢

所属标签

相似技术帖

官网相关资源

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