<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ò ) 收藏

否則將要發(fā)送的信息發(fā)送并清零發(fā)送結束標記。這樣的發(fā)送程序, 其目的是將發(fā)送等待不限制在接口底層, 而是給上層一個(gè)決定是否等待發(fā)送結束的機會(huì )。

  u8 uart_put_c(u8 ch){

  if(! TI)return 1;

  TI = 0;SBUF = ch; return 0;

  }

同樣, 接收程序也給上層一個(gè)選擇等待的機會(huì )。接收函數首先判斷接收FIFO 是否為空, 如果為空或輸入指針參數錯誤, 則直接返回錯誤, 否則才從FIFO 中讀取數據并將數據存儲到指針指向的地址, 然后返回成功。

  u8 uart_get_c(u8 *ch){

  u8 i;

  if(! ch)return 1;

  if((i = (uart_rd+1)0x0f) == uart_wr)return 1;

  uart_rd = i; *ch = uart_buf[i];return 0;

  }

3.3 閃存接口

閃存的存取有特殊的時(shí)序, 閃存的內部結構也和具體應用要求有很大的不同。因此閃存的接口需要仔細。

K9F4008 閃存芯片的存儲結構組織如圖2所示。

K9F4008 閃存的存儲以塊為單位, 每個(gè)芯片共有128 塊。每塊有32 行, 每行有4 個(gè)幀, 每幀含有32 B.全部芯片為512 KB。

閃存接口提供的閃存初始化函數中就包括對這樣情況的處理。初始化函數要從閃存的第一個(gè)塊中讀出一個(gè)塊映射表, 該表下標是邏輯扇區, 表內每項存儲的是該邏輯扇區對應的物理塊編號。初始化函數在必要時(shí)對閃存進(jìn)行讀寫(xiě)校驗, 然后將壞塊從表中刪除。再尋找新的良好塊, 將其編號填入到對應邏輯扇區的表項中。這樣對應用來(lái)說(shuō), 只見(jiàn)到連續的扇區編號, 而不知道扇區究竟對應到那個(gè)塊。

閃存的接口頭文件Flash.h 如下:

  #ifndef _K9F4008_H_

  #define _K9F4008_H_

  void read_log_page(u8 sector,u8 page,u8 xdata *buf);

  u8 prog_log_page(u8 sector,u8 page,u8 xdata *buf);

  void erase_log_blk(u8 sector);

  bit flash_init(void);

  #endif

實(shí)現閃存的接口, 首先就是依據說(shuō)明書(shū)的時(shí)序定義閃存的基本操作。這里是以宏定義實(shí)現基本操作的。

  #define W_CMD(cmd_)

  bCLE=1; bWE=0; P2=(cmd_); bWE=1; bCLE=0

  #define W_ADDR(addr1_,addr2_,addr3_)

  bALE=1; bWE=0; P2=(addr1_); bWE=1;

  bWE=0; P2=(addr2_); bWE=1;

  bWE=0; P2=(addr3_); bWE=1;

  bALE=0

  #define W_DAT(dat_) bWE=0; P2=(dat_); bWE=1

  #define wait_RB while(! bRB)

  #define l2p(x_) fat_tbl[(x_)]

  3.4 EEPROM

內部集成的EEPROM 是與程序空間分開(kāi)的, 利用ISP/IAP 技術(shù)可將內部DATAFLASH 當EEPROM,擦寫(xiě)次數10 萬(wàn)次以上。EEPROM 可分為若干個(gè)扇區, 每個(gè)扇區包含512 B.使用時(shí), 建議同一次修改的數據放在同一個(gè)扇區, 不是同一次修改的數據放在不同的扇區, 不一定要用滿(mǎn)。數據存儲器的擦除操作是按扇區進(jìn)行的。

  sfr IAP_DATA = 0xC2; //Flash data register

  sfr IAP_ADDRH = 0xC3; //Flash address HIGH

  sfr IAP_ADDRL = 0xC4; //Flash address LOW

  sfr IAP_CMD = 0xC5; //Flash command register

  sfr IAP_TRIG = 0xC6; //Flash command trigger

  sfr IAP_CONTR = 0xC7; //Flash control register

根據使用說(shuō)明對EEPROM 的寄存器進(jìn)行定義。


上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(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>