基于ds1302的单片机电子时钟程序单片机程序

Love coding. Enjoy life.
51单片机DS1302实时时钟驱动程序
DS1302是低功耗实时时钟芯片,它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
一.基本原理
1.引脚分析
2.时序分析
(1)写字节
第一个字节是地址字节,第二个字节是数据字节。RST信号必须拉高,否则数据的输入是无效的。换一句话说,RST信号控制数据|时间信号输入的开始和结束。地址字节和数据字节的读取时上升沿有效,而且是由LSB开始读入。
(2)读字节
读一个字节和写一个字节有明显的不一样,先是写地址字节,然后再读数据字节,写地址字节时上升沿有效,而读数据字节时下降沿有效,当然前提是RST信号必须拉高。写地址字节和读数据字节同是从最低位(即第0位)开始。
二.驱动程序
#include&reg51.h&
#include&intrins.h&
#define uchar unsigned char
#define uint unsigned int
sbit IO=P3^4;
sbit RST=P3^5;
sbit SCLK=P3^6;
uchar code write_addr[]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};
uchar code read_addr[]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};
uchar time[7]={0,0,0x12,0x12,0x12,0x20,0x15};
void ds1302_init()
write(0x8e,0x00);
for(k=0;k&7;k++)
write(write_addr[k],time[k]);
write(0x8e,0x80);
void write(uchar addr,uchar dat)
uchar i,j;
for(i=0;i&8;i++)
IO=addr&0x01;
for(j=0;j&8;j++)
IO=dat&0x01;
uchar read(uchar addr)
uchar i,dat=0;
for(i=0;i&8;i++)
IO=addr&0x01;
for(i=0;i&8;i++)
dat=dat|0x80;
void read_time()
for(n=0;n&7;n++)
time[n]=read(read_addr[n]);
注:在主函数里调用ds1302_init()函数进行初始化,然后一直调用read_time()即可获取实时的时间,并显示出来。
没有更多推荐了,基于DS1302单片机万年日历的设计(附答辩记录)_单片机_毕业设计论文网
未找到您最近浏览过的网页
历史浏览记录
热门搜索词: |
全部设计论文分类
本站所有出售的 资料均严格保密无重复,出售过后会做详细的记录避免重复,
QQ临时会话 可能会导致消息无法正常接收,咨询前请务必先加客服为好友.QQ:
本站提供的资料 都是已经做好的,现成的作品都是审核过的,保证质量和规范.
基于DS1302单片机万年日历的设计(附答辩记录)
以下是大纲或介绍,如需要完整的请购买下载。提示:本资料已审核通过,内容严格保密,格式标准,质量保证。 密 保
1.无需注册,购买下载后即可获取该完整资料。
2.本站提供下载链接或联系客服发送资料。
基于DS1302单片机万年日历的设计(附答辩记录)(包含选题审批表,任务书,开题报告,中期报告,毕业论文11000字)
摘 要:本设计将研究利用锐志C51系列单片机控制中的DS1302芯片,控制时间信号的发生系统,该电子时钟以AT89S52单片机作为主控操作核心,
DS1302时钟芯片提供时钟控制、LCD(Light Emitting
Diode)动态扫描提供显示屏显示。AT89S52单片机是由Atmel公司推出的,功耗小,
5V供电电压;DS1302时钟芯片是美国DALLAS公司推出的具有涓细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、时、分、秒进行计时, 还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;LED显示屏,支持动态和字符显示,可同时显示年、月、日、星期、时、分、秒等信息。 另外,该电子时钟还具有时间修改校对功能。
关键词: DSLCD;单片机
Single Chip Microcomputer of Perpetual Calendar Based on DS1302
Abstract:This design will study using the resolute C51Series MCU control
in the DS1302chip, control the time signal generating system, the
electronic clock with AT89S52microcontroller as the main control
operation core, DS1302clock chip with clock control, dynamic LCD
scanning with display. Singlechip AT89S52 is offered by the Atmel, small
power consumption,5V
DS1302clock chip is
introduced by American DALLAS Corporation has fine current trickle
charging function low power real-time clock chip, it can be years,
months, days, hours, minutes, seconds for time, also has a variety of
functions such as a leap year compensation, but also DS1302has long
service life, LED display screen, support for dynamic and
character display, can also show the year, month, day, week, time,
minutes and seconds, and other information. In addition, the electronic
clock also has time to modify the proofreading function. 〖毕业设计(论文)网 HTTP://www.56doc.com 咨询QQ:〗
Key words: DSLCD; Single chip
研究方案(研究目的、内容、方法、预期成果、条件保障等)
&&& 本设计为了实现一个基于DS1302芯片万年历系统,需要实现时间计时,时间调控,闹铃提示修改等功能,同时还要保证断电后,时间不会因为停电了保持停滞。
当前社会上,时间节奏比较快,我们需要随时掌握时间的准确性,所以需要在各种地方安装时钟系统,而单片机基于DS1302的万年历系统刚好可以满足这一点,它不仅时间精确,能在断电后继续工作,同时原件细小,功能强大,价格低廉,非常适合社会公共设施的普及和安装。
为了能够实现预期的成果,我准备了一块单片机系统,通过自己之前对单片机和嵌入式的学习,外加通过网上资料的学习,可以让我能对单片机有个较深的理解和认识,从而在设计实验的过程中,经过自己不断的测试调控,完成预期成果。
其次在本专业课程中因为开过这门课,所以在此方面还是有些基础认识,外加班上同学也有做单片机的设计,我们可以互相探讨,相互帮助,实在不行,还可以咨询老师,所以经过努力,我认为我是可以完成这些功能并从中学习到很多知识的。
2.1 功能要求
本电子时钟需要实现的功能: 〖资料来源:毕业设计(论文)网 56doc.com 咨询QQ:〗
1).能动态显示年、月、日、小时、分钟、秒
2).能够修改手动修改时钟
3).实现简单的闹铃功能
本电子时钟实现要求:
4).需要使用多个按键实现控制修改
5).按键操作需要有提示音
6).操作界面有提示
& 〖资料来源网址:毕业设计(论文)网 HTTP://www.56doc.com〗
关键词&&& 2
1 前言&&& 2
2 设计要求与方案论证&&& 2
2.1 功能要求&&& 2
2.2 方案论证&&& 2
2.2.1 技术可行性&&& 2
2.2.2 单片机的选择&&& 2
1.3.3 显示模块的选择&&& 2
1.3.4 键盘模块的选择&&& 2
1.3.5 总体方案论证与选择&&& 2
3 系统硬件设计&&& 2
3.1 电路设计框图&&& 2
3.1.1 模块框图&&& 2
3.2 系统硬件概述&&& 2
3.2.1 主控制器AT89S52&&& 2
3.2.2 时钟芯片DS1302&&& 2 〖毕业设计(论文)网 HTTP://www.56doc.com 咨询QQ:〗
3.2.3 液晶屏1602LCD&&& 2
3.2.4&&&  矩阵键盘&&& 2
3.2.5 蜂鸣器&&& 2
4& 系统程序设计&&& 2
4.1& 程序设计流程图&&& 2
4.1.1& 总程序流程图&&& 2
4.1.2& 初始化液晶屏流程图&&& 2
4.1.3& 时间设置函数流程图&&& 2
4.1.4& 闹钟设置函数流程图&&& 2
4.2& 该时钟系统的局部程序分析&&& 2
4.2.1& 主函数main的分析&&& 2
4.2.2& 矩阵键盘检测函数分析&&& 2
4.2.3& 时间设置函数&&& 2
5 结论&&& 2
参考文献&&& 2
附录一&&& 2
附录二&&& 2 〖资料来源:毕业设计(论文)网 WWW.56DOC.COM〗
相关内容:
本站提供的资料属原创,内容严格把关,均审核通过的,保证质量和规范.
提供下载链接或发送至您的邮箱,资料可重复发送,确保您收到为止.
收到资料后若有任何疑难问题,均可通过本站客服提供帮助解决.
我们确保发送的资料完整无损,如核实为不合格资料,可以申请退换.
本站所列毕业设计(论文)资料均属于原创者所有,初衷是为大家在毕业设计(论文)过程中参考和学习交流之用,请勿做其他非法用途,转载必究,如有侵犯您的权利或有损您的利益,请联系本站,经查实我们会立即进行修正或删除相关内容! 56doc.com Copyright &
苏ICP备号 |基于AT89C52以及DS1302的电子时钟C程序
说明:此程序为博主参考其他程序按键一为时间与日期切换键;按键二为时间或日期调整键,即当显示时间时,每按一次依次显示小时、分钟、秒;当显示日期时,每按一次依次显示年、月、日;按键三和按键四依次为加键和减键,每按一次当松开时相应的变化一次。
#include &reg52.h&
#define uchar unsigned char &
#define uint& unsigned int
sbit T_CLK& = P1^0;&
//DS1302管脚定义
sbit T_IO&& =
sbit T_RST& = P1^2;
sbit KEY_1& = P1^3;&
//按键管脚定义
sbit KEY_2& = P1^4;
sbit KEY_3& = P1^5;&
sbit KEY_4& = P1^6;
sbit ACC0&& = ACC^0;
sbit ACC7&& = ACC^7;
DUAN_CODE[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X0};&&//共阴极数码管段码表
BIT_CODE[]={0XFE,0XFD,0XFB,0XF7,0XEF,0XDF};&&//数码管位选
second,minute,hour,day,month,year,flag,keyvalue,value=0;
uchar Time[6]={0X0,0X0,0X0,0X0,0X0,0X0};
setsecond,setminute,sethour,setday,setmonth,setyear,distime=1,disdate=0;
void Delay(unsigned int i)
for(j=0;j&i;j++);
unsigned char BCD2HEX(unsigned char
BCDChar)&&&&
&&& unsigned
temp=(BCDChar/16*10+BCDChar);
&&& return
unsigned char HEX2BCD(unsigned char HEXChar)
&&& unsigned
temp=(HEXChar/10*16+HEXChar);
&&& return
void WriteByteDS1302(unsigned char Data)
&&& unsigned
&&& for(i=8;
ACC0;&&&&&&&&
T_CLK = 1;
T_CLK = 0;
ACC = ACC && 1;
unsigned char ReadByteDS1302(void)
&&& unsigned
&&& for(i=8;
&&1;&&&&&&
ACC7 = T_IO;
T_CLK = 1;
T_CLK = 0;
return(ACC);
void WriteDS1302(unsigned char Addr,unsigned char Data)
&&& T_RST =
&&& T_CLK =
&&& T_RST =
WriteByteDS1302(Addr);&&&
WriteByteDS1302(Data);&
&&& T_CLK =
&&& T_RST =
unsigned char ReadDS1302(unsigned char Addr)
&&& unsigned
&&& T_RST =
&&& T_CLK =
&&& T_RST =
WriteByteDS1302(Addr);&&&&&&&&&
&&& Data =
ReadByteDS1302();&&&&
&&& T_CLK =
&&& T_RST =
return(Data);
DS1302_INI()&&//设置ds1302函数,初始化时间和日期
&WriteDSe,0x00);&&//关闭写保护,允许写操作
&WriteDS,0x51);&&//秒
&WriteDS,0x59);&&//分
&WriteDS,0x12);&&//时
&WriteDS,0x20);&&//日
&WriteDS,0x05);&&//月
&WriteDSc,0x12);&&//年
&WriteDS,0xa5);&&//充电
&WriteDS,0xf0);&&//判断是否初始化一次标识写入
&WriteDSe,0x80);&&//打开写保护,禁止写操作
void ReadTime()
&second&& =
BCD2HEX(Time[0]=ReadDS));
&minute&& =
BCD2HEX(Time[1]=ReadDS));
= BCD2HEX(Time[2]=ReadDS));
= BCD2HEX(Time[3]=ReadDS));
= BCD2HEX(Time[4]=ReadDS));
= BCD2HEX(Time[5]=ReadDSd));
void Set(unsigned char sel,unsigned char selby)
&unsigned char address,
&unsigned char max,
&if(sel==0)& {address=0x80;
max=59;min=0;}&&&
&if(sel==1)& {address=0x82;
max=59;min=0;}&&&
&if(sel==2)& {address=0x84;
max=23;min=0;}&&&
&if(month==2)
&&if(flag==1)
&&&if(sel==3)&
{address=0x86; max=29;min=1;}
&&&if(sel==3)&
{address=0x86; max=28;min=1;}
&&if(month==1|month==3|month==5|month==7|month==8|month==10|month==12)
&&&if(sel==3)&
{address=0x86; max=31;min=1;}
&&if(month==4|month==6|month==9|month==11)
&&&if(sel==3)&
{address=0x86; max=30;min=1;}
&if(sel==4)& {address=0x88;
max=12;min=1;}&&&
if(sel==5)& {address=0x8c;
max=99;min=0;}&&&
&item=ReadDS1302(address+1)/16*10+ReadDS1302(address+1);
(selby==0) item++;& else item--;
if(item&max)
if(item&min) item=
WriteDSe,0x00);
WriteDS1302(address,item/10*16+item);
WriteDS,0xa5);
WriteDSe,0x80);&
void& Display()
&uchar i=0;
&for(i=0;i&6;i++)
&&P0=DUAN_CODE[Time[i]];&&
&&P2=BIT_CODE[i];
&&Delay(5);
void DisplayMode()
&if(distime==1)
if(KEY_2==0)
&Delay(10);&&//延时去抖
&if(KEY_2==0)
&&&&while(KEY_2==0);
&&&&&&&&&&
&&value++;
&&&&if(value&=4)value=0;
&&if(value==0)
&&&sethour=0;
&&&setminute=0;
&&&setsecond=0;
&&&setyear=0;
&&&setmonth=0;
&&&setday=0;
&&&Time[0]=hour/10;
&&&Time[1]=
&&&Time[2]=minute/10;
&&&Time[3]=
&&&Time[4]=second/10;
&&&Time[5]=
&&if(value==1)
&&&sethour=1;
&&&setminute=0;
&&&setsecond=0;
&&&setyear=0;
&&&setmonth=0;
&&&setday=0;
&&&Time[0]=hour/10;
&&&Time[1]=
&&&Time[2]=10;
&&&Time[3]=10;
&&&Time[4]=10;
&&&Time[5]=10;
&&if(value==2)
&&&sethour=0;
&&&setminute=1;
&&&setsecond=0;
&&&setyear=0;
&&&setmonth=0;
&&&setday=0;
&&&Time[0]=10;
&&&Time[1]=10;
&&&Time[2]=minute/10;
&&&Time[3]=
&&&Time[4]=10;
&&&Time[5]=10;
&&if(value==3)
&&&sethour=0;
&&&setminute=0;
&&&setsecond=1;
&&&setyear=0;
&&&setmonth=0;
&&&setday=0;
&&&Time[0]=10;
&&&Time[1]=10;
&&&Time[2]=10;
&&&Time[3]=10;
&&&Time[4]=second/10;
&&&Time[5]=
&if(disdate==1)
if(KEY_2==0)
&Delay(10);&&//延时去抖
&if(KEY_2==0)
&&&&while(KEY_2==0);
&&&&&&&&&&
&&value++;
&&&&if(value&=4)value=0;
&&if(value==0)
&&&sethour=0;
&&&setminute=0;
&&&setsecond=0;
&&&setyear=0;
&&&setmonth=0;
&&&setday=0;
&&&Time[0]=year/10;
&&&Time[1]=
&&&Time[2]=month/10;
&&&Time[3]=
&&&Time[4]=day/10;
&&&Time[5]=
&&if(value==1)
&&&sethour=0;
&&&setminute=0;
&&&setsecond=0;
&&&setyear=1;
&&&setmonth=0;
&&&setday=0;
&&&Time[0]=year/10;
&&&Time[1]=
&&&Time[2]=10;
&&&Time[3]=10;
&&&Time[4]=10;
&&&Time[5]=10;
&&if(value==2)
&&&sethour=0;
&&&setminute=0;
&&&setsecond=0;
&&&setyear=0;
&&&setmonth=1;
&&&setday=0;
&&&Time[0]=10;
&&&Time[1]=10;
&&&Time[2]=month/10;
&&&Time[3]=
&&&Time[4]=10;
&&&Time[5]=10;
&&if(value==3)
&&&sethour=0;
&&&setminute=0;
&&&setsecond=0;
&&&setyear=0;
&&&setmonth=0;
&&&setday=1;
&&&Time[0]=10;
&&&Time[1]=10;
&&&Time[2]=10;
&&&Time[3]=10;
&&&Time[4]=day/10;
&&&Time[5]=
void KeyCheck()
if(KEY_1==0)
if(KEY_1==0)
&&&&&&&&&&
keyvalue=1;
while(KEY_1==0)Display();
void KeyCheckADDorPLUS()
if(KEY_3==0)
if(KEY_3==0)
&&&while(KEY_3==0);
&&&&&&&&&&
&if(setsecond==1)Set(0,0);
if(setminute==1)Set(1,0);
if(sethour==1)Set(2,0);
if(setday==1)Set(3,0);
if(setmonth==1)Set(4,0);
if(setyear==1)Set(5,0);
if(KEY_4==0)
if(KEY_4==0)
&&&while(KEY_4==0);
&&&&&&&&&&
&if(setsecond==1)Set(0,1);
if(setminute==1)Set(1,1);
if(sethour==1)Set(2,1);
if(setday==1)Set(3,1);
if(setmonth==1)Set(4,1);
if(setyear==1)Set(5,1);
void ChangeDisplay()&&
&if(keyvalue==1)
&&if(distime)
&&&distime=0;
&&&disdate=1;
&&else if(disdate)
&&&distime=1;
&&&disdate=0;
&keyvalue=0;
void LeapYear(void)
&if((year%4==0&&year0!=0)||(year0==0&&year@0==0))
&if(flag==1&month==2&day==29&hour==0&minute==0&second==1)
&&&WriteDSe,0x00);//允许写操作
&&&WriteDS,0x03);
&&&WriteDS,0x01);
&&&WriteDS,0xa5);//充电&
&&&WriteDSe,0x80);//禁止写操作
&if(flag==0&month==2&day==28&hour==0&minute==0&second==1)
&&&WriteDSe,0x00);//允许写操作
&&&WriteDS,0x03);
&&&WriteDS,0x01);
&&&WriteDS,0xa5);//充电&
&&&WriteDSe,0x80);//禁止写操作
void main()
&DS1302_INI();
&&KeyCheck();
&&ChangeDisplay();
&&ReadTime();
&&DisplayMode();
&&Display();
&&KeyCheckADDorPLUS();
&&DisplayMode();
&&LeapYear();&//闰年修正
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。基于ds1302和单片机时钟设计_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于ds1302和单片机时钟设计
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩21页未读,
定制HR最喜欢的简历
你可能喜欢文档分类:
基于DS1302和51单片机的电子时钟的设计与实现(整理版).doc
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,
您的浏览器不支持进度条
下载文档到电脑,查找使用更方便
还剩?页未读,继续阅读
该用户其他文档
下载所得到的文件列表基于DS1302和51单片机的电子时钟的设计与实现(整理版).doc
文档介绍:
第一章系统介绍 2
1.1 电子钟介绍 2
1.2 单片机AT89C51介绍 2
1.3 时钟芯片DS1302简介 5
1.3.1 主要功能 5
1.3.2 内部结构及引脚功能 5
1.3.3 工作原理 6
1.3.4 控制字节及寄存器 6
1.3.5 时钟/日历存储区(时分秒) 7
1.3.6 数据的传送 7
第二章硬件设计 8
2.1 系统结构及总流程图 8
2.2 系统硬件电路设计图 9
2.2.1整体电路设计 9
2.2.2 DS1302电路设计 9
2.2.3 按键电路 10
2.2.4 显示电路 10
第三章、程序源代码 11
3.1程序流程图 11
3.1源程序 12
第四章 PROTEUS软件仿真 18
参考文献 21
第一章系统介绍
1.1 电子钟介绍
电子钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、办公室等场所。钟表数字化给人们生产生活带来了极大地方便而且大大地扩展了钟表原先的报时功能诸如定时自动报警、按时自动打铃、时间程序自动控制、通断动力设备、甚至各种定时电气的自动启用,因此研究数字钟及扩大其应用有着非常现实的意义。
数字电子钟设计与制作可采用数字电路实现,也可以采用单片机来完成。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低。截止今日,单片机应用技术飞速发展,纵观现在各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。单片机即单片微型计算机(Single-Chip puter ),是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
同时,若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片,则能很好地解决这个问题。现在流行的串行时钟电路很多,如DS1302、DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。美国Dallas公司生产的串行实时时钟芯片 DS1302是一种具有涓细电流充电能力的实时时钟芯片,采用普通32.768KHZ晶振,具有实时时钟和 31 字节的静态RAM。主要特点是采用串行数据传输,可方便地与单片机接口,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
本设计要求利用51单片机和DS1302设计制作一个LED电子钟,用8个LED显示时间,当按下相应按键时,修改当前时间或闹铃时间,若当前时间与闹铃时间相同,蜂鸣器发音1分钟。
1.2 单片机AT89C51介绍
AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准 MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的
AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89C51具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
另外,AT89C51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。
芯片引脚功能
AT89C51芯片DIP双列直插式封装引脚如图1-1所示。
图1-1 AT89C51引脚排列
P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。
P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,P1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
引脚口第二功能如下:
P1.0/T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1/T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5/MOSI(在系统编程用)
P1.6/MISO(在系统编程用)
P1.7/SCK(在系统编程用)
P2 口:P2口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P3口亦作为AT89C51特殊功能(第二功能)使用。
引脚口第二功能如下:
P3.0/RXD(串行输入口)
P3.1/TXD(串行输出口)
P3.2/INTO(外中断0)
P3.3/INT1(外中断1)
P3.4/TO(定时/计数器0)
P3.5/T1(定时/计数器1)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
RST——复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG——当访问
内容来自淘豆网www.taodocs.com转载请标明出处.
文件大小:0 KB
下载次数:

我要回帖

更多关于 单片机电子时钟设计 的文章

 

随机推荐