实时日历时钟显示系统2_第1页
实时日历时钟显示系统2_第2页
实时日历时钟显示系统2_第3页
实时日历时钟显示系统2_第4页
实时日历时钟显示系统2_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉理工大学华夏学院信息工程课程设计报告书课 程 名 称 智能仪器设计基础 课程设计总评成绩 学生姓名、学 号 学 生 专 业 班级 指 导 教 师 姓名 课程设计起止日期 2012.6.112012-6-22 课程设计基本要求课程设计是工科学生十分重要的实践教学环节,通过课程设计,培养学生综合运用先修课程的理论知识和专业技能,解决工程领域某一方面实际问题的能力。课程设计报告是科学论文写作的基础,不仅可以培养和训练学生的逻辑归纳能力、综合分析能力和文字表达能力,也是规范课程设计教学要求、反映课程设计教学水平的重要依据。为了加强课程设计教学管理,提高课程设计教学质量,特拟定如下基本要求。1. 课

2、程设计教学一般可分为设计项目的选题、项目设计方案论证、项目设计结果分析、答辩等4个环节,每个环节都应有一定的考核要求和考核成绩。2. 课程设计项目的选题要符合本课程设计教学大纲的要求,该项目应能突出学生实践能力、设计能力和创新能力的培养;该项目有一定的实用性,且学生通过努力在规定的时间内是可以完成的。课程设计项目名称、目的及技术要求记录于课程设计报告书一、二项中,课程设计项目的选题考核成绩占10%左右。3. 项目设计方案论证主要包括可行性设计方案论证、从可行性方案中确定最佳方案,实施最佳方案的软件程序、硬件电路原理图和PCB图。项目设计方案论证内容记录于课程设计报告书第三项中,项目设计方案论证

3、主要考核设计方案的正确性、可行性和创新性,考核成绩占30%左右。4. 项目设计结果分析主要包括项目设计与制作结果的工艺水平,项目测试性能指标的正确性和完整性,项目测试中出现故障或错误原因的分析和处理方法。项目设计结果分析记录于课程设计报告书第四项中,考核成绩占25%左右。5. 学生在课程设计过程中应认真阅读与本课程设计项目相关的文献,培养自己的阅读兴趣和习惯,借以启发自己的思维,提高综合分和理解能力。文献阅读摘要记录于课程设计报告书第五项中,考核成绩占10%左右。6. 答辩是课程设计中十分重要的环节,由课程设计指导教师向答辩学生提出23个问题,通过答辩可进一步了解学生对课程设计中理论知识和实际

4、技能掌握的程度,以及对问题的理解、分析和判断能力。答辩考核成绩占25%左右。7.学生应在课程设计周内认真参加项目设计的各个环节,按时完成课程设计报告书交给课程设计指导教师评阅。课程设计指导教师应认真指导学生课程设计全过程,认真评阅学生的每一份课程设计报告,给出课程设计综合评阅意见和每一个环节的评分成绩(百分制),最后将百分制评分成绩转换为五级分制(优秀、良好、中等、及格、不及格)总评成绩。8. 课程设计报告书是实践教学水平评估的重要资料,应按课程、班级集成存档交实验室统一管理。课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题目: 实时日历时钟显示系统 初始条件:利用实验室可以提

5、供的设备平台、仪器仪表、常见芯片,设计实时日历时钟显示系统。要求完成的主要任务:1在 51 单片机系统中设置、获取、记录实时的日历时钟信息并通过 LED 显示或 LCD 显示。 2. 能够进行长时间的记录,并且存储的时间信息在掉电情况下能长期保存。3. 初始的时间信息要求用户用键盘输入或通过 PC 机和单片机的串口通信来设置。4. 利用已有设备进行安装调试 。以上内容为基本要求,可按照自己的理解增加功能使之更完善。课程设计说明书应严格按统一格式打印,资料齐全,坚决杜绝抄袭,雷同现象。应画出单元电路图和整体电路原理图,给出系统参数计算过程,图纸、元器件符号及文字符号符合国家标准。时间安排:整个课

6、程设计时间为2周。具体进度安排如下:学时分配进度安排2天总体方案设计与论证2天系统硬件电路设计与仿真2天系统软件设计与仿真3天安装调试1天完成课程设计报告书、答辩指导老师签字: 年 月 日3一、课程设计项目名称实时日历时钟显示系统二、项目设计目的及技术要求1在 51 单片机系统中设置、获取、记录实时的日历时钟信息并通过 LED 显示或 LCD 显示。 2. 能够进行长时间的记录,并且存储的时间信息在掉电情况下能长期保存。3. 初始的时间信息要求用户用键盘输入或通过 PC 机和单片机的串口通信来设置。4. 利用已有设备进行安装调试。三、项目设计方案论证(可行性方案、最佳方案、软件程序、硬件电路原

7、理图和PCB图)1.可行性方案1.1单片机芯片的选择方案和论证方案一:采用FPGA(现场可编程门阵列)实现日历时钟系统,它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA的使用非常灵活,同一片FPGA通过不同的编程数据可以产生不同的电路功能。 方案二:主控器模块采用的是ATMEL公司的8位系列最高配置的Atmega128单片机,高性能,低功耗,具有128KB的系统内可编程Flash、4KB的EEPROM、4KB的内部SRAM,并集成内部8路高速10位ADC,能过满足本次设计的要求。方案三:采用AT89S52

