单片机设计说明书讲解

上传人:最**** 文档编号:115174375 上传时间:2019-11-12 格式:DOC 页数:18 大小:924.50KB
返回 下载 相关 举报
单片机设计说明书讲解_第1页
第1页 / 共18页
单片机设计说明书讲解_第2页
第2页 / 共18页
单片机设计说明书讲解_第3页
第3页 / 共18页
单片机设计说明书讲解_第4页
第4页 / 共18页
单片机设计说明书讲解_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《单片机设计说明书讲解》由会员分享,可在线阅读,更多相关《单片机设计说明书讲解(18页珍藏版)》请在金锄头文库上搜索。

1、福建工程学院设计内容:基于51单片机的电子时钟设计院系:计算机科学与信息学院专业:计算机科学与技术类 班级: 嵌入式1105班 学号: 3110307618 姓名: 林强 指导老师: 蔡文培 完成日期: 2014-06-03 摘要随时代的发展,生活节奏的加快,人们的时间观念愈来愈强;随自动化、智能化技术的发展,机电产品的智能度愈来愈高,用到时间提示、定时控制的地方变得更加广泛,因此,设计开发数字时钟具有良好的应用前景。由于单片机成本价格低、高性能,在自动控制产品得到了广泛的应用。本设计利用Ateml公司的AT89C51单片机对电子时钟进行开发,设计了实现所有功能的硬件电路,使用 Keil C来

2、进行代码编写和调试,通过Keil C与Proteus进行联合调试来测试最终结果。在介绍本单片机的发展情况基础上,说明了本设计实现的功能,以及Proteus仿真实验板上的硬件情况,并对各功能进行了分析。主要工作放在软件的编程上面,用Proteus仿真环境可以实现时间、日期、定时以及它们的设定功能,详细对软件编程以及调试进行了说明,并对计时误差进行了分析及校正。整个实验效果良好,可以投入使用。关键词:单片机 AT89C51 电子时钟 C语言目录第一章 设计任务分析1.1课题背景单片机自1976年由Intel公司推出MCS-48开始,迄今已有二十多年了。由于单片机集成度高、功能强、可靠性高、体积小、

3、功耗低、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广大领域。单片机有两种基本结构:一种是在通用微型计算机中广泛采用的,程序存储器和数据存储器共用一个存储器空间的结构,称为“冯诺依曼”(VonNeumann)结构。另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,称为“哈佛”(Harvard)结构,目前的单片机采用此种结构为多。本文讨论的单片机多功能时钟系统的核心是目前应用极为广泛的51系列单片机,配置了外围设备,构成了一个可编程的计

4、时定时系统,具有体积小,可靠性高,功能多等特点。不仅能满足所需要求而且还有很多功能可供扩展,有着广泛的应用领域。1.2课题意义在日常生活和工作中,我们常常用到定时控制,如扩印过程中的曝光定时等。早期常用的一些时间控制单元都使用模拟电路设计制作的,其定时准确性和重复精度都不是很理想,现在基本上都是基于数字技术的新一代产品,随着单片机性价比的不断提高,新一代产品的应用也越来越广泛。大则可以构成复杂的工业过程控制系统,完成复杂的控制功能;小则可以用于家电控制,甚至可以用于儿童电子玩具。它功能强大、体积小、质量轻、灵活好用,配以适当的接口芯片,可以构成各种各样、功能各异的微电子产品。随着电子技术的飞速

5、发展,家用电器和办公电子设备逐渐增多,不同的设备都有自己的控制器,使用起来很不方便。这些具有人们所需要的智能化特性的产品减轻了人的劳动,扩大了数字化的范围,为家庭数字化提供了可能。根据这种实际情况,设计了一个单片机多功能时钟系统,它有基本的时间功能,还有定时功能,既可作为闹铃,也可扩展为定时对家电等电气产品的自动控制,可以避免多种控制器的混淆,利用一个控制器对多路电器进行控制;可增加温度传感器,进行实时温度显示,进一步扩展为利用不同的温度某些电气产品进行自动控制;也可增加湿度传感器,进行实时湿度显示,以便对湿度进行控制,方便人们的生活。1.3本章小结本章主要介绍了课题背景、设计任务和课题意义,

6、对单片机的优点及结构作了简要叙述,也对本系统的应用及概况进行了说明。第二章 系统功能及操作2.1 系统功能的确定本系统有显示时间、日期和设定闹铃功能,并且可以对时间、日期进行设定。闹铃提示使用屏显提示方式。2.2 系统操作设置本系统的按键是4x4键盘,可以输入09 ,设置闹铃、取消、确定、设置时间、设置日期。具体按键码如下:0x11 数字10x12 数字20x14 数字30x18 设置闹铃0x21 数字40x22 数字50x24 数字60x28 设置时间0x41 数字70x42 数字80x44 数字90x48 日期设置0x81 取消0x82 数字00x84 设置闹铃标志0x88 确定2.3 本

7、章小结本章主要对本系统的基本功能和操作进行了详细说明。第三章 系统硬件设计3.1仿真电路板的原理图键盘电路LCD电路复位电路时钟电路3.2功能电路分析 3.2.1时钟电路仿真电路的时钟振荡源电路如图所示。其中为12MHz的晶振,改变两电容CB的值即可对此晶振频率进行调节。该电路提供单片机工作所需的振荡频率,计算定时器初值即需此晶振频率,在通信时也需知道晶振频率,以对波特率进行计算。 3.2.2 复合复位电路如图所示为实验板的复合复位电路,当RESET信号为低电平时,仿真电路为工作状态,当RESET信号为高电平时,仿真电路为复位。这是上电复位和按钮复位的结合体。 3.2.3 LCD显示电路如图所

