单片机实训报告-基于51单片机的数字万年历设计_第1页
单片机实训报告-基于51单片机的数字万年历设计_第2页
单片机实训报告-基于51单片机的数字万年历设计_第3页
单片机实训报告-基于51单片机的数字万年历设计_第4页
单片机实训报告-基于51单片机的数字万年历设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

《单片机应用实训》课程设计报告姓名: 班级: 指导老师:实习时间: 基于51单片机的数字万年历设计摘要:利用单片机、DS1302芯片、DS18B20芯片搭建一个数字万年历模块,编写程序,实现了年、月、日、时、分、秒计数,温度测量、时钟报警等功能。关键词:STC89C51数字时钟实训目的电子时间显示器现在在任何地方都有涉及到,例如电子表和商场的时间显示等等,所以它是一种既方便又实用的技术,而我们所做的万年历则是在它的基础上做出来的,通过万年历的制作,我们可以进一步了解计数器的使用,了解各个进制之间的转换,以及其他的任意进制计数器的构成方法等,并且进一步了解DS1302芯片、DS18B20芯片的使用等。二、总体设计方案DS1302时钟模块DS1302时钟模块单片机最小系统DS18B20温度传感模块1602液晶显示模块按键模块三、硬件设计1、单片机最小系统STC89C52为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接晶振电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。第9引脚为复位输入端,接上电容,电阻及开关后够成上电复位电路,20引脚为接地端,40引脚为电源端。时钟振荡电路用于产生单片机正常工作时所需要的时钟信号,电路由两个22pF的瓷片电容和一个12MHz的晶振组成,并接入到单片机的XTAL1和XTAL2引脚处使单片机工作于内部振荡模式。此电路在加电后延迟大约10ms振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率决定。时钟振荡电路如下图所示。复位电路由电阻和极性电容组成,如下图所示,通过高电平使单片机复位,在时钟电路开始工作后,当高电平的时间超过大约2us时,即可实现复位。此复位电路同时具备了上电复位和手动复位的功能,上电复位发生在开机加电时,由系统自动完成,手动复位通过一个按键来实现,在程序运行时,若遇到死机、死循环或程序“跑飞”等情况,通过手动复位就可以实现重新启动的操作。手动按钮复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源VCC之间接一个按钮以及在RST端和地之间接一个电阻,如图所示,当人为按下按钮时,则VCC的+5V电平就会直接加到RST端,由于人的动作再快也会使按钮保持接通达数十毫秒,所以完全能够满足复位的时间要求。元件列表:22pf瓷片电容2个12mhz晶振1个复位开关1个22uf电解电容1个1k电阻一个2时钟模块时钟功能由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒进行计时,且具有闰年补偿等多种功能,工作电压2.2-2.5V。采用三线接口与cpu进行同步通信,并可采用突发方式以此传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、时、分、秒,具有使用寿命车长,精度高和功耗低等特点,同时具有掉电自动保存功能。3显示模块显示部分由1602液晶显示器构成。液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。该设计中采用此显示器分两行显示年、月、日、时、分、秒、温度信息等。显示。3脚用于调节LCD1602的背光,4、5、6为LCD1602的控制口,用于控制其写入或是读出指令,7至14脚为LCD1602的数据口,将数传送到LCD1602中。4按键模块按键模块采用普通触发式按键。按键电路由4个轻触开关组成。按键用来调整时间,其一端直接接到单片机的端口,另一端接地,当按下按键时,相应的端口变为低电平,通过检测这一低电平就可以判断是哪个键按下,从而作相应的操作。5温度模块温度的采集由DS18B20构成。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢,封装式。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。6电源模块由于整个电路工作在开发板上,所以设计采用usb供电,简单方便。整个电路采用5V直流电压,在DS1302时钟芯片上还另外加上了3V的电压,采用双供电可以使时钟芯片工作更稳定。下面是硬件电路的PCB设计图,这是我们第一次画的PCB图,由于和硬件开发板不兼容,所以不得不改进设计图。在此得到教育:软件的设计依托于硬件而存在,就像灵魂的火花依托于肉体而存在一样,两者缺一不可,所以在以后的电路设计中,一定要考虑好硬件的准备。改进后的PCB图其实只是把一些元件的接口调了一下位置,去掉了一些不需要的元件。7硬件的整体设计思想采用16X2的lcd来显示年、月、日、星期、小时、分钟、秒、温度,并且可以任意设定时间。系统设定详细说明。系统的初始状态为显示时钟状态,显示此时的年、月、日、星期、小时、分钟、秒、温度。初始状态下,按SM键进入时间调整模式,这时秒位闪烁,系统进入秒调整状态;按下“加1”或“减1”键来修改秒;按下“设置/添加”键系统进入分调整状态,按下“加1”或“减1”来修改分;按“设置/添加”键进入“年、月、日、星期、小时、分、秒、闹钟”调整等。按OUT键立刻跳出调整模式。系统电路如图所示,单片机由p2端口输入指令,通过p0端口输出显示信息,外接温度传感器和显示控制芯片,省去了用数码管显示器的一些繁琐步骤。四、软件设计主程序首先初始化定时器、LCD1602及DS1302,然后就开始查询按键,有键按下则开始调整时间和设置闹钟,若没有按下,则执行下面的时间、日期及闹钟时间的显示,最后依次循环这些相同的操作,相应流程图如下图所示开始开始系统初始化系统初始化否正常工作否正常工作模式?是是正常走时闹钟控制正常走时闹钟控制校正时间首先,默认显示器由DS1302芯片控制,程序初始化之后,在主程序中首先调用数据处理程序,然后再调用显示程序,再判断是否有按键按下,若有按键按下则转到相应的功能程序执行,若没有按键按下则调用闹钟程序以判断是否到了闹钟时间,若没有到则循环执行,调时程序用于调整“年、月、日、星期、小时、分钟、秒、闹钟”;闹钟程序首先判断闹钟时间是否来到,若到了则进入闹钟的循环程序,此时的系统等待手动解除闹钟,若没闹钟时间则退出到主程序循环。时间设定程序流程图DS1302初始化开始DS1302初始化开始从DS1302中读出数据从DS1302中读出数据调用显示子程序调用显示子程序LCD模块显示时间LCD模块显示时间

