手機(jī)號(hào)
未認(rèn)證執(zhí)照
夏 工(先生)
普通會(huì)員
夏 工 (先生)
西門(mén)子6es7390-1aj30-0aa0軌道
高效工程組態(tài)成就高效自動(dòng)化
打字顯示要求漢字在顯示屏上按從左到右的順序一個(gè)個(gè)的出現(xiàn),如同打字的效果。設(shè)計(jì)時(shí)可采用如下方法:首先將led顯示屏對(duì)應(yīng)的顯示緩沖區(qū)全部清零,即 led顯示空白,然后每間隔一個(gè)“軟定時(shí)器”設(shè)定的動(dòng)態(tài)顯示時(shí)間,顯示緩沖區(qū)依次加入一個(gè)漢字點(diǎn)陣數(shù)據(jù)并進(jìn)行掃描顯示,這樣就可達(dá)到打字顯示的效果。
3.2 pc機(jī)控制程序
a.通訊功能的實(shí)現(xiàn)
在windows環(huán)境下,實(shí)現(xiàn)pc與單片機(jī)的通訊可利用windows的通訊api函數(shù)或者利用vc++(或其它語(yǔ)言)的標(biāo)準(zhǔn)通訊函數(shù)_inp、_outp來(lái)實(shí)現(xiàn)。但上述兩種方法比較繁瑣,而采用activex控件mscomm32來(lái)實(shí)現(xiàn)則非常方便。該控件用事件的方式簡(jiǎn)化了對(duì)串口操作的編程,并可設(shè)置串行通信的數(shù)據(jù)發(fā)送和接收,還可對(duì)串口狀態(tài)及串口通信的信息格式和協(xié)議進(jìn)行設(shè)置。其初始化程序如下:一般情況下,pc要與多個(gè)單片機(jī)89c51系統(tǒng)進(jìn)行主從式通訊,為了區(qū)分各單片機(jī)系統(tǒng),可以使89c51采用串口工作方式3,即11位異步接收/發(fā)送方式,該方式的有效數(shù)據(jù)為9位,其中第9位為地址/數(shù)據(jù)信息的標(biāo)志位,其作用是使從機(jī)據(jù)此判斷發(fā)送的數(shù)據(jù)是否為地址,從而實(shí)現(xiàn)多機(jī)操作。但現(xiàn)在由于采用的是mscomm控件來(lái)實(shí)現(xiàn)pc機(jī)和單片機(jī)之間的通訊,這是一種標(biāo)準(zhǔn)的10位串口通信方式,即8位標(biāo)準(zhǔn)數(shù)據(jù)位和該數(shù)據(jù)的起始位、停止位各1位。因此二者格式不相符,故很難利用上述方案。因此可考慮將單片機(jī)串口設(shè)為工作方式1,即改為10位異步接收/發(fā)送方式來(lái)解決,其通訊流程如下:
首先發(fā)通信開(kāi)始標(biāo)志,接著發(fā)送需要操作的單片機(jī)系統(tǒng)地址,然后發(fā)送顯示工作命令字,該命令包括2個(gè)字節(jié),前一字節(jié)用于設(shè)定顯示方式和滾動(dòng)方向,后一字節(jié)則用于設(shè)定顯示速度。再往下是傳送顯示內(nèi)容的點(diǎn)陣數(shù)據(jù),最后對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)。該通訊規(guī)約非常簡(jiǎn)便,能夠較好的解決上述問(wèn)題,從而實(shí)現(xiàn)pc機(jī)與多單片機(jī)之間的主從式通訊及對(duì)顯示的控制。
需要注意的是,當(dāng)顯示內(nèi)容需要改變時(shí),為了避免在單片機(jī)串行中斷接收數(shù)據(jù)時(shí),顯示屏出現(xiàn)亂碼,應(yīng)使顯示屏?xí)翰伙@示(處于“黑屏”狀態(tài)),直到數(shù)據(jù)接收完全,串行中斷處理結(jié)束時(shí)再顯示。
漢字字模的提取非常關(guān)鍵,本文的字模數(shù)據(jù)取自u(píng)cdos下的字庫(kù)文件hzk16。關(guān)于這方面的介紹較多,文獻(xiàn)[2]給出了較為具體的在vc下提取漢字字模的方案,這里不再贅述。對(duì)于特殊字符或圖形點(diǎn)陣數(shù)據(jù)的提取,簡(jiǎn)便的方法可以先做一個(gè)bmp文件,然后用一些取模軟件(如字模提取v2.1)來(lái)獲得。為了顯示方便,點(diǎn)陣數(shù)據(jù)的格式應(yīng)為n×(16×8),不足要求的則應(yīng)以0數(shù)據(jù)補(bǔ)充。 b.動(dòng)態(tài)效果模擬顯示
為了方便調(diào)節(jié)led的顯示效果,筆者在pc機(jī)的控制界面上設(shè)計(jì)了led顯示屏的模擬顯示,它同實(shí)際的顯示效果完全一樣。用戶可以設(shè)定顯示的模式,并調(diào)節(jié)顯示速度,然后在界面上對(duì)顯示效果進(jìn)行預(yù)覽,同時(shí)還可以隨時(shí)修改和設(shè)定參數(shù),因而十分方便簡(jiǎn)捷。
為此,可先在界面上描繪出虛擬的led顯示屏,由于實(shí)際的顯示屏為160×16點(diǎn)陣,故須在界面 上設(shè)定相同的區(qū)域。
實(shí)現(xiàn)動(dòng)態(tài)顯示效果的方法和以上幾種基本類似,這里以滾動(dòng)顯示為例作一說(shuō)明。對(duì)于需要滾動(dòng)的文字,可以將其設(shè)置為位圖格式,暫存于內(nèi)存中,然后利用vc 提供的位圖拷貝函數(shù)bitblt將位圖復(fù)制到顯示位置。對(duì)于特殊字符或圖形,則可以直接利用bitblt函數(shù)調(diào)用到顯示位置。然后在類cleddlg的 ontimer函數(shù)中調(diào)用該函數(shù),以實(shí)現(xiàn)文字的滾動(dòng)顯示。另外,也可以通過(guò)設(shè)定不同的響應(yīng)時(shí)間間隔來(lái)改變文字的滾動(dòng)速度。
漢字顯示屏廣泛應(yīng)用與汽車(chē)報(bào)站器,廣告 屏等。本文介紹一種實(shí)用的漢字顯示屏的制作,考慮到電路元件的易購(gòu)性,沒(méi)有使用8*8的點(diǎn)陣發(fā)光管模塊,而是直接使用了256個(gè)高量度發(fā)光管,組成了16行16列的發(fā)光點(diǎn)陣。同時(shí)為了降低制作難度, 僅作了一個(gè)字的輪流顯示,實(shí)際使用時(shí)可根據(jù)這個(gè)原理自行擴(kuò)充顯示的字?jǐn)?shù)。
1漢字顯示的原理:
我們以u(píng)cdos中文宋體字庫(kù)為例,每一個(gè)字由16行16列的點(diǎn)陣組成顯示。即國(guó)標(biāo)漢字庫(kù)中的每一個(gè)字均由256點(diǎn)陣來(lái)表示。我們可以把每一個(gè)點(diǎn)理解為一個(gè)像素 ,而把每一個(gè)字的字形理解為一幅圖像。事實(shí)上這個(gè)漢字屏不僅可以顯示漢字,也可以顯示在256像素 范圍內(nèi)的任何圖形。
用8位的at89c51單片機(jī)控制, 由于單片機(jī)的總線為8位,一個(gè)字需要拆分為2個(gè)部分。
軟件打開(kāi)后輸入漢字,點(diǎn)“檢取”,十六進(jìn)制數(shù)據(jù)的漢字代碼即可自動(dòng)生成,把我們所需要的豎排數(shù)據(jù)復(fù)制到我們的程序中即可。
我們把行列總線接在單片機(jī)的i0口,然后把上面分析到的掃描代碼送入總線,就可以得到顯示的漢字了。 在這個(gè)例子里,由于一共用到16行,16列,如果將其全部接入89c51
單片機(jī), 一共使用32條io口,這樣造成了io資源的耗盡,系統(tǒng)也再無(wú)擴(kuò)充的余地。 實(shí)際應(yīng)用中我們使用4-16線譯碼器74ls154來(lái)完成列方向的顯示。 而行方向16條線則接在
p0口和p2口。
程序清單:
org 00h
loop: mov a,#0ffh ;開(kāi)機(jī)初始化,清除畫(huà)面
mov p0,a ;清除p0口
anl p2,#00 ;清除p2口
mov r2,#200
d100ms: mov r3,#250 ;延時(shí)100毫秒
djnz r3,$
djnz r2,d100ms
mov 20h,#00h ;取碼指針的初值
l100: mov r1,#100 ;每個(gè)字的停留時(shí)間
l16: mov r6,#16 ;每個(gè)字16個(gè)碼
mov r4,#00h ;掃描指針清零
mov r0,20h ;取碼指針存入r0
l3: mov a,r4 ;掃描指針存入a
mov p1,a ;掃描輸出
inc r4 ;掃描指針加1,掃描下一個(gè)
mov a,r0 ; 取碼指針存入a
mov dptr,#table ;取數(shù)據(jù)表的上半部分的代碼
movc a,@a+dptr
mov p0,a ; 輸出到p0
inc r0 ;取碼指針加1,取下一個(gè)碼。
mov a,r0
mov dptr,#table ;取數(shù)據(jù)表下半部份的代碼
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 ;一個(gè)字16個(gè)碼是否完成?
djnz r1,l16 ;每個(gè)字的停留時(shí)間是否到了?
mov 20h,r0 ;取碼指針存入20h
cjne r0,#0ffh,l100 ;8個(gè)字256個(gè)碼是否完成?
jmp loop ;反復(fù)循環(huán)
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
;以下分別輸入天,一,出, 寶,刀,屠,龍,的代碼,略。
聯(lián)系人 | 需求數(shù)量 | 時(shí)間 | 描述 |
---|---|---|---|
暫無(wú)產(chǎn)品詢價(jià)記錄 |
采購(gòu)商 | 成交單價(jià)(元) | 數(shù)量 | 成交時(shí)間 |
---|---|---|---|
暫無(wú)購(gòu)買(mǎi)記錄 |
地區(qū):汕頭
主營(yíng)產(chǎn)品:物流公司,貨運(yùn)站,國(guó)內(nèi)陸運(yùn)地區(qū):成都
主營(yíng)產(chǎn)品:聲屏障,護(hù)欄網(wǎng),石籠網(wǎng)地區(qū):邢臺(tái)
主營(yíng)產(chǎn)品:回收煙酒,回收茅臺(tái)酒,邢臺(tái)回收五糧液地區(qū):廊坊
主營(yíng)產(chǎn)品:富卓液壓,施羅德液壓,海普洛液壓