• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Linux的LED點陣應(yīng)用程序設(shè)計

    2011-10-25 10:17:56張紹龍丁建國曹曉霞
    唐山師范學(xué)院學(xué)報 2011年2期
    關(guān)鍵詞:右移測試程序燈亮

    張紹龍,趙 寧,丁建國,曹曉霞

    (1.遷西縣氣象局,河北 唐山 064300;2.石家莊鐵道大學(xué) 經(jīng)濟管理學(xué)院,河北 石家莊 050043;3.石家莊鐵道大學(xué) 材料學(xué)院,河北 石家莊 050043;4.唐山市氣象局 科技服務(wù)中心,河北 唐山 063000)

    設(shè)備驅(qū)動程序在Linux內(nèi)核中扮演著特殊的角色,它類似于一個獨立的黑盒子,使某個特定的硬件可以響應(yīng)一個良好的內(nèi)部編程接口,同時完成隱藏設(shè)備的工作。凡是操作系統(tǒng)控制的外部設(shè)備,即使是最簡單的硬件電路,也是需要驅(qū)動程序的。設(shè)備驅(qū)動程序在Linux里,除了直接修改系統(tǒng)的核心源代碼,把設(shè)備驅(qū)動程序加進(jìn)核心之外,還可以把設(shè)備驅(qū)動程序作為可加載的模塊,由系統(tǒng)管理員動態(tài)加載,使之成為核心的一部分。編寫驅(qū)動程序的主要工作就是編寫子函數(shù),并填充file_operations各個域。

    此應(yīng)用程序是在LED驅(qū)動加載之后使用,否則無法正常運行。本設(shè)計首先將LED點陣驅(qū)動起來,通過編寫測試程序,使其能夠按照設(shè)定的意圖顯示。

    1 LED點陣數(shù)碼管工作原理

    圖1 LED點陣示意圖

    LED顯示選用8×8發(fā)光二極管點陣,用于發(fā)布消息、顯示漢字的點陣式LED顯示屏通常由若干塊LED點陣顯示模塊組成,8×8顯示點陣模塊每塊有64個獨立發(fā)光二極管,為了減少引腳且便于封裝,各種LED顯示點陣模塊都采用陣列形式排布,即在行列線的交點處接有顯示LED,因此,LED點陣顯示模塊的顯示驅(qū)動只能采用動態(tài)驅(qū)動方式,每次最多只能點亮一行LED(共陽形式LED顯示點陣模塊)或一列LED(共陰形式LED顯示點陣模塊)。如圖1所示的顯示驅(qū)動原理圖中,點陣為共陰,由總線鎖存芯片74573為點陣顯示模塊提供列驅(qū)動電流,8個行信號則由集電極開路門驅(qū)動器7407控制,行線和列線都掛在總線上,微處理器可以通過總線操作來完成對每一個LED點陣顯示模塊內(nèi)每個LED顯示點的亮、暗控制。

    當(dāng)對應(yīng)的某一列置1電平,某一行置0電平,則相應(yīng)的二極管就亮;控制一個燈亮需使某一列的置‘1’,其它行為‘0’,其余的都為‘1’;如第一行,第八列的燈亮,其它的都滅,則DR8,DR7,DR6,DR5,DR4,DR3,DR2,DR1為 11111110,OC8,OC7,OC6,OC5,OC4,OC3,OC2,OC1為10000000可實現(xiàn)相應(yīng)的燈亮。

    2 驅(qū)動程序和應(yīng)用程序的設(shè)計方案

    在此設(shè)計中,整個LED顯示模塊是作為一個I/O進(jìn)行控制的,共16位輸入數(shù)據(jù),LED的鎖存信號由系統(tǒng)總線的寫信號和地址信號經(jīng)過簡單的組合邏輯而成,在板載的CPLD中完成??刂圃擄@示模塊的IO地址為0x08000000。

    圖2 系統(tǒng)電路連接圖

    編寫驅(qū)動程序?qū)崿F(xiàn)在Linux下控制LED點陣顯示,加載驅(qū)動程序后,顯示的效果是64位全亮。實驗步驟為打開終端窗口,利用ifconfig命令設(shè)置網(wǎng)絡(luò)設(shè)備,將宿主PC機的根目錄掛載到S3C2410-RP目標(biāo)板的mnt目錄下,而后通過insmod加載驅(qū)動程序,通過lsmod命令查看系統(tǒng)已經(jīng)加載好的驅(qū)動程序,最后運行測試程序。

    可將DR8-DR1作為高8位和OC8-OC1作為低8位連接起來構(gòu)成16位二進(jìn)制數(shù),再將此數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)控制所有燈的滅與亮。例如上述的就可以用111111101000000來表示,對應(yīng)的十進(jìn)制數(shù)65152來控制燈亮。以下函數(shù)可實現(xiàn)點亮64個點:

    Int moban[8]={1,2,4,8,16,32,64,128};

    For(i=0;i<8;i++)

    For(j=0;j<8;j++)

    A[i][j]=256*(255-moban[i])+moban[j];

    以此可求出控制每一個的相應(yīng)數(shù)字,就可以輸出任何一種圖形。采用一個循環(huán)實現(xiàn)控制控制點的移動;再分別設(shè)計豎柱的右移,行柱的下移,平面的右移,平面的下移,數(shù)字循環(huán)顯示等。每種顯示的方案如下:

    (1)豎柱循環(huán)右移

    采用moban[8]中的數(shù)字依次顯示可以實現(xiàn)豎柱的右移。

    (2)行柱的下移

    采用語句

    for(i=0;i<8;i++)

    Row[i]=256*(255-moban[i])+255;求出每一行的控制數(shù)字后讓它們依次顯示,就是行柱下移。

    (3)平面右移

    先點亮一列,再點亮兩列,依次增加,直至全亮,可實現(xiàn)平面右移的效果。采用語句

    for(i=0;i<8;i++) MianR[i]=2i+1-1;

    求出的八個數(shù)實現(xiàn)平面右移的數(shù)字。

    (4)平面下移

    同上,先點亮一行,再點亮兩行,依次增加,直到八行全亮。采用語句

    for(i=0;i<8;i++)

    MianD[i]=256*(255-(2i+1-1))+255;

    求出八個數(shù)就是實現(xiàn)平面下移的數(shù)字。

    (5)0-9的數(shù)字循環(huán)

    同樣依照上述算法計算。

    3 結(jié)束語

    利用驅(qū)動程序?qū)崿F(xiàn)最基本的顯示,而后通過編寫測試程序?qū)崿F(xiàn)各種顯示,如果再進(jìn)一步完善,可以編寫QT設(shè)計簡單測試界面,在顯示屏上可以有更直觀的效果。

    猜你喜歡
    右移測試程序燈亮
    “水溶液中的離子平衡”的“不一定”
    華容道玩法大解密
    2019款廣汽本田凌派發(fā)動機故障燈亮
    太極拳養(yǎng)生八式(上)
    少林與太極(2018年8期)2018-08-26 05:53:58
    基于Castle型機械手的三溫量產(chǎn)測試平臺實現(xiàn)
    手機APP交互界面人因適合性測試程序的設(shè)計與實現(xiàn)
    中心主導(dǎo)制訂的《VHF/UHF頻率范圍內(nèi)測向系統(tǒng)測向靈敏度的測試程序》等兩項國際標(biāo)準(zhǔn)在ITU官網(wǎng)正式發(fā)布
    電氣自動化控制設(shè)備可靠性測試探討
    C語言位運算中鮮為人知的事
    軟件工程(2014年5期)2014-09-24 11:53:38
    寶馬750li發(fā)動機大修后安全氣囊燈亮
    彰化市| 抚顺县| 正阳县| 大新县| 隆昌县| 广南县| 建昌县| 从江县| 镇沅| 包头市| 咸宁市| 灵石县| 济宁市| 剑阁县| 伊宁市| 乌拉特前旗| 邮箱| 黔西县| 循化| 慈利县| 五原县| 徐闻县| 界首市| 斗六市| 罗山县| 萨嘎县| 广平县| 镇江市| 芦溪县| 合作市| 拉萨市| 深水埗区| 新丰县| 朔州市| 敦煌市| 青神县| 洪江市| 嵩明县| 阳东县| 许昌县| 新乐市|