STC12系列單片機PCA模塊應用

2020-11-30 電子工程世界

 STC12C5系列單片機屬於增強性單片機,有多強呢?帶有SPI接口,PCA模塊,定時器輸出,16K+的片上ROM,越來越妖孽了!前面見識了定時器輸出功能,現在來領教一下STC12C5A60S單片機的PCA捕捉比較模塊,後面有心情再看看SPI模塊。


按我個人理解捕捉比較的意思應該是捕捉外部引腳上的跳變,與預設的值比較,然後做相應的動作。下文按這個理解展開。老規矩,寄存器功能介紹省略了,懶得抄手冊了。


雖然說寄存器設置的說明不介紹,不過表格還是得給一張,這樣條理比較清晰,如下:



1)PCA模塊PWM的應用,感覺設置寄存器最少的一個:


PWM(脈寬調製,改變輸出方波的佔空比)估計擁有最廣泛的應用空間(恕我眼見淺),據說常有人用PWM做心跳燈向妹子表白,不知道有沒有成功;還有改變直流電機的輸出轉速。。。 


怎麼理解PWM這個功能呢?剛去了趟WC突然想到了:在一個有0xFF個刻度的跑表上,CH是秒表,CCAPnH是表面上的一個絆腳石,當CH遇到絆腳石,直接給跪了,一直跪到下一輪0x00,繼續站起來行走。如果CCAPnH沒被移動,CH還在同一個地方周而復始的摔倒(人說不要再同一個地方摔倒)。然後計算從0x00-0xFF這段時間裡,CH站著走路佔了這段時間的百分之幾,給跪佔了剩下的多少(路遇倒地不扶也就算了還做應用題)!


#include

 

enum sState

{

    sInit=0,sPca,sClk,sPwm,sClkOut,

};

 

#define CCF1_INT 0x02

#define CCF0_INT 0x01

 

#define ResetPCA() \

do{ \

    CCON = 0; \

    CL = 0; \

    CH = 0; \

    CMOD = 0x00; \

    CCAPM0 = 0x00; \

    CCAPM1 = 0x00; \

}while(0); \

#define StartPCA() \

do{ \

    CR = 1; \

}while(0); \

#define StopPCA() \

do{ \

    CR = 0; \

}while(0); \

#define SetModnCmp(n) \

do{ \ 

    CCAPM##n |= PCA0_ECOM; \

    CCAPM##n |= PCA0_MAT; \    

}while(0); \

 

#define SetModnTog(n) \

do{ \

    CCAPM##n |= PCA0_TOG; \

}while(0); \

#define SetCapnMod(n,mod) \

do{ \

    CCAPM##n |= mod; \

}while(0); \

#define SetCCAPn(n,hi,lo) \

do{ \

    CCAP##n##H = hi; \

    CCAP##n##L = lo; \    

}while(0); \

//ECCFn 使能CCFn中斷。使能寄存器CCON的比較/捕獲標誌CCFn,用來產生中斷。

#define EnPcaModnInt(n) \

do{ \

    CCAPM##n |= PCA0_ECCF; \    

}while(0); \

 

//PCA0_ECOM 允許比較器功能控制位

//PCA0_PWM 脈寬調製模式。當PWMn=1時,CEXn腳用作脈寬調製輸出

#define SetPwmMod(n) \

do{ \

    CCAPM##n |= PCA0_ECOM|PCA0_PWM; \    

}while(0); \

 

unsigned int CCAPnHVal = 0x80,CCAPnLVal = 0x80; 

 

void delay()

{

    int i=0,j=0;

    for(i=0;i<1000;i++)

    {

        for(j=0;j<110;j++);

    }

}

 

int main()

