ImageVerifierCode 换一换
格式:DOCX , 页数:47 ,大小:195.32KB ,
资源ID:11312610      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11312610.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机科学与技术专业专升本论文.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机科学与技术专业专升本论文.docx

1、计算机科学与技术专业专升本论文毕 业 论 文题 目 基于AVR的可调电子钟设计 院系名称:计算机科学与技术 专业班级:11专升本 学生姓名: 学 号: 指导教师: 摘 要单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。本设计就是应用单片机强大的控制功能制作而成的指针式电子钟,该指针式电子钟实现如下功能:液晶屏模拟表盘与时分秒指针显示当前时钟,K1键用于选择调节对象,K2键用于调整时分秒,在按下K4键时确定调节值,时钟继续运行。本设计采用的是AVR单片机,AVR系列的单片机不仅具有良好的集成性能,而且都具备

2、在线编程接口,其中的Mega系列还具备JTAG仿真和下载功能;含有片内看门狗电路、片内程序Flash、同步串行接口SPI;多数AVR单片机还内嵌了AD转换器、EEPROM、模拟比较器、PWM定时计数器等多种功能;AVR单片机的IO接口具有很强的驱动能力,灌入电流可直接驱动继电器、LCD等元件。芯片采用DALLAS公司的涓细充电时钟芯片DS1302,该芯片通过简单的串行通信与单片机进行通信,时钟/日历电路能够实时提供年、月、日、时分、秒信息,采用双电源供电,当外部电源掉电时能够利用后备电池准确计时。显示器件采用LCD1602液晶,通过相应的按键调整相应的值。通过此次设计能够更加牢固的掌握单片机的

3、应用技术,增强动手能力、硬件设计能力以及软件设计能力。关键词 AVR单片机时钟芯片DS1302 LCD1602液晶第一章 引言本例采用LCD1602液晶作为显示元件,液晶屏显示当前时钟。该电子钟实现如下功能:液晶屏模拟表盘与时分秒指针显示当前时钟,K1键用于选择调节对象,K2键用于调整时分秒,在按下K3键时确定调节值,时钟继续运行。本例程序包含控制模块、显示模块、实时时间计算模块、设置模块(时间设置模块)。1.1设计任务利用AVR单片机等实现一个简单的基于AVR的可调电子钟。1.2设计要求a实现年月日时分秒指针式显示功能b用三个按键来实现调整时分秒的功能第二章 总体方案论证与设计组成框图中包含

4、显示模块,控制器,时间模块,设置模块。显示模块有LCD1602来控制显示,整个代码实现主要由控制器来实现,时间模块有DS1302来实现,可以显示系统时间,也可自行调整,设置模块为按键处理。具体模块分析在相关的软硬件设计中详细介绍。本设计中的可调电子钟拟采用AVR系列单片机ATMEGA16作为主控制器,以DS1302时钟芯片和16M的外置晶振提供准确时间标准,以期实现对“时、分、秒”的数字显示和校准时间的计时装置;可调电子钟不但可以显示当前时间,而且可以显示年、月、日等,给人们的生活带来方便。另外可调电子钟还具备日期时间的调节与写入功能。本设计将以AVR单片机为控制核心,通过与DS1302信获取

5、实时时间,并将得到的数据通过LCD1602液晶显示出来,同时通过相应的按键调整相应的值。因此本设计可分为以下模块:控制模块、显示模块、实时时间计算模块、设置模块(时间设置模块)。第三章 系统硬件设置3.1 ATmega16单片机简介ATmega16单片机是ATmega系列AVR单片机中内容接口丰富,功能齐全,性能价格比较高的产品。它具有高性能、低功耗的8位AVR微处理器,先进的RISC结构,非易失性程序和数据存储器等。ATmega16单片机的中央处理器由32个8位通用寄存器,1个算术运算单元及状态和控制逻辑单元组成。AVR采用了哈弗结构,具有独立的程序总线和数据总线,程序存储器里的指令通过一级