8、,片内ROM全都采用Flash ROM:能以3V超低压工作;同时也与MCS-51系列单片机完全兼容,该芯片内部存储器为8KB ROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片的多次拔插,所以不会对芯片造成一定的损坏。基于实验室设备及课程所学我们选择方案三1.2显示模块选择方案和论证方案一:采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED 液晶显示屏。方案二:采用点阵式数码管显示,点阵式数码管是

9、由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。方案三:采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。所以采用了LED数码管作为显示。1.3时钟芯片的选择方案和论证方案一:直接采用单片机定时计数器提供秒信号,使用程序实现时,分,秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒,分,时,日,周,月,年以及闰年补偿的

10、年进行计数,而且精度高,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA。方案三:采用达拉斯公司的日历时钟芯片DS12C887作为实时时钟芯片,DS12C887能够自动产生世纪、年、月、日、时、分、秒等时间信息,而且自带有锂电池,外部掉电时,其内部时间信息还能够保持10年之久;对于一天内的时间记录,有12小时制和24小时制两种模式。在12小时制模式中,用AM和PM区分上午和下午。所以采用掉电可长时间保存的DS12C887时钟芯片。1.4电路设计最佳方案确定综上各方案所述,对此次课程设计的方案选定:以单片机AT89S52为主控制器,时间数据是通过时钟芯片DS12C887来读取,并通过

11、LED 数码管显示出来,并用键盘来完成对当前时间的调整。2.硬件电路设计本设计的硬件电路设计主要是围绕日历时钟芯片DS12C887的使用进行的。2.1电路设计框图本设计的硬件电路包括单片机电路、日历时钟芯片电路和数码管显示输出电路,其结构框图如图1所示。图1系统硬件结构框图2.2电路原理图及说明2.2.1控制电路图2所示为本设计的单片机部分的电路原理图图2实时日历时钟显示系统单片机部分电路原理图上图是AT89C52单片机的最小系统,包括晶振电路,复位电路,确保系统的控制部分。P0端口用作地址/数据复用总线AD07,和日历时钟芯片相连。P1端口用作数码管的段码接口,由于本设计的显示不会出现小数点

12、,因此只使用了a、b、c、d、e、f、g,而没有使用dp(小数点)段。P2端口的P2.1P2.4作为数码管的位码接口,它们需要通过4-16译码电路以及驱动电路来控制13位数码管的位码选择。P2端口的P2.0在反相之后为日历时钟芯片提供片选信号,需要反相是因为该片选信号为低电平有效。单片机的P3.7(/RD)、P3.6(/WR)引脚和日历时钟芯片的读、写引脚直接相连,它们均为低电平有效。2.2.2日历时钟电路图3为日历时钟芯片部分的电路图图3实时日历时钟显示系统片选及日历时钟芯片部分电路原理图图3中,U2为6反相器74LS04,它将单片机的P2.0反相之后送至DS12C887的片选引脚。U3为日

13、历时钟芯片DS12C887,在本设计中,将其MOT引脚接地,选择Intel总线时序模式。在以Intel总线时序模式工作时,它和51单片机的接口完全兼容,因此将它的地址/数据复用线AD0AD7、锁存输入ALE、读输入DS、写输入和51单片机的对应引脚直接相连。DS12C887的方波输出SQW和中断申请/IRQ在本设计中不使用。2.2.3显示电路图4为显示电路的电路图,采用了LED驱动芯片MAX7219。使用两片MAX7219,实现16为数码管显示。因为本设计要实现显示年(4位数字)、月(2位数字)、日(2位数字)、星期(1位数字)、小时(2位数字)、分钟(2位数字),总共需要13位数码管,而一片

14、MAX7219最多只能支持8位数码管的显示,所以,我们需要单片机分别连接两片MAX7219来实现13位数码管显示。图4显示电路电路图3.软件设计 软件设计分两部分:时钟部分以及显示部分。3.1程序流程图 程序流程图如图5所示图5系统程序流程图3.2基于DS12C887的实时日历时钟显示系统程序#include <reg52.h>#include <absacc.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define NoOp 0x00 / 空操作寄存器

