STC89C52RC单片机的特点.docx

上传人:b****5 文档编号:8458183 上传时间:2023-01-31 格式:DOCX 页数:14 大小:18.44KB
下载 相关 举报
STC89C52RC单片机的特点.docx_第1页
第1页 / 共14页
STC89C52RC单片机的特点.docx_第2页
第2页 / 共14页
STC89C52RC单片机的特点.docx_第3页
第3页 / 共14页
STC89C52RC单片机的特点.docx_第4页
第4页 / 共14页
STC89C52RC单片机的特点.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

STC89C52RC单片机的特点.docx

《STC89C52RC单片机的特点.docx》由会员分享,可在线阅读,更多相关《STC89C52RC单片机的特点.docx(14页珍藏版)》请在冰豆网上搜索。

STC89C52RC单片机的特点.docx

STC89C52RC单片机的特点单片机的特点STC89C52RC单片机介绍STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:

1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2.工作电压:

(5V单片机)/(3V单片机)3.工作频率范围:

040MHz,相当于普通8051的080MHz,实际工作频率可达48MHz4.用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个)复位后为:

,P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/,TxD/)直接下载用户程序,数秒即可完成一片8.具有EEPROM功能9.具有看门狗功能10.共3个16位定时器/计数器。

即定时器T0、T1、T211.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒12.通用异步串行口(UART),还可用定时器软件实现多个UART13.工作温度范围:

-40+85(工业级)/075(商业级)14.PDIP封装STC89C52RC单片机的工作模式掉电模式:

典型功耗A,可由外部中断唤醒,中断返回后,继续执行原程序空闲模式:

典型功耗2mA典型功耗正常工作模式:

典型功耗4Ma7mA典型功耗掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备STC89C52RC引脚功能说明VCC(40引脚):

电源电压VSS(20引脚):

接地P0端口(,3932引脚):

P0口是一个漏极开路的8位双向I/O口。

作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入每个引脚能驱动写入“1”时,可以作为高阻抗输入。

在访问外部程序和数据存储器时在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线位数据的复用总线。

此时,P0口内部上拉电阻有效。

在FlashROM编在程时,P0端口接收指令字节端口接收指令字节;而在校验程序时,则输出指令字节则输出指令字节。

验证时,要求外接上拉电阻。

P1端口(,18引脚):

P1口是一个带内部上拉电阻的8位双向I/O口。

P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。

对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。

P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流()。

此外,和还可以作为定时器/计数器2的外部技术输入(T2)和定时器/计数器2的触发输入(T2EX),具体参见下表:

在对FlashROM编程和程序校验时,P1接收低8位地址。

表XX和引脚复用功能P2端口(,2128引脚):

P2口是一个带内部上拉电阻的8位双向I/O端口。

P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。

对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。

P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(I)。

在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVXDPTR”指令)时,P2送出高8位地址。

在访问8位地址的外部数据存储器(如执行“MOVXR1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。

在对FlashROM编程和程序校验期间,P2也接收高位地址和一些控制信号。

P3端口(,1017引脚):

P3是一个带内部上拉电阻的8位双向I/O端口。

P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。

对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。

P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流()。

在对FlashROM编程或程序校验时,P3还接收一些控制信号。

P3口除作为一般I/O口外,还有其他一些复用功能,如下表所示:

表XXP3口引脚复用功能复用功能RST(9引脚):

复位输入。

当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。

看门狗计时完成后,RST引脚输出96个晶振周期的高电平。

特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。

DISRTO默认状态下,复位高电平有效。

ALE/ROG(30引脚)地址锁存控制信号:

(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。

在Flash编程时,此引脚(ROG)也用作编程输入脉冲。

在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。

然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。

如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。

这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。

否则,ALE将被微弱拉高。

这个ALE使能标志位(地址位8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。

外部程序存储器选通信号(SEN)是外部程序存储器选SEN(29引脚)通信号。

当AT89C51RC从外部程序存储器执行外部代码时,SEN在每个机器周期被激活两次,而访问外部数据存储器时,SEN将不被激活。

A/VPP(31引脚)访问外部程序存储器控制信号。

为使能从0000H到FFFFH的外部程序存储器读取指令,A必须接GND。

注意加密方式1时,A将内部锁定位RESET。

为了执行内部程序指令,A应该接VCC。

在Flash编程期间,A也接收12伏VPP电压。

XTAL1(19引脚):

振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2(18引脚):

振荡器反相放大器的输入端。

#include#include/_nop_();延时函数用#defineucharunsignedchar#defineuintunsignedintsbitk1=P10;sbitk2=P11;sbitk3=P12;sbittemp_out=P15;sbithumi_out=P16;sbitIO=P32;uintcount;uchards1,ds2,ds3,ds4;ucharset_temp_H,set_temp_H_shi,set_temp_H_ge;/设定温度的变量ucharset_temp_L,set_temp_L_shi,set_temp_L_ge;/设定温度的变量ucharset_humi_H,set_humi_H_ge,set_humi_H_shi;/设置湿度的变量ucharset_humi_L,set_humi_L_ge,set_humi_L_shi;/设置湿度的变量ucharU8FLAG,k,flag;ucharU8count,U8temp;ucharU8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;ucharU8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;ucharU8comdata;uintU16temp1,U16temp2;ucharser=0,0;uchari;ucharcodedis_7=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/共阳LED段码表0123456789voidDelay1(uintj)uchari;for(;j0;j-)for(i=0;i0;i-);voidCOM(void)uchari;for(i=0;i8;i+)U8FLAG=2;/-while(!

IO)&U8FLAG+);Delay_10us();Delay_10us();/Delay_10us();U8temp=0;if(IO)U8temp=1;U8FLAG=2;while(IO)&U8FLAG+);/-if(U8FLAG=1)break;U8comdata=1;U8comdata|=U8temp;/-voidRH(void)IO=0;Delay1(50);IO=1;Delay_10us();Delay_10us();Delay_10us();Delay_10us();IO=1;if(!

IO)U8FLAG=2;while(!

IO)&U8FLAG+);U8FLAG=2;while(IO)&U8FLAG+);COM();U8RH_data_H_temp=U8comdata;COM();U8RH_data_L_temp=U8comdata;COM();U8T_data_H_temp=U8comdata;COM();U8T_data_L_temp=U8comdata;COM();U8checkdata_temp=U8comdata;IO=1;U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);if(U8temp=U8checkdata_temp)U8RH_data_H=U8RH_data_H_temp;U8RH_data_L=U8RH_data_L_temp;U8T_data_H=U8T_data_H_temp;U8T_data_L=U8T_data_L_temp;U8checkdata=U8checkdata_temp;voidxiaoyin()P2=0XFF;P0=0XFF;Delay_10us();voiddisp()P2=0xfe;P0=dis_7ds1;Delay1(5);xiaoyin();P2=0xfd;P0=dis_7ds2;Delay1(5);xiaoyin();P2=0xfb;P0=dis_7ds3;Delay1(5);xiaoyin();P2=0xf7;P0=dis_7ds4;Delay1(5);xiaoyin();voiddisp_settemp_H()P2=0xfe;P0=0x87;Delay1

