一乐交易区摊主
  
主题
帖子
积分60399
阅读权限30
注册时间2009-11-15
最后登录1970-1-1
在线时间 小时
|
网上找了点资料~~~
4 }" x8 m$ _4 M, J6 X4 W现在TEST没问题,100元出~~~~
- a4 _/ m, I! G: B# `PDF 资料http://www.noritake-itron.jp/eng/products/module/gu800/ss/se-gu160x32-800b.pdf
% |6 {' e3 X8 `" r+ K8 q3 V! p- D) t% X/ |$ b( V
7 k1 ?5 K+ _% W9 e2 I7 D3 d$ I9 I0 G% z+ y, ]8 L! m7 j
+ f" O! E. T- E- u2 i真空荧光显示屏点阵显示模块GU160X32-800B,显示点阵为160*32点,可显示字符、汉字和图形。具有使用方便、亮度高且可以调节。文章介绍GU160X32-800B的基本原理,探讨硬件设计和软件编程方法。
3 V( M: [, c7 o. S9 [
1 M3 G0 N6 z8 i: x. C. _% D VFD模块选用日本NORITAKE ITRON公司的点阵显示模块GU160X32-800B。显示点阵为160*32点,可显示字符、汉字和图形。电源方便,只需要+5V电源就可以正常工作。
6 j2 s) H i5 y; }" d 1模块原理- [% T7 W2 `2 W+ P
整个显示屏由5120个点按照160*32排列,被划分为64个大小显示区域。每个显示区域可通过显示区域设置命令分配相应的GRAM(图形显示模式)和DDRAM(字符模式)存储区。但是此版本的模块没有字符ROM,因此DDRAM为无效。所有的显示区域在初始化时必须设置为GRAM.。9 S$ ~- C- J' ?8 p7 C$ ~8 F+ M! b6 P
图形显示(GRAM)结构,GRAM由16384位构成,并分成256*64大小的区域,在垂直方向显示为8位。结构图如图1所示。+ _- C$ n. g: ~; f9 _) Q+ k! K
本模块有两个显示层,0层和1层,每个层有256*32个点阵构成,并利用显示开关命令可以组合显示层。0层的256*32个点阵的起始地址是从GRAM的起始位置开始,1层是剩下地址。
7 G3 d% U' f9 G2 {) @3 {! _+ q) m( ` 2硬件电路图" u' }- x- B, L3 h7 |1 ^2 R4 k
接口控制使用方便,有口串口控制和两个并口控制,为了提高数据传输速率,我们选择使用并口进行数据传输。并口1的控制接口如表1所示。
+ u7 c5 p& Y5 W0 G) Z
+ n3 j; ~4 v& _, X6 Y& a5 U
# b& g% S; c" L! a$ ^: P接口名称 功能
5 K \1 _' w: c( P* }D0~D7 数据总线
$ l, w- x! d/ ZWR (R/W) 并口1写信号$ ~( z$ f2 Y9 w& _) z( G* Q
RD (ENCK) 并口1读信号/ u, G' Q. D+ x
CSS 芯片选择信号
{( h2 d; o% Z6 I3 I$ E9 jC/D 命令/数据选择线, G7 e: O S3 {, d4 h2 I; A' y
FRP 帧数据输出信号2 k( ?: d# n9 N3 o" A1 P5 w$ h W
RESET 复位信号
X/ ]* r& f4 E/ b H+ {0 _Vcc 电源# G- O1 Y9 |2 i- Y, ?4 J- O
GND 地
% _0 N! I! Y$ H: N$ b0 R表1 VFD并口1接口协议
( G1 g; [2 a/ s1 P% [ 3汉字显示编程
; \- k. H1 t1 o$ e5 ~为了在VFD上显示汉字,根据GRAM的结构图,对汉字的点阵取码如图2所示。先从上向下取8位,再从左至右取第二列中的8位数据,以此进行取值,将第一行(8位构成)取完后取第二行(8位),直到取完所有点为此。
/ K" J" [6 w0 x& s$ G, U
e; @( F/ w6 D- n% N6 f/ GVFD显示数据的程序如下:5 R; c$ I4 Y- a' b4 j2 k
void displayonvfd(uchar lenth,hight, number,uchar font[])6 f, \3 O% \( U9 V* p, R
{
- J9 n6 E" g8 Q. guchar idata i,k,j=0;
2 ]$ j# F. d! K6 K" sfor(k=0;k<number;k++)
4 f: E3 y2 y8 [5 F: I. W" r {% \1 E7 i! B f3 [: ?
for(j=0;j<hight/8;j++), _! W* q+ l2 f/ G1 `: d
{
4 O( w3 e: \; E5 D* T7 G' r for(i=0;i<lenth;i++)2 I& h _' j) V. r' @3 u" a( M9 Z5 i
{
' ?6 S; d% i9 k- _) h" p( F8 }2 v set_position();
# ], V: M8 M1 w) A# h1 ~6 u+ }" jgu800_send(VFDDATA,font[(k*lenth*hight/8)+j*lenth+i]);% N, G* A, A1 M- z
xpos+=1;
, q( O# g5 O; X* B9 @( U9 ? }
7 c% M/ q4 L2 i! o5 u xpos-=lenth;5 \6 Y& b! Y; q) q9 f
ypos+=8;0 C( M; Z7 I' {1 A) _
}! H6 i1 {8 N2 C# j i( z% O
xpos+=lenth;7 S( y- {8 H! P% `. B
ypos-=hight;
& }/ [) v& k0 k7 s9 x4 k5 X }
t3 d! x! U. O6 w}( G; V$ b, k$ a7 ?
xpos、ypos分别是显示点的X坐标和Y坐标值,set_position()函数是设置座标函数,座标值就是xpos、ypos的值。gu800_send(uchar cd,uchar senddata)是发送数据或者是发送命令的函数。实现如下:& R. V& V! s2 \: U! u# T, R
void gu800_send(uchar cd,uchar senddata){
5 @- i( \; e5 t2 \8 G //send the data to the VFD module.6 f, W9 j3 y. _( `
gu_cs=0; // enable module 1 L8 T# d5 o! m
if (cd==1)
$ p+ H0 z6 W/ d( b0 l! U gu_cd=1; //send command
- g2 \. c8 r3 \ else* r! Q0 J) c# J: C# G, C, Y
gu_cd=0; //send data2 W$ W! Z8 n9 |" v% M/ T
gu_bus=senddata; 3 }3 a2 Z& M# B: O* a k/ L
gu_wr=0;2 U8 i' N$ ~ d. U" N
delayms(5);
* o% n: S9 s; M0 K gu_wr=1;4 [4 E f8 B3 Z) P% Q
}2 z" t1 ~% }( P# ?+ f3 T3 |( u
4结论
9 F- {, y$ _9 _1 r 通过以上的方法之后,可以静态显示汉字、图形,也可以动态显示。同时亮度可灵活控制。用于显示系统设计方便、灵活、简单,是一款性价比较高的VFD显示模块。) E# x' q9 r5 J2 C2 g
|
|