6、流水线运行。它的存储器分为独立寻址的flash 程序存储器,片内SRAM 数据存储器和EEPROM 3部分,均采用线性编址。图3-13.2 ATmega16单片机的工作原理3.2.1 I/O端口的工作原理ATmeage16单片机具有32个通用I/O口,分为PA,PB,PC,PD,每组都是八位。这些I/O都是可以通过各自的端口寄存器设置为输入或置成输出,有些I/O口还具有第二功能。所有的端口引脚都具有内部上拉电阻,可以通过寄存器独立选择是否连接,复位时所有的引脚都为高阻态。ATmega16单片机的每个端口都有三个I/O寄存器地址:数据寄存器PORTx(x=ABCD,下同)、方向寄存器DDRx和输

7、入引脚PINx。3.2.2定时/计数器ATmega16单片机有三个定时/计数器:T/C0,T/C1,T/C2。其中T/C0,T/C2是两个八位的定时/计数器,而T/C1是16位的定时/计数器。T/Cx(0,1,2)是一个通用的带有输出比较匹配和PWM波形发生器的单通道8位定时/计数器模块。T/Cx可以选择通过预分频器由系统时钟驱动,或通过T0引脚的外部时钟驱动,时钟逻辑模块控制使用哪个时钟源及哪个边沿来进行加或者减计数。T/Cx(0,1,2)的时钟分频器对系统分频后作为T/Cx(0,1,2)的驱动时钟。T/Cx(0,1,2)的时钟可以是系统时钟或者系统时钟的8分频、64分频、256分频及102

8、4分频,通过控制寄存器TCCRx(0,1,2)。T/Cx双缓冲结构的八位输出比较寄存器OCRx(0,1,2)一直与T/Cx(0,1,2)的计数值TCNTx(0,1,2)进行比较。一旦TCNTx(0,1,2)等于OCRx(0,1,2),比较器就给出匹配信号。有4种工作模式:普通模式,CTC模式,快速PWM模式,相位修正PWM模式。3.2.3 中断系统ATmega16 单片机有21个中断源,每一个中断源都有一个独立的中断向量作为中断服务程序的入口地址,而且所有的中断源都有自己的独立的使能位。如果全局中断I和相应使能位都置位,则在中断标志位置位时将执行中断服务程序。一个中断产生后,全局中断使能位I将

9、被清零,后续中断被屏蔽。中断相关的寄存器:MCU控制寄存器MCUCR,MCU控制和状态寄存器MCUCSR,通用中断控制寄存器GICR,通用中断状态寄存器GIFR.3.2.4 振荡器XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3.3时钟模块设计实时时间计算模块方案(

10、1):AVR单片机内部带有定时/计数功能,此定时功能是通过对外部晶振的脉冲进行计数,从而达到计时功能,只要使用11.0592的晶振就能实现零误差的计时,因此可以利用此功能实现计时,但因为只有单一的计时功能要实现“万年历”的功能需要较复杂的程序,而且如果单片机掉电无法继续进行计时,所以使用不便。方案(2):DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压

11、宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。利用单片机强大的控制功能就可实现实时计时的功能,而且消耗的系统资源少,程序简单。综合上述两种方案,宜采用方案(2)实现实时计时功能。3.3.1 DS1302特性介绍DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采

12、用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。利用单片机强大的控制功能就可实现实时计时的功能,而且消耗的系统资源少,程序简单。DS1302可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿等多种功能DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式;采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而采用时钟芯片DS1302。3.3.2 DS1302引脚介绍 图3-28 、Vcc1:备用电池端;1、Vcc2:5V电源。当Vcc2Vcc1+0.2

13、V时,由Vcc2向DS1302供电,当Vcc2 Vcc1时,由Vcc1向DS1302供电。7、 SCLK:串行时钟,输入; 6、I/O:数据输入输出口;5、CE/RST:复位脚2 3、X1、X2 是外接晶振脚 (32.768KHZ的晶振)4、地(GND)3.3.3 DS1302有关日历,时间的寄存器表3-13.3.4 DS1302与单片机接口电路图3-3由于DS1302是依靠外部晶振与其内部的电容配合来产生时钟脉冲,因为DS1302在芯片本身已经集成了6pF电容。所以,为了获得稳定的可靠的时钟,必须选用具有6pF负载电容的晶振。当它工作于所要求的负载电容时,所以要选用32768HZ的晶振。石英