{

    unsigned char sState = sInit;

    ResetPCA();

    //pwm有比較功能 但沒用到匹配...真特立獨行

    //只要設置CCAPMn的PWM位和比較位

    SetPwmMod(0);

    

    //設置佔空比,有點類似定時器Mod2,TH自動裝載到TL

    //此處是CCAPnH自動裝載到CCAPnL(8位);CH裝載到CL(8位)

    //CH-CL低於    CCAPnH-CCAPnL輸出0,其他輸出1

    while(1)

    {

        StopPCA();

        SetCCAPn(0,CCAPnHVal,CCAPnLVal);

        if(CCAPnHVal == 0xF0)

            CCAPnLVal = CCAPnHVal = 0x00;

        else

            CCAPnLVal = CCAPnHVal = CCAPnLVal+0x10;

        //啟動pca模塊

        StartPCA();

        delay();

    }

}

PWM0的輸出引腳是P1.3在我的開發板上正好連了一個紅色LED,忽明忽亮的,眼都刺瞎了!用示波器測試時的確輸出可變的波形。(無圖無真相隨我BB)


本來想用中斷控制pwm佔空比,不過沒成功,沒法調試好麻煩,只能用這種粗線條的延時了。


2) 在看PCA捕捉功能之前,先看下51MCU的計數器功能,PCA的捕捉功能應該是加強版計數器:


2a) 51的定時器對系統時鐘計數,計滿諾幹個時鐘脈衝後,產生溢出;計數器對外部輸入信號計數,計滿諾幹負跳變後,產生溢出。傳說,計算流水線上的工件數會用到計數器功能。想像一下點鈔機裡的票票經過光感時,使計數器不斷的加一,想想是不是有點小激動?醒醒了,拿錢不是自己的。還是看下面的代碼了


#include

 

#define MakeByte(target, Hi,Lo) \  

do{ \  

    target |= (((Hi)<<4)|(Lo)); \   

}while(0); \  

  

#define SetTH(n,val) \  

do{ \  

    TH##n = val; \  

}while(0); \  

  

#define SetTL(n,val)  \  

do{ \  

    TL##n = val; \  

}while(0); \  

  

#define EnableET(n) \  

do{ \  

    ET##n = 0x01; \  

    IE |= 0x80; \  

}while(0); \

 

#define StartClk(val) \

do{ \

TCON |= val; \

}while(0); \

sbit P10=P1^0;

 

int main()

{

//T0工作在方式2 計數器模式

MakeByte(TMOD,0x00,0x06);

SetTH(0,0xFF);

SetTL(0,0xFF);


EnableET(0);

//啟動定時器

StartClk(0x10);

while(1);

}  

 

void IsrT0() interrupt 1 

{

    //TH自動裝入0xFF,再計滿一個負跳變又能進入isr

    P10 = ~P10;

}

程序對P3.4引腳採樣,遇到負跳變計數器加1,因為設置計數溢出是0xFF,因此只要有負跳變就產生中斷,對P1.0引腳取反。因為文章是關於PCA的,所以不能安排MCU計數器模塊搶了鏡頭~



藍色波形是信號發生器的輸出,黃色波形是P1.0的輸出。因為2個負跳變產生一個完整的波形,因此P1.0方波周期正好對應2個信號發生器的周期。


2b) 回到文章的主角PCA模塊,當PCA模塊工作在捕獲模式時,對外部輸入CEXn(P13/P14)的跳變進行採樣。當採樣到有效跳變時,PCA硬體將PCA計數器陣列寄存器(CH和CL)的值裝載到捕獲寄存器(CCAPnH和CCAPnL)中。如果CCON中的CCFn位和CCAPMn中的ECCFn位被置位,將產生中斷。


#include

 

enum sState

{

sInit=0,sPca,sClk,sPwm,sClkOut,

};

 

#define CCF1_INT 0x02

#define CCF0_INT 0x01

 

#define ResetPCA() \

do{ \

CCON = 0; \

CL = 0; \

CH = 0; \

CMOD = 0x00; \

CCAPM0 = 0x00; \

CCAPM1 = 0x00; \

}while(0); \

#define StartPCA() \

do{ \

CR = 1; \

}while(0); \

#define StopPCA() \

do{ \

CR = 0; \

}while(0); \

#define SetModnCmp(n) \

do{ \ 

CCAPM##n |= PCA0_ECOM; \

CCAPM##n |= PCA0_MAT; \

}while(0); \

 

