<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

作者: 時(shí)間:2012-03-06 來(lái)源:網(wǎng)絡(luò ) 收藏

3 總體

3.1 屏體接口模塊

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

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

  #ifndef _SCREEN_H_

  #define _SCREEN_H_

  #include incboard.h

  extern u8 xdata SCR_BUF[16][16];

  void screen_init(void);

  #endif

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

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

首先是屏幕緩沖區定義:

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

static u8 data row,col;

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

SPI 和定時(shí)器0 的中斷服務(wù)程序是屏體接口的關(guān)鍵。

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

  void display_ONe_screen(void)interrupt 1 using 3{

  row = (++row)0x0f;

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

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

  }

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

3.2 UART 接口

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

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

  #ifndef _UART_H_

  #define _UART_H_

  void uart_init(void);

  void uart_put_c(u8 ch);

  u8 uart_get_c(u8 *);

  #endif

UART 的接口實(shí)現首先定義一個(gè)接收緩沖FIFO, 以及對FIFO 的讀下標uart_rd 和寫(xiě)下標uart_wr, 他們都是文件內可見(jiàn)的靜態(tài)變量:

  static u8 xdata uart_buf[64];

  static u8 uart_rd,uart_wr;

  bit fSend

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

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

  static void uart_isr(void)interrupt 4 using 1{

  if(RI){RI = 0;

  uart_buf[uart_wr++] = SBUF;

  uart_wr = 0x0f;

  }

  }

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>