14、晶振用12M,因为一个机器周期为1/12时钟周期,所以这样用12M的话,一个时钟周期为12us那么定时器计一次数就是1us了,电容范围是在20-40pf之间的都行。表3-2引脚号DS1302AT89C511I/OP1.02SCLKP1.13RSTP1.23.4显示模块设计液晶显示模块方案(1):数码管是利用发光二极管的特性组合而成数字显示器件,通过控制相应的二极管的状态显示相应的数字。要使数码管正常显示就得有驱动电路驱动相应的段码,数码管的现实方式可分为静态显示和动态显示,静态显示方式只适合显示单个的数字,因此本设计应采用动态显示方式。由于动态显示方式利用的是人眼视觉暂留的特性,扫描的时间应不

15、大于20毫秒,占用系统资源大,而且显示的个数和字型有限,在本设计中不易采用。方案(2):LCD1602是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及点阵液晶显示器组成。可完成字符显示,也可以显示16*2字。该类液晶显示模块(即KS0108B及其兼容控制驱动器)的指令系统比较简单,总共只有七种。关于行列和页的解释:从上向下共2行,每一行为16字,汉字占32B,分左右两半,各占16B,根据在LCD上开始显示的行列号及每行的列数可以找到显示RAM对应的地址,设立光标,送上要显示的汉字的第一个字节,光标位置加一,送第二个字节,换行按列对齐。综合比较上述两种方案,应采用LCD1602液晶组成本设

16、计的显示模块。3.4.1 LCD1602的特性介绍PG12864LCD是像素可寻址的图形液晶显示屏模块芯片特性:1.工作电压为4.5-5.5V,可自带驱动LCD所需的负电压。2.全屏幕点阵,点阵数为16*2的字符的显示。3与CPU接口采用5条位控制总线和8位并行数据总线输入输出。4.内部有显示数据锁存器,自带EL驱动。5.简单的操作指令,显示开关设置,显示起始行设置,地址指针设置和数据读/写等指令。3.4.2 LCD1602引脚介绍表3-3管脚号管脚名称LEVER管脚功能描述1VSS0电源地2VDD+5.0V电源电压3VL-液晶显示偏压4 RSH/LRS =“H”表示选择数据寄存器RS =“L

17、”表示选择指令寄存器5R/WH/LR/W=“H”,E=“H”数据被读到DB7DB0R/W=“L”,E=“HL”数据被写到IR或DR6EH/LR/W=“L”,E信号下降沿锁存DB7DB0R/W=“H”,E=“H”DDRAM数据读到DB7DB07D0H/L数据线8D1H/L数据线9D2H/L数据线10D3H/L数据线11D4H/L数据线12D5H/L数据线13D6H/L数据线14D7H/L数据线3.4.3 1602内部功能器件及相关功能1. 指令寄存器(IR)指令寄存器负责存放单片机写给HD144780的指令,对IR的操作如下:当RS=0,R/W,E引脚由1变为0,就会把D0到D7引脚的数据送入指

18、令寄存器IR。2数据寄存器(DR)DR负责存放单片机写给CGRAM与DDRAM的数据或从CGRAM与DDRAM的数据。对DR的操作如下:当RS=1,R/W=1,E=1,HD44780就会把数据送到D0到D7引脚上,供单片机读取。当RS=1,R/W=0,E引脚信号由1变为0,HD44780就会把D0到D7引脚上的数据存入DR中3忙标志:BFBF标志提供内部工作情况。BF=1表示模块在内部操作,此时模块不接受外部指令和数据。BF=0时,模块为准备状态,随时可接受外部指令和数据。4显示数据RAM(DDRAM)DDRAM是用来存放LCD要显示的数据,只要将点阵字符图形的代码送入DDRAM,内部的控制电

19、路就会自动将数据传送到LCD显示屏上,如果想在第一行的第一个位置显示字符“0”,那么只要把字符“0”的代码送达DDRAM的0X80地址中,在显示屏就会出现一个字符“0”。5字符发生器(CGROM)HD47780芯片内含一个CGROM,存储了160个不同的点阵字符图形,如数字、字母、中文等。CGROM用来存储设计者自行设计个性化字符造型代码的RAM,共有512bit,一个5*7的字符体占用8*8bit,因此CGRAM最多只能存放8个自定义字符。6.地址寄存器(AC)AC是负责计算送DDRAM,CGRAM读出的地址,或者计算写到CGRAM,DDRAM数据的地址,当单片机对CGRAM,DDRAM进行