#define SetModnTog(n) \

do{ \

CCAPM##n |= PCA0_TOG; \

}while(0); \

#define SetCapnMod(n,mod) \

do{ \

CCAPM##n |= mod; \

}while(0); \

#define SetCCAPn(n,hi,lo) \

do{ \

CCAP##n##H = hi; \

CCAP##n##L = lo; \

}while(0); \

//ECCFn 使能CCFn中斷。使能寄存器CCON的比較/捕獲標誌CCFn,用來產生中斷。

#define EnPcaModnInt(n) \

do{ \

CCAPM##n |= PCA0_ECCF; \

}while(0); \

 

//PCA0_ECOM 允許比較器功能控制位

//PCA0_PWM 脈寬調製模式。當PWMn=1時,CEXn腳用作脈寬調製輸出

#define SetPwmMod(n) \

do{ \

CCAPM##n |= PCA0_ECOM|PCA0_PWM; \

}while(0); \

 

//當PCA模塊工作在捕獲模式時,對外部輸入CEXn的跳變進行採樣。

//當採樣到有效跳變時,PCA硬體將PCA計數器陣列寄存器(CH和CL)的值裝載到捕獲寄存器(CCAPnH和CCAPnL)中。

//如果CCON中的CCFn位和CCAPMn中的ECCFn位被置位,將產生中斷。

//當P1.3出現下降沿時產生中斷 對P1.5取反

 

void delay()

{

    int i=0,j=0;

    for(i=0;i<200;i++)

    {

        for(j=0;j<110;j++);

    }

}

 

int main()

{

unsigned char sState = sInit;

ResetPCA();

EA = 1;

//捕捉模式,捕捉到跳變沿時觸發中斷

//CH-CL不用與CCAPnH-CCAPnL比較,因此不用使能ECOMn

//也不需要設置PCA計數器陣列寄存器(CH和CL)以及捕獲寄存器(CCAPnH和CCAPnL)

SetCapnMod(0,PCA0_CAPN);

//開啟PCA中斷

EnPcaModnInt(0);

//啟動pca模塊

StartPCA();

while(1)

{

P12 = ~P12;

delay();

}

}

 

void PCA_ISR(void) interrupt 7