mo时间设置时间设置数据写回DS1302保存数据写回DS1302保存返回主显单返回主显单在主程序中包含了以下几种模块:1显示模块一些基层程序已经由DS1302芯片提供,本设计中只要负责把DS1302芯片中的数据经过转换从LCD中显示出来即可。2按键模块触发式按键相当于一小段脉冲,每按下一次便有一小段脉冲传输到单片机中,按键另一端接地,故采用低电压脉冲,当单片机接收到来自按键接口的低电压脉冲时,便会做出相应指令。3温度模块温度测量模块中,数据采集工具采用DS18B20,采集的实时数据经过单片机处理后会通过显示器显示出来。4闹钟模块闹钟模块中,加入了一个蜂鸣器,当闹钟时间到后,单片机会通过此接口给蜂鸣器一个电压,使其导通,五、仿真及调试结果在调试中出现了很多问题,第一次是proteus仿真一直不能打开,后来找到原因,是因为联调步骤有错误,重新联调之后就能仿真了,但是在仿真中又发现可以仿真,但是显示器没有显示东西,经过分析发现是程序和电路不符合的原因,改过程序之后第三次运行,发现还是有问题,就是不显示温度,只有时间显示,温度显示处是空白的,后来仔细研究发现是LCD的问题,换了一个还是不行,最后还是修改了一下程序就好了。最后的硬件调试中还是出现了很多问题,比如显示器不亮、蜂鸣器一直响等。分析原因:1、可能是程序错误;2、可能是板子上的电路老化出现问题;3、可能是单片机出现了问题;4、可能是电路图和实际的开发板图不一样;5、可能是显示器或蜂鸣器有问题。经过一一排查,最后终于成功,下面是照片六、实训体会xx:几天的实训终于落下帷幕了,但通过这次实训,也遇到了许多问题。本次实训主要是数字钟的显示,虽然成功了,但由于自身的能力问题,并没有实现闹钟和报警的功能,暴露出我们对C语言的掌握还有一定的欠缺。由于对protel掌握的还不熟练,经常出错,有的元件也找不到,所以画原理图的时候耽误了点儿时间。开始的时候虽然有一个明确的方向,但也是屡屡碰壁。实验被分为显示模块、时钟模块、温度模块和按键模块,但在给这些模块搭配合适的程序的时候,遇到了麻烦,不得不到处查资料,但还是碰到了麻烦。如果不是指导老师给出了一个参考模板,其实就是完整的程序,我们估计得天天呆在机房了。所以这次实训只是勉强的通过了。但通过这次实训,锻炼了设计、制作和调试应用系统的能力,深入领会了单片机应用系统的软、硬件调试方法和系统的研制开发。xx:通过这次实训,我认识到了自己在单片机设计方面的很多不足,首先,是关于protel关于软件的使用中元件名称不够熟悉,对keil和proteus联调不够熟悉,对单片机程序的编写掌握的知识太少,缺乏一些实际单片机项目的练习,我们应该在以后的学习中,重点培养自己对实际项目的设计能力,和面对对象的分析能力。面对一个问题,要有自己的主见,要有自己的方法,要学会自己独立编写程序,设计电路,解决问题。我们对基础知识的掌握不够牢固,C语言的基础知识不够好,所以,在以后的学习生活中,我要努力学习基础知识,只有基础知识掌握牢固,才能在新的问题中,发挥自己的创造力,才能解决困难。在这次实训中我对单片机的理论知识有了进一步的掌握,对单片机的原理和实际应用有了更多地理解和掌握。我对单片机的C语言编程有了更深刻的认识,通过不断修改,不断尝试,对程序各个模块的函数都有了一个非常深入的掌握。在收获知识的同时,还培养了独立思考、动手制作的能力,在各种其它能力上也都有了提高。更重要的是,在课程设计里,我学会了很多学习的方法,而这是以后最实用的,真的是受益匪浅。xx:通过这次实训,我更清楚地看到了自己的能力,还需要很大的提高。尤其是在C语言方面,还需要进一步的学习和了解。当我们完成了时间和温度的显示仿真后,想在原来的基础上增加闹钟功能,程序成了我们最大的绊脚石,对我们来说有一定的难度,而且参

温馨提示

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

评论

0/150

提交评论