电子钟实验讲解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理(单片机)课程设计总结报告

项目名称:电子钟

一、设计任务电子钟

上位机:完成界面设计与通讯程序(1)能够显示当前时间 3个闹钟时间、复位(2)能够设置时间、至少)能够调用已有的曲子作为闹铃(3 (4)可以对串口进行设置下位机:完成电路设计与控制程序显示当前时间和最近一次闹钟时间LCD)1(.

(2)按键进行时间调整,按键1控制小时,按键2控制分钟,按键3控制秒,按键4时间调整和闹钟设置切换,按键5复位

(3)能够播放上位机下传的曲子

(4)通过串口与上位机通讯

二、总体方案:

电子钟总体框图如图1所示。

图1 电子钟总体功能模块图

图中,控制器采用单片机89C52,通过编程来控制系统整体的设置和运行;按键扫描模块利用单片机本身的6个按键中的前5个,通过编写程序来实现任务设计中的按键要求;闹钟模块则通过改变蜂鸣器高低电平状态持续时间的长短来实现不同的响铃;输入输出模块则配合按键扫描模块来对电子钟时钟和闹钟进行初始的时间设定及修改;上位机模块则通过串口实现上下位机之间的通信。

三、硬件设计:

首先,为了完成本次设计任务,我们需要认识89C52的组成结构。它是INTEL公司MCS-51系列单片机中基本的产品,采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。89C52内置8位中央处理单元、512字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系数据,时钟振荡停止,同时停止芯片内其它功能。RAM统维持其功能。掉电模式下,保存.

其次,为了显示时钟和闹钟,需要了解LCD1602的工作原理。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。1602LCD 是指显示的内容为16*2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

最后,作为单片机的常识,我们应该了解单片机的最小系统。单片机的最小系统是指单片机能正常工作所必须的基本电路,主要有单片机、复位电路、晶振电路构成,如果采用的是不带内部ROM的单片机,还需要有外部ROM扩展电路。

四、软件设计:

下位机:

主函数里首先进行LCD和串口初始化,然后进入while(1)循环中不断扫描单片机上前5个按键的状态,如果有发生变化则进行相应的操作,主体流程图如下:

在系统按照上述流程图运行的同时,串口中断一直被屏蔽,当有数据要通过串口从上位机向下位机发送时,串口中断开始工作,修改当前LCD显示的时钟和闹钟并在复位键按下后使电子钟按照新的时钟开始计时。

上位机:

按下图流程图进行串口读的工作,并将读到的数据进行显示,在串口读的过程中,为了用来保每一组数据都设定了头校验和尾校验,防止数据的丢失以及数据的显示顺序等问题,

证接受到的每一组数据都是以时、分、秒的顺序传送的,这样就可以将时、分、秒分别显示的相应的区域,而且不会发生错乱。

按下图流程图进行串口写的工作,并将数据传送给单片机。

项目所实现的功能、指标:五、下位机:

(1)LCD显示当前时间

(2)按键进行时间调整,按键1控制小时,按键2控制分钟,按键3控制秒,按键4时间调整和闹钟设置切换,按键5复位

(3)通过串口与上位机通讯

上位机:

(1)显示当前时间

(2)能够设置时间,至少三个闹钟时间、复位

(3)能够调用已有的曲子作为闹铃

(4)可以对串口进行设置

六、明细清单:

单片机89C52: 58~65元

LCD1602: 4.8~10元

七、设计调试中遇到的疑难问题及解决方法:

下位机:

(1)在初始化LCD显示的时钟和闹钟时间时,时钟和闹钟时间显示的位置不对,在查询LCD1602说明书之后发现上下两行的首地址并不连续,后修改相关写的位置解决该问题。

(2)定时器初始化的时候由于没有考虑到定时中断和串口中断共存的情况,是两个中断无法正常工作,LCD无法显示相对应的时间,TMOD采用或的设置形式解决两个中断共存的问题,使其可以独立工作不互相干扰。

(3)按键操作有时会记错按键次数,再加入松手检测后问题得以解决

(4)上位机通过串口向下位机传送数据时存在丢包现象,在数据前端加两位数字来判别数据修改对象是时钟还是闹钟,避免丢包。

上位机:

(1)刚开始显示时间时,时间的显示总是错乱的,没有能够将数据按照预想的顺序显示出来。研究出来的原因是没有设置校验码,由于单片机通过串口一直在传输数据,以至于数据是连续的,导致无法识别数据的顺序,最后通过在每组数据的头和尾设置校验码,上位机通过检验校验码检查数据的正确性,完成了数据的正常显示。

(2)在串口写入数据时,在初始的设计时采用触发式的开关,但是并不能完成触发时写入数据,由于对LabView的循环结构体掌握得并不深入,所以一直没有能完成通过触发实现写入数据,最后加入了一个布尔开关,每次写入数据前首先要打开这个布尔开关,然后才能实现触发式写入数据。

八、心得体会与建议:

上位机:

本次微机原理的综合设计实验与以往的实验有很明显的不同之处,以前的实验大多是属于认知性的实验,关于自主设计一个系统的内容很少,这次的单片机课程设计完全是两个人的小组合作,从设计到软件的编写,再到后来的调试和修改代码,全都是自主完成,虽然电子钟完成的功能并不是很繁琐,可是对于我来说,也是一个比较大的挑战,在接到任务单时,看到了有关于上位机的设计,由于之前没有太多得接触上位机的开发,自己也一直都很想好好学习一下,所以这次就主动要求负责上位机部分的设计,在这个设计过程中,从基础的开始学习,对于我来说还是有挑战的,在咨询了一些同学和自己看书之后,做了一些简单的练习,然后就着手开始做电子钟的设计了,在设计和调试的过程中,我们组内两名成员一直进行上位机和下位机的相互通讯,查找系统的bug,并进行修补。

通过这次实验,熟悉了使用LabView进行上位机的设计,也通过对系统的调试积攒了一些工程上很基础的经验,在和组员的协作过程中,一起合作解决了很多问题,也能够分工明确,受益匪浅。

下位机:

相关文档
最新文档