新聞中心

        EEPW首頁 > 光電顯示 > 設計應用 > 基于單片機的LED顯示屏硬件設計方案

        基于單片機的LED顯示屏硬件設計方案

        作者: 時間:2012-03-06 來源:網絡 收藏

        3 總體

        3.1 屏體接口模塊

        屏體接口包括屏體接口頭文件、屏幕緩沖區的定義、屏體接口初始化、刷新定時器中斷服務程序和SPI中斷服務程序幾個部分。

        屏體接口的頭文件screen.h 應該使屏幕緩沖區對其他應用可見, 并提供屏體初始化函數。具體定義如下:

          #ifndef _SCREEN_H_

          #define _SCREEN_H_

          #include incboard.h

          extern u8 xdata SCR_BUF[16][16];

          void screen_init(void);

          #endif

        這樣就把屏幕緩沖區的結構暴露給應用, 但應用不必關心具體的屏幕刷新操作。

        具體屏體接口的實現集中在一個文件screen.c 中定義。具體如下:

        首先是屏幕緩沖區定義:

        u8 xdata SCR_BUF[16][16]_at_0x0000;//~0x00ff 256Bytes其次是當前顯示行和輸出列變量定義, 屬于靜態變量, 應用程序不可見。

        static u8 data row,col;

        然后是屏幕初始化, 包括刷新定時器0 的初始化、SPI 的初始化、鎖存bLatch 信號的初始化、屏幕緩沖區的初始清零以及定時器和SPI 中斷的優先權和使能位的初始化代碼略。

        SPI 和定時器0 的中斷服務程序是屏體接口的關鍵。

        定時器0 的中斷服務程序首先進行掃描行增量取模運算,并將掃描行輸出。然后依據掃描行取出屏幕緩沖區對應行的第一個字節發送到SPI 端口。同時列增量。

          void display_ONe_screen(void)interrupt 1 using 3{

          row = (++row)0x0f;

          P0 = (P0 0xf0)|((~row) 0xf);

          col = 0;SPDAT = ~SCR_BUF[row][col++];

          }

        這樣編寫的屏體驅動, 應用只要在初始化屏體后,向屏幕緩沖區中寫入要顯示的數據即可, 而不必關心屏幕顯示的細節。

        3.2 UART 接口

        UART 接口負責與上位機的數據收發, 盡管發送可以同步進行, 但接收必須異步進行。因而UART 接口的核心仍然應該是一個中斷服務程序。

        UART 接口的頭文件uart.h 隱藏了接收緩沖區的信息, 用戶可調用的函數只有初始化、發送和接收。

          #ifndef _UART_H_

          #define _UART_H_

          void uart_init(void);

          void uart_put_c(u8 ch);

          u8 uart_get_c(u8 *);

          #endif

        UART 的接口實現首先定義一個接收緩沖FIFO, 以及對FIFO 的讀下標uart_rd 和寫下標uart_wr, 他們都是文件內可見的靜態變量:

          static u8 xdata uart_buf[64];

          static u8 uart_rd,uart_wr;

          bit fSend

        UART 的初始化包括進行FIFO 的初始化和UART格式、波特率、中斷的初始化。代碼略。

        UART 的ISR 主要是服務于接收, 無條件地將數據裝入FIFO, 并調整寫入指針。

          static void uart_isr(void)interrupt 4 using 1{

          if(RI){RI = 0;

          uart_buf[uart_wr++] = SBUF;

          uart_wr = 0x0f;

          }

          }

        提供給用戶的發送程序首先檢測發送結束標記, 如果為0, 表示上次發送尚未結束, 直接返回錯誤信息1。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 吴桥县| 遵义市| 云安县| 河津市| 沙湾县| 得荣县| 巴彦淖尔市| 安图县| 泰来县| 瓮安县| 吉安市| 定日县| 五家渠市| 赣州市| 铅山县| 蕉岭县| 冷水江市| 若尔盖县| 渭源县| 大荔县| 富顺县| 遂平县| 汉寿县| 金门县| 磴口县| 刚察县| 马关县| 宜都市| 黑山县| 松桃| 辉县市| 正镶白旗| 雷波县| 如皋市| 榕江县| 灵武市| 鄂尔多斯市| 米泉市| 滕州市| 连平县| 祥云县|