手機號
未認證執照
夏 工(先生)

普通會員
夏 工 (先生)
西門子6es7390-1aj30-0aa0軌道
高效工程組態成就高效自動化
打字顯示要求漢字在顯示屏上按從左到右的順序一個個的出現,如同打字的效果。設計時可采用如下方法:首先將led顯示屏對應的顯示緩沖區全部清零,即 led顯示空白,然后每間隔一個“軟定時器”設定的動態顯示時間,顯示緩沖區依次加入一個漢字點陣數據并進行掃描顯示,這樣就可達到打字顯示的效果。
3.2 pc機控制程序
a.通訊功能的實現
在windows環境下,實現pc與單片機的通訊可利用windows的通訊api函數或者利用vc++(或其它語言)的標準通訊函數_inp、_outp來實現。但上述兩種方法比較繁瑣,而采用activex控件mscomm32來實現則非常方便。該控件用事件的方式簡化了對串口操作的編程,并可設置串行通信的數據發送和接收,還可對串口狀態及串口通信的信息格式和協議進行設置。其初始化程序如下:一般情況下,pc要與多個單片機89c51系統進行主從式通訊,為了區分各單片機系統,可以使89c51采用串口工作方式3,即11位異步接收/發送方式,該方式的有效數據為9位,其中第9位為地址/數據信息的標志位,其作用是使從機據此判斷發送的數據是否為地址,從而實現多機操作。但現在由于采用的是mscomm控件來實現pc機和單片機之間的通訊,這是一種標準的10位串口通信方式,即8位標準數據位和該數據的起始位、停止位各1位。因此二者格式不相符,故很難利用上述方案。因此可考慮將單片機串口設為工作方式1,即改為10位異步接收/發送方式來解決,其通訊流程如下:
首先發通信開始標志,接著發送需要操作的單片機系統地址,然后發送顯示工作命令字,該命令包括2個字節,前一字節用于設定顯示方式和滾動方向,后一字節則用于設定顯示速度。再往下是傳送顯示內容的點陣數據,最后對數據進行校驗。該通訊規約非常簡便,能夠較好的解決上述問題,從而實現pc機與多單片機之間的主從式通訊及對顯示的控制。
需要注意的是,當顯示內容需要改變時,為了避免在單片機串行中斷接收數據時,顯示屏出現亂碼,應使顯示屏暫不顯示(處于“黑屏”狀態),直到數據接收完全,串行中斷處理結束時再顯示。
漢字字模的提取非常關鍵,本文的字模數據取自ucdos下的字庫文件hzk16。關于這方面的介紹較多,文獻[2]給出了較為具體的在vc下提取漢字字模的方案,這里不再贅述。對于特殊字符或圖形點陣數據的提取,簡便的方法可以先做一個bmp文件,然后用一些取模軟件(如字模提取v2.1)來獲得。為了顯示方便,點陣數據的格式應為n×(16×8),不足要求的則應以0數據補充。 b.動態效果模擬顯示
為了方便調節led的顯示效果,筆者在pc機的控制界面上設計了led顯示屏的模擬顯示,它同實際的顯示效果完全一樣。用戶可以設定顯示的模式,并調節顯示速度,然后在界面上對顯示效果進行預覽,同時還可以隨時修改和設定參數,因而十分方便簡捷。
為此,可先在界面上描繪出虛擬的led顯示屏,由于實際的顯示屏為160×16點陣,故須在界面 上設定相同的區域。
實現動態顯示效果的方法和以上幾種基本類似,這里以滾動顯示為例作一說明。對于需要滾動的文字,可以將其設置為位圖格式,暫存于內存中,然后利用vc 提供的位圖拷貝函數bitblt將位圖復制到顯示位置。對于特殊字符或圖形,則可以直接利用bitblt函數調用到顯示位置。然后在類cleddlg的 ontimer函數中調用該函數,以實現文字的滾動顯示。另外,也可以通過設定不同的響應時間間隔來改變文字的滾動速度。
漢字顯示屏廣泛應用與汽車報站器,廣告 屏等。本文介紹一種實用的漢字顯示屏的制作,考慮到電路元件的易購性,沒有使用8*8的點陣發光管模塊,而是直接使用了256個高量度發光管,組成了16行16列的發光點陣。同時為了降低制作難度, 僅作了一個字的輪流顯示,實際使用時可根據這個原理自行擴充顯示的字數。
1漢字顯示的原理:
我們以ucdos中文宋體字庫為例,每一個字由16行16列的點陣組成顯示。即國標漢字庫中的每一個字均由256點陣來表示。我們可以把每一個點理解為一個像素 ,而把每一個字的字形理解為一幅圖像。事實上這個漢字屏不僅可以顯示漢字,也可以顯示在256像素 范圍內的任何圖形。
用8位的at89c51單片機控制, 由于單片機的總線為8位,一個字需要拆分為2個部分。
軟件打開后輸入漢字,點“檢取”,十六進制數據的漢字代碼即可自動生成,把我們所需要的豎排數據復制到我們的程序中即可。
我們把行列總線接在單片機的i0口,然后把上面分析到的掃描代碼送入總線,就可以得到顯示的漢字了。 在這個例子里,由于一共用到16行,16列,如果將其全部接入89c51
單片機, 一共使用32條io口,這樣造成了io資源的耗盡,系統也再無擴充的余地。 實際應用中我們使用4-16線譯碼器74ls154來完成列方向的顯示。 而行方向16條線則接在
p0口和p2口。
程序清單:
org 00h
loop: mov a,#0ffh ;開機初始化,清除畫面
mov p0,a ;清除p0口
anl p2,#00 ;清除p2口
mov r2,#200
d100ms: mov r3,#250 ;延時100毫秒
djnz r3,$
djnz r2,d100ms
mov 20h,#00h ;取碼指針的初值
l100: mov r1,#100 ;每個字的停留時間
l16: mov r6,#16 ;每個字16個碼
mov r4,#00h ;掃描指針清零
mov r0,20h ;取碼指針存入r0
l3: mov a,r4 ;掃描指針存入a
mov p1,a ;掃描輸出
inc r4 ;掃描指針加1,掃描下一個
mov a,r0 ; 取碼指針存入a
mov dptr,#table ;取數據表的上半部分的代碼
movc a,@a+dptr
mov p0,a ; 輸出到p0
inc r0 ;取碼指針加1,取下一個碼。
mov a,r0
mov dptr,#table ;取數據表下半部份的代碼
movc a,@a+dptr
mov p2,a ;輸出到p2口
inc r0
mov r3,#02 ;掃描1毫秒
delay2: mov r5,#248 ;
djnz r5,$
djnz r3,delay2
mov a,#00h ;清除屏幕
mov p0,a
anl p2,#00h
djnz r6,l3 ;一個字16個碼是否完成?
djnz r1,l16 ;每個字的停留時間是否到了?
mov 20h,r0 ;取碼指針存入20h
cjne r0,#0ffh,l100 ;8個字256個碼是否完成?
jmp loop ;反復循環
table :
;漢字“倚”的代碼
db 01h,00h,02h,00h,04h,00h,1fh,0ffh
db 0e2h,00h,22h,00h,22h,0fch,26h,88h
db 2ah,88h,0f2h,88h,2ah,0fah,26h,01h
db 63h,0feh,26h,00h,02h,00h,00h,00h
;以下分別輸入天,一,出, 寶,刀,屠,龍,的代碼,略。

| 聯系人 | 需求數量 | 時間 | 描述 |
|---|---|---|---|
| 暫無產品詢價記錄 | |||
| 采購商 | 成交單價(元) | 數量 | 成交時間 |
|---|---|---|---|
| 暫無購買記錄 | |||
地區:滄州
主營產品:機床維修,鑄件,工量具地區:汕頭
主營產品:物流公司,貨運站,國內陸運地區:東莞
主營產品:東莞清理污水池,東莞清理化糞池,東莞市政管道清淤地區:邢臺
主營產品:回收煙酒,回收茅臺酒,邢臺回收五糧液