好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

基于单片机的万年历制作 - 图文.docx

16页
  • 卖家[上传人]:鑫**
  • 文档编号:256590180
  • 上传时间:2022-02-20
  • 文档格式:DOCX
  • 文档大小:36.70KB
  • / 16 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 基于单片机的万年历制作 - 图文 基于DS1302和ATmega16的万年历制作一、 题目分析以及器件选择1、设计要求:电子万年历(a)、根本功能要求:1>能够正确进展日历记录和显示 2>能够输入设定年份3>能够通过按键进展日历的调整 4>能够进展整点报时5>每年1月1日进展新年报时 (b)、扩展功能要求:1>能够调整每天的定时长短2>能够同时显示对应的农历3>能够将通过计算机调整详细的计时和日历2、方案选择:1>时钟芯片的选择在这个系统中,最重要的就是时钟芯片的选择,在电子时钟设计中,常用的时钟芯片有DS1302、DS1216、DS1643、DS1302每种芯片的主要功能根本一样,只是在引脚数量、备用电池的安装方式、计时精度和扩展功能等方面略有不同DS12877与DS1216芯片都有内嵌式锂电池作为备用电源:X1203引脚少,没有嵌入式锂电池,跟DS1302芯片功能相像,只是相比拟之下,X1203与AT89S51搭配运用时占用I/O口较多DS1643为带有全功能实时时钟的非易失性型SRAM,集成了非易失性型SRAM、实时时钟、晶振、电源掉电限制电路和锂电池电源,BCD码表示的年、月、日、星期、时、分、秒,带闰年补偿。

      同样DS1643拥有28只管脚,硬件连起来占用微处理器I/O口较多,不便利系统功能拓展和维护故而从性价比和货源上考虑,本设计采纳实时时钟芯片DS13022>显示器件的选择 显示器件的选择范围很广,本钱最低的就是采纳八位数码管进展显示,但是运用八位数码管,经过评估和计算须要至少八个,这占用了太大的空间,而且很不美观其次个选择就是运用液晶,采纳12864大液晶是普遍的选择,但是本钱太高,而且函数调用不便,程序较长,因此从节约本钱的角度考虑,运用小液晶1602进展设计3>设计评估 本次设计完成了根本要求规定那个的全部内容,能够正确进展日历记录和显示、能够输入设定年份、能够通过按键进展日历的调整、能够进展整点报时、每年1月1日进展新年报时二、 DS1302简介1、总体概述 图一:DS1302外部引脚DS1302是一种高性能、低功耗的实时时钟芯片,附加有31字节静态RAM,采纳SPI三线接口与CPU进展同步通信,并可以采纳突发方式,一次传送多个字节的时钟信号或RAM数据实时时钟可以供应秒、分、时、日、星期、月和年,一个月小于31日时可以自动调整,包括闰年,有效值2101年可以采纳12h或24h方式计时,采纳双电源供电,可设置备用电源充电方式,同时供应了对后备电源进展涓流充电的实力。

      7个附加字节的暂存储器,包括移位存放器、限制逻辑、振荡器、实时时钟和RAM芯片为8引脚小型DIP封装,引脚排列如图一所示,引脚功能见表一 引脚号 1 2 3 4 5 6 7 8名称 Vcc1 X1 X2 GND RST I/O SCLK 功能 备份电源输入 32.768Hz晶振输入 32.768Hz晶振输出 地 限制移位存放器/复位 数据输入/输出 串行时钟 主电源输入 Vcc2 表一:DS1302引脚功能说明2、DS1302的限制字和读写时序说明 在变成过程中要留意DS1302的读写时序DS1302是SPI总线驱动方式它不仅要向存放器写入限制字,还须要读取相应存放器的数据要想与DS1302通信,首先要了解DS1302的限制字DS1302的限制字见表二:BIT7 1 BIT6 RAM CK’ 表二:DS1302的限制字 限制字的作用是设定DS1302的工作方式、传输字节等每次数据的传输都是由限制字起先限制字各位的含义和作用如下:1、 BIT7:限制字的最高位有效,必需是逻辑1,假如它为0,那么不能把数据写入到DS1302中; 2、 BIT6:假如为0,那么表示存取日历时钟数据,为1表示存取RAM数据; 3、 BIT5至BIT1〔A4~A0〕:用A4~A0表示,定义片内存放器和RAM地址。

      定义如下:BIT5 A4 BIT4 A3 BIT3 A2 BIT2 A1 BIT1 A0 BIT0 RD WR’当BIT6位=0时,定义时钟和其他存放器的地址A4~A0=0~6,依次为妙、分、时、日、月、星期、年的存放器当A4~A0=7,为芯片写爱护存放器地址当A4~A0=8.为慢速充电参数选择存放器当A4~A0=31,为时钟多字节方式选择存放器当BIT6=1时,定义RAM的地址,A4!A0=0~30,对应各子地址的RAM,地址31对应的是RAM多字节方式选择存放器4、 BIT0〔最低有效位〕:假如为0,表示要进展写操作,为1表示进展读操作限制字总是从最低位起先输出在限制字指令输入后的下一个SCLK时钟上升沿时,数据被写入DS1302,数据输入从最低位〔0位〕起先同样,在紧跟8位的限制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位 图二:DS1302数据读写时序 三、 DS1302在单片机系统中应用的实现DS1302与单片机的链接仅须要3条线,即SCLK、I/O、RSTVCC2在单电源与电池供电的系统中供应地电源并能供应低功率的电池备份。

      VCC2在双电源系统中供应电源,在这种运行方式下VCC1连接到备份电源,以便在没有主电源的状况下能保存时间信息以及数据DS1302由两者中的较大者供电当VCC2大于VCC1+0.2V时,VC2给DS1302供电当VCC2小于在单片机系统中运用VCC1的时候,DS1302由VCC1供电在本系统中,以ATmega为主器件,DS1302为从器件,RST接在主器件的PC4/TD0上,此引脚为高位的时候,选中该芯片,对其进展操作串行数据线I/O与串行时钟线SCLK分别接在PC3/TMS和PC2/TCK上,全部的单片机地址、吩咐、及数据均通过这两条线传输在系统中,主器件在总线上产生时钟脉冲,寻址信号,数据信号,而从器件那么相应接收数据,送出数据对DS1302的每一次读写都须要16个时钟脉冲,前8个脉冲输入操作地址和读写吩咐 1、硬件设计此系统中的主要器件为单片机ATmega16和DS1302,系统的逻辑图如下: 图三:系统的逻辑框图 其接口电路如图四所示 图四:接口电路 2、程序设计单片机限制DS1302时钟芯片的程序,主要包括两个方面的关键内容,一个是单片机对DS1302存放器的地址定义和限制字的写入,二是数据的读取。

      单片机限制的DS1320时钟实时时间限制楼成图如下: 起先复位端产生一个高电平初始化DS1302写DS1302地址复位端产生一个低电平延时写DS1302地址将该地址的数据读出延时地址增加向该地址写入数据N数据写完了?地址增加YYY数据写完了?显示数据N 为了节约本钱,运用了试验室的开发板进展连接,只是外接了一个1602小液晶电路图在整体框架图中可以望见四、 总结串行时钟芯片DS1302连线简洁、体积小、价格低,再为限制其系统中应用有着突出的优点DS1302可以用于数据记录,特殊是对某些具有特别意义的数据点的记录,能实现数据与出现该数据的时间同时记录这种记录对长时间的连续测控系统结果分析及对异样数据出现的缘由的查找具有重要意义 附录一:主程序#include #include #include//******************************* // DS1302 Real Time Clock functions #asm .equ __ds1302_port=0x15 ;PORTC .equ __ds1302_io=3 .equ __ds1302_sclk=2 .equ __ds1302_rst=4 #endasm #include#asm.equ __lcd_port=0x18 ; PORTb数据存放器地址 #endasm/* 液晶与单片机的端口连接 1 GND- 9 GND 2 +5V- 10 VCC 3 VLC- LCD HEADER Vo 4 RS - 1 PB0 (M16) 5 RD - 2 PB1 (M16) 6 EN - 3 PB2 (M16) 11 D4 - 5 PB4 (M16) 12 D5 - 6 PB5 (M16) 13 D6 - 7 PB6 (M16) 14 D7 - 8 PB7 (M16) */ #includeunsigned char h,m,s,r,y,n; unsigned char time[10]; char lcd_buffer[50]; bit runnian =0; int n_temp;unsigned char key_stime_counter,time_counter; bit time_1s_ok; // 时间计数单元, bit time_display;bit key_stime_ok,baoshi = 0; unsigned char change=0; int add=2000; // Timer 0 比拟匹配中断效劳,2ms定时AS interrupt [TIM0_COMP] void timer0_comp_isr(void) { } // LED扫描显示if (++key_stime_counter >=5) { key_stime_counter = 0; key_stime_ok = 1; }if (++time_counter >= 30) { }time_counter = 0;time_1s_ok = ~time_1s_ok; // 0.1s到 // 10ms到 #define key_input PINA.3 #define key_state_0 #define key_state_10 1 // 按键输入口 #define key_state_2 2 unsigned char read_keyb3(void) {static unsigned char key_state = 0; unsigned char key_press, key_return = 0; key_press = key_input; // 读按键I/O电平switch (key_state) { case key_state_0: // 按键初始态 if (!key_press) key_state = key_state_1; // 键被按下,状态转换到键确认态 break; case key_state_1:if (!key_press) { }key_return = 1; // 按键仍按下,按键确认输出为\〔1〕 // 按键确认态key_state = key_state_2; // 状态转换到键释放态else key_state = key_state_0; // 按键已抬起,转换到按键初始态 break;case key_state_2: if (key_press) key_state = key_state_0; //按键已释放,转换到按键初始态 }break; return。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.