本發(fā)明涉及一種基于MCU和FPGA芯片的電子印章生成顯示方法。
背景技術(shù):
傳統(tǒng)的電子印章技術(shù)以數(shù)字技術(shù)模擬傳統(tǒng)的實物印章,大多是以位圖描述的方式實現(xiàn)的,其通常的做法是用實物印章在紙上加蓋一個章,然后用掃描儀對這張紙進行掃描,最后對掃描得到的位圖經(jīng)過去除毛刺等修飾工作后制成電子印章。由于位圖的分辨率是固定的,如果將包含印章的圖像進行縮放處理,則會導致印章圖像清晰度下降,從而不能滿足用戶對印章圖像的清晰度要求。另外,位圖中的圖像是固定不可變的,因此以位圖描述的方式不便于生成動態(tài)電子印章(即含有可變的圖像、文字等動態(tài)信息的電子印章)。
技術(shù)實現(xiàn)要素:
為了解決上述存在的問題,本發(fā)明公開了一種基于MCU和FPGA芯片的電子印章生成顯示方法,其具體技術(shù)方案如下:
一種基于MCU和FPGA芯片的電子印章生成顯示方法,包括如下操作步驟:
步驟1:利用圖像處理的理念和方法生成圓形、橢圓形的電子印章圖模;
步驟2:利用MCU改變印章的內(nèi)容;
步驟3:利用FPGA高速流水化的處理能力,把待顯示數(shù)據(jù)和電子印章數(shù)據(jù)疊加在一起,并顯示到LCD屏幕上;
步驟4:利用國標碼方便的在MCU和FPGA的系統(tǒng)上做任意漢字或字符的檢索,并對字庫點陣做縮放和旋轉(zhuǎn)處理。
所述步驟1包括通過觸摸鍵盤輸入配置印章的大小、樣式和內(nèi)容若干印章的參數(shù)。
所述步驟2中MCU接收到步驟1中設置的印章的參數(shù)后通過FPGA調(diào)取字庫存儲器的漢字、字符或中心圖案點陣數(shù)據(jù),并對這些點陣數(shù)據(jù)做縮放和旋轉(zhuǎn)處理,最后形成印章圖模,通過FPGA暫存到高速緩存中,最后按照LCD的驅(qū)動時序要求,讀出印章圖模數(shù)據(jù)和待顯示數(shù)據(jù),疊加后送到LCD的數(shù)據(jù)線上,顯示出帶有電子印章圖案的圖像。
所述觸摸鍵盤選用實體的鍵盤或者觸摸屏結(jié)合軟件的系統(tǒng),其中印章的參數(shù)包括印章字體、印章正文、印章寬度、印章高度、印章厚度、正文環(huán)繞、夾角、字符寬度、字符高度、中心圖案、圖案大小、印章顏色、附文內(nèi)容、附文高度、符文寬度、附文環(huán)繞、附文夾角和附文形狀。
所述MCU根據(jù)印章內(nèi)容、印章字體、附文內(nèi)容和中心圖案的設置,通過FPGA讀取相應漢字、字符或中心圖案的點陣數(shù)據(jù),送到FPGA和MCU之間的RAM區(qū),該RAM采用FPGA內(nèi)部的異步雙端口RAM資源實現(xiàn),以方便解決FPGA和MCU之間的接口同步,所有的漢字或者字符采用標準的國標碼,以方便漢字字庫的管理。
所述MCU讀取MCU和FPGA之間的異步雙口RAM中的點陣數(shù)據(jù),根據(jù)用戶的設置和計算出的旋轉(zhuǎn)角度對字庫、字符或中心圖案點陣做縮放和旋轉(zhuǎn)操作,把計算完的數(shù)據(jù)通過FPGA寫到高速緩存中,最后形成印章圖模。
所述FPGA根據(jù)LCD的顯示時序要求,讀出高速緩存中的待顯示數(shù)據(jù)和印章圖模數(shù)據(jù),把兩個數(shù)據(jù)疊加在一起形成帶有印章圖模的顯示圖像,在LCD顯示屏上顯示出來。
所述印章字體包括仿宋、黑體、楷體和幼圓,印章字體能夠擴展;印章正文根據(jù)客戶名稱的不同而改變;印章寬度和印章高度決定印章大小,當寬度和高度相同時印章呈現(xiàn)圓形,當不同時就是橢圓形;正文環(huán)繞即是印章內(nèi)容和印章外圓之間距離參數(shù);夾角即是印章正文中首字符和末字符之間的夾角;算法中根據(jù)字符寬度和字符高度和原字庫點陣的大小計算縮放系數(shù)對字庫點陣進行縮放處理,然后根據(jù)該字符的角度對縮放后的字庫點陣進行旋轉(zhuǎn)操作;中心圖案選用五角星、黨徽或者國徽,該中心圖案同樣和字庫點陣同時存儲在字庫存儲器,同樣根據(jù)中心圖案的大小設置對源點陣進行縮放處理;印章顏色選用紅色或者藍色;附文形狀選用直線形或者圓弧形。
所述LCD顯示屏采用RGB24或者RGB16位真彩色顯示屏,30MHz的像素時鐘可以達到60幀每秒的屏幕刷新率;高速緩存采用SDRAM,該芯片可以達到100MHzx16bits的讀寫速度;字庫點陣存儲器采用大容量的NAND芯片;MCU采用ARM系列中的Cortex-M3處理器內(nèi)核芯片;觸摸鍵盤輸入采用觸摸屏加相關軟件的配合;FPGA采用LATTICE公司的MachXO2系列芯片,用SD卡向NAND存儲器內(nèi)導入所需要的字庫數(shù)據(jù),和其他需要導入的數(shù)據(jù);
首先用計算機通過一個字庫軟件生成幾種類型的按照國標碼排列的字庫點陣,寫入SD卡內(nèi),然后把該SD卡插到MCU的SD卡接口插槽中,給系統(tǒng)加電,MCU把字庫寫入到NAND中,然后用查表法檢索NAND中的漢字點陣,MCU按照順序一個個讀入需要的字庫點陣,計算每一個漢字的角度,對字庫進行縮放和旋轉(zhuǎn)處理,經(jīng)過二值化后寫入到SDRAM中;
對于字庫點陣的縮放和旋轉(zhuǎn)操作,同時兼顧MCU的計算能力,采用雙線性插值算法,雙線性插值算法的公式如下:
該算法是處理效果和計算量之間的一個折中,在實際操作中把其分解成兩個一維的插值運算,比如先做x方向的運算,后坐y方向的運算。
本發(fā)明的有益效果是:
本發(fā)明,該方法能夠靈活快速的根據(jù)不同客戶的要求和屏幕分辨率的大小,配置印章的內(nèi)容和樣式,實現(xiàn)電子印章的生成顯示需求,同時兼顧印章的美觀大方。
附圖說明
圖1是本發(fā)明的原理示意圖,
圖2是雙線性插值示意圖。
圖3本發(fā)明具體實現(xiàn)的系統(tǒng)框圖。
具體實施方式
下面結(jié)合附圖和具體實施方式,進一步闡明本發(fā)明。應理解下述具體實施方式僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍。
圖1是本發(fā)明的原理示意圖,結(jié)合附圖可見,本基于MCU和FPGA芯片的電子印章生成顯示方法,包括如下操作步驟:
步驟1:利用圖像處理的理念和方法生成圓形、橢圓形的電子印章圖模;
步驟2:利用MCU改變印章的內(nèi)容;
步驟3:利用FPGA高速流水化的處理能力,把待顯示數(shù)據(jù)和電子印章數(shù)據(jù)疊加在一起,并顯示到LCD屏幕上;
步驟4:利用國標碼方便的在MCU和FPGA的系統(tǒng)上做任意漢字或字符的檢索,并對字庫點陣做縮放和旋轉(zhuǎn)處理。
所述步驟1包括通過觸摸鍵盤輸入配置印章的大小、樣式和內(nèi)容若干印章的參數(shù)。
所述步驟2中MCU接收到步驟1中設置的印章的參數(shù)后通過FPGA調(diào)取字庫存儲器的漢字、字符或中心圖案點陣數(shù)據(jù),并對這些點陣數(shù)據(jù)做縮放和旋轉(zhuǎn)處理,最后形成印章圖模,通過FPGA暫存到高速緩存中,最后按照LCD的驅(qū)動時序要求,讀出印章圖模數(shù)據(jù)和待顯示數(shù)據(jù),疊加后送到LCD的數(shù)據(jù)線上,顯示出帶有電子印章圖案的圖像。
所述觸摸鍵盤選用實體的鍵盤或者觸摸屏結(jié)合軟件的系統(tǒng),其中印章的參數(shù)包括印章字體、印章正文、印章寬度、印章高度、印章厚度、正文環(huán)繞、夾角、字符寬度、字符高度、中心圖案、圖案大小、印章顏色、附文內(nèi)容、附文高度、符文寬度、附文環(huán)繞、附文夾角和附文形狀。
所述MCU根據(jù)印章內(nèi)容、印章字體、附文內(nèi)容和中心圖案的設置,通過FPGA讀取相應漢字、字符或中心圖案的點陣數(shù)據(jù),送到FPGA和MCU之間的RAM區(qū),該RAM采用FPGA內(nèi)部的異步雙端口RAM資源實現(xiàn),以方便解決FPGA和MCU之間的接口同步,所有的漢字或者字符采用標準的國標碼,以方便漢字字庫的管理。
所述MCU讀取MCU和FPGA之間的異步雙口RAM中的點陣數(shù)據(jù),根據(jù)用戶的設置和計算出的旋轉(zhuǎn)角度對字庫、字符或中心圖案點陣做縮放和旋轉(zhuǎn)操作,把計算完的數(shù)據(jù)通過FPGA寫到高速緩存中,最后形成印章圖模。
所述FPGA根據(jù)LCD的顯示時序要求,讀出高速緩存中的待顯示數(shù)據(jù)和印章圖模數(shù)據(jù),把兩個數(shù)據(jù)疊加在一起形成帶有印章圖模的顯示圖像,在LCD顯示屏上顯示出來。
所述印章字體包括仿宋、黑體、楷體和幼圓,印章字體能夠擴展;印章正文根據(jù)客戶名稱的不同而改變;印章寬度和印章高度決定印章大小,當寬度和高度相同時印章呈現(xiàn)圓形,當不同時就是橢圓形;正文環(huán)繞即是印章內(nèi)容和印章外圓之間距離參數(shù);夾角即是印章正文中首字符和末字符之間的夾角;算法中根據(jù)字符寬度和字符高度和原字庫點陣的大小計算縮放系數(shù)對字庫點陣進行縮放處理,然后根據(jù)該字符的角度對縮放后的字庫點陣進行旋轉(zhuǎn)操作;中心圖案選用五角星、黨徽或者國徽,該中心圖案同樣和字庫點陣同時存儲在字庫存儲器,同樣根據(jù)中心圖案的大小設置對源點陣進行縮放處理;印章顏色選用紅色或者藍色;附文形狀選用直線形或者圓弧形。
所述LCD顯示屏采用RGB24或者RGB16位真彩色顯示屏,30MHz的像素時鐘可以達到60幀每秒的屏幕刷新率;高速緩存采用SDRAM,該芯片可以達到100MHzx16bits的讀寫速度;字庫點陣存儲器采用大容量的NAND芯片;MCU采用ARM系列中的Cortex-M3處理器內(nèi)核芯片;觸摸鍵盤輸入采用觸摸屏加相關軟件的配合;FPGA采用LATTICE公司的MachXO2系列芯片,用SD卡向NAND存儲器內(nèi)導入所需要的字庫數(shù)據(jù),和其他需要導入的數(shù)據(jù);
圖2是雙線性插值示意圖,圖中水平方向為x軸,豎直方向為y軸,Q12點的坐標(x1,y2)和函數(shù)值f(Q12),Q22點的坐標(x2,y2)和函數(shù)值f(Q12),Q11點的坐標(x1,y1)和函數(shù)值f(Q11),Q21點的坐標(x2,y1)和函數(shù)值f(Q21),要插值的點為P點,首先在x軸方向上,對R1和R2兩個點進行插值,其中R1和R2兩個點坐標分別為(x,y1)和(x,y2),那么這兩個點的函數(shù)值f(R1)和f(R2),那么:
然后在y方向進行線性插值,得到:
得到最終的雙線性插值公式為:
圖3本發(fā)明具體實現(xiàn)的系統(tǒng)框圖,首先用計算機通過一個字庫軟件生成幾種類型的按照國標碼排列的字庫點陣,寫入SD卡內(nèi),然后把該SD卡插到MCU的SD卡接口插槽中,給系統(tǒng)加電,MCU把字庫寫入到NAND中,然后用查表法檢索NAND中的漢字點陣,MCU按照順序一個個讀入需要的字庫點陣,計算每一個漢字的角度,對字庫進行縮放和旋轉(zhuǎn)處理,經(jīng)過二值化后寫入到SDRAM中。
對于字庫點陣的縮放和旋轉(zhuǎn)操作,同時兼顧MCU的計算能力,采用雙線性插值算法,雙線性插值算法的公式如下:
該算法是處理效果和計算量之間的一個折中,圖2是雙線性插值示意圖,在實際操作中把其分解成兩個一維的插值運算,比如先做x方向的運算,后坐y方向的運算。
本發(fā)明可以擴展至任意分辨率的顯示屏,比如1080p的高清顯示屏,但是由于其像素時鐘的提高,帶來相應的硬件實現(xiàn)的復雜和成本的增加,所以相應的芯片也要選擇性能更強,速度更快的芯片。
本發(fā)明可以很方便的改變公章內(nèi)容、樣式、大小,快捷方便,免去傳統(tǒng)做法的繁瑣步驟,和存儲需求。
本發(fā)明方案所公開的技術(shù)手段不僅限于上述技術(shù)手段所公開的技術(shù)手段,還包括由以上技術(shù)特征任意組合所組成的技術(shù)方案。
以上述依據(jù)本發(fā)明的理想實施例為啟示,通過上述的說明內(nèi)容,相關工作人員完全可以在不偏離本項發(fā)明技術(shù)思想的范圍內(nèi),進行多樣的變更以及修改。本項發(fā)明的技術(shù)性范圍并不局限于說明書上的內(nèi)容,必須要根據(jù)權(quán)利要求范圍來確定其技術(shù)性范圍。