基于DS1302的时钟设计_第1页
基于DS1302的时钟设计_第2页
基于DS1302的时钟设计_第3页
基于DS1302的时钟设计_第4页
基于DS1302的时钟设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、一 stc89c52单片机/摘抄于网络 stc89c52rc单片机是宏晶科技推出的新一代高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟、机器周期和6时钟、机器周期可以任意选择。 主要特性如下: 增强型8051单片机,6时钟、机器周期和12时钟、机器周期可以任意选择,指令代码完全兼容传统8051单片机。 工作电压:5.5v3.3v 工作频率范围:044mhz。 用户应用程序空间为8k字节 片上集成512字节ram 通用i/o口32个,复位后为:p1/p2/p3/p4是准双向口/弱上位,p0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为i/o口用时,需加上

2、拉电阻。 isp(在系统可编程)/iap(再应用可编程),无需专用编程器,无需专用仿真器,可通过串口(rxd/p3.0,txd/p3.1 )直接下载用户程序,数秒即可完成一片。 具有eeprom功能 具有看门狗功能 共3个16位定时器/计数器。及定时器t0、t1、t2 外部中断4路,下降沿中断或低电平触发电路,power down模式可由外部中断低电平触发中断方式唤醒 通用异步串行口(uart),还可用定时器实现多个uart 工作温度范围:-40+85度(工业级)/075度(商业级) pdip封装图1-1 引脚图(1) stc89c52单片机资源表一 stc89c52主要功能主要功能特性兼容m

3、cs51指令系统8k可反复擦写flash rom32个双向i/o口256x8bit内部ram3个16位可编程定时/计数器中断时钟频率0-24mhz2个串行中断可编程uart串行通道2个外部中断源共6个中断源2个读写中断口线3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能(2)复位信号及其产生rst引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为12mhz的晶振,则复位信号持续时间应超过4us才能完成复位操作。复位电路如图所示图1-2 复位电路(4)时钟电路stc89c52内部有一个用于构成振荡器的高增益反相放大器, 引脚rxd

4、和txd分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图所示,在rxd和txd引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.212mhz之间选择,电容值在530pf之间选择,电容值的大小可对频率起微调的作用。图1-3 内部时钟方式电路二max232/摘抄于网络芯片是专门为电脑的rs-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。 图2-1 max232引脚图引脚介绍: 第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个

5、电源,提供给rs-232串口电平的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(r1in)、12脚(r1out)、11脚(t1in)、14脚(t1out)为第一数据通道;8脚(r2in)、9脚(r2out)、10脚(t2in)、7脚(t2out)为第二数据通道;ttl/cmos数据从t1in、t2in输入转换成rs-232数据从t1out、t2out送到电脑db9插头;db9插头的rs-232数据从r1in、r2in输入转换成ttl/cmos数据后从r1out、r2out输出。 第三部分是供电。15脚gnd、16脚vcc(+5v)。

6、主要特点: 1、符合所有的rs-232c技术标准 2、只需要单一 +5v电源供电 3、片载电荷泵具有升压、电压极性反转能力,能够产生+10v和-10v电压v+、v- 4、功耗低,典型供电电流5ma 5、内部集成2个rs-232c驱动器 6、内部集成两个rs-232c接收器下图为mx232双串口的连接图,可以分别接单片机的串行通信口或者实验板的其它串行通信接口,保证了能正常的下载调试程序,设计单片机与pc间通信接口电路7、程序下载口芯片及电路:stc89c52单片机支持spi技术,可以通过3根线进行在线下载。max232是下载口电路的核心芯片,它完成计算机与单片机电平一致的转换。其电路如图所示:

7、图2-2 程序下载口电路三时钟电路ds1302/摘抄与网络31 ds1302控制字的介绍表3-1 ds1302控制字的介绍765432101ram/a4a3a2a1a0rd/ 控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到ds1302中。 位6:如果为0,则表示存取日历时钟数据,为1表示存取ram数据: 位5至位1 (a4a0):指示操作单元的地址;位0(最低有效位):如为0,表示要进行写操作,为1表示进行读操作。读数据:读数据时在紧跟8位的控制宇指令后的下一个sclk脉冲的下降沿,读出ds1302的数据,读出的数据是从最低位到最高位。写数据:控制字总是从最低位开始输出

8、。在控制字指令输入后的下一个sclk时钟的上升沿时数据被写入ds1302,数据输入也是从最低位(0位)开始。 位0(最低有效位):为1表示进行读操作。如为0,表示要进行写操作,控制字后sclk下降沿读数据sclk上升沿写数据。32 ds1302的数据输入和输出控制(1)复位以及时钟控制: 所有的数据传输在r5t置一时进行(反复强调),rst输入信号有两种功能:首先,rst接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,rst提供终止单字节或多字节数据的传送手段。当rst为高电平时,所有的数据传送被初始化,允许对ds1302进行操作。如果在传送过程中rst置为低电平,则会终止此次数据传送,

