STC89C52RC单片机的特点_第1页
STC89C52RC单片机的特点_第2页
STC89C52RC单片机的特点_第3页
STC89C52RC单片机的特点_第4页
STC89C52RC单片机的特点_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STC89C52RC 单片机介绍 STC89C52RC 单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单 片机,指令代码完全兼容传统 8051 单片机,12 时钟/机器周期和 6 时钟/机器周 期可以任意选择。 主要特性如下: 1. 增强型 8051 单片机,6 时钟/机器周期和 12 时钟/机器周期可以任 意选择,指令代码完全兼容传统 8051. 2. 工作电压:5.5V3.3V(5V 单片机)/3.8V2.0V(3V 单片机) 3. 工作频率范围:040MHz,相当于普通 8051 的 080MHz,实际工 作频率可达 48MHz 4. 用户应用程序空间为 8K 字节 5. 片上集成 512 字节 RAM 6. 通用 I/O 口 (32 个) 复位后为: , P1/P2/P3/P4 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。 7. ISP(在系统可编程)/IAP(在应用可编程) ,无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片 8. 具有 EEPROM 功能 9. 具有看门狗功能 10. 共 3 个 16 位定时器/计数器。即定时器 T0、T1、T2 11. 外部中断 4 路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒 12. 通用异步串行口(UART) ,还可用定时器软件实现多个 UART 13. 工作温度范围:-40+85(工业级)/075(商业级) 14. PDIP 封装 STC89C52RC 单片机的工作模式 掉电模式:典型功耗0.1A,可由外部中断唤醒,中断返回后,继续执行原 程序 空闲模式:典型功耗 2mA 典型功耗 正常工作模式:典型功耗 4Ma7mA 典型功耗 掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备 STC89C52RC 引脚功能说明 VCC(40 引脚):电源电压 VS S(20 引脚):接地 P0 端口(P0.0P0.7 P0.7,3932 引脚) :P0 口是一个漏极开路的 8 位双向 I/O 口。作为输出端口,每个引脚能驱动 8 个 TTL 负载,对端口 P0 写入 每个引脚能驱动 写入“1”时,可 以作为高阻抗输入。在访问外部程序和数据存储器时 在访问外部程序和数据存储器时,P0 口也可以提供低 8 位 地址和 8 位数据的复用总线 位数据的复用总线。此时,P0 口内部上拉电阻有效。在 Flash ROM 编 在 程时,P0 端口接收指令字节 端口接收指令字节;而在校验程序时,则输出指令字节 则输出指令字节。验证时,要求外接上拉电阻。 P1 端口(P1.0P1.7,18 引脚) :P1 口是一个带内部上拉电阻的 8 位双向 I/O 口。P1 的输出缓冲器可驱动(吸收或者输出电流方式)4 个 TTL 输入。对端 口写入 1 时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1 口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电 流( ) 。 此外,P1.0 和 P1.1 还可以作为定时器/计数器 2 的外部技术输入(P1.0/T2) 和定时器/计数器 2 的触发输入(P1.1/T2EX) ,具体参见下表: 在对 Flash ROM 编程和程序校验时,P1 接收低 8 位地址。 表 XX P1.0 和 P1.1 引脚复用功能 P2 端口(P2.0P2.7,2128 引脚) :P2 口是一个带内部上拉电阻的 8 位双 向 I/O 端口。P2 的输出缓冲器可以驱动(吸收或输出电流方式)4 个 TTL 输入。 对端口写入 1 时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。 P2 作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会 输出一个电流(I) 。 在访问外部程序存储器和 16 位地址的外部数据存储器(如执行“MOVX DPTR”指令)时,P2 送出高 8 位地址。在访问 8 位地址的外部数据存储器(如 执行“MOVX R1”指令)时,P2 口引脚上的内容(就是专用寄存器(SFR)区 中的 P2 寄存器的内容) ,在整个访问期间不会改变。 在对 Flash ROM 编程和程序校验期间, P2也接收高位地址和一些控制信号。 P3 端口(P3.0P3.7,1017 引脚) :P3 是一个带内部上拉电阻的 8 位双向 I/O 端口。P3 的输出缓冲器可驱动(吸收或输出电流方式)4 个 TTL 输入。对端 口写入 1 时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3 做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一 个电流( ) 。 在对 Flash ROM 编程或程序校验时,P3 还接收一些控制信号。 P3 口除作为一般 I/O 口外,还有其他一些复用功能,如下表所示: 表 XX P3 口引脚复用功能 复用功能 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_();延时函数用#define uchar unsigned char#define uint unsigned intsbit k1=P10;sbit k2=P11;sbit k3=P12;sbit temp_out=P15;sbit humi_out=P16;sbit IO= P32 ;uint count;uchar ds1,ds2,ds3,ds4;uchar set_temp_H,set_temp_H_shi,set_temp_H_ge;/设定温度的变量uchar set_temp_L,set_temp_L_shi,set_temp_L_ge;/设定温度的变量uchar set_humi_H,set_humi_H_ge,set_humi_H_shi;/设置湿度的变量uchar set_humi_L,set_humi_L_ge,set_humi_L_shi;/设置湿度的变量uchar U8FLAG,k,flag;uchar U8count,U8temp;uchar U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;uchar U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;uchar U8comdata;uint U16temp1,U16temp2;uchar ser=0,0; uchar i;uchar code dis_7=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/共阳LED段码表 0 1 2 3 4 5 6 7 8 9 void Delay1(uint j)uchar i;for(;j0;j-)for(i=0;i0;i-);void COM(void)uchar i;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; /-void RH(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; void xiaoyin()P2=0XFF;P0=0XFF;Delay_10us();void disp()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();void disp_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();void disp_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();void disp_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();void disp_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();void key_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_hu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论