漢字取模方法
(作者未知) 2009/12/21
(接上頁)mVar And &HEF
End If
Case 7
If (TemVar And &H40) = &H40 Then
TemVar = TemVar Or &H20
Else
TemVar = TemVar And &HDF
End If
Case 8
If (TemVar And &H80) = &H80 Then
TemVar = TemVar Or &H40
Else
TemVar = TemVar And &HBF
End If
If TemVar1 = &H1 Then ’移完第八位后,如果TemVar1是1(即第一位是1)
TemVar = TemVar Or &H80 ’則將TemVar的第八位置1
Else
TemVar = TemVar And &H7F ’反之置0
End If
End Select
Next Y
Next X
byteRight = TemVar ’將TemVar的值返回給函數(shù)名
End Function
尤其需要注意的是當(dāng)把二進制數(shù)據(jù)寫入文件中時,必須使用Byte數(shù)據(jù)類型的數(shù)組變量,而不是 String 變量。 String 被認(rèn)為包含的是字符,而二進制型數(shù)據(jù)可能無法正確地存在 String 變量中。
五、一個實際應(yīng)用案例
圖形點陣液晶在現(xiàn)代單片機系統(tǒng)中是一種十分常用的顯示設(shè)備,BP機、手機上的顯示屏就是圖形點陣液晶。它能顯示漢字和圖形,與行列式鍵盤組成了單片機系統(tǒng)中最常用的人機交互界面。但是直接從中文系統(tǒng)漢字字庫中提取的漢字字模并不能直接在液晶上顯示,通常都必須經(jīng)過格式上的調(diào)整和轉(zhuǎn)換。
1、圖形點陣液晶的漢字字模
與在西文DOS中顯示漢字不同的是,圖形點陣液晶并不是簡單地用畫點的方式來描出漢字。以常用的HD61202圖形點陣液晶顯示控制模塊為例,它能控制64×64點陣液晶的顯示,其顯示RAM共64行,分8頁,每頁8行,每一頁的數(shù)據(jù)寄存器分別對應(yīng)液晶屏幕上的8行點,對顯示RAM的一個字節(jié)單位賦值就是對當(dāng)前列的8行(一頁)的像素點是否顯示進行控制。連續(xù)16列和相鄰的2頁的32字節(jié)顯示RAM就可以控制一個漢字的顯示區(qū)域。對這些顯示RAM賦以相應(yīng)的值就可以顯示出一個漢字。
HD61202圖形點陣液晶顯示控制模塊的漢字字模的排列實際上是標(biāo)準(zhǔn)漢字字模排列形式旋轉(zhuǎn)而成的。對標(biāo)準(zhǔn)漢字字模轉(zhuǎn)換的目的就是在單片機系統(tǒng)的數(shù)據(jù)存儲器中(如E2PROM)存儲經(jīng)過調(diào)整的連續(xù)32字節(jié)的16進制數(shù)。
2、實際源程序
以下這段程序是放置在漢字源文本輸入框(SrcTxt)的Change事件中。通過判斷輸入在文本框內(nèi)的字符的ASCII碼是否小于零,就能判斷輸入的字符是不是漢字。這段程序還能計算漢字字符串的長度。同時把輸入的漢字存儲在一個臨時文件TempSrc.txt中。由于這段代碼是放在文本框的Change事件中,它能立即更新漢字個數(shù)的顯示。
Private Sub SrcTxt_Change( )
Static SStr As String
Dim i As Integer
Dim TempFile, TempFileBinary As String
TotalNum = 0
L = Len(SrcTxt.Text)
For i = 1 To L
tmpStr = StrConv(Mid$(SrcTxt.Text, i, 1), vbWide)
If Asc(Mid$(SrcTxt.Text, i, 1)) ﹤ 0 Then
TotalNum = TotalNum + 1
SStr = SrcTxt.Text
Else
MsgBox "寫入的不是漢字!"
SrcTxt.Text = Left(SrcTxt.Text, Len(SrcTxt.Text) - 1)
Exit Sub
End If
Next i
LblNum.Caption = Str$(TotalNum) + "個漢字"
(未完,下一頁)
|