基于MC9S08AW60的电子万年历设计.docx
- 文档编号:30290262
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:52
- 大小:1.87MB
基于MC9S08AW60的电子万年历设计.docx
《基于MC9S08AW60的电子万年历设计.docx》由会员分享,可在线阅读,更多相关《基于MC9S08AW60的电子万年历设计.docx(52页珍藏版)》请在冰豆网上搜索。
基于MC9S08AW60的电子万年历设计
微控制原理
题目:
基于S08的万年历设计
院系名称:
电气工程学院
专业班级:
自动化1101
学生姓名:
学号:
摘要
在日新月异的21世纪里,家用电子产品得到了迅速发展。
许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有CPU控制器或者是单片机。
单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、通讯设备、日常消费类产品和玩具等。
并且已经深入到工业生产的各个环节以及人民生活的各个方面,如车间流水线控制、自动化系统等、智能型家用电器(冰箱、空调、彩电)等。
用单片机来控制的小型家电产品具有便携实用,操作简单的特点。
本文设计的电子万年历属于小型智能家用电子产品。
利用飞思卡尔MC9S08AW60单片机进行控制,实时时钟芯片采用PCF8563,外加掉电存储电路和显示电路,可实现时间的调整和显示。
当今的电子万年历不仅可以显示年、月、日、时、分、秒、星期,有些万年历还可以显示当时当地的温度,附带功能还包括整点闹铃、定时闹铃等。
安全性也越来越能得到保障,部分电子万年历具有防爆、防震、防火、防水的特性。
显示屏的选择也更丰富,可以选择LCD或LED。
关键词:
MC9S08AW60单片机、PCF8563时钟芯片、电子万年历。
第一章绪论
1.1课题研究的目的和意义
电子万年历既可广泛应用于家庭,也可应用于银行、邮电、宾馆、医院、学校、企业、商店等相关行业的大厅,以及单位会议室、门卫等场所。
因而,此设计具有相当重要的现实意义和实用价值。
1.2万年历的发展
二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。
第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。
第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。
第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,更加直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,电子万年历的出现带来了钟表计时业界跨跃性的进步。
如今电子万年历飞入了寻常百姓家,挂式、台式以及带装饰画面等丰富的电子万年历数不胜数,不但满足了精准的计时需求,还将计时带上了科技时尚的味道。
单片机技术所应用的功能控制芯片可进行多种功能的设置,如闹钟、报时、日历查询、语音等;并改善了很多原有石英钟不能解决的问题,例如:
数字夜光显示、数据存储以及全自动温度检测等功能;这给传统计时消费带来了新的动力,越来越多的消费者选择了电子万年历。
1.3电子万年历的显示方式
●全数码显示万年历:
以LED夜光数码显示日期、时间、星期、节气倒计,以及温度等日常信息,无附加信息;
●2、带画面电子万年历:
除以LED夜光数码显示日期、时间、星期、节气倒计,以及温度等日常信息,糅合了多项先进电子技术及现代经典工艺,带有艺术画面的产品。
第二章电子万年历的总体方案设计
2.1功能介绍
本次设计主要用单片机控制程序让它在液晶上显示年、月、日、时、分、秒及星期。
时、分、秒的计数结果经过数据处理可直接送显示器显示。
当计时发生误差的时候可以用校时电路进行校正。
时计数器计满24小时后自动向日计数器进一,日计数器由平年、闰年的大、小月和二月的判断应与当月相应的日期相一致,当日计数器计满时,向月计数器进位,月计数器计满12月向年计数器进位,当年计数器计满100时所有计数器清零。
设计采用的是年、月、日和时、分、秒、星期同时显示。
2.2设计法案选择
方案一用EDA技术及VHDL语言控制来实现显示,且显示也可以用数码管,但是数码管屏幕有限不是很方便的显示很多的数据以及文字等。
对于VHDL语言也不够了解,故不采用此方案。
方案二用C语言编程来控制单片机让它在液晶上显示数据及文字。
由于单片机结构简单、控制功能强、可靠性高、体积小、价格低等优点,以及液晶屏幕可以完整的同时显示数据及文字等内容,
综合上述方案的选择与比较,选择方案二。
主要是由于电器元件的熟悉程度以及市场的供求关系。
在方案二中,大部分的电器元件我们较熟悉并且更容易获得
2.3总体设计思路
此设计在液晶上显示年、月、日、时、分、秒及星期,其原理框图如下图所示,电路一般包括以下几个部分:
单片机模块、时钟模块、键盘模块及显示模块。
主控芯片采用飞思卡尔的MC9S08AW60单片机,时钟芯片采用PCF8563。
对于各部分:
(1)为使时钟走时与标准时间一致,校时电路是必不可少的,键盘用来校正液晶上显示的时间。
(2)时钟模块为单片机提供时钟信号。
(3)单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。
(4)单片机发送的信号经过显示电路通过译码最终在液晶上显示出来。
第三章系统的硬件设计
硬件设计主要包括AW60主控芯片最小系统的设计、显示电路的设计、键盘矫正电路的设计、时钟模块的设计、串行通信接口电路的设计和电源模块。
3.1主控芯片最小系统的设计
本设计的主控芯片采用飞思卡尔的MC9S08AW60单片机,其是低成本、高性能8位微处理器S08家族中的成员。
Freescale的S08系列8位MCU由于其稳定性高、开发周期短、成本低、型号多样、兼容性好而被广泛应用。
3.1.2芯片引脚分配
64脚的引脚分配如下图所示。
每个引脚有可能有多个复用功能,有的引脚有两个复用功能,有的引脚有四个复用功能。
进行硬件最小系统设计时,一般以引脚的第一功能作为引脚名进行原理图设计。
3.1.3MCU内部结构
图3-2给出了MC9S08AW60的内部结构。
3.1.4系统时钟分配
AW60系统时钟分配如下图所示:
一些模块内的MCU有时钟源的选择。
图1-2显示了一个简化的时钟接线图。
ICG提供了时钟来源:
●ICGOUT是ICG模块的一个输出。
它可以是下列之一:
―外部晶体振荡器
―外部时钟源
―频率锁相环子模块中的输出数位控制振荡器(DCO)
―ICG内的控制位确定连接哪个时钟源。
●FFE是一个控制信号,在ICG内部产生。
如果ICGOUT的频率>4×ICGERCLK的频率,这个信号是一个逻辑1,固定频率的时钟将为ICGERCLK/2。
否则,固定频率的时钟将为BUSCLK。
●ICGLCLK—开发工具可以选择内部自时钟频率源(〜8MHz),以加快BDC通信系统,在那里总线时钟很慢。
●ICGERCLK—外部参考时钟可以选择作为实时中断时钟源。
也可以用来作为ALTCLK,输入给ADC模块。
3.1.5MCU最小系统设计
MCU的最小系统是指可以使内部程序运行所必需的外围电路。
一般情况下,MCU的硬件最小系统由BDM下载器接口、晶振及复位等电路组成。
3.2时钟模块
3.2.1PCF8563概述
PCF8563是PHILIPS公司推出的一款工业级内含I2C总线接口功能的具有极低功耗的多功能时钟/日历芯片PCF8563的多种报警功能定时器功能时钟输出功能以及中断输出功能能完成各种复杂的定时服务甚至可为单片机提供看门狗功能内部时钟电路内部振荡电路内部低电压检测电路1.0V以及两线制I2C总线通讯方式不但使外围电路及其简洁而且也增加了芯片的可靠性同时每次读写数据后内嵌的字地址寄存器会自动产生增量当然作为时钟芯片PCF8563亦解决了2000年问题因而PCF8563是一款性价比极高的时钟芯片它已被广泛用于电表水表气表电话传真机便携式仪器以及电池供电的仪器仪表等产品领域。
(1)PCF8563特性:
●宽电压范围1.0~5.5V,复位电压标准值Vlow=0.9V;
●超低功耗:
典型值为0.25μA(VDD=3.0V,Tamb=25℃);
●可编程时钟输出频率为32.768KHz、1024Hz、32Hz、1Hz;
●四种报警功能和定时器功能;
●内含复位电路、振荡器电容和掉电检测电路;
(2)PCF8563内部结构框图如下图所示:
(3)引脚配置及引脚说明分别如图3-6和表3-1所示。
表3-1PCF8563引脚描述
符号
引脚号
描述
OSCI
1
振荡器输入
OSCO
2
振荡器输出
/INT
3
中断输出(开漏;低电平有效)
VSS
4
地
SDA
5
串行数据I/O
SCL
6
串行时钟输入
CLKOUT
7
时钟输出(开漏)
VDD
8
正电源
(4)PCF8563基本原理
PCF8563有16个8位寄存器:
一个可自动增量的地址寄存器,一个内置32.768KHz的振荡器(带有一个内部集成的电容),一个分频器(用于给实时时钟RTC提供源时钟),一个可编程时钟输出,一个定时器,一个报警器,一个掉电检测器和一个400KHzI2C总线接口。
所有16个寄存器设计成可寻址的8位并行寄存器,但不是所有位都有用。
前两个寄存器(内存地址00H01H)用于控制寄存器和状态寄存器,内存地址02H~08H用于时钟计数器(秒~年计数器)地址09H~0CH用于报警寄存器(定义报警条件),地址0DH控制CLKOUT管脚的输出频率,地址0EH和0FH分别用于定时器控制寄存器和定时器寄存器。
秒、分钟、小时、日、月、年、分钟报警、小时报警、日报警寄存器,编码格式为BCD,星期和星期报警寄存器不以BCD格式编码。
当一个RTC寄存器被读时,所有计数器的内容被锁存,因此,在传送条件下,可以禁止对时钟/日历芯片的错读。
3.2.2PCF8563模块原理图
PCF8563和AW60芯片的连接采用IIC总线接口。
IIC是多主设备两线双向串行总线接口,是不同芯片间传输数据的简单、有效且常有的通信方式之一。
IIC总线接口的特点:
●在硬件上,二线制的I2C串行总线使得各IC只需最简单的连接,而且总线接口都集成在IC中,不需另加总线接口电路。
●I2C总线还支持多主控(multi-mastering)。
●串行的8位双向数据传输位速率在标准模式下可达100kbps,快速模式下可达400kbps,高速模式下可达3.4Mbps。
●连接到相同总线的IC数量只受到总线最大电容(400pf)的限制。
但如果在总线中加上82B715总线远程驱动器可以把总线电容限制扩展十倍,传输距离可增加到15m。
PCF8563时钟芯片的外围电路如图3-8所示,将其中的SCL和SDA分别接AW60的PTC0、PTC1引脚即可。
3.3键盘模块
键盘是由若干按键组成的开关矩阵,它是最简单的MCU数字量输入设备,在本设计中起到调整日期、时间的作用。
键盘的种类分多种。
按键盘的分布方式可分为独立式和矩阵式;按读入键值的方式可分为直读方式和扫描方式;按是否进行硬件编码可分为硬件编码方式和非编码方式;按微处理器响应方式可分为中断方式和查询方式。
本设计采用4×4矩阵式键盘,4条I/O线组成行输入口,4条I/O线组成列输出口,在行列线的每一个交点上设置一个按键。
读键值的方法一般采用扫描方式,即MCU输出口按位轮换输出低电平,再从输入口读入键信息最后获得编码。
这种方式占用I/O线较少。
3.4LCD显示模块
LCD(LiquidCrystalDisplay)作为电子信息产品的主要显示器件,相对于其他类型的显示部件有其自身的特点,主要包括:
低电压微功耗、平板型结构、使用寿命长、被动显示、显示信息量大、易于彩色化、无电磁辐射等。
LCD与AW60的连接方式如图3-9所示
3.5串行通信接口模块
3.5.1串行通信简介
目前几乎所有的台式机电脑都带有9针的异步串行通信口,简称串口或COM口,串行通信是MCU与外界通信的简便方式之一。
MCU引脚输入输出一般使用TTL电平,即晶体管-晶体管逻辑电平。
而TTL电平的“1”和“0”的特征电压分别为2.4V和0.4V,即大于2.4V则识别为“1”,低于0.4V则识别为“0”。
它适用于板内数据传输,不能传输的很远,为使信号传输的更远,美国电子工业协会EIA制定了串行物理接口标准RS-232。
RS232采用负逻辑,-15V~-3V为逻辑“1”,+3V~+15V为逻辑“0”。
RS-232最大的传输距离是30m通信速率一般低于20kbps。
3.5.2RS-232九芯接口
在RS-232通信中,常常使用精简的RS-232通信,通信中仅使用3根线:
RxD(接收线)、TxD(发送线)和GND(地线)。
表3-19芯串行接口引脚含义表
引脚号
功能
引脚号
功能
1
接收线信号检测(载波检测DCD)
6
数据通信设备准备就绪(DSR)
2
接收数据线(RXD)
7
请求发送(RTS)
3
发送数据线(TXD)
8
允许发送(CTS)
4
数据终端准备就绪(DTR)
9
振铃指示
5
信号地(SG)
3.5.3TTL电平到RS-232电平转换电路
在MCU中,若用RS-232总线进行串行通信,则需外接电路实现电平转换,在发送端,需要用驱动电路将TTL电平转换成RS-232电平;在接收端,需要用接受电路将RS-232D电平转换成TTL电平。
在此使用MAX232芯片进行转换,该芯片使用单一+5V电源供电实现电平转换。
表3-2MAX232芯片输入输出引脚分类与基本接法
TTL电平引脚
方向
典型接口
RS232电平引脚
方向
典型接口
11
输入
接MCU的TXD
13
输入
接到9芯接口的2脚RXD
12
输出
接MCU的RXD
14
输出
接到9芯接口的3脚TXD
10
输入
接MCU的TXD
8
输入
接到9芯接口的2脚RXD
9
输出
接MCU的RXD
7
输出
接到9芯接口的3脚TXD
MAX232芯片进行电平转换的基本原理:
1)发送过程:
发送过程:
MCU的TXD(TTL电平)经过MAX232的11脚(T1IN)送到MAX232内部,在内部TTL电平被“提升”为232电平,通过14脚(T1OUT)发送出去。
2)接收过程:
外部232电平经过MAX232的13脚(R1IN)进入到MAX232的内部,在内部232电平被“降低”为TTL电平,经过12脚(R1OUT)送到MCU的RXD,进入MCU内。
3.6电源模块
扩展板使用12伏直流电源供电,通过开关型可调降压稳压器LM2576T-ADJ可输出5伏电源,电路原理图分别如图3-14所示。
第四章系统的软件设计
在硬件电路确定之后,则系统所有的智能功能要由软件来完成。
软件是整个控制系统设计的核心,它具有充分的灵活性,可以根据系统的要求而变化,对于同样的硬件系统,配以不同的软件系统,所实现的功能也就不一样,而且有此硬件电路的功能都可以用软件来实现。
所以对于一个系统设计来说,软件系统常常比硬件系统需要更多的工作量。
整个系统的硬件组成相对简单,较小的硬件开销需要相对复杂的软件进行补偿,下面较为详细地分析软件的设计。
4.1系统软件设计概述
本系的软件采用结构化模块程序设计,所谓“模块”,实质上就是具有一定功能、相对独立的程序段。
其基本思路是将整个控制系统的功能分解为几个相对独立的标准模块,使其中的每一个程序模块完成某一特定的控制功能,并且分别只有一个入口和出口中,这样就可以对每一个程序分别定义无歧义性的输入变量和输出变量,使它们的运行相对地不受其它程序的影响,从而增强了系统的可靠性。
模块设计的主要特点是:
单模块比一个完整的程序容易编写、查错和测试;模块可以实现共享,一个模块可被多个任务在不同的条件下调用;把输入/输出封装起来,可以使程序其余部分免受经常变动;输入/输出放入模块使得程序很容易适应输入/输出设备的变动。
这样的设计有利于程序化码的优化,而且便于设计、调试和维护。
软件结构采用模块化设计方法,将所要完成的功能分别编写和调试,所有模块调试成功以后,将各个模块连接成软件系统。
在本电子万年历的设计中,软件系统包括主程序、LCD显示程序、键盘调整程序等模块。
4.2系统软件流程图
系统软件设计流程图如图4-1所示。
4.3AW60和PCF8563之间数据传输
(1)AW60和PCF8563之间数据传输采用IIC总线接口,AW60向PCF8563写一个字节数据的数据帧格式图4-3所示。
主机要向从机写1个字节数据时,主机首先产生START信号,然后紧跟着发送一个从机地址,这个地址共有7位,紧接着的第8位是数据方向位(R/W),0表示主机发送数据(写),1表示主机接收数据(读),这时候主机等待从机的应答信号(ACK),当主机收到应答信号时,发送要访问的地址,继续等待从机的响应信号,当主机收到响应信号时,发送1个字节的数据,继续等待从机的响应信号,当主机收到响应信号时,产生停止信号,结束传送过程。
AW60向PCF8563写一个字节数据的流程图如图4-3所示。
AW60向PCF8563中写一个字节数据的具体C语言程序如下所示:
uint8IICwrite1(uint8DeviceAddr,uint8AccessAddr,uint8Data)
{
I2C_IIC1C|=1< SendSignal('S');//发送开始信号 I2C_IIC1D=DeviceAddr&0xFE;//发送设备地址,并通知从机接收数据 if(Wait('T'))//等待一个字节数据传送完成 return1;//没有传送成功,写一个字节失败 if(Wait('A'))//等待从机应答信号 return1;//没有等到应答信号,写一个字节失败 I2C_IIC1D=AccessAddr;//发送访问地址 if(Wait('T'))//等待一个字节数据传送完成 return1;//没有传送成功,写一个字节失败 if(Wait('A'))//等待从机应答信号 return1;//没有等到应答信号,写一个字节失败 I2C_IIC1D=Data;//写数据 if(Wait('T'))//等待一个字节数据传送完成 return1;//没有传送成功,写一个字节失败 if(Wait('A'))//等待从机应答信号 return1;//没有等到应答信号,写一个字节失败 SendSignal('O');//发送停止信号 return0; } 写多个字节数据的C语言程序如下所示: uint8IICwriteN(uint8DeviceAddr,uint8AccessAddr,uint8Data[],uint8N) {uint8i,j; for(i=0;i {for(j=0;j<15;j++);//最小延时(发送的每个字节之间要有时间间隔) if(IICwrite1(DeviceAddr,AccessAddr+i,Data[i])) return1;//其中一个字节没有发送出去,返回失败标志: 1} if(i>=N) return0;//成功发送N个数据,返回成功标志: 0 } (2)AW60从PCF8563读一字节数据的数据帧格式如图4-4所示。 当主机要从从机读1个字节数据时,主机首先产生START信号,然后紧跟着发送一个从机地址,注意此时该地址的第8位为0,表明是向从机写命令,这时候主机等待从机的应答信号(ACK),当主机收到应答信号时,发送要访问的地址,继续等待从机的应答信号,当主机收到应答信号后,主机要改变通信模式,所以主机发送重新开始信号,然后紧跟着发送一个从机地址,注意此时该地址的第8位为1,表明将主机设置成接收模式开始读取数据,这时主机等待从机的应答信号,当主机收到应答信号时,就可以接收1个字节的数据,当接收完成后,主机发送非应答信号,表示不再接收数据,主机进而产生停止信号,结束传送过程。 AW60从PCF8563读一字节数据的流程图如图4-5所示。 AW60从PCF8563中读一个字节数据的具体C语言程序如下所示: uint8IICread1(uint8DeviceAddr,uint8AccessAddr,uint8*Data) { I2C_IIC1C|=1< SendSignal('S');//发送开始信号 I2C_IIC1D=DeviceAddr&0xFE;//发送设备地址,并通知从机接收数据 if(Wait('T'))//等待一个字节数据传送完成 return1;//没有传送成功,读一个字节失败 if(Wait('A'))//等待从机应答信号 return1;//没有等到应答信号,读一个字节失败 I2C_IIC1D=AccessAddr;//发送访问地址 if(Wait('T'))//等待一个字节数据传送完成 return1;//没有传送成功,读一个字节失败 if(Wait('A'))//等待从机应答信号 return1;//没有等到应答信号,读一个字节失败 I2C_IIC1C|=1< I2C_IIC1D=DeviceAddr|0x01;//通知从机改为发送数据 if(Wait('T'))//等待一个字节数据传送完成 return1;//没有传送成功,读一个字节失败 if(Wait('A'))//等待从机应答信号 return1;//没有等到应答信号,读一个字节失败 I2C_IIC1C&=~(1< *Data=I2C_IIC1D;//读出IIC1D,准备接收数据 if(Wait('T'))//等待一个字节数据传送完成 return1;//没有传送成功,读一个字节失败 SendSignal('O');//发送停止信号 *Data=I2C_IIC1D;//读出接收到的一个数据 return0;//正确接收到一个字节数据 读取多个字节数据的C语言程序如下所示: uint8IICreadN(uint8DeviceAddr,uint8AccessAddr,uint8Data[],uint8N) { uint8i,j; for(i=0;i { for(j=0;j<15;j++);//最小延时(发送的每个字节之间要有时间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MC9S08AW60 电子 万年历 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)