{

switch(CCON&0x03)

{

//模塊0觸發中斷

case CCF0_INT:

//清除模塊中斷標誌位

CCON &= (0x00<

P15 = ~P15;

break;

//模塊1觸發中斷

case CCF1_INT:

CCON &= (0x00<

break;

default:

break;

}

}


程序燒寫到MCU後,用跳線帽連接P12和P13,使得P13對P12的輸出經行採樣。下面是示波器的輸出:



藍色波形是P12引腳的輸出,黃色波形是P15引腳的輸出。圖中(我的低端示波器)可以很明顯的看出P13上採樣到一個負跳表,P15發生一次翻轉。


這個功能跟計數器每次計滿一個脈衝就觸發中斷類似,不過感覺沒有計數器那麼靈活,它可以計數256個跳變,不過PCA捕捉可以同時捕捉雙邊沿,可用於脈寬測量;




STC MCU PCA模塊還有其他功能,不過感覺有點無聊,就不一一展示了,不過代碼還是要貼上來已做備忘:


#include

 

enum sState

{

sInit=0,sPca,sClk,sPwm,sClkOut,

};

 

#define CCF1_INT 0x02

#define CCF0_INT 0x01

 

#define ResetPCA() \

do{ \

CCON = 0; \

CL = 0; \

CH = 0; \

CMOD = 0x00; \

CCAPM0 = 0x00; \

CCAPM1 = 0x00; \

}while(0); \

#define StartPCA() \

do{ \

CR = 1; \

}while(0); \

#define SetModnCmp(n) \

do{ \ 

CCAPM##n |= PCA0_ECOM; \

CCAPM##n |= PCA0_MAT; \

}while(0); \

 

#define SetModnTog(n) \

do{ \

CCAPM##n |= PCA0_TOG; \

}while(0); \

#define SetCapnMod(n,mod) \

do{ \

CCAPM##n |= mod; \

}while(0); \

#define SetCCAPn(n,hi,lo) \

do{ \

CCAP##n##H = hi; \

CCAP##n##L = lo; \

}while(0); \

//

#define EnPcaModnInt(n) \

do{ \

CCAPM##n |= PCA0_ECCF; \

}while(0); \

 

#define SetPwmMod(n) \

do{ \

CCAPM##n |= PCA0_ECOM|PCA0_PWM; \

}while(0); \

 

int main()

{

unsigned char sState = sInit;

 

ResetPCA();

EA = 1;

while(1)

{

switch(sState)

{

case sInit:

//輸入提示

break;

default: 


sState = sInit;

break;

case sPca:

ResetPCA();

//捕捉模式,捕捉到跳變沿時觸發中斷

//CH-CL不用與CCAPnH-CCAPnL比較,因此不用使能ECOMn

//也不需要設置PCA計數器陣列寄存器(CH和CL)以及捕獲寄存器(CCAPnH和CCAPnL)

SetCapnMod(0,PCA0_CAPN|PCA0_CAPP);

//開啟PCA中斷

EnPcaModnInt(0);

sState = sInit;

break;

case sClk:

                        //軟體定時器功能

                        ResetPCA();

//定時器功能

//CH-CL增加計數值,然後與CCAPnH和CCAPnL比較,相等觸發中斷

//有比較功能 設置比較和匹配控制位

SetModnCmp(0);

//設置 CCAPnH和CCAPnL,當CH-CL計數值==CCAPnH-CCAPnL中的預製值

//發生中斷

SetCCAPn(0,0x80,0x00);

//開啟PCA中斷

EnPcaModnInt(0);

sState = sInit;

break;

case sPwm:

ResetPCA();

//pwm有比較功能 但沒用到匹配...真特立獨行

//只要設置CCAPMn的PWM位和比較位

SetPwmMod(0);

//設置佔空比,有點類似定時器Mod2,TH自動裝載到TL

//此處是CCAPnH自動裝載到此處是CCAPnL(8位);CH裝載到CL(8位)

//CH-CL低於 CCAPnH-CCAPnL輸出0,其他輸出1

SetCCAPn(0,0x80,0x80);

sState = sInit;

break;

case sClkOut:

                        //高速輸出功能

                        ResetPCA();

//當PCA計數器的CH-CL與CCAPnH-CCAPnL中的預製值相等時

//CCPn發生翻轉,這個功能也用到比較-匹配

SetModnCmp(0);

SetModnTog(0);

EnPcaModnInt(0);

sState = sInit;

break;   

}

//啟動pca模塊

StartPCA();

}

}

 

void PCA_ISR(void) interrupt 7

{

switch(CCON&0x03)

{

//模塊0觸發中斷

case CCF0_INT:

//清除模塊中斷標誌位

CCON &= (0x00<

break;

//模塊1觸發中斷

case CCF1_INT:

CCON &= (0x00<

break;

default:

break;

}

}


關鍵字:STC12系列  單片機  PCA模塊 編輯:什麼魚 引用地址:http://news.eeworld.com.cn/mcu/2019/ic-news012643030.html 本網站轉載的所有的文章、圖片、音頻視頻文件等資料的版權歸版權所有人所有,本站採用的非本站原創文章及圖片等內容無法一一聯繫確認版權者。如果本網所選內容的文章作者及編輯認為其作品不宜公開自由傳播,或不應無償使用,請及時通過電子郵件或電話通知我們,以迅速採取適當措施,避免給雙方造成不必要的經濟損失。

推薦閱讀

STC12系列單片機的位變量

C語言中,bit是新增的一個關鍵詞,它是用來定義一個「位變量」bdata是把變量定義到數據RAM的可位尋址區,即51系列的20H~2FH單元中,最後bitflag應該是bit flag(和關鍵字bit中間有個空格)表示定義一個位變量flag,這個flag變量只能是0或者1。

發表於 2019-05-20

STC12系列單片機的空閒模式、休眠模式

喚醒後的MCU將從用戶程序的0000H處開始正常工作。控制單片機進入空閒模式和休眠模式的是電源管理寄存器PCON,這個寄存器的最低兩位,IDL和PD這兩位分別用來設定是否使單片機進入空閒模式和掉電模式。將IDL/PCON.0置為1,則單片機就進入了空閒(IDLE)模式將PD/PCON.1置為1,則單片機將進入掉電(Power Down)模式更詳細的資料請參考STC12系列單片機數據手冊第二章:

發表於 2019-05-20

STC12系列單片機冷啟動、熱啟動

冷啟動——是指在斷電狀態下重新上電。冷啟動,是在下載程序開始時,為了是單片檢測有無下載信號。若有則下載;若無則執行原來的程序。熱啟動——是指已經處於上電狀態,給復位端加復位信號(還有其他類型的復位),程序重新運行。怎樣判斷是冷啟動、熱啟動?可通過查詢PCON寄存器中的POF位來判斷,單片機上電冷啟動後,POF位變為1,可由軟體清0實際判斷流程圖:怎樣才能產生冷啟動復位、熱啟動復位?(更詳細信息請參考STC12系列單片機數據手冊)

發表於 2019-05-20

STC12系列單片機的AUXR輔助寄存器

AUXR.0:S1BRS,如果為1那麼串口1的波特率發生器為獨立波特率發生器,否則為定時器1AUXR.1:EXTRAM,為1則可以使用內部擴展RAMAUXR.2:BRTx12,為1則獨立波特率發生器不分頻,否則12分頻。AUXR.3:S2SMOD,為1串口2波特率加倍,否則不加倍AUXR.4:BRTR,為1則允許獨立波特率允許,否則不允許。AUXR.5:UART_M0x6,為1則串口模式0為2分頻,否則為12分頻AUXR.6:T1x12,為1則定時器1不分頻,否則12分頻AUXR.7:T0x12,為1則定時器0不分頻,否則12分頻注意:12分頻相當於傳統的51單片機的速度註:AUXR是Auxiliary Register(輔助

發表於 2019-05-09

STC12系列單片機冷啟動、熱啟動

冷啟動——是指在斷電狀態下重新上電。冷啟動,是在下載程序開始時,為了是單片檢測有無下載信號。若有則下載;若無則執行原來的程序。熱啟動——是指已經處於上電狀態,給復位端加復位信號(還有其他類型的復位),程序重新運行。怎樣判斷是冷啟動、熱啟動?可通過查詢PCON寄存器中的POF位來判斷,單片機上電冷啟動後,POF位變為1,可由軟體清0實際判斷流程圖:怎樣才能產生冷啟動復位、熱啟動復位?(更詳細信息請參考STC12系列單片機數據手冊)

發表於 2019-01-26

MSP430單片機寫Info Memory

MSP430F5438A單片機在寫Info Memory時,需要先把整頁數據擦除,才能寫進去。否則寫失敗。而且還得設置下載程序時不要擦除 Info memory, 否則存儲數據失敗。因為沒此下載時都給你擦除了。

發表於 2020-05-08

相關焦點

  • STC12系列單片機解密介紹
    STC12系列單片機在設計上比89系列完善,沒有了原來的漏洞,所以利用軟體解密是無法達到解密的,所以原來STC89系列單片機解密的方法對STC12單片機是無法適用的。STC12系列單片機命名規則如下: 其中這個部分的STC12單片機和AT89C2051的管腳完全兼容。如果RAM容量上512位元組的STC12C54系列單片機和2051管腳不兼容。由於STC12系列單片機吸取了STC89單片機容易被解密的教訓,在STC12單片機的加密方面有所提高。
  • S12單片機模塊應用及程序下載調試
    清華大學Freescale單片機/DSP應用開發研究中心  安鵬 馬偉摘 要:本文對邀請賽選用的主控晶片MC9S12DG128單片機的一些外圍接口模塊作了介紹,包括功能上的描述和例程及初始化的過程,對一些參賽隊伍中遇到的
  • 51單片機的無線供電模塊設計
    打開APP 51單片機的無線供電模塊設計 發表於 2019-04-22 15:01:04 現在已經用於一些小的家電中,也許在不久的將來將用於室內供電和城市的供電,徹底代替電線,應用前景廣泛。本文主要闡述近距離無線供電,具有低功耗、安全等特點,通過單片機檢測[1]更好的增加了它的可靠性。 2系統方案設計 無線供電演示裝置的設計製作。該電路由電源發射電路、接收電路、檢測顯示電路三部分組成[2]。
  • 用SST單片機的PCA功能產生PWM脈衝
    一、程序說明:SST單片機帶有5路PCA模塊,PCA功能比普通的單片機相比提供更強的計時性,同時更少CPU的幹預,用它可以減少軟體的開銷和改進精度。
  • 常用單片機優缺點詳細剖析
    雖然程序表面上簡潔, 但與pic單片機比較空間佔用很大應用範圍在低功耗及超低功耗的工業場合應用的比較多使用最多的器件MSP430F系列、MSP430G2系列、MSP430L09系列TMS單片機這裡也提一下TMS系列單片機,雖不算主流。由TI推出的8位CMOS單片機,具有多種存儲模式、多種外圍接口模式,適用於複雜的實時控制場合。
  • Freescale 9S12 系列單片機應用筆記(SCI)1
    SCI模塊應用筆記(1)UART,也就是異步串行通訊接口是單片機中最常見的外設,幾乎每種類型的單片機都必備1到2個UART接口,9S12
  • 單片機在直流變頻洗衣機中的應用
    單片機在直流變頻洗衣機中的應用1 引言   洗衣機是一種在家庭中不可缺少的家用電器,發展非常快,全自動式洗衣機因使用方便得到大家的青睞,全自動即進水、洗滌、漂洗、摔乾等一系列過程自動完成,控制器通常設有幾種洗滌程序,對不同的衣物可供用戶選擇。
  • 單片機產生SPWM波在UPS電源中的應用
    1 引言  隨著信息技術的不斷發展和計算機應用的日益普及,高新技術設備對供電質量的要求越來越高,很多設備都要求電源能夠持續提供恆頻恆壓、無崎變的純正弦波交流電,不間斷電源UPS就是用來給這些設備供電的。UPS一般採用正弦脈寬調製(SPWM)的控制方法將直流電逆變成正弦波交流電。
  • MFRC522射頻模塊在門禁系統中的應用
    為使應用系統的開發人員快速開發射頻識別產品,本文設計了一種實用型射頻讀寫模塊,該模塊具有天線識別距離大、用戶接口靈活和操作簡單等特點。該模塊採用MFRCA22作為射頻讀寫晶片,該晶片支持ISO14443A的多層協議;在內部嵌入天線,同時支持使用外部天線的功能。
  • 基於PIC單片機的SPWM控制技術
    而當今單片機的應用已經從單純依賴於51系列單片機向其它多種單片機發展,尤其以嵌入式PIC單片機的發展應用更為廣泛。PIC單片機含具有PWM功能的外圍功能模塊(CCP),利用此模塊更容易通過軟體實現SPWM,且具有更快的執行速度。本文採用軟硬體結合設計的方法,利用面積等效法,並且基於PIC單片機實現對試驗逆變系統的SPWM控制。
  • 單片機測控技術在平板導熱係數儀研製中的應用
    摘 要:就單片機測控技術應用於平板導熱係數儀的研製提出了應用方法,介紹了串行A/D轉換器TLC2543與單片機的硬體連接,熱電偶信號的冷端補償方法以及高精度運算放大器ICL7650的應用,對數字PID  1.3 單片機測控系統:應用MCS-51系列單片機,實現對多路溫度的採集與顯示,主加熱單元功率的測量顯示,護加熱單元溫度的跟蹤以及人機界面的交互。
  • F18系列模塊典型應用電路圖
    打開APP F18系列模塊典型應用電路圖 佚名 發表於 2009-08-01 17:35:28 F18系列模塊典型應用電路
  • 基於單片機的角度測量儀的設計
    單片機的主要功能是實現角度值數碼管顯示、角度值範圍的發光二極體指示。該系統的難點在於確保角度值轉換成密位值的轉換精度和系統在非常溫環境下的工作可靠性。  硬體分為以下幾個模塊:控制面板、單片機、光電編碼器、電源、數碼顯示器、發光二極體匹配指示裝置、周視鏡與直瞄鏡照明與除霜,如圖1所示。
  • 使用樹莓派控制16路舵機驅動板(pca9685)
    使用樹莓派控制16路舵機驅動板(pca9685)在樹莓派上,可以通過RPI.GPIO方便地輸出PWM進行舵機控制。樹莓派開啟I2C樹莓派默認關閉I2C,開啟I2C步驟:輸入sudo raspi-config便可以看到配置界面,找到第5項:Interfacing Options中有I2C等,點擊進入,點擊Yes即可安裝adafruit_python_pca9685sudo pip install
  • 美國微芯科技推出首款可驅動192段LCD的80引腳可編程單片機
    新款LCD PIC單片機系列包括全球首款28引腳LCD單片機,適用於需要嵌入式控制的簡單、成本效益高的顯示應用,以及首款可驅動192段LCD的80引腳可編程單片機,適用於觸控螢幕和分段式LCD顯示屏應用。這批Microchip LCD PIC系列單片機的新成員在該系列原有的引腳數目和性能水平選擇廣泛的基礎上,增加了產品功能,能滿足多種LCD段顯示屏的不同需求。
  • 面向對象技術在單片機系統設計中的應用
    面向對象的設計方法和技術與單片機系統設計相結合就產生了面向對象的單片機系統設計,其主要思路是把單片機系統的每個接口電路都看成了一個一個的對象。單片機系統設計的任務也就變成了各接口模塊對象的組合,這樣單片機系統開發者就可以把精力更多地用在系統設計上,特別是軟體的設計。
  • STC89C52單片機對數字溫度計顯示系統的設計
    為了在很大程度上提高對溫度的控制水平,因此以單片機為核心的溫度採集與控制系統很有用研發和應用意義。本文研究了一個可以實時存儲和顯示當前的溫度數據,並且可以切換顯示當前的時間而且可對其時間進行修改的溫度顯示系統。文章以STC89C52單片機,DS18B20溫度傳感器以及DS1302時鐘芯為硬體基礎,主要介紹了相關的硬體電路和相關應用程式。
  • 基於51單片機和IC射頻卡的射頻識別門禁系統設計
    射頻識別技術,主要是一種非接觸式的自動識別技術,在其應用的過程當中,需要在電磁原理的基礎上利用射頻信號來對目標對象進行信息的獲取,由於其應用的廣泛,可以實現在不同區域內的應用,因此被廣泛的應用在了各種環境的作業當中
  • 嵌入式整流模塊控制器設計
    關鍵詞:AVR單片機;μC/OS-II;嵌入式控制器引言  雖然目前通信電源產品中嵌入式控制系統的研發技術比較成熟,但是同一系列(如DUM系列)不同功率型號的產品具有不同的性能參數,以致控制系統採用不同的控制方法;同時,在以往的產品研發過程中,不同的嵌入式系統工程師具有不同的軟硬體設計思想,帶來了晶片應用、電路體系、軟體結構的差異
  • 關於STC單片機的幾點建議
    51系列中,STC用的是最多的。但問題是:1、51的最大好處無非就是學習資料眾多,學習條件比較好,但51單片機性能偏弱且價格高,因此性價比其實並不好。2、現在比較熱門的是STM8或STM32,大有代替51之勢,它的價格比STC51更便宜,性能也強得多(特別是STM32,性能非常高,根本不是STC這種8位單片機能比得了),穩定性也好。其他的還有PIC、AVR、MSP430系列單片機,飛思卡爾(去年已經被高通收購)也是很不錯的單片機,工業上也有一定應用。