单片机设计说明书概要Word文件下载.docx

上传人:b****3 文档编号:14725390 上传时间:2022-10-24 格式:DOCX 页数:15 大小:698.70KB
下载 相关 举报
单片机设计说明书概要Word文件下载.docx_第1页
第1页 / 共15页
单片机设计说明书概要Word文件下载.docx_第2页
第2页 / 共15页
单片机设计说明书概要Word文件下载.docx_第3页
第3页 / 共15页
单片机设计说明书概要Word文件下载.docx_第4页
第4页 / 共15页
单片机设计说明书概要Word文件下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

单片机设计说明书概要Word文件下载.docx

《单片机设计说明书概要Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机设计说明书概要Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。

单片机设计说明书概要Word文件下载.docx

2014-06-03

 

摘要

随时代的发展,生活节奏的加快,人们的时间观念愈来愈强;

随自动化、智能化技术的发展,机电产品的智能度愈来愈高,用到时间提示、定时控制的地方变得更加广泛,因此,设计开发数字时钟具有良好的应用前景。

由于单片机成本价格低、高性能,在自动控制产品得到了广泛的应用。

本设计利用Ateml公司的AT89C51单片机对电子时钟进行开发,设计了实现所有功能的硬件电路,使用KeilC来进行代码编写和调试,通过KeilC与Proteus进行联合调试来测试最终结果。

在介绍本单片机的发展情况基础上,说明了本设计实现的功能,以及Proteus仿真实验板上的硬件情况,并对各功能进行了分析。

主要工作放在软件的编程上面,用Proteus仿真环境可以实现时间、日期、定时以及它们的设定功能,详细对软件编程以及调试进行了说明,并对计时误差进行了分析及校正。

整个实验效果良好,可以投入使用。

关键词:

单片机AT89C51电子时钟C语言

目录

第一章设计任务分析

1.1课题背景

单片机自1976年由Intel公司推出MCS-48开始,迄今已有二十多年了。

由于单片机集成度高、功能强、可靠性高、体积小、功耗低、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广大领域。

单片机有两种基本结构:

一种是在通用微型计算机中广泛采用的,程序存储器和数据存储器共用一个存储器空间的结构,称为“冯·

诺依曼”(Von 

Neumann)结构。

另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,称为“哈佛”(Harvard)结构,目前的单片机采用此种结构为多。

本文讨论的单片机多功能时钟系统的核心是目前应用极为广泛的51系列单片机,配置了外围设备,构成了一个可编程的计时定时系统,具有体积小,可靠性高,功能多等特点。

不仅能满足所需要求而且还有很多功能可供扩展,有着广泛的应用领域。

1.2课题意义

在日常生活和工作中,我们常常用到定时控制,如扩印过程中的曝光定时等。

早期常用的一些时间控制单元都使用模拟电路设计制作的,其定时准确性和重复精度都不是很理想,现在基本上都是基于数字技术的新一代产品,随着单片机性价比的不断提高,新一代产品的应用也越来越广泛。

大则可以构成复杂的工业过程控制系统,完成复杂的控制功能;

小则可以用于家电控制,甚至可以用于儿童电子玩具。

它功能强大、体积小、质量轻、灵活好用,配以适当的接口芯片,可以构成各种各样、功能各异的微电子产品。

随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设备都有自己的控制器,使用起来很不方便。

这些具有人们所需要的智能化特性的产品减轻了人的劳动,扩大了数字化的范围,为家庭数字化提供了可能。

根据这种实际情况,设计了一个单片机多功能时钟系统,它有基本的时间功能,还有定时功能,既可作为闹铃,也可扩展为定时对家电等电气产品的自动控制,可以避免多种控制器的混淆,利用一个控制器对多路电器进行控制;

可增加温度传感器,进行实时温度显示,进一步扩展为利用不同的温度某些电气产品进行自动控制;

也可增加湿度传感器,进行实时湿度显示,以便对湿度进行控制,方便人们的生活。

1.3本章小结

本章主要介绍了课题背景、设计任务和课题意义,对单片机的优点及结构作了简要叙述,也对本系统的应用及概况进行了说明。

第二章系统功能及操作

2.1系统功能的确定

本系统有显示时间、日期和设定闹铃功能,并且可以对时间、日期进行设定。

闹铃提示使用屏显提示方式。

2.2系统操作设置

本系统的按键是4x4键盘,可以输入0~9,设置闹铃、取消、确定、设置时间、设置日期。

具体按键码如下:

0x11数字’1’

0x12数字’2’

0x14数字’3’

0x18设置闹铃

0x21数字’4’

0x22数字’5’

0x24数字’6’

0x28设置时间

0x41数字’7’

0x42数字’8’

0x44数字’9’

0x48日期设置

0x81取消

0x82数字’0’