9、i/o引脚变为高阻态。上电运行时,在vcc=2. 5v之前,rst必须保持低电平。只有在sclk为低电平时,才能将rst为高电平。i/o为串行数据输入输出端(双向),后面有详细说明。sclk始终是输入端。(2)数据输入: 经过8个时钟周期的控制字节的输入,一个字节的输入将在下8个时钟周期的上升沿完成,数据传输从字节最低位开始。(3)数据输出:经过8个时钟周期的控制读指令的输入,控制指令串行输入后,一个字节的数据将在下个8个时钟周期的下降沿被输出,注意第一位输出是在最后一位控制指令所在脉冲的下降沿被输出,要求rst保持位高电平。33 ds1302单字节读写时序介绍 图3-1 ds1302单字节读

10、写时序介绍ds1302的数据读写是通过i/o串行进行的。当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,告诉ds 1302是读还是写操作,是对ram还是对clok寄存器操作,以及操作的址。第二个字节就是要读或写的数据了。我们先看单字节写:在进行操作之前先得将ce(也可说是rst)置高电平,然后单片机将控制字的位0放到i/o上,当i/o的数据稳定后,将sclk置高电平,ds130检测到sclk的上升沿后就将i/o上的数据读取,然后单片机将sclk置为低电平,再将控制字的位1放到i/d上,如此反复,将一个字节控制字的8个位传给ds1302。接下来就是传一个字节的数据给d

11、s1302,当传完数据后,单片机将ce置为低电平,操作结束。 单字节读操作的一开始写控制字的过程和上面的单字节写操作是一样,但是单字节读操作在写控制字的最后一个位,sclk还在高电平时,ds1302就将数据放到i/o上,单片机将sclk置为低电平后数据锁存,单机机就可以读取i/o上的数据。如此反复,将一个字节的数据读入单片机。读与写操作的不同就在一于,写操作是在sclk低电平时单片机将数据放到io上,当sclk上升沿时,ds1302读取。而读操作是在sclk高电平时ds1302放数据到io上,将scli置为低电平后,单片机就可从io上读取数据。34 ds1302操作指令介绍表3-2 ds130

12、2操作指令介绍寄存器名命令字取值范围各位内容写操作读操作76543210秒寄存器80h81h0059ch10secsec分寄存器82h83h0059010minmin时寄存器84h85h0112或002312/010hrhr日寄存器86h87h0128,29,30, 310010 datedate月寄存器88h89h011200010mmontmonthh周寄存器8ah8bh010700000day年寄存器8ch8dh009910yearyear操作说明:(1)首先要通过8eh将写保护去掉,将日期,时间的初值写时各个寄存器。(2)然后就可以对80h, 82h. 84h, 86h, 88h. 8

13、ah, 8ch进行初值的写入。同时也通过秒寄存器将位7的ch值改成0,这样ds1302就开始走时运了。(3)将写保护寄存器再写为80h,防止误改写寄存器的值。(4)不断读取80h一8ch的值,将它们格式化后显示到1602lcd液晶上四1602液晶/51单片机c语言教程摘抄本实验使用的1602液晶为5v电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字,内置含128个字符的ascii字符库,只有并行接口,无串行接口。41接口信号说明表4-1 引脚说明编号符号引脚说明编号符号引脚说明1vss电源地9d2数据口2vdd电源正极10d3数据口3vo液晶显示对比度调节端11d4数据口4rs数据/

14、命令选择端(h/l)12d5数据口5r/读写选择端(h/l)13d6数据口6e使能信号14d7数据口7d0数据口15bla背光电源正极8di数据口16blk背光电源负极4.2主要技术参数表4-2 1602液晶主要技术参数显示容量162个字符芯片工作电压4.55.5v工作电流2.0ma(5.0v)模块最佳工作电压5.0v字符尺寸2.954.35(wh)mm4.3基本操作时序读状态 输入:rs=l,r/=h,e=h 输出:d0d7=状态字。读数据 输入:rs=h,r/=h,e=h 输出:无。写指令 输入:rs=l,r/=l,:d0d7=指令码,e=高脉冲输出:d0d7=数据。写数据 输入:rs=h

15、,r/=l,:d0d7=数据,e=高脉冲输出:无。4.4状态字说明表4-3 状态字说明st7d7st6d6st5d5st4d4st3d3st2d2st1d1st0d0sta0sta6当前地址指针的数值sta7读/写操作使能1禁止;0允许注意:原则上每次对控制器进行读/写操作之前,都必须进行读/写检测,确保sta7为0。实际上,由于单片机的操作速度慢于液晶控制器的反应速度,因此可以不进行读/写检测,或只进行简短的延时即可。 4.5 数据指针设置控制器内部设有一个数据地址指针,可以通过它们访问内部的全部80b的ram,如表所示表4-4 数据指针设置指令码功能80h+地址码(027h,4067h)设