15、#define Digit0 0x01 / 数码管1寄存器#define Digit1 0x02 / 数码管2寄存器#define Digit2 0x03 / 数码管3寄存器#define Digit3 0x04 / 数码管4寄存器#define Digit4 0x05 / 数码管5寄存器#define Digit5 0x06 / 数码管6寄存器#define Digit6 0x07 / 数码管7寄存器#define Digit7 0x08 / 数码管8寄存器#define DecodeMode 0x09 / 译码模式寄存器#define Intensity 0x0a / 亮度寄存器#defi

16、ne ScanLimit 0x0b / 扫描位数寄存器#define ShutDown 0x0c / 低功耗模式寄存器#define DisplayTest 0x0f / 显示测试寄存器#define ShutdownMode 0x00 / 低功耗方式#define NormalOperation 0x01 / 正常操作方式#define ScanDigit 0x07 / 扫描位数设置,显示8位数码管#define DecodeDigit 0xff / 译码设置,8位均为BCD码#define IntensityGrade 0x0a / 亮度级别设置#define TestMode 0x01

17、/ 显示测试模式#define TextEnd 0x00 / 显示测试结束,恢复正常工作模式/* DS12C887 内部专用寄存器宏定义 */#define MIN XBYTE0x0102#define HOUR XBYTE0x0104#define DAYOFWEEK XBYTE0x0106#define DAYOFMONTH XBYTE0x0107#define MONTH XBYTE0x0108#define YEAR XBYTE0x0109#define REG_A XBYTE0x010a#define REG_B XBYTE0x010bsbit DIN = P10; / 串行数据输入

18、sbit CLK = P11;/ 串行时钟sbit LOAD1 = P12;/ 显示数据锁存控制sbit LOAD2 = P13;uchar DisBuffer8=0,0,0,0,0,0,0,0; / 显示缓存uchar year1=10,month1=6,dayofweek1=5,dayofmonth1=10,hour1=22,min1=17;/* 芯片DS12C887提供的日历时钟信息变量 */uchar year2,month2,dayofweek2,dayofmonth2,hour2,min2;void delay(uint z)uint j,k;for(j=z;j>0;j-)f

19、or(k=110;k>0;k-);/* 向MAX7219写入字节(8位)*/void SendChar (uchar ch)uchar i,temp; _nop_(); for (i=0;i<8;i+) temp=ch&0x80; ch=ch<<1; if(temp) DIN=1; CLK=0; CLK=1; else DIN=0; CLK=0; CLK=1; /* 向MAX7219写入字(16位)*/void WriteWord (uchar addr,uchar num,int p) if(p=1) LOAD1=0; _nop_(); SendChar(ad

20、dr); _nop_(); SendChar(num); _nop_(); LOAD1=1;/ 锁存进相应寄存器else if(p=2) LOAD2=0; _nop_(); SendChar(addr); _nop_(); SendChar(num); _nop_(); LOAD2=1;/ 锁存进相应寄存器 /* MAX7219初始化 */void InitDisplay (void) WriteWord (ScanLimit,ScanDigit,1); / 设置扫描界限 WriteWord (DecodeMode,DecodeDigit,1); / 设置译码模式 WriteWord (Int

21、ensity,IntensityGrade,1); / 设置亮度 WriteWord (ShutDown,NormalOperation,1); / 设置为正常工作模式WriteWord (ScanLimit,ScanDigit,2); / 设置扫描界限 WriteWord (DecodeMode,DecodeDigit,2); / 设置译码模式 WriteWord (Intensity,IntensityGrade,2); / 设置亮度 WriteWord (ShutDown,NormalOperation,2); / 设置为正常工作模式/* 设置日历和时钟函数 */void settime

22、()REG_B = REG_B|0x80;/ SET=1,芯片DS12C887处于设置状态MIN = min1;HOUR = hour1;DAYOFWEEK = dayofweek1;DAYOFMONTH = dayofmonth1;MONTH = month1;YEAR = year1;REG_B = REG_B&0x7f; / SET=0,芯片DS12C887恢复正常数据更新状态/* 获取日历时钟函数 */void gettime()while (REG_A&0x80=0x00)/ 直到UIP=0时,才能读取日历时钟信息min2 = MIN ;hour2 = HOUR;da

23、yofweek2 = DAYOFWEEK;dayofmonth2 = DAYOFMONTH; month2 = MONTH;year2 = YEAR;/* 13位数码管显示年、月、日、星期、时、分 */void display()WriteWord (Digit0,0,1); WriteWord (Digit1,0,1); WriteWord (Digit2,0,1); WriteWord (Digit3,2,1); WriteWord (Digit4,0,1); WriteWord (Digit5,year2/10,1); WriteWord (Digit6,year2%10,1); Wri

