一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

采用STC12C5A60S2單片機實現(xiàn)LED數(shù)字屏的控制設(shè)計

電子設(shè)計 ? 作者:電子設(shè)計 ? 2018-10-31 09:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

自上世紀90 年代以來, 隨著LED 顯示技術(shù)設(shè)計制造水平的不斷提高,LED 數(shù)字屏逐漸在生產(chǎn)和生活中大量使用,LED 數(shù)字屏以其特有的顯示介質(zhì), 在大面積, 全天候, 高亮度和超高亮度顯示屏領(lǐng)域凸現(xiàn)優(yōu)勢。LED 顯示技術(shù)發(fā)展的十幾年中, 新器件和新技術(shù)不斷采用, 制造成本逐漸降低, 生產(chǎn)分工不斷細化, 但大量應用的同時也暴露出LED 顯示技術(shù)的若干缺陷, 總體上技術(shù)尚未成熟, 標準尚未完全建立, 有許多方面值得進行更深入的研究與改進。

隨著大規(guī)模集成電路的迅猛發(fā)展, 微處理器的運算、控制能力大大增加, 單片計算機已在很多工業(yè)及民用系統(tǒng)中承擔智能化的任務, 與迅猛發(fā)展的運算速度相比, 其端口擴展能力則遜色得多( 數(shù)目有限且擴展困難), 因此研發(fā)過程中不得不在節(jié)省端口上投入大量精力, 目前國內(nèi)為解決端口擴展問題可采用軟件處理的方式,這樣加重了軟件編寫的難度,或采用擴展端口的專用芯片。這兩種方法將引起軟件成本的提高或硬件電路復雜度的提高,不利于一些小型系統(tǒng)的研發(fā),STC12C5A60S2單片機具有多種串行傳輸模式, 在一定程度上解決了這個矛盾。

LED 數(shù)字屏應用非常廣泛, 不僅能顯示文字, 還能顯示各種圖形、圖表, 甚至各種動畫效果, 是廣告宣傳、新聞傳播的有力工具。

本文采用STC12C5A60S2 單片機、接口NAND 閃存和上位PC 機,實現(xiàn)了對16×128 點陣LED 數(shù)字屏的控制。

1 芯片選型

1.1 屏體

由于屏體是商業(yè)成品, 因此系統(tǒng)芯片的選型首選為能與屏體配合的芯片。屏體自備電源, 能直接將蓄電池的能量轉(zhuǎn)變?yōu)? V 的直流電源, 并且這個電源也通過屏體的接口電纜輸出到系統(tǒng)板上。因此系統(tǒng)可直接引用該電源, 不必自備電源電路。

1.2 單片機

綜合考慮屏體和系統(tǒng)需求, 選用國內(nèi)宏晶科技生產(chǎn)的單時鐘/機器周期(1T) 的單片機STC12C5A60S2。

STC12C5A60S2 是新一代高速8051 單片機, 其指令代碼完全兼容傳統(tǒng)8051, 但速度快8~12 倍。內(nèi)部集成MAX810 專用復位電路, 其工作電壓范圍是3.5 V~5.5 V,滿足要求的電壓。由于是單周期的8051 ( 傳統(tǒng)8051 是12 周期), 可選擇較易于獲得準確波特率的11.059 2 MHz晶振, 而不必擔心工作速度降低。

STC12C5A60S2 有60 KB 的用戶應用程序空間,256 B的RAM 和1024 B 的XRAM.能滿足程序代碼的需求和緩沖區(qū)定義的需求。另有與程序存儲空間獨立的一片閃存區(qū)域, 可在應用編程中作EEPROM 使用。

STC12C5A60S2 有雙UART 以及ISP 串口, 串口資源足夠系統(tǒng)使用。另外通過宏晶科技提供的軟件, 使用UART 可很容易地實現(xiàn)程序下載。STC12C5A60S2 有36個通用I/O 口, 大部分可位控, 并具有強推挽輸出的能力, 足夠系統(tǒng)使用。

STC12C5A60S2 有4 個16 bit 定時器和一個獨立的波特率發(fā)生器, 另外還有兩個PCA 模塊, 能獲得豐富的定時器資源。STC12C5A60S2 有PDIP-40 封裝的芯片, 易于快速進入實驗。

1.3 閃存