20、操作时,AC会依照单片机对HD47780的操作自动修改地址的计数值。LCD1602内嵌芯片HD47780的控制功能表3-4RSR/WED7-D0说明011数据输出读BF与AC的值10下降沿数据输入写数据00下降沿数据输入写指令代码111数据输出读数据3.4.4 1602液晶与单片机接口电路图3-4表3-5引脚号1602引脚ATMEGA16引脚1数据线DB0-DB7PB0-PB72寄存器选择RSPC03写RWPC14使能端EPC2排阻的计算公式:上拉电源 /(硬件额定电流单片机输出电流)一、最大值的计算原则:要保证上拉电阻明显小于负载的阻抗,以使高电平时输出有效。 例如:负载阻抗是10K,供电电

21、压是5V,如果要求高电平不小于4.5V,那么,上拉电阻最大值 R大5-4.5)=10:5 R大=1K 也就是最大值1k,(如果超过了1k,输出的高电平就小于4.5V了) 二、最小值的计算原则:保证不超过管子的额定电流(如果不是场效应管而是三极管也可依照饱和电流来计算) 例:管子的额定电流150mA,放大倍数100,基极限流电阻10k,工作在5v的系统中。那么,算法如下: IbU/R=(5-0.7)/10=0.47(mA) Ic100*0.4747mA 小于额定的150,所以可以按饱和法来算最小值。 上拉电阻最小值 R小5v/47mA=106欧姆 (如果小于这个电阻,管子就会过饱和而没有意义了。

22、如果大于这个值,管子的导体电阻就会变大一些,所以太高也不利于低电平的输出)3.5 设置模块设置模块采用四个按键与PD连接按键与单片机的接口电路图3-5按键的断开与闭合式由机械触点的动作实现。由于机械的弹性作用在按键的断开与闭合过程中会产生抖动。此抖动的脉冲会给单片机带来误判断,所以必须消除。消除抖动可以从软件和硬件两方面入手。本设计采用软件消除抖动,从按键断开到稳定闭合,此抖动的时间一般为5ms到10ms。所以当单片机检测到有按键被按下时候,就延时一段时间。单片机与键盘的连接方式可分为独立式,编码式,串口扩展式和矩阵式。其中较为常用的有独立式和矩阵式。本设计采用独立式按键,也就是每一个按键都与

23、端口独立连接,每一个按键独立占一根输入线,一根输入线的工作状态不会影响其他按键。独立式按键通过检测电平的状态可以很容易判断出有没有按键被按下。独立式的电路配置灵活,软件算法简单。3.6 振荡电路本设计芯片选用内部振荡器方式。由于本设计的时间由内部定时器中断与软件计数相结合产生的,所以从计算方便以及系统的效率上考虑,本设计选用12MHz频率的晶振,电路原理图如下:图3-6 atmage16的振荡电路经厂家推荐稳定电路的电容C1,C2=22uf,C3为10uf。3.7 复位电路Atmega16有5个复位源:上电复位、外部复位、看门狗复位、掉电检测复位及JTAG复位。复位时所有的I/O寄存器都被设置

24、为初始值,程序从复位向量开始执行。本设计使用上电复位电路。单片机晶振为12MHz,起振时间将近1ms,单片机2个机器周期的时间为2us。单片机每次上电复位所需的最短延时应该不小于treset。这里,treset等于上电延时与起振延时之和。从实际上讲,延迟一个treset往往还不够,不能够保障单片机有一个良好的工作开端。复位电路把单片机锁定在复位状态上并且维持一个延时(记作TRST),以便给予电源电压从上升到稳定的一个等待时间;在电源电压稳定之后,再插入一个延时,给予时钟振荡器从起振到稳定的一个等待时间;在单片机开始进入运行状态之前,还要至少推迟2个机器周期的延时间。单片机是高电平的时候复位,一

