国产在线中文字幕亚洲,一区视频国产精品观看,欧美日韩国产高清片,久久久久久AV无码免费网站,亚洲无码一二三四五区,日韩无码www.,sese444

您好,歡迎來到維庫電子市場網(wǎng) 登錄 | 免費注冊

STC單片�
閱讀�26921時間�2010-12-16 17:02:46

  STC單片�是以51�(nèi)核為主的系列單片�,STC單片機是宏晶生產(chǎn)的單時鐘/機器周期的單片機,是高�、低功�、超強抗干擾的新一�8051單片�,指令代碼完全兼容傳�(tǒng)8051,但速度�8�12�,內(nèi)部集成MAX810專用�(fù)位電��4�PWM 8路高�10位A、D�(zhuǎn)�,針�電機控制,強干擾場合�

主要性能

  ●高速:1 個時�/ 機器周期,增強型8051 �(nèi)�,速度比普�8051 �8�12 �

  ●寬電壓�5.5�3.8V�2.4�3.8V(STC12LE5410AD 系列�

  ●低功耗設(shè)計:空閑模式,掉電模式(可由外部中斷喚醒�

  ●工作頻率:0�35MHz,相�(dāng)于普�8051�0�420MHz

  --- 實際可到48MHz,相�(dāng)�8051� 0�576MHz

  ●時鐘:外部晶體或內(nèi)部RC 振蕩器可�,在ISP 下載編程用戶程序時設(shè)�

  � 12K/10K/8K/6K/4K/2K 字節(jié)片內(nèi)Flash 程序存儲�,擦寫次�(shù)10 萬次以上

  � 512 字節(jié)片內(nèi)RAM �(shù)�(jù)存儲�

  ●芯片內(nèi)EEPROM 功能

  � ISP / IAP,在系統(tǒng)可編�/ 在應(yīng)用可編程,無需編程�/ 仿真�

  � 10 位ADC�8 通道,STC12C2052AD 系列�8 位ADC�4 路PWM 還可�(dāng)4 路D/A 使用

  � 4 通道捕獲/ 比較單元(PWM/PCA/CCU),STC12C2052AD 系列�2 通道

  --- 也可用來再實�(xiàn)4 個定時器�4 個外部中斷(支持上升�/ 下降沿中斷)

  � 2 個硬�16 位定時器,兼容普�8051 的定時器�4 路PCA 還可再實�(xiàn)4 個定時器

  ●硬件看門狗(WDT�

  ●高速SPI 通信端口

  ●全雙工異步串行�(UART),兼容普�8051 的串�

  ●先進的指令集結(jié)�(gòu),兼容普�8051指令�

  4 �8 �8 位通用工作寄存器(�32 個通用寄存器)

  有硬件乘�/ 除法指令

  ●通用I/O 口(27/23/15 個),復(fù)位后為: �(zhǔn)雙向�/ 弱上拉(普�8051 傳統(tǒng)I/O 口)

  可設(shè)置成四種模式:準(zhǔn)雙向�/ 弱上拉,推挽/ 強上�,僅為輸�/ 高阻,開漏每個I/O 口驅(qū)動能力均可達�20mA,但整個芯片不得超�55mA

特點

  1 、I / O 口經(jīng)過特殊處�

  2 、輕松過2KV/4KV 快速脈沖干�(EFT 測試�

  3 、寬電壓� 不怕電源抖�

  4 、寬溫度范圍, - 4 0 ℃~8 5 �

  5 、高抗靜電(E S D 保護�

  6 、單片機�(nèi)部的時鐘電路�(jīng)過特殊處�

  7 、單片機�(nèi)部的電源供電系統(tǒng)�(jīng)過特殊處�

  8 、單片機�(nèi)部的看門狗電路經(jīng)過特殊處�

  9 、單片機�(nèi)部的�(fù)位電路經(jīng)過特殊處�

AD和EEPROM的驅(qū)動C程序

  STC單片機具有在�(yīng)用編�,調(diào)試起來比較方�;帶�10位AD;內(nèi)部eeprom;可�1T/機器周期下工�,速度是傳�(tǒng)51單片機的12�;下面是我寫的AD和EEPROM的驅(qū)動C代碼� 
/*----------------------------------------------------------------     
*File Name: stc_AD.c                                          - 
*Description: A/D �(zhuǎn)換程�              
*Project:                                                     - 
*MCU type: STC12C5410AD                                       - 
                                                                     - 
*Company: WY                                                   - 
*Compiler: KEIL C51                                             - 
*DESINER:        郭準(zhǔn) 06.2.7                                          - 
-----------------------------------------------------------------------*/ 

#include <global.h>    //定義� 系統(tǒng)頭文件和全局變量 

/*A/D  SFR*/ 
sfr ADC_LOW2  = 0xBE; 
sfr ADC_CONTR = 0xC5; 
sfr ADC_DATA  = 0xC6; 
sfr CLK_DIV   = 0xC7;   //////// 
//定義變量 

uchar code display_AD_channel_ID[2] = {0x00,0x01}; 

uchar data AD_channel_result[2][5]; //各通道A/D�(zhuǎn)換結(jié)�。前是通道�;后是轉(zhuǎn)換的� 

//定義引用外部 
extern void Delay(uint number);//晶振=11059200,機器周期=1.085069444us,"�"的機器周�=1 
extern void send_char_com(uchar ch);  
extern void send_string_com(uchar *str,uchar strlen); 
void Ad_Change(uchar channel); 


//------------------------------------------------------ 
//功能:A/D�(zhuǎn)� 
//入口:channel = 通道� .0�0通道�1�1通道。������ 
//出口:AD_channel_1_result: 10位的�(shù)�(jù)�16進制� 
//�(shè)計:郭準(zhǔn),偉�(yè)�2006/2/7 
//------------------------------------------------------ 
void Ad_Change(uchar channel) 

uint AD_Result_Temp = 0 ; 
//---------------------將P1.0--P1.1�(shè)置成適合AD�(zhuǎn)換的模式 
/// P1 = 0xff;                 //將P1口置�,為A/D�(zhuǎn)換作�(zhǔn)� 
ADC_CONTR = ADC_CONTR|0x80; //1000,0000打開A/D�(zhuǎn)換電� 
P1M0 = 0x03;                //0000�0011用于A/D�(zhuǎn)換的P1.x�,先�(shè)為開� 
P1M1 = 0x03;                //0000�0011P1.0--P1.1先設(shè)為開漏。斷開內(nèi)部上拉電� 
Delay(20);                   //20 

ADC_CONTR = ADC_CONTR&0xE0; //1110,0000 清ADC_FLAG,ADC_START位和�3� 
ADC_CONTR = ADC_CONTR|(display_AD_channel_ID[channel]&0x07); //�(shè)置當(dāng)前通道� 

Delay(1);                 //延時使輸入電壓達到穩(wěn)� 
ADC_DATA = 0;               //清A/D�(zhuǎn)換結(jié)果寄存器 
ADC_LOW2 = 0; 

    ADC_CONTR = ADC_CONTR|0x08; //0000�1000ADCS � 1,啟動轉(zhuǎn)� 

do { ; }     
    while((ADC_CONTR & 0x10)==0);   //0001,0000等待A/D�(zhuǎn)換結(jié)� 


ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG�,停止A/D�(zhuǎn)� 

AD_Result_Temp = ((AD_Result_Temp|ADC_DATA)<<2)|(ADC_LOW2&0x03);  
//保存返回AD�(zhuǎn)換的 �(jié)� 
//----------------------------�(zhuǎn)換成可由串口顯示的字� 
AD_channel_result[channel][0] = AD_Result_Temp/1000+0x30; 
AD_channel_result[channel][1] = (AD_Result_Temp%1000)/100+0x30; 
AD_channel_result[channel][2] = (AD_Result_Temp%100)/10+0x30; 
AD_channel_result[channel][3] = AD_Result_Temp%10+0x30; 


//------------------------串口�(jiān)� 
// send_char_com(ADC_DATA);    //////�(fā)送轉(zhuǎn)� � 到的 值,這里只是 �8�,值的�(zhuǎn)換需要考慮 
// send_char_com(ADC_LOW2);    //////�(fā)送轉(zhuǎn)� � 到的 �,這里只是 �2�,值的�(zhuǎn)換需要考慮 

send_string_com(AD_channel_result[channel],4); 

Delay(1);    //  

/*----------------------------------------------------------------     
*File Name: STC_EEPROM.c                                    - 
*Description: IAP/ISP 功能                     -  
*Project:                                                       - 
*MCU type: STC12C5410AD                                       - 
                                                                     - 
*Company: WY                                                   - 
*Compiler: KEIL C51                                             - 
*DESINER:        郭準(zhǔn) 06.2.7                                          - 
-----------------------------------------------------------------------*/ 

#include <global.h>    //定義� 系統(tǒng)頭文件和全局變量 

/*IAP有關(guān)功能寄存�*/ 
sfr ISP_DATA  = 0xE2; 
sfr ISP_ADDRH = 0xE3; 
sfr ISP_ADDRL = 0xE4; 
sfr ISP_CMD   = 0xE5; 
sfr ISP_TRIG  = 0xE6; 
sfr ISP_CONTR = 0xE7; 
//----------------------------定義常量 
#define ENABLE_ISP 0x82  //<20MHz 
//#define ENABLE_ISP 0x83  //<12MHz 

#define DEBUG_DATA 0x5A 

//----------------------------flash 存儲的起始地址 
#define DATA_FLASH_START_ADDRESS  0x2800  //stc12c2052ad  ////////////??????????? 

uchar tx_buf[3] = {0,0,0}; 

extern void Delay(uint number);//晶振=11059200,機器周期=1.085069444us,"�"的機器周�=1 
extern void send_char_com(uchar ch);  
extern void send_string_com(uchar *str,uchar strlen); 

uchar Byte_Read(uint address); 
void Sector_Erase(uint address); 
void Byte_Program(uint address,uchar ch); 
/* 
void Eeprom_Start(void) 

P1 = 0xf0; //開始工作 
    Delay(2); //22us..�13us 
// SP = 0xE0;  //堆棧指針指向0E0H單元 

*/ 
//------------------------------------------------------ 
//功能:讀一字節(jié);�(diào)用前需打開IAP功能 
//入口:uint address=頁地址0�512,為了提高處理速度,用0~256的范� 
//出口� 
//�(shè)計:郭準(zhǔn),偉�(yè)�2006/2/7 
//------------------------------------------------------ 
uchar Byte_Read(uint address) 

uchar data ch; 
     
ISP_CONTR = ENABLE_ISP;    //打開IAP功能,設(shè)置Flash操作等待時間 
ISP_CMD = 0x01;                //選擇讀AP模式 
//-------------------------- 
address = DATA_FLASH_START_ADDRESS+address; 
ISP_ADDRH = (uchar)(address>>8);      //填頁地址 
ISP_ADDRL = (uchar)(address);      //填頁地址 

EA = 0; 

ISP_TRIG = 0x46;      //出發(fā)ISP處理� 
ISP_TRIG = 0xB9; 

    nop(); 

ch = ISP_DATA;   //保存�(shù)�(jù) 
EA = 1; 
//------------------------在處理器完成之前,CUP將暫� 
//------------------------�(guān)閉IAP功能,清與ISP有關(guān)的特殊功能寄存器 
ISP_CONTR = 0; 
ISP_CMD = 0; 
ISP_TRIG = 0; 

// send_char_com(ch + 0x30); 
return ch; 

//------------------------------------------------------ 
//功能:擦除扇區(qū) 
//入口:uint address=頁地址0�512,為了提高處理速度,用0~256的范� 
//出口� 
//�(shè)計:郭準(zhǔn),偉�(yè)�2006/2/7 
//------------------------------------------------------ 
void Sector_Erase(uint address) 

ISP_CONTR = ENABLE_ISP;    //打開IAP功能,設(shè)置Flash操作等待時間 
ISP_CMD = 0x03;                //選擇頁擦除模� 
//-------------------------- 
address = DATA_FLASH_START_ADDRESS+address; 
ISP_ADDRH = (uchar)(address>>8);      //填頁地址 
ISP_ADDRL = (uchar)(address);      //填頁地址 

EA = 0; 

ISP_TRIG = 0x46;      //出發(fā)ISP處理� 
ISP_TRIG = 0xB9; 

    nop(); 
EA = 1; 

//------------------------�(guān)閉IAP功能,清與ISP有關(guān)的特殊功能寄存器 
ISP_CONTR = 0; 
ISP_CMD = 0; 
ISP_TRIG = 0; 

//------------------------------------------------------ 
//功能:字節(jié)編程,寫 
//入口:uint address=頁地址0�512,為了提高處理速度� 
//      �0~256的范�;uchar ch=要寫的數(shù)�(jù) 
//出口� 
//�(shè)計:郭準(zhǔn),偉�(yè)�2006/2/7 
//------------------------------------------------------ 
void Byte_Program(uint address,uchar ch) 
{    
 //   Sector_Erase(address); 

ISP_CONTR = ENABLE_ISP;    //打開IAP功能,設(shè)置Flash操作等待時間 
ISP_CMD = 0x02;                //選擇字節(jié)編程模式 
//-------------------------- 
address = DATA_FLASH_START_ADDRESS+address; 
ISP_ADDRH = (uchar)(address>>8);      //填頁地址 
ISP_ADDRL = (uchar)(address);      //填頁地址 

ISP_DATA = ch; 

EA = 0; 

ISP_TRIG = 0x46;      //出發(fā)ISP處理� 
ISP_TRIG = 0xB9; 

    nop(); 
  
  EA = 1; 

//------------------------�(guān)閉IAP功能,清與ISP有關(guān)的特殊功能寄存器 
ISP_CONTR = 0; 
ISP_CMD = 0; 
ISP_TRIG = 0;  

//------------------------------------------------------ 
//功能:字節(jié)編程,寫字符� 
//入口:uint address=頁地址0�512,為了提高處理速度� 
//      �0~256的范�;uchar ch=要寫的數(shù)�(jù) 
//      len=字符串的長度 
//出口� 
//�(shè)計:郭準(zhǔn),偉�(yè)�2006/2/7 
//------------------------------------------------------ 
void Morebyte_Program(uint address,uchar *ch,uchar len) 
{  
    uchar k = 0; 

    Sector_Erase(address); 
do  
    { 
Byte_Program(address,*(ch + k)); 
address++;  
        k++; 
    } 
while(k < len); 

//------------------------------------------------------ 
//功能:讀多字節(jié);�(diào)用前需打開IAP功能 
//入口:uint address=頁地址0�512,為了提高處理速度,用0~256的范� 
//出口� 
//�(shè)計:郭準(zhǔn),偉�(yè)�2006/2/7 
//------------------------------------------------------ 
void Moreyte_Read(uint address) 

uchar k = 0; 
do  
    { 
tx_buf[k] = Byte_Read(address);  
address++;  
        k++; 
    } 
while(k < 3);  

基于�(jīng)濟型步進電機控制系�(tǒng)

  步進電機是工業(yè)控制中應(yīng)用十分廣泛的一種電動機,它能將�(shù)字信號直接轉(zhuǎn)換成角位移或線位�,驅(qū)動速度和指令脈沖能�(yán)格同步,具有較高的定位精�,控制系�(tǒng)成本低廉,在�(jīng)濟型�(shù)控機床等�(lǐng)域應(yīng)用廣�。這里針對電磁干擾較強以及要求低成本應(yīng)用的場合,采用超強抗干擾、小巧低功耗的工業(yè)級STC12C系列單片�,充分利用單片機�(nèi)部的硬件資源,設(shè)計實用的步進電機控制和�(qū)動系�(tǒng)�

  1 控制系統(tǒng)總體方案�(shè)�

  系統(tǒng)功能原理示意圖如�1所示�

系統(tǒng)功能原理示意圖

  在該系統(tǒng)中由單片機直接輸出電機的各相控制脈沖序列,光耦進行必要的光電隔離,采用分立元件�(gòu)成功率.MOSFET管驅(qū)動電�,帶動電機轉(zhuǎn)�。鍵盤接口與 LED顯示功能由具有SPI串行接口功能的ZLG7289實現(xiàn)。既可使用按鍵輸入的方式精確�(shè)置電機的工作方式與轉(zhuǎn)�,也可以通過�(diào)速旋鈕實�(xiàn)電機�(zhuǎn)速的連續(xù)�(diào)節(jié),還能通過上位機實�(xiàn)對電機工作方式的�(diào)整與控制�

  2 硬件電路�(shè)�

  2�1 控制電路�(shè)�

  控制芯片采用STC12C4052AD,它�1個時鐘/機器周期的單片機,速度比普通的8051單片機快8�12�,有20個引腳且為小巧封�。該單片機具有超強抗干擾,抗靜電的特�,能輕松通過4 kV快速脈沖干擾,其功耗超�,正常工作模式下的典型功耗為2�7�7 mA。芯片自帶硬件看門�,具有高速SPI通信端口�8通道8位A/D�(zhuǎn)換,2路PWM輸出�4 KB容量的FLASH存儲��256 B容量的SRAM�4個定時器�1個全雙工串行通信�。由于單片機�(nèi)部的資源豐富,性價比高,能夠滿足該�(shè)計的要求,而且減少了硬件電路的�(shè)�,提高了工作效率。單片機的外部引腳定義,及其在該�(shè)計中的資源分布如�2所��

設(shè)計中的資源分布圖

  P1�4(ADC4)口外�4�7 kΩ的可�(diào)電位器,利用單片機內(nèi)部的模/�(shù)�(zhuǎn)換功能轉(zhuǎn)換成�(shù)字量,進而控制輸出脈沖頻�,完成步進電機速度的“連續(xù)”調(diào)節(jié)。過流檢測的�(jié)果直接引入到外部中斷0,實�(xiàn)對電流的快速控��

  2�2 �(qū)動電路設(shè)�

  功率MOSFET管的部分�(qū)動電路如�3所�。該電路的設(shè)計可改進功率MOSFET管的快速開通時間,提高了驅(qū)動電流的前后沿陡�,能夠改善高頻響�(yīng)。功率MOSFET管柵源間的阻抗很�,工作于開關(guān)狀�(tài)下漏源間電壓的突變會通過極間電容耦合到柵�,產(chǎn)生相�(dāng)幅度的VGS脈沖電壓。正方向的VGS脈沖電壓可能會導(dǎo)致器件的誤導(dǎo)通。為�,需要適�(dāng)降低柵極�(qū)動電路的阻抗,在柵源之間并接阻尼電阻或接一個穩(wěn)壓值小�20 V,而又接近20 V的齊納二極管,以防止柵源開路工作�

功率MOSFET管的部分驅(qū)動電路圖

  為了抑制功率管內(nèi)的快恢復(fù),二極管出現(xiàn)反向恢復(fù)效應(yīng),在電路中接�4只快恢復(fù)二極管。其�,反并聯(lián)快恢�(fù)二極管的作用是為電機相繞組提供續(xù)流通路,其�2 只是為了使功率MOSFET管內(nèi)部的快恢�(fù)二極管不流過反向電流,以保證功率MOSFET管在動態(tài)工作時能起到正常的開�(guān)的作用�

  2�3 顯示與按鍵處理電�

  在單片機�(yīng)用系�(tǒng)�,典型的鍵盤顯示接口電路由基于并行擴展技�(shù)�8155�8279�(gòu)成控制電�?,F(xiàn)代單片機�(yīng)用系�(tǒng)廣泛采用串行擴展技�(shù)。相對于并行方式,串行擴展接線靈活,占用單片機資源少�

  ZLG7289A是具有SPI串行接口功能的可同時�(qū)�8位數(shù)碼管�64只獨立LED的智能顯示驅(qū)動芯�,單片即可完成顯示、鍵盤接口的全部功能。采用串行方式與微處理器通信,數(shù)�(jù)從DIO引腳送入芯片,并由CLK端同�。當(dāng)選信號變?yōu)榈碗娖胶?,DIO引腳上的�(shù)�(jù)在CLK引腳的上升沿被寫� ZLG7289A的緩沖寄存器。圖4是ZLG7289的典型應(yīng)�。ZLG7289A連接共陰式數(shù)碼管,應(yīng)用中不需要的�(shù)碼管與鍵盤可以不連接,省去數(shù)碼管�?qū)�?shù)碼管�(shè)置消隱屬�,這均不會影響鍵盤的使用。整個電路無需添加鎖存器和�(qū)動器,耗電�,軟件設(shè)計中無需編寫顯示譯碼程序,省去了靜態(tài)顯示擴展芯片,大大節(jié)省了CPU的時�。該電路�(shè)計中僅采�4×4鍵盤�4位數(shù)碼管,已完全滿足�(shè)計需��

  3 軟件�(shè)�

  軟件部分采用模塊化結(jié)�(gòu)�(shè)計。對步進電機轉(zhuǎn)速的控制是通過定時器工作在中斷方式實現(xiàn)�。定時器定時中斷�(chǎn)生周期性脈沖序�,不是采用軟件延時的方式,這樣不占用CPU的時�。CPU在非中斷時間�(nèi)可以處理其他事件,只有在中斷�(fā)生時才驅(qū)動步進電機轉(zhuǎn)動一�。根�(jù)步進電機勵磁狀�(tài)�(zhuǎn)�,采用查表法求出所需的輸出狀�(tài),并以二進制碼的形式依次存入單片機內(nèi)部的存儲器中;然后按照正向或反向順序依次取出地址的狀�(tài)字,送給STC12C4052AD,輸出各勵磁狀�(tài),從而實�(xiàn)�(huán)形分配器的功��

  程序總體框架包括:主程序、過流檢測中斷服�(wù)子程序、定時器中斷服務(wù)子程�、以及其他子程序(包括正轉(zhuǎn)、反�(zhuǎn)子程�、鍵盤顯示控制子程序、A/D�(zhuǎn)換子程序�),由于篇幅限�,在此不一一敘述�

  4 系統(tǒng)測試

  該系�(tǒng)采用超強抗干�,小巧低功耗的工業(yè)級STC12C4052AD單片機為控制核心,工作可靠性高,抗于擾能力強。系�(tǒng)測試在專門的檢測實驗室�(nèi)進行。利用群脈沖�(fā)生器(EFT-4001)、周波電壓跌落發(fā)生器(VDG-1105)、靜電放電發(fā)生器(ESD-20)以及雷擊浪涌�(fā)生器(SG-5006) 等專用儀器對系統(tǒng)的電壓變化抗擾度、快速瞬變脈沖群抗擾�、抗靜電和雷擊浪涌等參數(shù)進行檢測。經(jīng)過實�,系�(tǒng)功能正常,所有參�(shù)均已達標(biāo)�

  5 �(jié) �

  電子技�(shù)�(fā)展日新月�,新型單片機層出不窮。在電機控制系統(tǒng)開發(fā)過程�,如果恰�(dāng)選取單片機以及各電路模塊的型號,能夠簡化�(shè)計過�,起到事半功倍的效果。該系統(tǒng)采用STC12C4052AD單片�,其工作方式、轉(zhuǎn)動速率及轉(zhuǎn)矩數(shù)可以通過鍵盤輸入,也可通過普通旋鈕或上位機調(diào)節(jié)。鍵盤顯示模塊采� ZLG7289實現(xiàn)。本系統(tǒng)具有通用性,適當(dāng)改變輸出口各位控制端,便可控制不同相�(shù)的步進電機�

維庫電子�,電子知識,一查百��

已收錄詞�170104