0x84设置闹铃标志

0x88确定

2.3本章小结

本章主要对本系统的基本功能和操作进行了详细说明。

第三章系统硬件设计

3.1仿真电路板的原理图

键盘电路

LCD电路

复位电路

时钟电路

3.2功能电路分析

3.2.1时钟电路

仿真电路的时钟振荡源电路如图所示。

其中 

为12MHz 

的晶振,改变两电容CB的值即可对此晶振频率进行调节。

该电路提供单片机工作所需的振荡频率,计算定时器初值即需此晶振频率,在通信时也需知道晶振频率,以对波特率进行计算。

3.2.2复合复位电路

如图所示为实验板的复合复位电路,当RESET 

信号为低电平时,仿真电路为工作状态,当RESET信号为高电平时,仿真电路为复位。

这是上电复位和按钮复位的结合体。

3.2.3LCD显示电路

如图所示,本电路中使用的是LCD1602,D0~D7双向数据端接51单片机的P0口,RS,RW,E分别接P2.0~P2.2,由于P0口没有上拉电阻所以要连接一个9针排阻,起到加大驱动电流,提高稳定性的作用。

3.2.4键盘电路

如图键盘是4x4的16键的行列式键盘,行接P1口高4位,列接P1口的低4位。

3.3本章小结

本章主要对芯片作了介绍,对其内存单元作了详细说明,并对系统硬件的结构框图和各功能电路作了说明,以及这些电路在本设计中的用途。

第四章系统软件设计

4.1计时时钟实现的基本方法

时钟的最小计数单位是秒,AT89C51晶振频率为12M,机器周期为1M,那么机器一周期时间为1/f=1/1M=1微秒。

使用定时器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,并更新相应的星期。

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,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调试过程

该时钟程序的功能模块先后实现的顺序为:

主程序→时间模块→显示模块→键盘模块→时间设定及其显示模块→日期及其显示模块→日期设定及其显示模块→定时及其显示模块→定时设定及其显示模块。

每完成一个模块就与前一个已完成的模块结合起来调试,直至实现相应功能,再编写下一模块程序。

在与主程序衔接时,主程序和各子程序也需作相应的改动,以便与子程序更好的衔接,特别是显示子程序需作较大改动,以便对不同内容进行显示。

5.1.2调试遇到的问题

调试过程还是有困难的,首先是程序定义的unsignedchar数组出问题,问题如下:

***ERRORL107:

ADDRESSSPACEOVERFLOW

SPACE:

DATA

SEGMENT:

?

DT?

USART_READWRITE

LENGTH:

007AH

上网查了下,找到了具体的原因和解决方法如下:

说明data空间已经不够用,原因是可能有好多函数,而函数内部的局部变量又没有定义其空间,这种情况下,系统会将变量分配到你在OtionsforTarget对话框里的设置的空间。

如果你在下图所示中的MemoryModel里设置成Small:

variablesinDATA,则DATA空间很快便用完,导致data空间不够用。

解决的办法有三种,一是通过更改MemoryModel设置,可以设置成pdata或xdata,以便有足够大的空间,但这又带来新的问题,程序运行速度减慢,而且code代码也会加大,因为如果一个局部变量被存放在了xdata空间,汇编语言访问xdata空间的代码大小要比访问data空间的代码大,变量一旦很多,程序的代码也会逐渐增大;

二是根据自己的要求设置变量的空间。

所以这涉及到代码优化的问题,遇到具体问题时,在运行速度和代码大小之间取得适合自己的情况;

第三种,即目前使用的是将unsignedchar改为uncharcode,由于uncharcode将数据保存到c51的4k字节的Flash中,导致运行的时候才将数据写入RAM所以速度稍微慢些,不过肉眼看不出来区别。

其次,因为刚接触LCD1602,对其特性没有完全掌握,刚开始让其显示自定义中文字符年、月、日和闹铃标志出现了严重的错误,具体是在向LCD1602写数据时出现的:

要从CGRAM中读出数据在1602上显示,搞了半天发现CGRAM里的地址和DDRAM里的地址有上面的转换关系,所以解决方法是(address&

=0x3f)/0x08这样作为写入数据的参数才能正确被LCD1602显示。

5.1.2调试结果

经过不断的调试,最终的结果还是令人满意,具体如下:

5.2PCB图的设计

本次画PCB图是使用protel99sel来绘制,主要步骤是制作原理图元器件库、PCB元器件库制作原理图(层次图)制作PCB图。

由于刚刚入门对PCB制作不熟练,所以在制作最终的PCB图是采用自动布线做法,导致线路走的有点难看。

具体效果如下:

原理图的显示部分5.2-1

原理图的MCU部分5.2-2

原理图主图5.2-3

PCB铺完铜顶层5.2-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1