24、teWord (Digit7,month2/10,1);WriteWord (Digit0,month2%10,2); WriteWord (Digit1,dayofmonth2/10,2); WriteWord (Digit2,dayofmonth2%10,2); WriteWord (Digit3,dayofweek2,2); WriteWord (Digit4,hour2/10,2); WriteWord (Digit5,hour2%10,2); WriteWord (Digit6,min2/10,2); WriteWord (Digit7,min2%2,2);void main(voi

25、d)InitDisplay(); / MAX7219初始化 WriteWord(DisplayTest,TestMode,1);/ 开始显示测试,点亮所有LED delay(3000); / 延时约3s WriteWord (DisplayTest,TextEnd,1);/ 退出显示测试模式WriteWord(DisplayTest,TestMode,2);/ 开始显示测试,点亮所有LED delay(3000); / 延时约3s WriteWord (DisplayTest,TextEnd,2);/ 退出显示测试模式/* 设置DV2、DV1、DV0为010,打开芯片DS12C887内部晶振

26、*/REG_A = REG_A&0xaf;/ DV2=DV0=0REG_A = REG_A|0x20;/ DV1=1REG_B = REG_B&0x7b;/ SET=0,时间数据正常更新;DM=0,二进制数据模式REG_B = REG_B|0x02;/ 寄存器B的24/12位置1,24小时时间模式while (1)settime(); /* 调用设置日历时钟函数 */gettime(); /* 调用获取日历时钟函数 */display(); /* 13位数码管显示日历、星期和时间信息 */四、项目设计结果分析(分析试验过程中获得的数据、波形、现象或问题的正确性和必然性,分析产生

27、不正确结果的原因和处理方法)实验结果:当上电后,系统显示提示符P。按下k1后,系统开始正常运行, 此时按其它键均无效当再按下k1后,进入调秒状态,按k2加1,按k3减1,再按一下k1进入调分状态,再按一下,进入调时,再按一下,进入正常的运行状态在调整状态下,当调整该位时,该位会闪烁。较好地完成了设置、获取、记录实时的日历时钟信息并通过 LED 显示或 LCD 显示。掉电后DS1302会转用后备电池供电,在次上电后,时钟显示为当前时间。证明了能够进行长时间的记录,并且存储的时间信息在掉电情况下能长期保存。实验结论:硬件设计中对于单片机最终选择了AT89C51,它是一种带4K字节闪存可编程可擦除只

28、读存储器的低电压,高性能CMOS8位微处理器。单片机是很容易受干扰的控制器,当采用外部晶振时,应尽量让其靠近单片机减少对其干扰,防止程序乱飞现象。同时还可以采用隔离等方式减少干扰。软件设计中要完成键值处理,定时中断,延时,键盘扫描,显示等功能。软件设计是核心部分,具有多样化,灵活性高,易移植等优点,要深深理会各指令的含义才能更加熟练应用,中断的合理利用可以减少CPU利用资源,具有执行效率高等优点,本设计用到定时器中断以减少对CPU的占用,更好的处理其他功能。软件的设计大部分采用模块化设计的方法以方便调试,并使其可读性大大增强,方便更改和移植。 在这次课程设计中,我熟悉了芯片的结构及掌握了各芯片

29、的工作原理和其具体的使用方法。我也发现了一些不足之处,在电路设计中,先仿真后连接实物图,但有时仿真和电路连接是不完全一致的 ,在实际电路的连接图中出错的原因都是界限和芯片的接触不良以及接线错误引起的,因此要学会区分仿真和电路连接图间的区别。 在此次课程设计中,我学会了独立思考并解决问题以及及时向同学求教不懂之处。我认识到了知识要灵活运用的重要性以及要将知识与实际相结合的道理。五、参考文摘(相关文摘不少于5篇,记录每篇文献的作者姓名.文献名称.文献发行城市:文献出版社,出版年;文献内容摘要, 每篇不少于100字)【1】李群芳,张士军,黄建.单片微型计算机与接口技术(第三版).北京:电子工业出版社.2008.摘要:从硬件连接方式看,键盘通常可分为独立式键盘和矩阵式键盘两类。所谓独立式键盘是指各按键相互独立,每个按键分别于单片机的I/O口或外扩I/O芯片的一根输入线项链,通常每根输入线上按键的工作状态不会影响其他输入线的工作状态。通过检测输入线的电平就可很容易判断哪个按键被按下。独立式键盘电路配置灵活,软件简单,但在按键数较多时,会占用大量的输入口线。【2】史建芳.智能仪器设计基础.北京:电子工业出版社,2007.摘要:静态显示方式是指显示器显示某一字符时,相应段的发光二极管恒定导通或截止使显示字符的字段连

温馨提示

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

评论

0/150

提交评论