8、示,本电路中使用的是LCD1602 ,D0D7双向数据端接51单片机的P0口,RS,RW,E分别接P2.0P2.2,由于P0口没有上拉电阻所以要连接一个9针排阻,起到加大驱动电流,提高稳定性的作用。 3.2.4 键盘电路如图键盘是4x4 的16键的行列式键盘,行接P1口高4位,列接P1口的低4位。3.3本章小结本章主要对芯片作了介绍,对其内存单元作了详细说明,并对系统硬件的结构框图和各功能电路作了说明,以及这些电路在本设计中的用途。第四章 系统软件设计4.1 计时时钟实现的基本方法时钟的最小计数单位是秒,AT89C51晶振频率为12M,机器周期为1M,那么机器一周期时间为1/f=1/1M=1微

9、秒。使用定时器0的方式2,定时器的最大计数时间为256微秒,想要以1秒闪烁,则TH0 = 6,TL0 = 6,每次计数都是记(256-6=250)微秒,中断次数1秒除以250微秒等于4000次。以此循环实现1s计数。4.2 实现时钟程序设计步骤系统采用模块化结构,主程序只需调用各个子程序模块就能实现相应功能。其模块结构如下图:4.2.1主程序模块设计4.2.2 计时子程序模块说明当T0中断时,count设为4000次,即满足4000次中断后在中断服务程序里调用时间更新函数TimeUpdate(),秒满60,秒清零,分加1,分满60,时加1,时满24,调用星期计算函数,日加1,并更新相应的星期。

10、4.2.3 显示模块说明显示部分主要是对lcd1602的特性操作,lcd1602初始化设置为5x7点阵。利用其CGDRM写数据来实现显示时间、日期、闹铃标志。CGRAM初始值为0x40。其中日期(年、月、日)和闹铃标志的显示是使用如下数组来实现:ring_buf=0x0a,0x15,0x0a,0x11,0x0a,0x04,0x0e,0x00;/闹铃nin= 0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02;/ 年yue= 0x0f,0x09,0x0f,0x09,0x0f,0x09,0x0b,0x11;/ 月ri = 0x0F,0x09,0x09,0x0F,0x09

11、,0x09,0x0F,0x00;/ 日4.2.4 键盘扫描模块说明键盘采用4x4的行列式键盘,行线读取P1口高4位信号,列线读取P1口的低4位信号,通过软件延时方法消除抖动,延时时间10ms。4.2.5 时钟、闹铃设定模块说明当设定时间时,断开T0中断,秒单元清0,进入时、分单元设定。设定好后重装T0初值,开T0中断。如下图所示:4.2.6 日期设定模块说明日期设定与时间设定类似,除了对输入的控制,还有增加了对星期的更新步骤。4.3本章小结本章主要对软件实现的功能进行说明,包括软件流程图,软件的参数就算和原理说明。第5章 调试结果及PCB图的设计5.1 调试及结果5.1.1 调试过程该时钟程序

12、的功能模块先后实现的顺序为:主程序时间模块显示模块键盘模块时间设定及其显示模块日期及其显示模块日期设定及其显示模块定时及其显示模块定时设定及其显示模块。每完成一个模块就与前一个已完成的模块结合起来调试,直至实现相应功能,再编写下一模块程序。在与主程序衔接时,主程序和各子程序也需作相应的改动,以便与子程序更好的衔接,特别是显示子程序需作较大改动,以便对不同内容进行显示。5.1.2 调试遇到的问题调试过程还是有困难的,首先是程序定义的unsigned char 数组出问题,问题如下:* ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT:

13、?DT?USART_READWRITE LENGTH: 007AH上网查了下,找到了具体的原因和解决方法如下:说明data空间已经不够用,原因是可能有好多函数,而函数内部的局部变量又没有定义其空间,这种情况下,系统会将变量分配到你在Otions for Target 对话框里的设置的空间。如果你在下图所示中的 Memory Model 里设置成 Small:variables in DATA,则DATA空间很快便用完,导致data空间不够用。解决的办法有三种,一是通过更改Memory Model设置,可以设置成pdata或xdata,以便有足够大的空间,但这又带来新的问题,程序运行速度减慢,而

14、且code代码也会加大,因为如果一个局部变量被存放在了xdata空间,汇编语言访问xdata空间的代码大小要比访问data空间的代码大,变量一旦很多,程序的代码也会逐渐增大;二是根据自己的要求设置变量的空间。所以这涉及到代码优化的问题,遇到具体问题时,在运行速度和代码大小之间取得适合自己的情况;第三种,即目前使用的是将unsigned char 改为 unchar code ,由于unchar code 将数据保存到c51的4k字节的Flash中,导致运行的时候才将数据写入RAM所以速度稍微慢些,不过肉眼看不出来区别。其次,因为刚接触LCD1602,对其特性没有完全掌握,刚开始让其显示自定义中文字符年、月、日和闹铃标志出现了严重的错误,具体是在向LCD1602写数据时出现的:要从CGRAM中读出数据在1602上显示,搞了半天发现CGRAM里的地址和DDRAM里的地址有上面的转换关系,所以解决方法是(address&=0x3f)/0x08 这样作为写入数据的参数才能正确被LCD1602显示。5.1.2 调试结果经过不断的调试,最终的结果还是令人满意,具体如下:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号