王来希——电子万年历.doc_第1页
王来希——电子万年历.doc_第2页
王来希——电子万年历.doc_第3页
王来希——电子万年历.doc_第4页
王来希——电子万年历.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

毕 业 设 计(论文)(说 明 书)题 目: 电子万年历 姓 名: 王来希 编 号: 9060852 平顶山工业职业技术学院 年 月 日平顶山工业职业技术学院毕 业 设 计 (论文) 任 务 书姓名 王来希 专业 应用电子 任 务 下 达 日 期 年 月 日设计(论文)开始日期 年 月 日设计(论文)完成日期 年 月 日设计(论文)题目: A编制设计 B设计专题(毕业论文) 指 导 教 师 系(部)主 任 年 月 日平顶山工业职业技术学院毕业设计(论文)答辩委员会记录 系 专业,学生 于 年 月 日进行了毕业设计(论文)答辩。设计题目: 专题(论文)题目: 指导老师: 答辩委员会根据学生提交的毕业设计(论文)材料,根据学生答辩情况,经答辩委员会讨论评定,给予学生 毕业设计(论文)成绩为 。答辩委员会 人,出席 人答辩委员会主任(签字): 答辩委员会副主任(签字): 答辩委员会委员: , , , , , , 平顶山工业职业技术学院毕业设计(论文)评语第 页共 页学生姓名:王来希 专业 应用电子 年级 06 毕业设计(论文)题目: 评 阅 人: 指导教师: (签字) 年 月 日成 绩: 系(科)主任: (签字) 年 月 日毕业设计(论文)及答辩评语: 摘要随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。Philips公司推出的低功耗实时时钟PCF8563。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且PCF8563的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,采用高亮度的大数码管显示,白天和晚上同样可以清楚看见,可以同时显示年、月、日、星期、时、分、秒等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用35V电压供电。本文首先描述系统硬件工作原理,并附议系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程。本设计以数字集成电路技术为基础,单片机技术为核心,本文编写的主导思想是软硬件结合,以硬件为基础,来进行各功能模块的编写。本系统以C语言进行设计增强了程序的可读性和可移植性,为了便于扩展和更改,软件设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。关键词:时钟电钟;PCF8563;动态显示;单片机;数码管目录第1章 设计要求1第2章 设计思路2第3章 硬件设计与实现33.1结构原理图33.2 数码管及动态显示33.2.1数码管的结构和显示原理33.2.2多位数码管的显示43.2.3 数码管显示方式53.3 74LS154的功能介绍63.3.1电路连接图63.3.2 电路的结构图63.3.2 真值表73.4 时钟芯片PCF8563及IC总线的介绍73.4.1 内部结构框图83.4.2管脚配置83.4.3 BCD格式寄存器的概况93.5 IC 总线特性93.5.1起动(START)和停止(STOP)条件103.5.2 位传送103.5.3 标志位(应答位)11第4章、软件的设计124.1 主程序流程图124.2 时间日期调整流程图134.3 IC读写子程序:144.4 键盘扫描子程序164.5 BCD加减主程序214.6 主程序22第5章 制PCB版27小结28参考文献29第1章 设计要求用单片机和时钟芯片(自选)设计具有年、月、日、星期、时、分、秒等功能;并且具备年、月、日、星期、时、分、秒校准功能;查资料,收集信息;写出初步设计方案;各部分硬件框图的设计;软件部分的设计;自己做版子焊接,并进行调试;写设计论文;指导老师对设计报告进行检查、修改,并定稿设计论文。第2章 设计思路设计的题目是电子日历的控制。根据设计要求日历显示正常的年、月、日、时、分、秒。要想实现上述功能,就必须将硬件系统和软件系统有机的结合在一起,方可实现我们设计任务中的各项要求要设计比较准确的万年历必须用专用的时钟芯片(例如:PCF8563)。用单片机来读取时钟芯片中的时间及年月日后,送给数码管进行显示。再用3个按键来调节时间。根据按键电路可实现年、月、日、时、分、秒的调整,当K1键按下时,可以调整时间,K2、K3键分别对时间进行加或减。调时间时候应该暂时不读芯片的时间调过时间,并把调节的时间写入到时钟芯片中,调节完毕后应返回继续读时钟芯片的时间送给数码管显示。注意:单片机必须有电源、晶振、复位电路才能运行起来。单片机时钟芯片PCF8563按键(调节时间日期)数码管显示复位电路图2-1 设计结构图第3章 硬件设计与实现3.1结构原理图三极管晶振复位电路电源按键时钟芯片译码器单片机数码管图3-1 结构原理图3.2 数码管及动态显示数码管具有结构简单、成本低、配置灵活、亮度高、功耗小、与单片机接口方便等优点被广泛的应用于各个领域的显示输出设备。3.2.1数码管的结构和显示原理通常所说的数码管是有7个条形发光二极管组成,因此也成为七段数码管,有一个圈点型发光二极管,用于显示小数点。通过7个发光二极管亮暗的不同组合,可以显示多种数字、字母以及其他符号。数码管中的发光二极管有共阳极和共阴极两种连接方法。如图下图所示图3-2数码管结构图使用数码管显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为数码管显示器提供的编码正好是一个字节。这次电子万年历用的共阳极数码管显示器,根据电路连接图显示十六进制数的编码已列在下表。表2-1数码管共阳极十六进制编码表字形代码字形代码00x2890xa010xeb0xf720x32无显示0xff30xa240xe150xa460x2470xea80x203.2.2多位数码管的显示在单片机应用系统中只有1位的数字显示是不常见的,往往要驱动多个数码管。大多都是用多位数码管集成到一块的。比较常见的有1、2、4位的。如下图所示:图3-3数码管实物图3.2.3 数码管显示方式数码管显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。3.3 74LS154的功能介绍74LS154是在单片机系统中常用的4线16线译码器。当选通端(G1、G2)均为低电平时,可将地址端(ABCD)的二进制编码在一个对应的输出端,以低电平译出。3.3.1电路连接图图3-4 电路连接图3.3.2 电路的结构图图3-5电路结构图3.3.2 真值表表2-2 真值表说明: H高电平L低电平X任意3.4 时钟芯片PCF8563及IC总线的介绍PCF8563 是低功耗的CMOS 实时时钟日历芯片,它提供一个可编程时钟输出,一个中断输出和掉电检测器,所有的地址和数据通过I2C 总线接口串行传递。最大总线速度为400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动产生增量。特性:低工作电流(0.25A)、大工作电压范围(1.05.5)、400KHz 的IC 总线接口(VDD=1.85.5V 时)IC总线从地址:读,0A3H;写,0A2H。3.4.1 内部结构框图图3-6 内部结构框图3.4.2管脚配置图3-7管脚配置图表2-3 管脚功能表3.4.3 BCD格式寄存器的概况表2-3 寄存器的概况表3.5 IC 总线特性IC 总线用两条线(SDA 和SCL)在芯片和模块间传递信息。SDA 为串行数据线,SCL为串行时钟线,两条线必须用一个上拉电阻与正电源相连,其数据只有在总线不忙时才可传送。产生信号的设备是传送器,接收信号的设备是接收器,控制信号的设备是主设备,受控制信号的设备是从设备。我们这次是用单片机作为传送器,时钟芯片PCF8563作为接收器。SCLSDA单片机PCF8563图3-8 连接图3.5.1起动(START)和停止(STOP)条件总线不忙时,数据线和时钟线保持高电平。数椐线在下降沿而时钟线为高电平时为起动条件(S),数椐线在下降沿而时钟线为高电平时为停止条件(P)。图3-9 启动和停止条件3.5.2 位传送每个时钟脉冲传送一个数据位,SDA 线上的数据在时钟脉冲高电平时应保持稳定,否则SDA 线上的数据将成为上面提及的控制信号。图3-10 位传送3.5.3 标志位(应答位)在起动条件和停止条件之间传送器传送给接收器的数据数量没有限制。每个位字节后加一个标志位,传送器产生高电平的标志位,这时主设备产生一个附加标志时钟脉冲。从接收器必须在接收到每个字节后产生一个标志位,主接收器也必须在接收从传送器传送的每个字节后产生一个标志位。在标志位时钟脉冲出现时,SDA 线应保持低电平(应考虑起动和保持时间)。传送器应在从设备接收最后一个字节时变为低电平,使接收器产生标志位,这时主设备可产生停止条件。IC总线协议用IC 总线传递数据前,接收的设备应先标明地址,在IC 总线起动后,这个地址与第一个传送字节一起被传送。PCF8563 可以作为一个从接收器或从传送器,这时时钟信号线SCL 只能是输入信号线,数据信号线SDA 是一条双向信号线。图3-11 器件地址前7位代表器件地址,最后一位代表是读还是写。写格式图3-12 写格式读格式图3-13 读格式第4章、软件的设计软件设计分为:动态扫描、键盘扫描、时钟芯片读写子程序、BCD加减补偿子程序、主程序。主程序初始化后,就开始对PCF8563读取时间,并送去进行显示。4.1 主程序流程图否是初始化判断flag= 0读芯片时间显示开始图4-1 主程序流程图4.2 时间日期调整流程图K1有效进入年调整等待按键K2有效K3有效年加1年减1K1有效进入月调整等待按键K2有效K3有效月加1月减1K1有效进入日调整等待按键K2有效K3有效日加1日减1开始K1有效进入分调整等待按键K2有效K3有效分加1分减1K1有效进入时调整等待按键K2有效K3有效时加1时减1K1有效,跳出调整程序图4-2 按键流程图4.3 IC读写子程序:#define uchar unsigned charsbit sda=P11;sbit scl=P10;uchar a;void delay1() /延时 ; void start() /开始信号sda=1;delay1();scl=1;delay1();sda=0;delay1();void stop() /停止sda=0;delay1();scl=1;delay1();sda=1;delay1();void respons() /应答uchar i;scl=1;delay1();while(sda=1)&(i100)i+;scl=0;delay1();void init1() / 初始化sda=1;delay1();scl=1;delay1();void write_byte(uchar date) /写一个字节uchar i,temp;temp=date;for(i=0;i8;i+)temp=temp1;scl=0; delay1();sda=CY;delay1();scl=1;delay1();scl=0;delay1();sda=1;delay1();uchar read_byte() /读一个字节uchar i,k;scl=0;delay1();sda=1;delay1();for(i=0;i8;i+)scl=1;delay1();k=(k1)|sda;scl=0;delay1();return k;void write_add(uchar address,uchar date) / 读某地址内的数据start();write_byte(0xa2);respons();write_byte(address);respons();write_byte(date);respons();stop();uchar read_add(uchar address) / 向某地址内写数据uchar date;start();write_byte(0xa2);respons();write_byte(address);respons();start();write_byte(0xa3);respons();date=read_byte();stop();return date;4.4 键盘扫描子程序void key()if (k1=0)判断K1是否按下delay(10);if (k1=0)kk+;flag=1;while(!k1)用flag记录K1按下的次数display();if (kk=1)flag=2;if (kk=2)flag=3;if(kk=3) flag=4; if (kk=4) flag=5;if (kk=5) flag=6;第六次清零if (kk=6)kk=0;flag=0; 当KK=1时候按下K2加分,按下K3减分if (kk=1) /调分if (k2=0)delay(5);if(k2=0) /加分while(!k2)display();fen=bcd(fen)+1;if (fen=0x60)fen=0;zh();display(); if(k3=0)/减分while(!k3)display();fen=bcdj(fen)-1;if (fen0)fen=0x59;zh();display();调整过后写入芯片write_add(0x03,fen);if (kk=2) /调时if (k2=0)delay(5);if(k2=0)/加时while(!k2)display();shi=bcd(shi)+1;if (shi=0x24)shi=0;zh();display(); if(k3=0) /减时delay(5);if(k3=0)while(!k3)display();shi=bcdj(shi)-1;if (shi0x99)nian=0x01;zh1();display(); if(k3=0) /减 年 delay(5);if(k3=0)while(!k3)display();nian=bcdj(nian)-1;if (nian=0x00)nian=0x99;zh1();display(); write_add(0x08,nian);if (kk=4) /调月if (k2=0)delay(5);if(k2=0)/加月while(!k2)display();yue=bcd(yue)+1;if (yue=0x13)yue=0x01;zh1();display(); if(k3=0) /减月delay(5);if(k3=0)while(!k3)display();yue=bcdj(yue)-1;if (yue=0x00)yue=0x12;zh1();display();write_add(0x07,yue);if (kk=5) /调 日 if (k2=0)delay(5);if(k2=0)/加 日 while(!k2)display();ri=bcd(ri)+1;if (ri=0x32)ri=0x01;zh1();display(); if(k3=0) /减 日 delay(5);if(k3=0)while(!k3)display();ri=bcdj(ri)-1;if (ri=0x00)ri=0x31;zh1();display();write_add(0x05,ri);4.5 BCD加减主程序#define uchar unsigned char向高一位有进位时(即结果大于或等于9),该位进行加6修正.uchar bcd (uchar bcd)uchar bcd1,bcd0,b;bcd1=bcd/16;bcd0=bcd%16;if (bcd0=9 &bcd016)b=bcd+6;else b=bcd;return b;有借位时,可采用减6修正法来修正uchar bcdj (uchar bcdj)uchar bcdj1,bcdj0,d;bcdj1=bcdj/16;bcdj0=bcdj%16;if (bcdj0=0 )d=bcdj-6;else d=bcdj;return d;4.6 主程序#include #include #include #define uint unsigned int#define uchar unsigned charsbit k1=P12;sbit k2=P13;sbit k3=P14;uchar s1,s0,f1,f0,m1,m0,temp,kk,nian,yue,ri,n1,n2,n3,n4,y1,y0,r1,r0,flag;char miao ,fen ,shi;数码管的数据表uchar code table =0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0,0xf7;void delay(uint);void zh();void zh1();void key();void init () /初始化函数sda=1;delay1();scl=1;delay1();void display() /显示函数uchar a;P2=0xf0;P0=table2;delay(1);P2=0xf1;P0=table0;delay(1);if (flag=4) a+;if (a=5)a=0;P2=0xf2;P0=tablen3;delay(1);P2=0xf3;P0=tablen4;delay(1); else P2=0xf2;P0=tablen3;delay(1);P2=0xf3;P0=tablen4;delay(1); if (flag=5)闪烁显示 a+;if (a=5)a=0;P2=0xf9;P0=tabley1;delay(1);P2=0xfa;P0=tabley0;delay(1);不闪烁显示 else P2=0xf9;P0=tabley1;delay(1);P2=0xfa;P0=tabley0;delay(1); if (flag=6) a+;if (a=5)a=0;P2=0xff;P0=tabler1;delay(1);P2=0xf8;P0=tabler0;delay(1); else P2=0xff;P0=tabler1;delay(1);P2=0xf8;P0=tabler0;delay(1); if (flag=3) a+;if (a=5)a=0;P2=0xf6;P0=tables1;delay(1);P2=0xf4;P0=tables0;delay(1); else P2=0xf6;P0=tables1;delay(1);P2=0xf4;P0=tables0;delay(1); P2=0xf5;P0=table10;delay(1);if (flag=2) a+;if (a=5)a=0;P2=0xf7;P0=tablef1;delay(1);P2=0xfe;P0=tablef0;delay(1); else P2=0xf7;P0=tablef1;delay(1);P2=0xfe;P0=tablef0;delay(1); P2=0xfd;P0=table10;delay(1);P2=0xfc;P0=tablem1;delay(1);P2=0xfb;P0=tablem0;delay(1);读取芯片的时间日期并屏蔽无效位void main () /主函数init();while (1)if (flag=0)miao=read_add(0x02)&0x7f; /读取秒并屏蔽无效位fen=read_add(0x03)&0x7f; /读取分并屏蔽无效位shi=read_add(0x04)&0x3f; /读取时并屏蔽无效位ri=read_add(0x05)&0x3f; /读取日并屏蔽无效位yue=read_add(0x07)&0x1f; /读取月并屏蔽无效位nian=read_add(0x08)&0xff; /读取年并屏蔽无效位zh();zh1();dis

温馨提示

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

评论

0/150

提交评论