基于STC89C52RC万年历毕业设计.docx
- 文档编号:26989430
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:34
- 大小:327.47KB
基于STC89C52RC万年历毕业设计.docx
《基于STC89C52RC万年历毕业设计.docx》由会员分享,可在线阅读,更多相关《基于STC89C52RC万年历毕业设计.docx(34页珍藏版)》请在冰豆网上搜索。
基于STC89C52RC万年历毕业设计
基于STC89C52RC万年历毕业设计
目录
第一章前言9
1.1引言10
1.2功能要求10
第二章系统硬件电路的设计14
2.1电路设计14
2.2系统硬件概述15
第三章系统软件设计18
3.1程序设计18
3.2程序流程图19
结论22
致谢23
参考文献24
附录(主程序源代码)25
第一章前言
随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。
二十一世纪的今天,最具代表性的计时产品就是电子时钟,它是近代世界钟表业界的第三次革命。
第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。
第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。
第三次革命就是单片机数码计时技术的应用,使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指标计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期的显示功能,它更符合消费者的生活需求!
因此,电子时钟的出现带来了钟表计时业界跨跃性的进步……
我国生产的电子时钟有很多种,总体上来说以研究多功能电子时钟为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。
商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子时钟的设计,使其更加的具有市场。
本设计为软件,硬件相结合的一组设计。
在软件设计过程中,应对硬件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。
基本的要了解一些主要器件的基本功能和作用。
除了采用集成化的时钟芯片外,还有采用MCU的方案,利用STC89系列单片机制成电子控制电路,采用软件和硬件结合的方法,控制LCD液晶显示,分别用来显示年、月、日、时、分、秒,其最大特点是:
硬件电路简单,安装方便易于实现,软件设计独特,可靠。
STC89C52RC是由宏晶公司推出的一种小型单片机。
95年出现在中国市场。
其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被中国广大用户接受。
本文介绍了基于STC89C52RC单片机设计的电子时钟。
首先我们在绪论中简单介绍了单片机的发展与其在中低端领域中的优势以及课题的开发意义;接着介绍了STC89C52RC单片机的硬件结构和本毕业设计所要外扩的LED液晶显示方法,并在此基础上实现了时钟基本电路的设计;然后使用单片机C语言进行时钟程序的设计,程序采用模块化结构,使得逻辑关系简单明了,维护方便。
1.1引言
随着电子技术的发展,人类不断研究,不断创新纪录。
目前万年历已经不再局限于以书本形式出现。
以计算机软件或者电子产品形式出现的万年历被称为电子万年历。
与传统书本形式的万年历相比,电子万年历得到了越来越广泛的应用,采用电子时钟作为时间显示已经成为一种时尚。
目前市场上各式各样的电子时钟数不胜数,但多数是只针对时间显示,功能单一不能满足人们日常生活需求。
本文提出了一种基于STC89C52RC单片机的万年历设计方案,本方案以STC89C52RC单片机作为主控核心,与时钟芯片DS1302、红外接收管HS0038B、LCD显示等模块组成硬件系统。
在硬件系统中设有温度检测模块和LCD显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进行校准、选择时间等,综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
1.2功能要求
本设计准备实现的功能:
(1)显示公历日期功能(年、月、日、时、分、秒以及星期)
(2)可通过红外遥控切换年、月、日及时、分、秒的显示状态
(3)可随时调校年、月、日或时、分、秒
(4)可每次增、减1进行时间调节
(5)可动态完整显示年份,实现真正的万年历显示
1.3方案论证
1.3.1技术可行性
随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发展。
集成技术的最新发展之一是将CPU和外围芯片,如程序内存、数据存储器、并行I/O口、串行I/O口、定时/计数器、中断控制器及其它控制部件集成在一个芯片之中,制成单片计算机。
而近年来推出的一些高档单片机还包括有许多特殊功能单元,如A/D、D/A转换器、调制解调器、通信控制器、锁相环、DMA、浮点运算单元、PWM控制输出单元、PWM输出时的死区可编程控制功能等。
因此,只要外加一些扩展电路及必要的信道接口就可以构成各种计算机应用系统,如工业流水线控制系统、作为家用电器的主控制器、分布式控制系统的终端节点或作为其主控制节点起中继的作用、数据采集系统、自动测试系统等。
单片机的出现,并在各技术领域中得到如此迅猛的发展,与单片机构成计算机应用系统所形成的下述特点有关:
1、单片机构成的应用系统有较大的可靠性。
这些可靠性的获得除了依靠单片机芯片本身的高可靠性以及应用有最少的联接外,还可以方便地采用软、硬件技术。
2、系统配置、系统扩展较典型、规范,容易构成各种规模的应用系统,应用系统有较高的软、硬件利用系数。
3、由于构成的应用系统是一个计算机系统,相当多的测、控功能由软件实现,故具有柔性特征,不须改变硬件系统就能适当地改变系统功能。
4、具有优异的性能、价格比。
1.3.2单片机的选择
方案一:
采用传统的STC89C52RC作为万年历的控制核心。
单片机算术运算功能强,软件编程灵活、自由度比较大,可用软件编程实现各种算法和逻辑控制,并且由于其体积小、功耗低、技术成熟和成本低等优点,使其在各个领域应用广泛。
方案二:
采用STC10F04单片机,还带有非易失性Flash程序内存。
它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。
其主要特点如下:
8KBFLASHROM,可以擦除10000次以上,数据保存10年。
由于本系统对CPU运算速度要求很高,需要执行很复杂的运算,方案一成本比较低,适合做设计,方案二运算速度高、性能好,所以两种方案都有可取之处。
选用方案一作为主方案,方案二作为备用方案。
1.3.3显示模块的选择
方案一:
使用传统的LED数码管显示。
数码管具有:
低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度比较高,称重轻,精确可靠,操作简单。
数码管采用BCD编码显示数字,程序编译容易,资源占用较少。
方案二:
使用液晶显示屏显示时间数字。
液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。
但由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器的资源占用较多,其成本稍微偏高。
在使用时,不能有静电干扰,否则易烧坏液晶的显示芯片,不易维护。
根据以上的论述,采用方案二。
在本系统中,我们采用了1602液晶显示。
1.3.4时钟芯片的选择方案与论证
方案一:
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大,所以不采用此方案。
方案二:
采用DS1302时钟芯片实现时钟,DS1302芯片是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,而且精度高,工作电压为2.5V~5.5V,2.5V时电流小于300nA。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
根据以上的论述,采用方案二。
在本系统中,我采用了DS1302时钟芯片。
1.3.5键盘模块的选择
在对日期和时间进行切换,对日期和时间进行调节校准过程中,系统需要产生激励电流,因此需要用按键。
方案一:
使用红外遥控键盘。
红外遥控键盘是指直接一个I/O口与红外接收管输出端相连构成红外接收电路。
再配以红外遥控板构成一个红外收发系统,硬件配置简单灵活,软件结构复杂。
方案二:
使用矩阵式键盘。
矩阵式键盘是由行线和列线组成,按键位于行、列的交叉点上,行线、列线分别连接到按键开关的两端。
其特点是简单且不增加成本,这种键盘适合按键数量较多的场合。
根据以上的论述,因本系统需要外观简化、使用方便,所以采用方案一红外遥控键盘。
1.3.6总体方案论证与选择
按照系统设计功能的要求,初步确定系统由主控模块、时控模块、显示模块、红外接收模块和闹铃模块共5个模块组成,电路系统构成框图如图1-1所示。
图1-1电子万年历电路系统构成框图
主控芯片使用51系列STC89C52RC单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟DS1302。
采用DS1302作为计时芯片,可以做到计时准确。
更重要的是,DS1302可以在很小电流的后备电源(2.5~5.5V电源,在2.5V时耗电小于300nA),而且DS1302可以编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电。
显示模块采用普通的LCD1602显示屏。
第二章系统硬件电路的设计
2.1电路设计
电子万年历电路原理图为如图2-1所示,系统由主控制器STC89C52RC、时钟电路DS1302、1602液晶显示电路、闹铃控制电路及红外接收电路组成。
图2-1电子万年历电路原理图
2.2系统硬件概述
2.2.1主控制器STC89C52RC
STC89C52RC单片机是宏晶科技推出的新一代高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟、机器周期和6时钟、机器周期可以任意选择。
主要特性如下:
1、增强型8051单片机,6时钟、机器周期和12时钟、机器周期可以任意选择,指令代码完全兼容传统8051单片机。
2、工作电压:
5.5V~3.3V
3、工作频率范围:
0~44MHz。
4、用户应用程序空间为8K字节
5、片上集成512字节RAM
6、ISP(在系统可编程)/IAP(再应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RXD/P3.0,TXD/P3.1)直接下载用户程序,数秒即可完成一片。
7、具有看门狗功能
8、共3个16位定时器/计数器。
及定时器T0、T1、T2
9、工作温度范围:
-40~+85度(工业级)/0~75度(商业级)
2.2.2时钟电路DS1302
DS1302的性能特性:
1、实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行比较;
2、用于高速资料暂存的31*8位RAM;
3、最少引脚的串行I/O;
4、2.5~5.5V电压工作范围;
5、2.5V时电流小于300nA;
6、用于时钟或RAM数据读/写的单字节或多字节数据传送方式;
7、简单的三线接口;
8、可选的慢速充电(至VCC1)的能力。
DS1302工作方式简介及数据操作原理
DS1302可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个33*8的用于临时性存放数据的RAM寄存器。
DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。
它经过一个简单的串行接口与微处理器通信。
实时时钟/日历提供秒、分、时、日、周、月和年等信息。
对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。
时钟的运行可以采用24小时或带AM/PM的12小时格式。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多字节的时钟信号或RAM数据。
2.2.3显示模块
显示部分采用普通的1602液晶显示,如图2-1,以减少硬件电路。
1602液晶模块采用hd44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,1602与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROM(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。
IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDRAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种8位字符编码和字符的对应关系。
2.2.4红外接收模块
红外接收电路采用HS0038B红外接收头接受红外线信号,硬件电路如图2-1所示,HS0038B是标准IR遥控接收器系列,支持所有主要的传输码,
主要特点如下:
1、光检测器及前置放大器包装在一起
2、低功耗
3、TTL和CMOS兼容性
4、改进对电场的屏蔽干扰
5、连续数据传输可能(800比特/每秒)
6、对环境光抗干扰能力强
HS0038B内部框图如图2-3所示
图2-3HS0038B内部框图
红外线遥控简介
红外线遥控就是将基带二进制信号调制为一系列的脉冲串信号,通过红外发射管发射波长为0.76~1.5μm之间的近红外线来传送控制信号的。
红外发光二极管一般有黑色、深蓝、透明三种颜色。
我们所使用的遥控器为普通车载遥控器,采用NEC协议传输信号
NEC协议标准:
遥控载波的频率为38KHz(占空比为1:
3);当某个按键按下时,系统首先发射一个完整的全码,如果键按下超过108ms仍未松开,视为按键一直按下,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。
一个完整的全码=引导码+用户码+用户反码+数据码+数据反码。
其中,引导码高电平4.5ms,低电平4.5ms;系统码8位,数据码8位,共32位;其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。
后16位为8位的操作码和8位的操作反码,用于核对数据是否接收准确。
收端根据资料码做出应该执行什么动作的判断。
其发射码值格式为图2-4所示
图2-4NEC标准下的发射码表示图
发射资料时0用“0.56ms高电平+0.565ms低电平=1.125ms”表示,资料1用“高电平0.56ms+低电平1.69ms=2.25ms”表示
即发射码“0”表示发射38khz的红外线0.56ms,停止发射0.565ms,发射码“1”表示发射38khz的红外线0.56ms,停止发射1.69ms
2.2.5温度采集模块
温度采集电路采用DS18B20作为温度检测传感器,硬件电路如图2-1所示,DS18B20特点如下
1、“一线总线”数字化温度传感器
2、3V到5.5V的宽电压工作范围
3、分辨率9~12位可设定,即精度可以设定0.5,025,0.125,0.0625
2.2.6闹铃控制模块
闹铃控制电路采用,商业闹钟的闹铃芯片作为发声主芯片,只需将闹铃芯片输出端与扬声器相连,触发端与单片机I/O口相连,由单片机控制其触发,硬件电路如图2-1所示。
2.2.7电源模块
电源模块采用78系列集成稳压器之7805作为主芯片,硬件电路如图2-1所示,其电路原理为由变压器将市电降为AC7.5V,再经桥式整流,电容滤波,7805稳压,及得到系统工作电压DC5V。
第三章系统软件设计
3.1程序设计
电子万年历的程序主要包括4个方面的内容:
一是DS1302从单片机中读取数据进行计数,二是利用外部中断检测红外接收头接收到的数据进行时间的调整,三是控制1602显示时间,四是读取DS18B20的温度检测信号。
STC89C52RC单片机主要I/O口的分配,P2.5~P2.7分别接1602的RS,RW,E三个功能端,P0口接1602的8位数据总线,P2.0接闹铃芯片触发端,P2.1~P2.3分别接DS1302的IO,SCLK,RST端,P2.4接DS18B20输出端,P3.3接HS0038输出端。
本系统采用多.C文件编写,*.h文件用来声明,*.c文件用来实现功能,具有较强的模块化。
3.2程序流程图
程序结构图
主程序流程图
中断流程图
结论
在三月份,我开始了我的毕业论文工作,时至今日,论文基本完成。
从最初的茫然,到慢慢的进入状态,再到对思路逐渐的清晰,整个写作过程难以用语言来表达。
历经了一个多月的努力,紧张而又充实的毕业设计终于落下了帷幕。
回想这段日子的经历和感受,在这次毕业设计的过程中,我拥有了无数难忘的回忆和收获。
在设计过程中,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。
较好的完成了设计,达到了预期的目的,完了最初的设想。
对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。
程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,和同学讨论,理清了思路,反而得心应手。
在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。
也练就了我的耐心,做什么事都在有耐心。
此次毕业设计中学到了很多很多东西,这是最重要的。
总之,这次毕业设计使我的能力得到了全方位的提高,使得我的操作能力和专业技能都有了很大的提高。
这次毕业设计的制作过程是我的一次再学习,再提高的过程。
在论文中我充分地运用了大学期间所学到的知识。
参考文献
[1]刘建辉,翼常鹏等.单片机智能控制技术[M].国防工业大学出版社,2007.4
[2]李朝青.单片机&DSP外围数字IC技术手册[M].北京航空航天大学出版社,2005.10
[3]关德新,冯文全.单片机外围器件实用手册电源分册[M].北京航空航天大学出版社,1998.6
[4]蔡美琴等.MCS-51单片机系统及其应用[M].高等教育出版社,1992.3
[5]HellDaleChipWeemsMarkHeadington[M].PROGRAMMINGINCFF
[6]陈明荧.8051单片机课程设计实训教程[M].清华大学出版社.
[7]郁慧娣.微机系统及其接口技术[M].东南大学出版社,1999
[8]何立民.单片机高级教程[M].北京航空航天大学出版社,2003
[9]王毓银.数字电路逻辑设计[M].高等教育出版社.
[10]陈志旺.51系列单片机系统设计与实践[M].电子工业出版社,2010.01
[11]李广弟.单片机原理及应用[M].北京航空航天大学出版社,2004
[12]谢嘉奎.电子线路[M].高等教育出版社,1999
[13]谭浩强.C程序设计[M].清华大学出版社2004.6
附录(主程序源代码)
MAIN.C文件代码如下
/******************************
**时间:
2013年2月4日22:
45:
02
**产品:
万年历
**功能说明:
红外遥控设定当前时间、日期;可设置闹铃,可显示当前温度值
**CPU作用:
51读写1302、1602、18B20、检测HS0038B高低电平变换;对所读取的数据进行处理
***********************************/
#include"main.h"
uint8show_1602_addr[]={"20--MON:
"};//1602第一排显示初始化
uint8show_1602_addr1[]={":
:
TEMP:
"};//1602第二排显示初始化
uint8show_Alarm_Clock[]={"AlarmClock:
"};
uint8show_Alarm_Clock1[]={":
"};
int8TIME1[7]={55,59,23,31,12,7,12};//初始化1302时间值12-9-30星期日23:
59:
55
int8clock[2]={0,0};
uint8USER=0;//进入校时标志
uint8IR_TIM=0;//红外按键加、减校时标志
uint8CLOCK_TIM=0;//红外按键设置闹钟加、减校时标志
uint8CLOCK_MODE=0;//进入闹钟校时标志
uint8CLOCK_KG=0;//闹钟开关标志
voidtiming(void);//时间校准模块
voidAlarm_Clock(void);//闹铃时间校准模块
voidclock_on_off(void);//闹铃开关模块
/******************************
**模块名称:
INT1_init
**功能:
打开外部中断
**输入:
无
**输出:
无
**全局变量:
无
**********************************/
voidINT1_init(void)
{
TMOD=0X01;
IT1=1;//下降沿触发中断
EX1=1;
EA=1;
}
voidmain(void)
{
uint8ans;
INT1_init();
init_1602(show_1602_addr,show_1602_addr1);//1602初始化
set_time(TIME1);//1302初始化
while
(1)
{
read_time(TIME1);//读取时间值
start_temp();//启动温度传感器
show_time(0x82,TIME1[6]);//送与1602显示年
show_time(0x85,TIME1[4]);//送与1602显示月
show_time(0x88,TIME1[3]);//*。
。
。
。
。
。
。
。
。
。
。
日
show_time(0xc0,TIME1[2]);//。
*。
。
。
。
。
。
。
。
。
时
show_time(0xc3,TIME1[1]);//。
。
。
*。
。
。
。
。
。
。
分
show_time(0xc6,TIME1[0]);//。
。
。
。
。
*。
。
。
。
。
秒
show_mon(TIME1[5]);//。
。
。
。
。
*。
。
。
星期
ans=read_temp();//读取温度值
write_1602_temp(0xce,ans);//将读取的温度值送与1602显示
if(USER!
=0)//进入校时
{
timing();
}
if(CLOCK_MODE!
=0)//进入闹铃校时
{
Alarm_Clock();
}
if(CLOCK_KG!
=0)//打开或关闭闹钟
{
clock_on_off();
}
}
}
/*******************************
**模块名称:
timing(void)
**功能:
数字钟校时
**输入:
无
**输出:
无
**全局变量:
USERTIME1[]IR_TIM
******************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STC89C52RC 万年历 毕业设计