91精品一区二区三区久久久久久_欧美一级特黄大片色_欧美一区二区人人喊爽_精品一区二区三区av

位置:51電子網 » 技術資料 » 單 片 機

基于AVR的LED數字大屏幕的設計與實現

發布時間:2008/5/26 0:00:00 訪問次數:611

        

    

    

    作者:宋暉 高小明

    

    1引言

    

    led顯示屏是八十年代后期在全球迅速發展起來的新型信息顯示媒體,應用越來越廣泛。atmega16l單片機是一款基于avr risc 的、低功耗cmos 8 位單片機,具有16k字節的自編程flash, 512字節的eeprom, 1k字節的sram, 通過avr單片機來控制led的顯示,結構簡單,應用靈活,并且易于擴展。

    

    2 系統設計原理

    

    2.1 編碼設計

    

    編碼設計有兩個過程:字庫提取以及字模編碼轉換。字庫的提取涉及到的兩個字庫文件,一個為asc16,專門存放ascii編碼;另一個為hzk16,專門存放漢字字庫編碼。要提取字庫,首先要對它進行初始化,即打開字庫。然后根據一個字符提取它相應的編碼。首先取出字符的內碼后(注意區分單字節和雙字節的內碼),接著通過內碼得到該字符對應的字模的編碼在ascii或hzk16內的偏移量,最后就可以根據這個地址在文件中的偏移位置找到相應的字模編碼,我們可以通過這個公式來計算:

    

    在ascii中,偏移量=(內碼的低地址)*16,

    

    在hzk16中,偏移量= ((內碼的高地址-161)*94 + (內碼的低地址-161))*32。

    

    此時得到的字模編碼不是最終所要的編碼(單字節數據如英文是按8*16點陣來顯示,而雙字節數據時如漢字是按16*16點陣來顯示的)。這里統一使用8*16點陣,這就需要對其轉換。下圖左表格表示的是漢字編碼在字庫內存放順序,右表格表示的是經過轉換過后的編碼存放順序。編碼轉換過程如圖1所示:

    

    

    

    圖1 編碼轉換

    

    2.2 矩陣轉換移位算法

    

    矩陣轉換移位算法目的就是如何把這些原始的數據轉換成串行的數據, 以便把數據正確的輸入到74hc595。原始的數據必須要對其轉換。下面為它的算法實現。

    

    for(m=0;m<8;m++)       //m表示的是第幾個led

    

      {? for(j=0;j<8;j++)   //j表示的是某個led的第幾排數據

    

      {? for(i=0;i<8;i++)   //i表示的是取某個led的第某排數據的第幾位

    

      { displayport_a[m][j]|=((displaycode_a[i][m]&0x01)<

    

          displaycode_a[i][m]=displaycode_a[i][m]>>1;

    

                   // displayport_a[m][j]表示存放已轉換好數據

    

                   // displaycode_a[i][m]表示存放的是原始數據

    

    //‘|’表示相或,‘&’表示相與,‘<<’表示左移

    

    }

    

    }

    

    }

    

    2.3 上位機和下位機的通信

    

    上位機和下位機的通信主要是通過rs232接口進行的,對于上位機的數據傳輸的速率為9600bps。為了便于數據的傳輸和接收,可以給要傳輸數據的前后加上標志位。如果數據發送量大,在發送數據時還可采用線程的方式來發送。而下位機接收數據則可采用單片機內全雙工的通用異步收發器(uart)來進行。

    

    uart有中斷和查詢兩種工作方式,uart初始化需要設置相關幾個控制寄存器,我們可以把uart幾個控制寄存器的初始化情況表示出來:

    

    ucr = 0x00 設置波特率時要先關閉uart

&n

        

    

    

    作者:宋暉 高小明

    

    1引言

    

    led顯示屏是八十年代后期在全球迅速發展起來的新型信息顯示媒體,應用越來越廣泛。atmega16l單片機是一款基于avr risc 的、低功耗cmos 8 位單片機,具有16k字節的自編程flash, 512字節的eeprom, 1k字節的sram, 通過avr單片機來控制led的顯示,結構簡單,應用靈活,并且易于擴展。

    

    2 系統設計原理

    

    2.1 編碼設計

    

    編碼設計有兩個過程:字庫提取以及字模編碼轉換。字庫的提取涉及到的兩個字庫文件,一個為asc16,專門存放ascii編碼;另一個為hzk16,專門存放漢字字庫編碼。要提取字庫,首先要對它進行初始化,即打開字庫。然后根據一個字符提取它相應的編碼。首先取出字符的內碼后(注意區分單字節和雙字節的內碼),接著通過內碼得到該字符對應的字模的編碼在ascii或hzk16內的偏移量,最后就可以根據這個地址在文件中的偏移位置找到相應的字模編碼,我們可以通過這個公式來計算:

    

    在ascii中,偏移量=(內碼的低地址)*16,

    

    在hzk16中,偏移量= ((內碼的高地址-161)*94 + (內碼的低地址-161))*32。

    

    此時得到的字模編碼不是最終所要的編碼(單字節數據如英文是按8*16點陣來顯示,而雙字節數據時如漢字是按16*16點陣來顯示的)。這里統一使用8*16點陣,這就需要對其轉換。下圖左表格表示的是漢字編碼在字庫內存放順序,右表格表示的是經過轉換過后的編碼存放順序。編碼轉換過程如圖1所示:

    

    

    

    圖1 編碼轉換

    

    2.2 矩陣轉換移位算法

    

    矩陣轉換移位算法目的就是如何把這些原始的數據轉換成串行的數據, 以便把數據正確的輸入到74hc595。原始的數據必須要對其轉換。下面為它的算法實現。

    

    for(m=0;m<8;m++)       //m表示的是第幾個led

    

      {? for(j=0;j<8;j++)   //j表示的是某個led的第幾排數據

    

      {? for(i=0;i<8;i++)   //i表示的是取某個led的第某排數據的第幾位

    

      { displayport_a[m][j]|=((displaycode_a[i][m]&0x01)<

    

          displaycode_a[i][m]=displaycode_a[i][m]>>1;

    

                   // displayport_a[m][j]表示存放已轉換好數據

    

                   // displaycode_a[i][m]表示存放的是原始數據

    

    //‘|’表示相或,‘&’表示相與,‘<<’表示左移

    

    }

    

    }

    

    }

    

    2.3 上位機和下位機的通信

    

    上位機和下位機的通信主要是通過rs232接口進行的,對于上位機的數據傳輸的速率為9600bps。為了便于數據的傳輸和接收,可以給要傳輸數據的前后加上標志位。如果數據發送量大,在發送數據時還可采用線程的方式來發送。而下位機接收數據則可采用單片機內全雙工的通用異步收發器(uart)來進行。

    

    uart有中斷和查詢兩種工作方式,uart初始化需要設置相關幾個控制寄存器,我們可以把uart幾個控制寄存器的初始化情況表示出來:

    

    ucr = 0x00 設置波特率時要先關閉uart

&n

相關IC型號

熱門點擊

 

推薦技術資料

硬盤式MP3播放器終級改
    一次偶然的機會我結識了NE0 2511,那是一個遠方的... [詳細]
版權所有:51dzw.COM
深圳服務熱線:13692101218  13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)
公網安備44030402000607
深圳市碧威特網絡技術有限公司
付款方式


 復制成功!
澄迈县| 镇宁| 井陉县| 宁南县| 台湾省| 油尖旺区| 房产| 宁陕县| 陇川县| 潞西市| 枝江市| 喀喇沁旗| 清涧县| 剑阁县| 新平| 鸡西市| 武鸣县| 秀山| 吴桥县| 文昌市| 吉木乃县| 茂名市| 民和| 益阳市| 宜宾市| 马龙县| 泸定县| 仪陇县| 安仁县| 万安县| 杭锦旗| 台江县| 汝南县| 深泽县| 灵山县| 衡水市| 株洲县| 藁城市| 南阳市| 金塔县| 响水县|