关键词不能为空

当前您在: 主页 > 英语 >

深入了解STC单片机

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-09 07:58
tags:

-

2021年2月9日发(作者:英语新闻评论)


STC


单片机



?





STC


单片机


是以


51


内核为主的系列单片机,


STC


单 片机是宏晶生产


的单时钟


/


机器周期的 单片机,是高速、低功耗、超强抗干扰的新一代


8051


单片< /p>



,指令代码完全兼容传统


8051


,但速度快


8



1 2


倍,内部集成


MAX810


专用复位 电路。


4



PWM 8


路高速


10



A



D


转换,针对电机


控制, 强干扰


场合。



目录



?



?



?



?



STC


单片机主要性能



STC


单片机特点


< br>STC


单片机


AD


< p>
EEPROM


的驱动


C


程 序



基于


STC


单片机的经济型步进电机控制系统




STC


单片机主要性能




高速:


1


个时钟


/


机器周期,


增强型


8051


内核,


速度比普通


8051



8



12







宽电压:


5.5



3.8V



2.4

< br>~


3.8V



STC12LE5 410AD


系列)






低功耗设计:空闲模式,掉电模式 (可由外部中断唤醒)






工作频率:


0



35MHz


,相当于普通


8051



0



420MHz< /p>





---


实际可到


48MHz


,相当于


8051




0



576MHz






时钟:外部晶体或内部


RC


振荡器可选,在


ISP


下载编程用户程序时设置





● 12K/10K/8K/6K/4K/2K


字节片内


Flash


程序存储器,


擦写次数


10


万次以上





● 512


字节片内


RAM


数据存储器






芯片内


EEPROM


功能





● ISP / IAP


,在系统可编程


/


在应用可编 程


,


无需编程器


/


仿真器





● 10



ADC



8


通道


,STC12C2052AD


系列为


8



ADC



4



PWM


还可当


4



D/A


使用





● 4


通道捕获


/


比较单元(


PWM/PCA/CCU


),


STC12C2052AD


系列



2


通道





---


也可用来再实现


4


个定时器或


4


个外部中断


(支持上升沿


/


下降沿中断)





● 2


个硬件


16


位定时器,兼容普通


8051


的定时器。


4



PCA


还可再实



4


个定时器






硬件看门狗(


WDT







高速


SPI


通信端口






全双工异步串行口


(UART),< /p>


兼容普通


8051


的串口






先进的指令集结构,兼容普通


805 1


指令集





4



8



8


位通用工作寄存器(共


32


个通用寄存器)





有硬件乘法


/


除法指令






通用


I/O


口(


27/23/15


个),复位后为:



准双向口


/


弱上拉(普通


8051


传统


I/O


口)





可设置成四种模式:准双向口


/


弱上拉,推挽


/


强上拉,仅为输入


/


高阻,


开漏每个


I/O


口驱动能力均可达到


20mA


,但整个芯片最大不得 超过


55mA



STC


单片机特点



?





1



I / O


口经过特殊处理





2


、轻松过


2KV/4KV


快速脉冲干扰


(EFT


测试)





3


、宽电压,



不怕电源抖动





4


、宽温度范围


, - 4 0


℃~


8 5






5


、高抗静电(


E S D


保护)





6


、单片机内部的时钟电路经过特殊处理





7


、单片机内部的电源供电系统经过特殊处理





8


、单片机内部的看门狗电路经过特殊处理





9


、单片机内部的复位电路经过特殊处理



STC


单片机


AD



EEPROM


的驱动


C


程序< /p>



?





STC


单片机具有在应用编程,调试 起来比较方便;带有


10



AD


;内



eeprom


;可在


1T/


机器周期下工作,速度是传统

51


单片机的


12


倍;下面


是我写的


AD



EE PROM


的驱动


C


代码:




/*------------------- ---------------------------------------------



*File Name: stc_AD.c -



*Description: A/D


转换程序




*Project: -



*MCU type: STC12C5410AD -



-



*Company: WY -



*Compiler: KEIL C51 -



*DESINER:


郭准



06.2.7 -



------- -------------------------------------------------- --------------*/



#include //


定义的



系统头文件和全局变量




/*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


转换结果。前是


通道号;后是转换的值




//


定义引用外部




extern void Delay(uint numb er);//


晶振


=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


转换




//


入口:


channel =


通道号


.0



0


通道;


1



1


通道。。。。。。。




//


出口:


AD_channel_1_res ult: 10


位的数据,


16


进制。




//


设计 :郭准,伟业,


2006/2/7



//------------------------------------------------ ------



void Ad_Change(uchar channel)



{



uint AD_Result_Temp = 0


< /p>


//---------------------


< p>
P1.0--P1.1


设置成适合


AD

< p>
转换的模式




/// P1 = 0xff; //



P1


口 置高,为


A/D


转换作准备




ADC_CONTR = ADC_CONTR|0x80; //1000,0000


打开


A/D


转 换电源




P1M0 = 0x03; //0000



0011


用于


A/D


转换的


P1.x


口,先设为开漏




P1M1 = 0x03; //0000



0011P1.0--P1.1< /p>


先设为开漏。断开内部上拉电





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); //


设置


当前通道号




Delay(1); //


延时使输入电压达到稳定




ADC_DATA = 0; //



A/D


转换结果寄存器




ADC_LOW2 = 0;



ADC_CONTR = ADC_CONTR|0x08; //0000



1000ADCS




1


,启动


转换




do { }



while((ADC_CONTR & 0x10)==0); //0001,00 00


等待


A/D


转换结束





ADC_CONTR = ADC_CONTR&0xE7; //1110,0111


ADC_FLAG


位,


停止


A/D


转换




AD_Result_Temp =


((AD_Result _Temp|ADC_DATA)<<2)|(ADC_LOW2&0x03);


< /p>


//


保存返回


AD


转换的



结果




//------------------------- ---


转换成可由串口显示的字符




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;




//------------------------


串口监视




// send_char_com(ADC_DATA); //////


发送转换





到的



值,这里只





8


位,值的转换需要考虑




// send_char_com(ADC_LOW2); //////


发送转换





到的



值,


这里只





2


位,值的转换需要考虑

< p>



send_string_com(AD_c hannel_result[channel],4);



Delay(1); //



}



/*------------------------- ---------------------------------------



*File Name: STC_EEPROM.c -



*Description: IAP/ISP


功能



-



*Project: -



*MCU type: STC12C5410AD -



-



*Company: WY -



*Compiler: KEIL C51 -



*DESINER:


郭准



06.2.7 -



------- -------------------------------------------------- --------------*/



#include //


定义的



系统头文件和全局变量




/*IAP


有关功能寄存器


*/



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 numb er);//


晶振


=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


单元




}



*/



//------------------------------------- -----------------



//


功能:读一字节


;


调用前需打开


IAP


功能




//


入口:


uint address


=页地址


0



512



为了提高处理速度,


最好用< /p>


0~256


的范围




//


出口:




//


设计:郭准,伟业,

< p>
2006/2/7



//---------- --------------------------------------------



uchar Byte_Read(uint address)



{



uchar data ch;




ISP_CONTR = ENABLE_ISP; //


打开


IAP


功能,


设置

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; //


出发


ISP


处理 器




ISP_TRIG = 0xB9;


-


-


-


-


-


-


-


-



本文更新与2021-02-09 07:58,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/619891.html

深入了解STC单片机的相关文章