16、置数据地址指针4.6 其他设置表4-5 其他设置指令码功能01h显示清屏:1.数据指针清0 2.所有显示清002h显示回车:数据指针清04.7 初始化设置(1) 显示模式设置表4-6 显示模式设置指令码功能00111000设置162显示,57点阵,8位数据接口(2) 显示开/关及光标设置表4-7 显示开/关及光标设置指令码功能00001dcbd=1开显示;d=0关显示c=1显示光标;c=0不显示光标b=1光标闪烁;b=0光标不显示000001nsn=1当读或写一个字符后地址指针加1,且光标加1n=0当读或写一个字符后地址指针减1,且光标减1s=1当写一个字符时,整屏显示左移(n=1)或右移(n

17、=0),以得到光标不移动而屏幕移动的效果s=0当写一个字符时,整屏显示不移动00010000光标左移00010100光标右移00011000整屏左移,同时光标跟随移动00011100整屏右移,同时光标跟随移动4.8 写操作时序分析时序图可知操作1602液晶的流程如下:(1) 通过rs确定是写数据还是写命令。写命令包括使液晶的光标显示/不显示、光标闪烁/不闪烁、需/不需要移屏、在液晶的什么位置显示,等等。写数据是指要显示什么内容。(2) 读/写控制端设置为写模式,即低电平。(3) 将数据或命令送达数据线上。(4) 给e一个高脉冲将数据送入液晶控制器,完成写操作。总结:通过以上材料的总结我们便可以

18、做出由ds1302时钟芯片及lcd1602液晶还有stc89c52单片机和max232芯片组成的万年历。具体电路连线图如下程序如下:#include#include#define uchar unsigned char/=sbit rs=p23; /片选信号 读写期间必须是高sbit sclk=p24;/时钟信号 sbit io=p25; /数据信号 双向sbit lcd_ea=p22; /1602使能信号sbit r_w=p21; /1602读写控制信号sbit r_s=p20; /1602数据读写信号/sbit p3_7=p20;sbit date=p00;/=uchar table=00

19、:00:00;uchar tab14=2000-00-00;uchar week13=mon;uchar week23=tue;uchar week33=wed;uchar week43=thu;uchar week53=fri;uchar week63=sat;uchar week73=sun;/uchar week2;/=延时程序=voiddelay( int n )uchar x,m;for(x=0;xn;x+)for(m=0;mn;m+);/=lcd写控制命令=voidread_command(uchar a)r_s=0;r_w=0;/lcd_ea=0;p0=a;delay(10);l

20、cd_ea=1;delay(10);lcd_ea=0;/=lcd写数据=voidread_data(uchar b)r_s=1;r_w=0;p0=b;delay(5);lcd_ea=1;delay(5);lcd_ea=0;/=lcd初始化=voidchu_shi_hua()p0=0;lcd_ea=0;read_command(0x38);/功能设置命令。4位总线;双行显示5x7的点阵 字符。 read_command(0x0c);/显示开关控制,开显示、无光标、不闪烁read_command(0x06);/光标和显示模式设置,光标右移,屏幕上所有文字不移动。 read_command(0x01

21、);/清lcd/read_command(0x02);delay(20);/=往ds1302中写一字节数据=void write_ds1302(uchar byte)uchar i;sclk=0;delay(1);for(i=0;i=1;/=从ds1302中读一字节数据=uchar read_ds1302(void)uchar i;uchar back_data=0;delay(2);for(i=0;i=1;if(io=1)back_data|=0x80;sclk=1;delay(1);sclk=0;delay(1);return(back_data);/=向某一地址写一字节数据=void w

22、rite_byte(uchar adrss,uchar date)rs=0;delay(1 );sclk=0;delay(1);rs=1; delay(1);write_ds1302(adrss);write_ds1302(date);sclk=0;delay(1);rs=0;delay(1); /=从某一地址读一字节数据=uchar read_byte(uchar adrss)uchar dater;rs=0;/delay(1);_nop_();sclk=0;/delay(1);_nop_();rs=1;delay(1);write_ds1302(adrss);dater=read_ds13

23、02();rs=0;delay(1);_nop_(); sclk=0; rs=0; /delay(1); _nop_(); return(dater);/=ds 1302初始化=void initial_ds1302(void)write_byte(0x8e,0x00);/写保护。写操作时必须0write_byte(0x80,(00/10)4)|(00%10);/写秒初值write_byte(0x82,(22/10)4)|(22%10);/写分初值write_byte(0x84,(7/10)4)|(7%10);/写小时初值write_byte(0x86,(11/10)4)|(11%10);/写

24、日初值write_byte(0x88,(7/10)4)|(7%10);/写月初值write_byte(0x8a,(4/10)4)|(4%10);/写周初值write_byte(0x8c,(10/10)4)*10)+(read_byte(0x8d)&0x0f);/读年寄存器tab2=nian/10+0;read_data(tab2); /向1602写年的十位tab3=nian%10+0;read_data(tab3); /向1602写年的各位read_data(tab4);yue=(read_byte(0x89)&0x70)4)*10)+(read_byte(0x89)&0x0f);/读月寄存器tab5=yue/100+0;read_data(tab5);tab6=yue%10+0;read_data(tab6);read_data(tab7);ri=(read_byte(0x87)&0x70)4)*10)+(read_byte(0x87)&0x0f);/读日寄存器tab8=ri/10+0;read_data(tab8);tab9=ri%10+0

温馨提示

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

评论

0/150

提交评论