因為16 ×16 點陣的漢字庫容量在250 KB 左右, 而MCS51 的尋址空間只有64 KB.接口大于64 KB 容量的普通存儲芯片就必須進行總線擴展, 采用兩次鎖存地址的方法來讀寫, 既需要復雜的電路, 又占用較長的存取時間。同樣,NOR 閃存與EPROM 的引腳結(jié)構(gòu)相類似, 有同樣的接口復雜性, 成本也十分高。要實現(xiàn)單片機與字庫芯片的簡單接口( 不需擴展) , 只能選用串行結(jié)構(gòu)的存儲器或命令、地址和數(shù)據(jù)復用總線結(jié)構(gòu)的存儲器。

串行結(jié)構(gòu)的存儲器多為EEPROM, 沒有很大的容量, 不適合做字庫芯片。因此只有選用命令、地址和數(shù)據(jù)復用總線的NAND 閃存作為字庫存儲芯片。

字庫所需的容量不大, 但最好能5 V 供電, 且編程的緩存要求較小的芯片。SAMSUNG 公司出品的K9F4008W 是一款512 KB 的NAND 閃存, 僅有8 個IO端口, 且工作電壓范圍較廣(3 V~5.5 V), 可以兼容3 V 和5 V 的硬件系統(tǒng), 并且?guī)幊虝r僅需要32 B 的緩沖, 正適合作為字庫存儲的芯片。

因此, 閃存芯片的可電擦寫特性頁非常適用于需要更換字庫的場合。故該芯片是十分理想的漢字庫存儲器。

2 電路設(shè)計

根據(jù)系統(tǒng)整體結(jié)構(gòu)設(shè)計的電路的原理圖如圖1 所示。

采用STC12C5A60S2單片機實現(xiàn)LED數(shù)字屏的控制設(shè)計

3 總體設(shè)計

3.1 屏體接口模塊

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

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

#ifndef _SCREEN_H_

#define _SCREEN_H_

#include "inc\board.h"

extern u8 xdata SCR_BUF[16][16];

void screen_init(void);

#endif

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

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

首先是屏幕緩沖區(qū)定義:

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

static u8 data row,col;

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

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

定時器0 的中斷服務程序首先進行掃描行增量取模運算,并將掃描行輸出。然后依據(jù)掃描行取出屏幕緩沖區(qū)對應行的第一個字節(jié)發(fā)送到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++];

}

這樣編寫的屏體驅(qū)動, 應用只要在初始化屏體后,向屏幕緩沖區(qū)中寫入要顯示的數(shù)據(jù)即可, 而不必關(guān)心屏幕顯示的細節(jié)。

3.2 UART 接口

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

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

#ifndef _UART_H_

#define _UART_H_

void uart_init(void);

void uart_put_c(u8 ch);

u8 uart_get_c(u8 *);

#endif

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

static u8 xdata uart_buf[64];

static u8 uart_rd,uart_wr;

bit fSend

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

UART 的ISR 主要是服務于接收, 無條件地將數(shù)據(jù)裝入FIFO, 并調(diào)整寫入指針。

static void uart_isr(void)interrupt 4 using 1{

if(RI){RI = 0;

uart_buf[uart_wr++] = SBUF;

uart_wr &= 0x0f;

}

}

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

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

u8 uart_put_c(u8 ch){

if(! TI)return 1;

TI = 0;SBUF = ch; return 0;

}

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

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 閃存接口

閃存的存取有特殊的時序, 閃存的內(nèi)部結(jié)構(gòu)也和具體應用要求有很大的不同。因此閃存的接口需要仔細設(shè)計。

K9F4008 閃存芯片的存儲結(jié)構(gòu)組織如圖2所示。

采用STC12C5A60S2單片機實現(xiàn)LED數(shù)字屏的控制設(shè)計

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

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

閃存的接口頭文件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

實現(xiàn)閃存的接口, 首先就是依據(jù)說明書的時序定義閃存的基本操作。這里是以宏定義實現(xiàn)基本操作的。

