一乐交易区摊主
主题
回帖0
积分60399
阅读权限30
注册时间2009-11-15
最后登录1970-1-1
在线时间 小时
|
网上找了点资料~~~
[& X: d* r" R' ^+ z R现在TEST没问题,100元出~~~~
4 H9 p, @( n% M5 c: C: ~6 iPDF 资料http://www.noritake-itron.jp/eng/products/module/gu800/ss/se-gu160x32-800b.pdf
; [1 G& _/ e) O$ C4 U/ i
6 j0 F/ A0 D$ W5 `6 e
) I) w9 o$ P' x9 |1 ^0 s2 r: h D4 }- H! L4 A; I3 V+ _7 a1 V
6 d# h/ d! v, N1 `& \真空荧光显示屏点阵显示模块GU160X32-800B,显示点阵为160*32点,可显示字符、汉字和图形。具有使用方便、亮度高且可以调节。文章介绍GU160X32-800B的基本原理,探讨硬件设计和软件编程方法。
0 H! B' ?6 G! m0 M, |
4 J7 d6 {1 c3 Q$ W+ p0 ?4 W, n VFD模块选用日本NORITAKE ITRON公司的点阵显示模块GU160X32-800B。显示点阵为160*32点,可显示字符、汉字和图形。电源方便,只需要+5V电源就可以正常工作。
; ]4 k9 R2 W/ h5 c4 W5 A/ N 1模块原理; E; \; [- J1 B) h$ G, E+ v; N3 \
整个显示屏由5120个点按照160*32排列,被划分为64个大小显示区域。每个显示区域可通过显示区域设置命令分配相应的GRAM(图形显示模式)和DDRAM(字符模式)存储区。但是此版本的模块没有字符ROM,因此DDRAM为无效。所有的显示区域在初始化时必须设置为GRAM.。
: u( G. q$ ?8 V; R* U# S% j! z 图形显示(GRAM)结构,GRAM由16384位构成,并分成256*64大小的区域,在垂直方向显示为8位。结构图如图1所示。
6 z9 Z+ n9 |4 @0 S本模块有两个显示层,0层和1层,每个层有256*32个点阵构成,并利用显示开关命令可以组合显示层。0层的256*32个点阵的起始地址是从GRAM的起始位置开始,1层是剩下地址。) b1 L1 }: s+ Q7 `! i
2硬件电路图1 L6 X( }- Y6 H
接口控制使用方便,有口串口控制和两个并口控制,为了提高数据传输速率,我们选择使用并口进行数据传输。并口1的控制接口如表1所示。
0 N) x) U+ n. k
* v( m8 ^3 U4 T4 o6 Q 2 m" a6 p" @8 J
接口名称 功能" N$ a- i! ~+ |7 G" E J" D; {( z
D0~D7 数据总线
0 O) ~! B0 A! \; s# z# K; AWR (R/W) 并口1写信号0 o! B6 _3 {6 n J
RD (ENCK) 并口1读信号
6 N2 c5 F. }8 W6 NCSS 芯片选择信号6 u' V4 q! v$ ]: c2 W( S
C/D 命令/数据选择线 n: F1 q, X/ q. H
FRP 帧数据输出信号8 j- T" Y3 ]/ n x2 h0 E" B* U
RESET 复位信号2 a4 y' |9 [) V' k
Vcc 电源2 S) q# k. p$ p( R a3 P% w/ v( ^1 e1 G1 {
GND 地
4 h( S/ I' a) D% }表1 VFD并口1接口协议
& E0 t+ t6 T `/ f" A5 h; [ 3汉字显示编程( ^: U: K6 }& Q1 Q) q2 U
为了在VFD上显示汉字,根据GRAM的结构图,对汉字的点阵取码如图2所示。先从上向下取8位,再从左至右取第二列中的8位数据,以此进行取值,将第一行(8位构成)取完后取第二行(8位),直到取完所有点为此。
v8 I- O/ |* e3 Q
5 l/ b! R3 G- X% ?# t5 n6 F7 `( LVFD显示数据的程序如下:" `. T" }# G0 {6 y2 f$ j
void displayonvfd(uchar lenth,hight, number,uchar font[])
9 p3 l0 t% o8 T( P8 G( x! d{ t$ i% g4 C4 |9 p0 N
uchar idata i,k,j=0;
( J, i) x3 J4 d* Y# c' a. Ffor(k=0;k<number;k++)" r+ u& `3 g, x; ?; l
{8 E ~+ \( C2 o7 v
for(j=0;j<hight/8;j++)
4 f- s! G k5 p7 Z3 J9 o! D {* d+ @9 D! x( k# y/ ]; f& F) W
for(i=0;i<lenth;i++)
3 X' A2 Z" n6 u* ]$ l) @ R3 { {* U( G- W( B$ c
set_position();
+ A) C2 c- [- u0 X$ jgu800_send(VFDDATA,font[(k*lenth*hight/8)+j*lenth+i]);
8 [7 O5 g! J. Q xpos+=1;3 y% {4 B$ t5 i9 D% _
}2 ~3 h8 a1 t1 \1 n" H
xpos-=lenth;: t* s/ Y! D- W% b5 I( U
ypos+=8;
, M- I& j4 ?; o ^0 x# ` }8 N" a* u: w T* q2 x" ~1 T
xpos+=lenth;
7 l% q4 Q4 I' w( K/ X' D ypos-=hight;0 U4 T6 X4 G3 u8 g! o* C
}
( p" o. `" g: Y4 |1 y}1 ~2 R2 h4 y) a8 `' x3 ~4 O. u! s
xpos、ypos分别是显示点的X坐标和Y坐标值,set_position()函数是设置座标函数,座标值就是xpos、ypos的值。gu800_send(uchar cd,uchar senddata)是发送数据或者是发送命令的函数。实现如下:; I" k# S' j. Y/ N( k
void gu800_send(uchar cd,uchar senddata){, T4 R& F5 E# X$ g. @
//send the data to the VFD module.
7 @3 M; t4 s. |( {, ^ gu_cs=0; // enable module
3 o! }6 Z4 `9 u: D+ \% d if (cd==1)
) z* [3 Z) y; h7 k7 @! h+ P gu_cd=1; //send command 3 q) N4 ?% Y* j
else
) Y" H7 l6 r' |" u& @ gu_cd=0; //send data
4 w$ N6 \( g: O+ b+ s4 Y% P% k& ^ gu_bus=senddata; / x. h6 b$ g) u- \0 V' n
gu_wr=0;% w7 z/ o! H& ?! f' C
delayms(5);
: e: N- L9 a, f6 \7 Z6 _ [% E gu_wr=1;
z% k% U' o! w) V) e( z+ p/ k}% j R; p- o0 R5 n' ?
4结论7 N8 o N# }) `
通过以上的方法之后,可以静态显示汉字、图形,也可以动态显示。同时亮度可灵活控制。用于显示系统设计方便、灵活、简单,是一款性价比较高的VFD显示模块。
6 J+ J/ F% L4 e: N7 f |
|