单片机LED三文动态信息显示系统 第8页
ADDR=32*((CLng("&H"&QM))*94+(CLng("&H"&WM)))`求出偏移地址
Open App.Path+"\HZK16"For Binary As#1`打开字库文件HZK16
J=LOF(1)
ReDim BYTES(1 To J)`获取字库数据
Get#1,,BYTES
Close#1
For I=1 To 32
ZMDZ(I)=BYTES(ADDR+I)
Next
End Sub
3.5.2横排点阵的转置处理
由于设计中显示系统的需要,必须对提取出来的汉字字模点阵进行转置处理。
虽然提供了较强的位运算功能,但是对于在字模转换中使用较多的移位操作,却没有
对应的移位元运算符、指令或函数。其实通过and(与)、or(或)两个位运算符即
制一个自定义子函数来实现移位元运算。现给出一个左移函数的程序清单:
Public Function byte left(byte1 As Byte,n As Integer)As Byte'将byte1左移n位
Dim item As Byte'临时变量
Dim intem1 As Byte'临时变量
Dim x,y As Integer
intem1=byte1
For x=1 To n'移多少位就循环多少次
For y=8 To 1 Step-1'从第八位(左边第一位)开始循环
Select Case y
Case 8
If(intem1 And&H80)=&H80 Then'如果临时变量intem1的第八位
item=&H1'则将临时变量item置1
Else
item=&H0'反之置0
End If
Case 7
If(intem1 And&H40)=&H40 Then'如果临时变量intem1的第七位
intem1=intem1 Or&H80'则将其第八位置1(其它位不变)
Else西安理工大学硕士学位论文
20
intem1=intem1 And&H7F'反之将第八位置0(其它位不变)
End If
Case 6
If(intem1 And&H20)=&H20 Then'操作与上面相同
intem1=intem1 Or&H40
Else
intem1=intem1 And&HBF
End If
Case 5
If(intem1 And&H10)=&H10 Then
intem1=intem1 Or&H20
Else
intem1=intem1 And&HDF
End If
Case 4
If(intem1 And&H8)=&H8 Then
intem1=intem1 Or&H10
Else
intem1=intem1 And&HEF
End If
Case 3
If(intem1 And&H4)=&H4 Then
intem1=intem1 Or&H8
Else
intem1=intem1 And&HF7
End If
Case 2
If(intem1 And&H2)=&H2 Then
intem1=intem1 Or&H4
Else
intem1=intem1 And&HFB
End If
Case 1
If(intem1 And&H1)=&H1 Then
intem1=intem1 Or&H23汉字点阵字模的获取
Else
intem1=intem1 And&HFD
End If
If item=&H1 Then'移完第一位后,如果item是1(即第八位
intem1=intem1 Or&H1'则将intem1的第一位置1
Else
intem1=intem1 And&HFE'反之置0
End If
End Select
Next y
Next x
byte left=intem1'将intem1的值返回给函数名
End Function
在上面的程序中,尤其需要注意的是当把二进制数据写入文件中时,必须使用
数据类型的数组变量,而不是String变量。虽然String变量被认为是包含字符的,但
制型数据可能无法正确地存在String变量中。
按照类似的方法,也很容易编写出右移函数byte right。当正确地读出汉字在1
字库中32个字节的字模数据后,要把其转换成所需的竖排格式,需要用到上面的左
数left right和右移函数byte right。用左移函数left right来表示整个流程是由低位向
移动,最后凑成一个字节。用右移函数byte right将字节中的某位移到最低位。以下
将UCDOS7.0字库的存储格式调整为所需的规范格式的程序代码:
For j=0 To 3
If j=0 Then k4=14
If j=1 Then k4=15
If j=2 Then k4=30
If j=3 Then k4=31
For k=0 To 7
bit=&H80
bit=byteRight((bit),(k))
For i=0 To 7
k2=byteleft(Buf1(j*8+k),1)'整个流程是由低位向高位移动,最后凑成一个
k3=byteRight((Hz(k4-i*2)And bit),7-k)'将字节中的某位移到最低
k3=k3 And&H1'屏蔽掉其余7位
Buf1(j*8+k)=k2 Or k3
Next i西安理工大学硕士学位论文
22
Next k
Next j
For i1=0 To 31'将调整后的汉字字模再装入原数组
Hz(i1)=Buf1(i1)
HzAll(LoopAll*32+i1)=Buf1(i1)
Next
Next LoopAll
Open TempDestFile For Binary Access Write As#1'转换结果保存到TempDestFile中
Put#1,1,HzAll
Close#1
MsgBox"OK!"
End sub(源程序详见程序附录)
以上程序均在中文VB6.0专业版及WINDOWS-XP上调试通过,且取得了良好的效
正如图3-4所示。
图3-4转置后的字模点阵代码
Fig.3-4 Regulated Chinese character lattice4 PC机和单片机之间的串行通信
4 PC机和单片机之间的串行通信
4.1上位机通讯模块设计
4.1.1 RS-232接口简要介绍
a.RS-232发展背景
RS-232标准的全称是EIA-RS-232C,其中EIA(Electronic Industry Association)
美国电子工业协会,RS(Recommended Standard)代表推荐标准,232是标识号,
RS-232的最新一次修改(1969)。它规定了连接电缆的机械、电气特性、信号功能
送过程。例如目前在PC机上的COM1、COM2接口就是RS-232接口。
串行通信接口标准经过使用和发展,目前已经有几种,但都是在RS-232标准的
上经过改进而形成的。所以,以RS-232为主来讨论。RS-232标准是美国EIA(电子工
合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速
0~20000b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电
性都作了明确规定。由于通行设备厂商都生产与RS-232制式兼容的通信设备,因此
为一种标准,目前已在微机通信接口中广泛采用。
虽然RS-232标准现在已被广泛应用于计算机的接口部件中,但仍有一些问题需
意。首先,RS-232标准最初是为了在远程通信中连接数据终端设备DTE(Data Te
Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。因此
标准的制定,并未考虑计算机系统的应用要求。但目前它又广泛地被借用于计算机(
确的说是计算机接口)与终端或外设之间的近端连接标准。显然,这个标准的有些规
和计算机系统是不一致的,甚至是相矛盾的。其次,RS-232标准中所提到的“发送
“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。由于在计算机系
往往是CPU和I/O设备之间传送信息,两者都是DTE,因此双方都能发送和接收。
b.电气特性
RS-232对电器特性、逻辑电平和各种信号线功能都作了规定。
(1)在TXD和RXD上:
逻辑1(MARK)=-3V~-15V
逻辑0(SPACE)=+3V~+15V
(2)在RTS、CTS、DSR、DTR和DCD等控制线:
信号有效(接通,ON状态,正电压)=+3V~+15V
信号无效(断开,OFF状态,负电压)=-3V~-15V
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>
单片机LED三文动态信息显示系统 第8页下载如图片无法显示或论文不完整,请联系qq752018766