#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

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

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23847

    瀏覽量

    674139
  • 單片機
    +關(guān)注

    關(guān)注

    6067

    文章

    44992

    瀏覽量

    650499
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5434

    瀏覽量

    124504
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    如何利用stc12c5a60s2單片機控制12864播放視頻

    stc12c5a60s2單片機跟普通的51單片機相比有何優(yōu)點?如何利用stc12c5a60s2單片機
    發(fā)表于 08-19 07:46

    STC12C5A60S2單片機串口通信的相關(guān)資料推薦

    STC12C5A60S2單片機雙串口通信,互相發(fā)送STC12C5A60S2單片機擁有兩個全雙工串行通信接口,串口1的功能及操作與傳統(tǒng)51單片機
    發(fā)表于 11-26 07:07

    STC12C5A60S2/STC12C5201AD系列單片機

    STC12C5A60S2/STC12C5201AD系列單片機器件手冊
    發(fā)表于 09-23 23:33 ?176次下載

    STC12C5A60S2的說明書_PDF

    STC宏晶單片機,STC12C5A60S2的說明書
    發(fā)表于 11-06 17:01 ?85次下載

    STC12C5A60S2資料

    STC12C5A60S2的全部中文資料,單片機的器件使用手冊。
    發(fā)表于 04-11 15:18 ?75次下載

    STC12C5A60S2單片機ID讀取

    STC12C5A60S2 單片機 ID 讀取。
    發(fā)表于 05-10 15:12 ?10次下載

    STC12C5A60S2系列單片機EEPROM的應用

    STC12C5A60S2系列單片機EEPROM的應用,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 10-26 15:55 ?0次下載

    基于STC12C5A60S2的顯示電路應用

    設(shè)計使用宏晶科技的8位單片機STC12C5A60S2作為中央控制器,結(jié)合NAND閃存芯片K9F4008存儲漢字庫的8×128點陣LED數(shù)字
    發(fā)表于 09-07 08:58 ?34次下載
    基于<b class='flag-5'>STC12C5A60S2</b>的顯示<b class='flag-5'>屏</b>電路應用

    STC12C5A60S2單片機控制流水燈的電路圖免費下載

    本文檔的主要內(nèi)容詳細介紹的是STC12C5A60S2單片機控制流水燈的電路圖免費下載。
    發(fā)表于 03-28 13:41 ?31次下載
    <b class='flag-5'>STC12C5A60S2</b><b class='flag-5'>單片機</b><b class='flag-5'>控制</b>流水燈的電路圖免費下載

    STC12C5A60S2單片機雙串口通信的實現(xiàn)的詳細資料說明

    本文檔的主要內(nèi)容詳細介紹的是STC12C5A60S2單片機雙串口通信的實現(xiàn)的詳細資料說明免費下載。
    發(fā)表于 03-01 08:00 ?19次下載

    STC12C5A60S2系列單片機PCA時鐘源設(shè)置

    STC12C5A60S2系列單片機PCA時鐘源設(shè)置
    發(fā)表于 11-18 11:36 ?13次下載
    <b class='flag-5'>STC12C5A60S2</b>系列<b class='flag-5'>單片機</b>PCA時鐘源設(shè)置

    STC12C5A60S2單片機11.0592晶振實現(xiàn)115200波特率串口通信

    /////////STC12C5A60S2單片機11.0592晶振實現(xiàn)115200波特率串口通/////////////////////////////////STC12C5A60S2
    發(fā)表于 11-18 11:51 ?50次下載
    <b class='flag-5'>STC12C5A60S2</b><b class='flag-5'>單片機</b>11.0592晶振<b class='flag-5'>實現(xiàn)</b>115200波特率串口通信

    STC12C5A60S2單片機雙串口通信,互相發(fā)送

    STC12C5A60S2單片機雙串口通信,互相發(fā)送STC12C5A60S2單片機擁有兩個全雙工串行通信接口,串口1的功能及操作與傳統(tǒng)51單片機
    發(fā)表于 11-18 12:06 ?29次下載
    <b class='flag-5'>STC12C5A60S2</b><b class='flag-5'>單片機</b>雙串口通信,互相發(fā)送

    STC12C5A60S2系列單片機中文手冊

    STC12C5A60S2系列單片機中文手冊免費下載。
    發(fā)表于 05-19 17:03 ?81次下載

    STC12C5A60S2單片機英文資料

    電子發(fā)燒友網(wǎng)站提供《STC12C5A60S2單片機英文資料.pdf》資料免費下載
    發(fā)表于 10-25 15:24 ?1次下載
    <b class='flag-5'>STC12C5A60S2</b><b class='flag-5'>單片機</b>英文資料