电源和时钟引脚是不是在每个单片机引脚定义中都是固

503 Service Temporarily Unavailable
503 Service Temporarily Unavailable设计技术&&
|||||||||||||||
||||||||||||
&&基于实时时钟芯片X1227的电源控制器设计
基于实时时钟芯片X1227的电源控制器设计
时间: 10:41:00&&&&&&来源:单片机与嵌入式系统应用
X1228是美国XICOR公司最新推出的实时时钟(RTC)芯片。与其它RTC芯片相比,X1228除有基本的时钟和报警功能外,还有4K位E2PROM存储器和复位输出、电压监控、看门狗定时、频率输出等功能。
X1228可以准确地用秒、分、时、日、星期、月、年来显示时间和日期,具有世纪字节,解决了两千年问题,自动实现闰年调整;有2路报警,可设置为按秒、分、时、日、月和星期任意组合的定时报警;还有1个可编程的频率输出引脚(PHZ),用于输出一个固定频率的方波信号;内部的4K位E2PROM存储器,可用于存储用户的设置参数或其它数据,其内容在电源失效时不会丢失;采用I2C总线与单片机接口,一次可传送多个字节的数据,数据传送的速率为400kHz;内部有电源监控电源监控电路,用于监测电源电压,并能在上电和掉电时输出复位信号,片内的看门狗定时器可编程为3个超时时间和关闭,还提供一个备用电源输入引脚(VBACK),接一电池作为备用电源,可在主电源(VCC)失效时保证芯片正常工作和时钟的连续运行。X1228因其计时准确、体积小、功能强,且与单片机接口方便、性价比高,在我们研制的开放式实验室管理系统电源控制器中得到了有效的应用。
1 X1228的内部结构及工作原理
实时时钟芯片X1228的内部结构如图1所示,按功能基本分为实时时钟及报警、存储器和复位监控电路3个主要部分。
1.1 实时时钟及报警
X1228对时钟和报警的访问和设置都是通过时钟/控制寄存器CCR来实现的。CCR分为五个部分:
①报警寄存器0(Alarm 0)为8字节,地址0000H~0007H,非易失性E2PROM存储器;
②报警寄存器1(Alarm 1)为8字节,地址FH,非易失性E2PROM存储器;
③控制寄存器(Control)为4字节,地址0010H~0013H,非易失性E2PROM存储器;
④实时时钟(RTC)为8字节,地址0030H~0037H,易失性RAM存储器;
⑤状态寄存器(Status)为1字节,地址为003FH,易失性RAM存储器。
实时时钟(RTC)外部仅使用1个32.768kHz晶体来保持年、月、星期、日、时、分和秒的精确的内部表示。启动读命令并指定对应于RTC寄存器的地址可以读RTC,也可以通过写RTC寄存器来设置时间和日期。模拟微调寄存器ATR(低6位)用来调整X1和X2引脚间的片内负载电容,为5~39.5pF,这将使晶体选择有较大的余地。数字微调寄存器DTR(低3位)用来调整RTC的误差,达到长时间的高精度。
两组报警寄存器的结构与内容和RTC寄存器相同,只是增加了使能位(在MSB位)。通过使能位和实时寄存器的设置,可以确定报警时间。例如:在表1中,通过把EDWn、EHRn、EMNn使能位置“1”,并把DWAn、HRAn、MNAn报警警察寄存器置为星期三8:00AM,即把X1228设置为每星期三8:00AM报警。当把EHRn、EMNn使能位置“1”,并把HRAn、MNAn报警寄存器置为9:15PM时,即把X1228设置为每天9:15PM报警。设置EMOn,并结合其它使能位和特定的报警时间,用户可以把X1228设置为每年同样的时间报警。控制寄存器INT中位IM为中断方式位,“0”为中断方式,“1”为脉冲方式;位AL1E和AL0E分别用来使能报警中断信号IRQ的输出;位FO1和FO0为可编程频率输出控制位,用来选择PHZ引脚上的振荡频率输出。
状态寄存器SR中位BAT为“1”,表示由电池VBACK供电,硬件置位/复位;位AL1、AL0为报警指示位,“1”为发生报警,状态寄存器读操作复位读标志;位RWEL为寄存器写使能锁存,位WEL为写使能锁存,上电时均为“0”,禁止状态。注意:要对CCR或存储器进行任何非易失性写操作,须首先写“02H”至SR,将WEL位置“1”,其次写“06H”至SR,将RWEL和WEL都置“1”,然后才能写实际数据到CCR或存储器。
1.2 复位监控电路与看门狗定时器
X1228电源控制电路接收从Vcc和VBACK引脚输入的电源,当Vcc<VBACK-0.2V时,电源控制电路将电源自动切换至VBACK。上电时,在Vcc超过复位门限值250ms后,RESET脚产生一个200ms的低电平脉冲为系统提供复位信号。X1228内部有一个检测预置门限电压的比较器监视Vcc引脚上的电压,当发生电源失效时,在RESET脚发出一个复位脉冲。注意:当产生复位脉冲时,正在进行的任何非易失性写操作不受影响,继续操作直到完成。
看门狗定时器可通过向BL寄存器中WD1、WD0这两位的“写入”,设置为3种不同超时间隔或不工作,“00”为1.75s,“01”为750ms,“10”为250ms,“11”为不工作。看门狗启动时,必须在规定间隔内对它进行刷新,方法是在SCL线为高时SDA线产生下降沿。如果看门狗在规定间隔内没有被刷新,则RESET脚变为有效。注意:如果使用开始条件来刷新看门狗定时器,必须跟着一个结束条件以复位X1228。
1.3 存储器访问
X1228支持I2C总线协议,与CPU的连接很简单。如图2所示,AT89C51为主器件,X1228为从器件。SCL为串行移位时钟输入,P3.4接SCL模拟时钟信号;SDA为串行数据输入输出,P3.5与SDA相连以实现AT89C51与X1229的数据通信。X1228工作在中断方式,由IRO引脚定时发出中断信号,作为AT89C51 INT1的输入信号。
主器件在发出开始条件后必须接着输出一个地址字节。从地址字节的高4位是标识位,规定了访问E2PROM阵列还是访问CCR,“1010”表示访问E2PROM阵列,“1101”表示访问CCR;从地址字节的位3~位1是选择位(I2C器件级联时使用),X1228这3位总是“111”;从地址字节的最后一位R/W位定义操作类型。
块保护控制寄存器BL中位BP2、BP1、BP0决定了E2PROM存储器阵列中哪些块是写保护的,“000”表示“无写保护”,“001”表示地址0180H~01FFH写保护,“010”表示地址0100H~01FFH写保护,“011”表示“全地址写保护”,“100”表示地址0000H~003FH(第1页)写保护,“101”表示地址0000H~007FH(前2页)写保护,“110”表示地址0000H~00FFH(前4页)写保护,“111”表示地址0000H~01FFH(前8页)写保护。
对X1228存储器的访问有随机读、顺序读、当前地址读和字节写、页写等,其操作均与标准I2C总线器件相同,在此不作重述。
2 X1228在电源控制器中的应用
为了充分利用实验室资源,让学生能够自主选择实验内容与时间,从而激发学生积极参与科学实验的兴趣,提高分析问题、解决问题的能力,同时也为了缓解近年来高校扩招对实验室的压力,实现高校部分实验室的开放式管理势在必行。我们研制的开放式实验室管理系统,再配上有经验的指导教师精心制作的实验教学课件,为实验室的无人值守化管理提供了物质基础。该开放式实验室管理系统由一个管理中心和一个门禁控制器及若干个实验组电源控制器组成,系统框图如图3所示。学生进入开放式实验室做实验,必须先刷卡,得到允许后方可进入。若实验时间超过预定时间(前10分钟发提示警告信息),则实验组仪器设备的供电会自动切断。
管理中心由1台计算机、报表打印机和管理软件组成。完成的功能有:①IC卡的发放、实验室仪器设备配置情况和实验安排情况预置;②通过门禁控制器获取实验学生的有关信息,根据存储在机内的仪器设备使用配置情况及预置的实验安排情况,决策该学生当前是否能参与实验并分配实验组号;③向门禁控制器回发信息;④若允许学生进入实验室,则发指令至相应的实验组电源控制器,以便及时为该组仪器设备供电;⑤对学生实验时间、仪器设备使用情况进行存储管理,为实验指导教师掌握学生实验情、实验技术人员进行仪器设备的维护维修提供依据;⑥各种报表输出。
门禁控制器主要负责:①对学生所持有的IC卡刷卡,以获取与实验有关的信息,通过RS485总线传输至上位机,以决定是否允许该学生进入实验室;②接收上位机发来的允许否信息,通过LCD显示器显示并执行;③学生实验完毕,需再次刷卡,并通过门禁控制器所携带的小键盘,对实验组仪器则认为该实验在规定时间内未完成,需重做。
实验组电源控制器主要是接收上位机指令,控制每个实验组仪器设备的供电情况,并在预定实验结束时间的前10分钟向学生发提示报警信息。
在实验组电源控制器中,我们采用了AT89C51单片机控制实时时钟芯片X1228(如图2)来实现对每个实验组仪器设备的供电情况定时控制,采用OCMJ2X8的LCD显示模块显示实时时间。AT89C51从串行口接收来自PC的2字节命令,由P1.5输出高电平,通过一只固态继电器(SSR)SAP4010来接通220V交流供电电路;接收8字节BCD码,写入X1228的RTC寄存器,对X1228进行校时;从串行口接收8字节写入Alarm0来设置X1228的报警输出,在单片机的外中断1服务程序中,通过P3.2口接的1只有源讯响器,在预定实验结束时间的前10分钟向学生发提示报警信息;实验时间到,P1.5输出高电平,通过SAP4010切断220V交供电电流。管理中心上位机与电源控制器之间采用MAX3082构成的RS485总线进行通信。因总线上允许最大节点数为256个,故完全能满足实际应用需要。
在开放式实验室管理系统的电源控制器中,由于采用了I2C总线的实时时钟芯片X1228,它集成时时钟、报警输出、电源监控和看门狗定时器于一体,从而大大减小了系统成本和电路板空间。该电源控制器若稍做改进,也可广泛地应用地需要进行定时开关机的家用电器中。
[上一篇:]
[下一篇:]
北美Lab秀之CES速报_博世Climo
赛灵思“Vivado专家系列”研讨会将由来自赛灵思Vivado开发者及资深技术支持团队成员为您带来包括技术分享、设计方法学、设计技巧等内容,以帮助用户快速提高其基于FPGA 的设计效率。此次研讨会为该系列的第一期,旨在深入剖析Vivado高速时序收敛技术。另外我们还将总结高速设计面临的挑战,介绍设计分析、设计向导以及设计复杂性和拥塞的分析方法。 赛灵思 &&&&日&&&&posts - 12,&
comments - 2,&
trackbacks - 0
之前C语言已经告一段落,现在我们学习单片机
首先,我们要了解怎样学习单片机!
1. 单片机简介和发展历程?
这里就不说这些废话了。。。。。。。
2. 学习单片机需要哪些基本条件?& &模拟电路,数字电路基础,对C语言或汇编语言有一定的了解。当然,这些也可以在学习过程中掌握。以后我都会讲解的。&&&硬件条件的话:电脑一台,实验开发平台一套。3、单片机的结构 & &一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。
&&&单片机是一种控制芯片,一个微型的计算机,而加上晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等那是单片机系统。
4、MCS51单片机和、89C51等单机片有什么不同
这里我们以后再做介绍,这里不需要了解。
//________________________________________________________________________________________________________________________________________
其次,我们要学C语言,而且要学好!C语言很简单,单一很重要!
同时,你还得了解汇编,实际上不是了解汇编指令,而是为了了解单片机的体系结构
最后,我们来了解单片机引脚:
单片机的40个引脚总的可分为4类:电源、时钟、控制和I/O引脚。
⒈ 电源:&&&&&&a)_ VCC - 芯片电源,接+5V;&&&&&&&&&&b)_ VSS - 接地端;
⒉ 时钟:XTAL1、XTAL2 ——晶体振荡电路反相输入端和输出端。
⒊ 控制线:控制线共有4根:
    &a)_ ALE/PROG:地址锁存允许/片内EPROM编程脉冲 &&&&&&① ALE功能:用来锁存P0口送出的低8位地址 &&&&& ② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。&&
    b)_ PSEN:外ROM读选通信号。&&
    c)_ RST/VPD:复位/备用电源。 &&&& & ① RST(Reset)功能:复位信号输入端。 && & &&② VPD功能:在Vcc掉电情况下,接备用电源。&&
    d)_ EA/Vpp:内外ROM选择/片内EPROM编程电源。 &&&& &&① EA功能:内外ROM选择端。 &&&&& &② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