(1);xiaoyin();P2=0xfd;P0=0x89;Delay1

(1);xiaoyin();P2=0xf7;P0=dis_7set_temp_H_ge;Delay1

(1);xiaoyin();P2=0xfb;P0=dis_7set_temp_H_shi;Delay1

(1);xiaoyin();voiddisp_settemp_L()P2=0xfe;P0=0x87;Delay1

(1);xiaoyin();P2=0xfd;P0=0xc7;Delay1

(1);xiaoyin();P2=0xf7;P0=dis_7set_temp_L_ge;Delay1

(1);xiaoyin();P2=0xfb;P0=dis_7set_temp_L_shi;Delay1

(1);xiaoyin();voiddisp_sethumi_H()P2=0xfe;P0=0x89;Delay1

(1);xiaoyin();P2=0xfd;P0=0x89;Delay1

(1);xiaoyin();P2=0xf7;P0=dis_7set_humi_H_ge;Delay1

(1);xiaoyin();P2=0xfb;P0=dis_7set_humi_H_shi;Delay1

(1);xiaoyin();voiddisp_sethumi_L()P2=0xfe;P0=0x89;Delay1

(1);xiaoyin();P2=0xfd;P0=0xc7;Delay1

(1);xiaoyin();P2=0xf7;P0=dis_7set_humi_L_ge;Delay1

(1);xiaoyin();P2=0xfb;P0=dis_7set_humi_L_shi;Delay1

(1);xiaoyin();voidkey_scan()if(k1=0)while(k1=0);flag+;if(flag=5)flag=0;if(flag=1)while(k1=1)if(k2=0)while(k2=0);set_temp_H+;if(set_temp_H=100)set_temp_H=0;if(k3=0)while(k3=0);set_temp_H-;if(set_temp_H=-1)set_temp_H=100;set_temp_H_ge=set_temp_H%10;set_temp_H_shi=set_temp_H/10;disp_settemp_H();iapEraseSector(0x02000);iapProgramByte(0x02008,set_temp_H);delay(20);if(flag=2)while(k1=1)if(k2=0)while(k2=0);set_temp_L+;if(set_temp_L=100)set_temp_L=0;if(k3=0)while(k3=0);set_temp_L-;if(set_temp_L=-1)set_temp_L=100;set_temp_L_ge=set_temp_L%10;set_temp_L_shi=set_temp_L/10;disp_settemp_L();iapEraseSector(0x02200);iapProgramByte(0x02208,set_temp_L);delay(20);/if(flag=3)while(k1=1)if(k2=0)while(k2=0);set_humi_H+;if(set_humi_H=100)set_humi_H=0;if(k3=0)while(k3=0);set_humi_H-;if(set_humi_H=-1)set_humi_H=100;set_humi_H_ge=set_humi_H%10;set_humi_H_shi=set_humi_H/10;disp_sethumi_H();iapEraseSector(0x02400);iapProgramByte(0x02408,set_humi_H);delay(20);/if(flag=4)while(k1=1)if(k2=0)while(k2=0);set_humi_L+;if(set_humi_L=100)set_humi_L=0;if(k3=0)while(k3=0);set_humi_L-;if(set_humi_L=-1)set_humi_L=100;set_humi_L_ge=set_humi_L%10;set_humi_L_shi=set_humi_L/10;disp_sethumi_L();iapEraseSector(0x02600);iapProgramByte(0x02608,set_humi_L);delay(20);voidconvdat()ds1=U8RH_data_H/10;ds2=U8RH_data_H%10;ds3=U8T_data_H/10;ds4=U8T_data_H%10;voidbijiao()if(U8RH_data_Hset_humi_H)humi_out=1;if(U8T_data_Hset_temp_H)temp_out=1;/*主函数*/voidmain()set_temp_H=iapReadByte(0x02008);set_temp_L=iapReadByte(0x02208);set_humi_H=iapReadByte(0x02408);set_humi_L=iapReadByte(0x02608);while

(1)key_scan();RH();convdat();disp();bijiao();/*结束*/精心搜集整理,只为你的需要

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1