25、般是用电阻和电容组成的,电容充电的时RST复位端为高电平,此时单片机开始复位.电容充电完成,此时单片机复位完成。由此电容值可取10uf,电阻值取10K。详细见附录文件(电容充电时间的计算方法.pdf)图3-7 Atmage上电复位电路第四章 系统软件设计软件设计是本设计的关键,软件程序编写的好坏直接影响着系统运行情况的良好。因本程序涉及的模块较多,所以程序编写也采用模块化设计,C语言具有编写灵活、移植方便、便于模块化设计的特点,所以本系统的软件采用Atmage16编写。程序框图如下:没有按键按下初始化显示界面从DS1302读取信息1602液晶显示相关信息判断是否有按键按下时间,日期设置模块初始

26、化显示界面从DS1302读取信息1602液晶显示相关信息判断是否有按键按下4.1 时钟函数模块具体实现含有向DS1302串行写入一字节即DS1302writeByte,从DS1302读取一字节即DS1302OreadByte,从DS1302指定位置读数据Read1302,向DS1302某地址写入数据Write1302,设置时间set_clock,从DS1302获取时间(读取当前时间),get_time利用这些函数来实现时间,最终显示在液晶屏上,可以自行调整。你可以显示系统时间,也可以显示调整时间,具体实现是设置时间函数。4.1.1实现功能能够显示年月日时分秒和星期,完成了24小时和12小时之间

27、的切换,并设有闹钟,闹钟存放于EEPROM中,时间和星期以及闹钟均可调。其中闹钟掉电数据不会丢失。4.1.2 函数设计1:void DS1302writeByte(uchar _data)(1)功能向DS1302中写入一字节数据。(2)依据DS1302时序图(详见SD1302技术资料)可知,在启动DS1302时每产生一个下降沿可向DS1302中写入一位数据。(3)右图为流程图:2:uchar DS1302OreadByte(void)(1)功能从DS1302中读取一字节数据。(2)依据DS1302时序图(详见SD1302技术资料)可知,在启动DS1302时每产生一个上升沿可向DS1302中读取

28、一位数据。(3)右图为流程图:3:uchar Read1302(uchar ucAddr)(1)功能从指定的地址中读取一字节数据。(2)依据DS1302时序图(详见SD1302技术资料)可知,在启动DS1302时每产生一个下降沿可向DS1302中写入一位数据。在启动DS1302时每产生一个上升沿可向DS1302中读取一位数据。(3)下图为流程图:4:void Write1302(uchar ucAddr,uchar ucDa)(1)功能向DS1302指定地址中写入一字节数据。(2)依据DS1302时序图(详见SD1302技术资料)可知,在启动DS1302时每产生一个下降沿可向DS1302中写入

29、一位数据。在启动DS1302时每产生一个上升沿可向DS1302中读取一位数据。(3)右图为流程图:5:void affirm_data(void)(1)功能输入数据入转换函数、将十进制转换成BCD码(2)依据转换公式。(3)下图为流程图:6:void get_time(uchar *time)(1)功能读取当前时间,并判断当前是12小时显示还是24小时显示。(2)依据通过对标志位的判断来确定当前为12小时制还是24小时制,如果为12小时时要将DS1302寄存器内相应位置1。(3)右图为流程图:7:void set_clock(void)功能向DS1302中写入初始时间,启动DS1302振荡器,

30、判断上下午。(1)依据DS1302时序图(详见SD1302技术资料)。8:void format_datetime(uchar d,uchar *a)(1)功能将数字转换成字符。(2)依据ASII码表。9:void init_1302(void)功能启动DS1302振荡器。(1)依据由DS1302的技术资料知,DS1302的秒寄存器的最高位为振荡器控制位,向该位置一即可启动振荡器4.2 显示函数模块检测LCD是否忙rd_bf( ),向LCD发送命令wr_dictate( )向lcd发送数据wr_data( )初始化1602显示init_lcd( ),初始化1602显示屏show_function (通用显示函数)。显示字符和汉字的字模是用相应的软件导出的,根据液晶显示屏的要求对时钟进行调整。4.2.1实现功能通过1602显示电子时钟4.2.2 函数设计1:void rd_bf(void)(1)功能检测LCD是否忙碌(2)依据通过判断HD47780内部是否处于空闲状态等待单片机进行读写操作2:void wr_dictate(uchar dictate)(1) 功能

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

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