⒋ I/O线 & 80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。&
&电源:是必不可少的了。单片机使用的是5V电源,其中正极接40管脚,负极(地)接20管脚。 振蒎电路:单片机是一种时序电路,必须供给脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。
     只要买来晶体震荡器,电容,连上就能了,按上面的图接上即可。 复位管脚:按图1中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。 EA管脚:EA管脚接到正电源端。 至此,一个单片机就接好,通上电,单片机就开始工作了。
OK,上面引脚介绍可能你又产生了很多疑问!下面我们实战一下:
我们任务是让单片机的第一个引脚控制一个LED灯点亮和熄灭。怎么做?
首先,第一个引脚我们规定叫做P1.0(这是规定)
各个所需原件接入P1.0,如果P1.0引脚是高电平,此时灯就不会亮,相反P1.0引脚是低电平,灯就亮了。
问题是怎样控制P1.0引脚呢?
我们的指令STEB&P1.0控制高电平;&& CLR P1.0控制低电平;
但我们的计算机不能读取这些指令,它只能读取数字,而我们的C51芯片读取数字指令也有一些规定的;
我们得通过编程器把SETB P1.0变为(D2H,90H ),把CLR P1.0变为 (C2H,90H )写入单片机中。
就是把你在电脑上写出来来的代码用汇编器等编译器生成的一个目标烧写到单片机的eprom里面去的工具
到这里第一步就完成了。
ok,我们编译的代码既然能控制灯亮或者灭,那么代码是怎么存入单片机中的呢?
这里我们引入一个专业术语:ROM-只读存储器;
这里的只读指的是在单片机中运行中只能读取里面的内容,但是我们编译的代码在编译器上是可以存入的(不然单片机怎么控制LED灯?)
那么在ROM中是怎么存的呢?
实际上同学们了解到我们是通过电平高低控制LED灯的(其它元件一般也是),我们规定1代表高电平,0代表低电平,那么我们就只需要存1、0就可以。
在ROM中,内存好比是在一个抽屉中有很多排条形槽,每个条形槽中又分为八个格子。这里为什么是八个格子我也不知道,这是规定。但我们要了解的是怎么把数字存入这些格子中(计算机只认识数字)
如果我们要存数字10;
首先,我们要将10转成二进制——(在我之前文章中专门讲过)
那么我们就分别在这八个格子中存入相应的0、1;
通电,将电荷存入格子中,所有格子有电荷额就是存的1,空的就存的0;
但是我们电路都是以并联的形式,要么输入电荷。
此时就需要另外的信号线接在格子上,控制格子开关。进而控制电荷进入格子中。
我们怎样来控制各个单元的控制线呢?
把每个单元元的控制线都引到集成电路的外面不就行了吗?
事情可没那么简单,一片27512存储器中有65536个单元,把每根线都引出来,这个集成电路就得有6万多个脚?不行,怎么办?要想法减少线的数量。我们有一种办法称这为译码,简单介绍一下:一根线能代表2种状态,2根线能代表4种状态,3根线能代表几种,256种状态又需要几根线代表?8种,8根线,所以65536种状态我们只需要16根线就能代表了。
存储器有很多,RAM,PROM,EPROM,EEPROM,FLASH........在后期我们介绍这些存储器,对于随机存储器RAM你要理解也不是很难的。
这里就介绍了ROM的存储原理
第一个小程序
虽然之前我们能控制灯的亮或者灭。
但是,这里灯只能亮一次;
现在我们任务升级,让灯闪烁;
那么步骤就变成了:SETB P1.0&& 延长时间&&& CLR P1.0&&&循环执行;
;主程序:LOOP: SETB P1.0& & ;(1)熄灭灯LCALL DELAY& && &
;(2)延时一段时间CLR P1.0& && && &&&;(3)点亮灯LCALL DELAY& && &&&;(4)延时一段时间AJMP LOOP& && && & ;(5)跳转到第一句LOOP处;以下子程序DELAY: MOV R7,#250 ;(6)D1: MOV R6,#250& & ;(7)D2: DJNZ R6,D2& &&&;(8) & && & DJNZ R7,D1&&;(9)& && & RET& && && &;(10)END&&&&&&&
对于上面的代码,我们先必须得了解一些指令:
AJMP转移命令;
LCALL调用子程序;
显而易见,第五条指令一直转移到第一条指令,所以主程序一直处于循环状态,
然后第二条指令在调用DELAY这个子程序,
至于子程序DELAY里面的内容我们以后再讲,你只需要知道这是用来延长时间的。
这样,可以循环有频率的控制P1.0的电压,从而控制LED灯的闪烁。
我们用C语言来写:
#include &at89x52.h& void DELAY()& &//延时函数{ unsigned char i,j; & & for(i=0;i&250;i++) & & { & && &&&for(j=0;j&200;j++); & & }
} void main() //程序从这里开始执行{while(1) //这句的作用就是反复的执行下面这个{}中包含的4句& & { & &&&P1_0=1;&&//(1)熄灭灯& &&&DELAY(); //(2)延时一段时间& &&&P1_0=0;&&//(3)点亮灯& &&&DELAY(); //(4)延时一段时间& & } }
大家不必在意其它,懂它的原理就可以了。当然,这只是C语言中的原理。
我们回到上面的子程序中
DELAY: MOV R7,#250 ;(6)D1: MOV R6,#250& & ;(7)D2: DJNZ R6,D2& &&&;(8) & && & DJNZ R7,D1&&;(9)& && & RET& && && &;(10)
我之前介绍了主程序的一些指令,我相信大家都能懂。
对于子程序,我们首先要了解:R6,R7代表什么?
459+889=?结果是什么呢?你会说:1348;
正确!计算机也是能直接算出1348;
那么:459+889+743=?结果是?------------2091;你会先算459+889=1348;然后算1;
计算机也是,不过先前的结果1348算出了后放在哪里?ROM?
不行,ROM是只读的。
对,RAM(随机存储器)。RAM会分出一部分内存来寄存1348,在取出1348加入后面的运算。分出的内存叫寄存区。
现在我可以告诉你R6,R7就在这个寄存区中。
我们其次了解一下:DELAY(子程序名称,主程序要调用的);D1(标识符,相当于一个id名,标注一个行,后面的可以根据这个标识直接转移又执行这行代码);D2(和D1一样);RET(子程序结束);END(程序结束);
MOV指令代表:传递数据;    后面有传递者,接受者,数据;
  MOV  R7,#250:这里省略了传递者(不代表任意代码都可以省),“#”标识“250”是被传递的数,R7是接受者;
DJNZ指令代表:有转移执行的意思;
  DJNZ  R6,D2:这里表示将第一个参数R6中的值减1,如果等于0就执行下一句代码,否则执行D2行的代码;
关于这个延时程序我们后期会详细分析。
阅读(...) 评论()非常详细的单片机引脚介绍 _物联网在线

我要回帖

更多关于 8051单片机引脚 的文章

 

随机推荐