新聞中心

        EEPW首頁 > 光電顯示 > 設計應用 > 關于led顯示的一點粗淺經驗之談

        關于led顯示的一點粗淺經驗之談

        作者: 時間:2011-04-29 來源:網絡 收藏

        一: LED器件的基礎
        LED發光器件一般常用的有2類、數碼管和點陣
        1:數碼管
        a,數碼管常用的一般8字型,分為A B C D E F G P段,其中P位小數點
        b,數碼管常用的有10根管腳(單位),每段一根管腳,另外兩根管腳為公共端,2根是通的
        c,從尺寸上分的話種類很多, 常用的有0.3 0.5 0.8 1.0 1.2 1.5 1.8 2.3 3.0 4.0 5.0 等等
        d,一般小于1.0的為單管芯,(1.0有單有雙),1.2~~1.5為雙管芯,1.8以上為3個以上的管芯, 因而他們的供電電壓要求不同,
        一般每個關芯的壓降為2.1v左右, 我的經驗是0.8以下5v供電,1.0~2.3為12v,3.0以上更高
        e,數碼管分共陰和共陽兩種

        2:點陣
        a,點陣常用的為8*8,以前還有5*8(現在不大用了)
        b,點陣都是單管芯,分(行)共陰和(行)共陽,一般都用5v供電
        c,8*8點陣為16根管腳(單色, 也有24根的, 可能是作廢的雙色點陣或者為了能在同一種線路板上實現單色雙色都可用而設計
        的, 也比較常見)8根行8根綠,雙色為24根管腳, 8根行, 8根列紅, 8根列綠。

        二: 基本原理
        分為靜態(只有數碼管能實現)和動態
        1:靜態的比較好實現,在此不多講了

        2:數碼管動態

        a,硬件連接
        數碼管一般為1/13 能掃描, 再高的話亮度損失比較大,在此假設為列為13列, 行為16行, 共陽管, 每行數碼管的各段連在
        一起,每列數碼管的公共段連在一起. 列開關用tip127, 他可以直接用154驅動, 達林頓管5安培, 注意127輸出不要加電阻
        行用595(164不建議)+2803或者2003+一個9013, 在2003的輸出要加上限流電阻,一般為56~330歐姆(如果是1.0的數碼管,
        可以直接用595加電阻驅動)

        b,軟件

        采用89c51為cpu, 存儲器可采用24c系列, 或者28c系列, 注意他們的寫入速度都不是很快, 不過一般數碼管的輸入設備為
        鍵盤或遙控器, 速度足夠了, 還有24c系列的讀出速度也比較慢, 我發現每次讀出的數據大概只有20以內才不會影響更新顯
        采用時鐘中斷1, 中斷時間不能超過1.5ms, 最好為1.2ms左右, 可以在中斷服務程序中讀24c02, 也可以在中斷的間
        隙中讀取, 但必須保證能夠讀出所有的一列數據! 讀出的數據放到一塊顯示區中, (在內存中定義一個數組buf[16]), 在中
        斷子程序中把數據發送的595中即可, 最好采用串口發送, 編程最簡單.

        發送完畢后,關掉控制行的154, 給595的RCLK(12腳)一個脈沖, 把數據從移位寄存器傳輸到鎖存器, 而后打開154并輸入列
        信號即可

        3: 點陣

        a,點陣一般采用1/16掃描,控制原理和數碼管差不多

        b,硬件: 行用154+tip127,列用595加電阻(0~56歐姆)直接驅動

        c,軟件: 方案比較多,見下面

        三: 先說說信息的存儲
        分為2種,
        1:一種為固化的漢字, 漢字點陣信息存于27c256 中, 最多存1024個16*16 點陣漢字, 要修改只能重新寫27c256, 優點是不丟
        失, 一般我們為銀行做的都是這種, 他很少修改顯示能容, 而且以后每次修改可以收費(哈哈~~~),缺點是不靈活

        2: 另一種是可以用戶自己修改的, 修改方式又分為2種, 早期一般用鍵盤或者遙控器修改, 那樣必須在主辦上固化有漢字字
        庫, 可用27c040固化ucdos的hzk16全角字庫和asc16半角字庫, 用戶輸入區位嗎進行修改, 用戶需要顯示的漢字以區位碼的
        方式存到一片E2POM中, 顯示的時候程序根據區位嗎讀取點陣信息送到屏上顯示, 還有一種近年來常用的方式就是利用微機
        串口進行修改,這里面還分為兩種
        A,控制板上沒有字庫, 微機發送的是顯示的點陣信息, 控制板接受后把信息存到帶電池的RAM中(也可用E2PROM,但速度
        很慢), 這種的缺點是掉電池的RAM不太可靠, 常常丟失信息
        B,控制板上帶字庫, 微機發送漢字的機器碼(內碼)即可, 其他同上

        四: 顯示的控制

        信息的發送可以有好多方式, 根據采用器件的不同而不同, 有的廠家采用374控制而不采用595, 那樣的話直接寫一個外部端口
        即可, 374級連方式, (如果用1 排374 的話在傳輸中必須關掉顯示, 顯示字較多的話影響亮度, 用2 排374 不必關掉顯示但增加硬
        件成本), 目前用得較少了,595的很常見。 發送可以用傳口, 很簡單, 也可以用別的口模擬串口發送 (因為傳口還有可能隨時接
        受微機的信號), 也可以采用串口復用 (不過我不會,:)~~)
        我采用的是用 374+165 向595 發送數據, 硬件比較復雜, 但是在以后的顯示花樣中很好用! 特別是左右移位, 爽極了!
        提示一下: 最近用雙龍的90S8515發現很好, 因為他還有一個SPI口, 用來送595信號更爽! 速度可到3M,(12M晶體), 強烈建議
        大家用這種芯片(靠, 也不知到雙龍看到了會不會給點獎勵....)

        五: 一些注意事項:

        1: 顯示時間,每行1.5MS
        2: 根據經驗,89C51 12M晶體最大控制48個16*16點陣,再大的話可以提高晶體頻率和優化程序,(就是發送程序的時間最短)
        3: 在顯示的字比較多時, 一定要注意發送子程序的代碼效率, 因為發送是一個循環, 所以循環體內的處理越快越好, 大家現在
        大都用C51, 更得注意, 我可是吃過虧的。

        大家看下面的例子:
        if(hangno==0x10)hangno=0; //hangno為顯示的行序號
        for(i=0;i32;i++)
        {
        PORT1=*(addr+hangno*0x600+i); //我的漢字信息是0~600為第一行信息
        //600~0c00為第二行信息...
        PORT2=0x0ff;
        }

        每次發送32個字節(16個字), 程序編譯通過, 沒有問題, 可是當顯示64個漢字時(假設)顯示就亂了, 后來改為

        if(hangno==0x10)hangno=0; //hangno為顯示的行序號
        w=hangno*0x600;
        for(i=0;i128;i++)
        {
        PORT1=*(addr+w+i); //我的漢字信息是0~600為第一行信息
        //600~0c00為第二行信息...
        PORT2=0x0ff;
        }

        就沒有問題了, 大家自己看看, 就知道原因了, 對吧?


        寫了這么多, 想到那些到那, 很不系統, 不過好累呀, 我下兩盤軍旗放松放松, 大家多提提意見, 這只是講的小屏的控制方法(2m2), 大屏的完全不同,

        本文引用地址:http://www.104case.com/article/169027.htm


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 嘉善县| 开远市| 板桥市| 盐边县| 岳阳县| 安新县| 来安县| 若尔盖县| 静乐县| 定安县| 三原县| 阿拉善右旗| 买车| 昌江| 永吉县| 武宁县| 珲春市| 凤台县| 柘城县| 井冈山市| 东台市| 灵石县| 固阳县| 宣武区| 富源县| 新乡县| 博客| 湘潭县| 阜新市| 巫溪县| 莆田市| 华阴市| 镇赉县| 天全县| 西丰县| 肥西县| 恩施市| 南溪县| 河曲县| 木兰县| 望奎县|