单片机 电子台历毕业论文.docx
- 文档编号:9756556
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:84
- 大小:578.98KB
单片机 电子台历毕业论文.docx
《单片机 电子台历毕业论文.docx》由会员分享,可在线阅读,更多相关《单片机 电子台历毕业论文.docx(84页珍藏版)》请在冰点文库上搜索。
单片机电子台历毕业论文
电子台历设计
中文摘要
这次我的毕业论文是进行电子台历的设计与制作。
随着时代的进步,很明显电子产品的使用给我们的生活带来了极大的便利,多功能电子台历的使用不仅让我们知道时间也让我们得到一些别的想要的信息,比如温度等。
因而我本次的毕业设计有一定的实用性,我也很努力将我的设计做好。
我的设计思路是:
首先我是使用STC89C52RC单片机作为主控制器,DS1302时钟芯片来实现时间和日历,采用AT24C02作为存储模块,以及利用数字式的温湿度传感器DHT11作为温湿度的采集模块,显示器采用的是带中文字库的12864液晶屏。
在本次设计中我除了实现的基本的时间,也实现了星期、生肖、闹钟、节日、温湿度、定时开关机等。
后面我也会对我所用的硬件模块分别做一些介绍。
关键词:
电子台历;DS1302时钟芯片;12864液晶;DHT11传感器
Thedesignofelectroniccalendar
ABSTRACT
Thistimemygraduationthesisisthedesignandmanufactureofelectroniccalendar.Withthedevelopmentofthetimes,itisclearthatusingoftheelectronicproductsbringgreatconveniencetoourlives,theusingofmulti-functionelectroniccalendarnotonlyletusgetthetime,butalsogetotherinformation,suchastemperatureandsoon.Somygraduateddesignreachtoacertainextentpractical,I'mtryingmybesttodesignitwell.
Mydesignideais:
first,I'musingSTC89C52RCMicro-controllerastheMaincontroller,usingtheclockchipofDS1302getthetimeandcalendar,usingAT24C02asstoragemodule,AndusingDHT11asthecollectionoftemperatureandhumiditymodule,Andthedisplayis12846LCDthathasChineseword.
Inthisdesignment,besidesthetime,IalsorealizedwhatIdesignedbefore,suchasweek、twelveyearsofanimals、alarmclock、holidays、temperatureandhumidity、timingswitcherofelectroniccalendarandsoon.NextIwillmakesomeintroductionofthehardwaremodulewhatIhaveused.
KeyWords:
Electroniccalendar;TheclockchipofDS1302;12864Lcd;DHT11sensor
目录
1.研究目的及意义4
2.设计要求4
3.设计思路4
3.1主控制器的选择4
3.2显示模块选择5
3.3时钟芯片选择5
3.4温、湿度传感器的选择5
3.5报警模块和按键模块6
3.6最终设计方案6
4.主要芯片介绍7
4.1STC89C52单片机7
4.1.1单片机的介绍7
4.1.2单片机的引脚说明7
4.2DS1302时钟芯片9
4.2.1DS1302的介绍9
4.2.2DS1302的引脚说明9
4.3DHT11温湿度传感器10
4.3.1DHT11的介绍10
4.3.2DHT11的引脚说明11
4.412864液晶11
4.4.112864的介绍11
4.4.212864的引脚说明12
4.5AT24C02存储器13
4.5.1AT24C02的介绍13
4.5.2AT24C02的引脚说明13
5、软件总体设计14
6.设计过程中的难点及问题16
6.1阳历与阴历转换16
6.2屏幕没有显示字16
6.3闹钟没响17
6.4自动开关机17
7.硬件调试结果及思考17
8.总结18
参考文献19
致谢19
附录一20
附录二22
1.研究目的及意义
一直以来,人们在日常的生活和工作中都离不开对时间的准确把握。
同时也随着科技的发展,电子台历成为了人们不可或缺的工具。
现在的电子台历不仅是显示时间,很可以显示很多别的信息,比如闹钟、温度、湿度等,很受人们的喜欢。
而目前市场上的电子台历除了功能强大以外,外观越来越简单,使用也越来越方便,市场发展前景也比较好。
主要是因为对于电子台历设计也有多种实现的方法,此次设计是采用C52单片机作为主控制器来实现的。
在设计的过程中,将我们学习的理论与实践相结合,自己动手制作硬件电路以及编写软件程序使我们收获颇丰,进一步提高了我们运用所学知识进行设计的能力。
这也是对我们大学四年的学习做一次检验,让我们了解自己的能力以及还待改进的不足之处。
2.设计要求
利用所学的电子技术知识、单片机知识、c语言知识完成了基于单片机实现电子台历的电路仿真以及搭建。
主要模块有获取时间模块、获取温度模块、获取湿度模块。
设计要求:
1.可显示公历、农历、节气、节日、天气、温度、湿度等信息;
2.具有闹钟和定时关机功能;
3.自制电源,可外接220V交流电源。
3.设计思路
3.1主控制器的选择
首先要选择一个单片机作为主控制器,下面是我所做的两种选择。
方案一:
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
缺点是内存比较小。
方案二:
AT89C52[1]是一个低电压,高性能CMOS8位单片机,内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM)。
考虑到我的代码比较多,因此选择内存相对较大的AT89C52。
3.2显示模块选择
因为我要把时间、温度、湿度等信息都要显示出来,这时我必须要有一个显示模块。
下面是我之前的选择方案。
方案一:
采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏。
方案二:
显示器件采用通用型1602液晶,可显示32个字符,屏幕字符比较小,能显示的字符有限,而在此设计中要显示的内容比较多,因而不采用1602液晶显示屏。
方案三:
显示器件采用12864液晶,提供8位,4位并行接口及串行接口可选;并行接口适配M6800时序;自动电源启动复位功能;该液晶显示方便,功能强大,完全能满足数字万年历的显示要求。
3.3时钟芯片选择
因为电子台历中要显示时间,所以必须要时钟模块,下面是我之前的选择方案。
方案一:
利用单片机的定时计数器来产生秒信号,继而实现年、月、日、时、分秒的计时,虽然这样做的成本是比较低的,但是我们在这样做时,回导致我们设定的时间的误差比较大,所以不建议使用这种方案。
方案二:
采用DS1302[2]时钟芯片实现时钟是比较方便的,而且DS1302也经过校准的,计数准确,所以精度比较高。
并且这个芯片我之前也运用过,所以对于它的资料也知道的比较多一些。
3.4温、湿度传感器的选择
根据我的任务书的要求,我要显示出温度和湿度,这就必须要有温度和湿度传感器来采集信号,下面是我之前制定的选择方案。
方案一:
使用热敏电阻作为温度传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。
湿度传感器使用HS1101,在电路中等效于一个电容器Cx,其电容随所测空气的湿度增大而增大。
这些设计方案需用A/D转换电路,增加硬件成本而且特性曲线并不是严格线性的,会产生较大的测量误差。
方案二:
采用数字式温湿度传感器DHT11,此类传感器为数字式传感器而且易进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。
另外,数字式温湿度传感器还具有测量精度高、测量范围广等优点。
3.5报警模块和按键模块
因为我要实现闹钟,所以在设定一个闹钟时间后,在达到那个时间时就要报警。
而我第一时间就想到了用蜂鸣器,因为对于蜂鸣器作为报警模块我以前也用过,用起来也比较方便,成本也会较低。
我在设置调整时间时肯定要用到按键,我选择了使用TS-033按键,使用方便,价格也很便宜。
3.6最终设计方案
综上各方案所述,对此次作品的方案选定:
采用AT89C52作为主控制系统;DS1302提供时钟;数字式温湿度传感器DHT11提供温度和湿度数据;12864液晶屏作为显示,AT24C02作为存储模块,报警模块使用蜂鸣器,使用TS-033型号的小按键用来进行设置参数。
显示屏(12864液晶)
报警模块(蜂鸣器)
AT89C52
按键模块
TS-033
存储模块AT24C02
温度和湿度采集模块DHT11
时间模块DS1302
图3.1万年历的系统框架图
4.主要芯片介绍
4.1STC89C52单片机
4.1.1单片机的介绍
(1)CPU:
单片机的CPU就相当于一个电脑的CPU,是中央处理器,是单片机内部的核心部件,它决定了单片机的主要特性。
它包括:
运算器、控制器、存储器。
(2)RAM:
是用于存放需要读写的数据,例如运算的中间结果、最终的结果以及将要显示的数据。
它的内部有128个8位的用户数据存储单元以及128个专用寄存器单元,它们都是统一编址的,专用寄存器只能用于存放控制指令,用户只能访问但不能用于存放用户数据,所以用户实际能使用的RAM只有128个,用来存放读写的数据以及运算的中间结果或者用户自定义的字型表。
(3)ROM:
总共有4096个8位的掩膜ROM,它用于存放用户程序以及原始数据或者表格。
(4)I/O口:
四组8位的并行I/O口,既可以用作输入,也可以用作输出。
(5)T/C定时器/计数器:
两个16位的可编程定时器/计数器,可以工作在定时模式和计数模式。
(6)中断源的中断控制系统:
它具备较完善的中断功能,包括两个外中断和两个定时/计数器中断以及一个串行中断,这样就可满足不同的控制要求,并且具有2级的优先级选择。
(7)全双工串行口:
全双工UART的串行I/O口,它用于实现单片机之间或者单片机与微机之间串行通信;
(8)片内振荡器和时钟的产生电路,石英晶体和微调电容则需要外接。
最高的振荡频率取决于单片机型号和性能。
4.1.2单片机的引脚说明
图4.1STC89C52封装引脚图图4.2STC89C52仿真引脚图
STC89C52的引脚采用的是40Pin封装的双列直插DIP结构。
表1STC89C52引脚介绍[3]
Pin40
VCC,接电源
Pin20
GND,接地
Pin18和Pin19
XTAL1和XTAL2时钟产生电路引脚,这里使用的石英晶体振荡频率为11.0592MHz。
P0、P1、P2和P3口
I/O口,4组8位共32个
Pin9
RST,复位信号输入端。
高电平有效
Pin29
当访问外部程序存储器时,此引脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。
Pin30
ALE/
当访问外部程序存储器时,此引脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。
Pin31
/Vpp,为外部程序访问控制端,对于STC89C52RC来说,内置有8kB的程序存储器,当
为高电平并且程序地址小于8kB时,读取内部程序存储器指令数据,而超过8kB地址则读取外部指令数据。
如
为低电平,则不管地址大小,将自动转向访问外部程序存储器中的程序。
在我的设计中,我没有连接复位电路,因为我后面所要实现的是根据时间实现自动开关机,所以我不能在开机后又进行复位,恢复到初始设定的值。
所以在单片引脚那块我只连接了一个时钟振荡电路,这里使用的石英晶体振荡频率应为32.768KHz。
时钟振荡电路[7]如下图所示。
图4.3时钟振荡电路
4.2DS1302时钟芯片
4.2.1DS1302的介绍
DS1302[11]是一种串行接口的实时时钟芯片。
芯片可以对年、月、日、星期、时、分、秒进行计时,同时时钟记录可以自动地进行闰年补偿,及时且准确,接口也很简单,使用起来很方便,工作电压范围也较宽,功耗比较低。
而且可以进行双电源供电,当一端掉电后,另一端电源还能继续地支持它工作,从而保证了时间的计数持续进行。
4.2.2DS1302的引脚说明
表2DS1302的引脚说明[2]
Pin1
Vcc2为主电源。
Pin8
Vcc1为后备电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
Pin2和Pin3
X1、X2是振荡源,外接32.768kHz晶振。
Pin5
是复位/片选线,通过把
输入驱动置高电平来启动所有的数据传送。
当
为高电平时,所有的数据传送都会被初始化,从而可以对DS1302进行操作。
如果在传送过程中
置为低电平,就会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc>2.0V之前,
必须保持低电平。
只有在SCLK为低电平时,才能将
置为高电平。
Pin6
I/O为串行数据输入输出端(双向),在控制指令字输入后的下一个SCLK时钟的上升沿时,使数据写入DS1302,数据输入从低位即0位开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
Pin7
SCLK为时钟输入端。
下面是DS1302的封装引脚图和与单片机的引脚连接图
图4.4DS1302引脚封装图
图4.5DS1302与单片机连接引脚图
4.3DHT11温湿度传感器
温度和湿度是自然界基本的物理量,我们可以通过温度和湿度对我们所处的环境有一定的了解。
因而设计里面加入DHT11温湿度传感器使电子台历的功能更加齐全,我们随时都可以看到温度和湿度的变化。
4.3.1DHT11的介绍
DHT11数字温湿度传感器是应用温湿度传感技术和专用的D/A转换技术来制作的,并且对于其输出的数字信号已经校准,从而保证了该产品的稳定性和精确度。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、响应快、稳定性强、价格较低等优点。
同时它使用起来也很方便,因为传出的信号是数字信号,就不需要我们再进行别的处理了。
4.3.2DHT11的引脚说明
(1)电源引脚
DHT11的电源引脚所接的电压范围为3-5.5V。
电源引脚(VDD,GND)之间可增加一个100nF的电容,用以去耦滤波。
(2)串行接口(单线双向)[4]
DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,获得的数据包括温度和湿度的数据,而温度和湿度的数据基于整数部分也有小数部分,目前的小数部分还没有应用。
我在本次设计中中只采用了温度和湿度的整数部分的数据。
(3)接地端
直接接地即可。
表3DHT11引脚说明
Pin
名称
注释
1
VDD
供电3-5.5VDC
2
DATA
串行数据,单总线
3
GND
接地,电源负极
我的设计中DHT11温湿度传感器的I/O(DQ)引脚连接的是单片机的P3.5引脚。
(由于protues里没有DHT11元件,所以我画了一个别的图代替的)
图4.6DHT11与单片机的引脚连接图
4.412864液晶
4.4.112864的介绍
在我的设计中,要显示阳历、阴历、星期、时间、生肖、温度及节日提醒,因此对显示器的要求较高。
在这里我采用QC12864B汉字图形点阵液晶[6]作为显示模块,它可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)。
可同时显示汉字个数为4x8=32个,同时显示字符的个数为4x16=64个。
表412864汉字坐标[6]
X坐标
Line1
80H
81H
82H
83H
84H
85H
86H
87H
Line2
90H
91H
92H
93H
94H
95H
96H
97H
Line3
88H
89H
8AH
8BH
8CH
8DH
8EH
8FH
Line4
98H
99H
9AH
9BH
9CH
9DH
9EH
9FH
由表可以看出,液晶显示内容时可以在相应的地址上进行操作,要注意选择显示的地址,避免地址重复选择,不然可能出现显示混乱或者不显示的结果。
4.4.212864的引脚说明
表512864引脚说明[6]
管脚号
管脚名称
电平
管脚功能描述
1
VSS
0V
电源地
2
VCC
3.0+5V
电源正
3
V0
-
对比度(亮度)调整
4
RS(CS)
H/L
RS=“H”,表示DB7——DB0为显示数据
RS=“L”,表示DB7——DB0为指令数据
5
R/W(SID)
H/L
R/W=“H”,E=“H”,数据被读到DB7——DB0
R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR
6
E(SCLK)
H/L
使能信号
7
DB0
H/L
三态数据线
8
DB1
H/L
三态数据线
9
DB2
H/L
三态数据线
10
DB3
H/L
三态数据线
11
DB4
H/L
三态数据线
12
DB5
H/L
三态数据线
13
DB6
H/L
三态数据线
14
DB7
H/L
三态数据线
15
PSB
H/L
H:
8位或4位并口方式,L:
串口方式
16
NC
-
空脚
17
/RESET
H/L
复位端,低电平有效
18
VOUT
-
LCD驱动电压输出端
19
A
VDD
背光源正端(+5V)
20
K
VSS
背光源负端
注意:
Pin3,即V0脚是调整屏幕的亮度的,所以我们最好给这个引脚接一个滑动变阻器,因为不管这个引脚的电压是偏高还是偏低,都会导致屏幕的显示不清晰甚至是看不见,从而导致我们对电路调试结果的误解。
在本设计中,我用的是并口的方式,即使PSB=1即可。
图4.7LCD12864引脚
图4.8控制显示屏的开关电路
4.5AT24C02存储器
4.5.1AT24C02的介绍
在我的设计中,我是运用AT24C02存储时间的,这样我就可以设置闹钟时间和闹钟是否开启以及定时开关机的时间和是否开启的存储,保证了在掉电以后我所设置的时间参数不会丢失。
AT24C02是一个2K位串行CMOSE2PROM,内部含有256个8位字节。
AT24C02的使用对我们需要实现对一些数据的存储起了很大的作用。
4.5.2AT24C02的引脚说明
表6AT24C02的引脚介绍[5]
SCL
串行时钟,AT24C02串行时钟输入管脚用于产生器件所有数据发送或接收的时钟,这是一个输入管脚。
SDA
串行数据/地址,用于对所有数据的发送或接收。
A0、A1、A2
器件地址输入端,最多可以寻址8个。
当只有一个AT24C02被总线寻址,这三个地址输入脚(A0、A1、A2)必须连接到Vss。
根据不同情况来判断。
WP
写保护,如果WP管脚连接到Vcc,所有的内容都不能写只允许读。
当WP管脚连接到Vss或悬空时则允许器件进行正常的读/写操作。
下面是AT24C02的引脚封装图和与单片机引脚的连接图
图4.9AT24C02芯片引脚
图4.10AT24C02与单片机引脚接法图
5、软件总体设计
我们平时在学校里做课程设计时都是利用Keil(C51)软件来进行程序的编写的。
C语言我们也开过这门课的课程,相对于汇编语言,我还是比较习惯用C语言。
C语言[9]是一种常用的程序设计语言,C语言也可以像汇编语言一样对位、字节和地址进行操作。
目前,我们国内使用C语言进行程序设计的人比较多,虽然汇编语言更加精炼,但C语言更容易让我们理解,所以C语言也成为软件开发的主流语言。
C语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。
使用C语言开发系统减少了开发时间,明显增强程序的可读性,便于改进、扩充和移植。
而针对8051的C语言日趋成熟,成为了专业化的实用高级语言。
虽然汇编语言效率高,对硬件的可操控性更强,体积小,但是不易维护,可移植性差。
我的本次设计实现了阳历和农历的显示、星期、生肖、节日、节气、闹钟、温度和湿度的显示以及自动开关机功能。
时间和闹钟、开关机状态的设置都是通过按键来调整的[12]。
下面是我的主程序流程图。
开始
初始化
读写日期、时间、温度、湿度、节气、节日
“设置”键按的次数
1234568/9/1011/12/1314/15/16
调整月份
调整日期
设置关机
设置开机
设置闹钟
调整年份
调整星期
调整小时
调整分钟
均通过“加减”改变设置
否
是否按下“确认”键
是
回到主界面,显示设定好的数值
设定的日期如果是否是节日或节气
否
是
显示这个日期对应的节日和节气
结束
图5.1主程序流程图
6.设计过程中的难点及问题
6.1阳历与阴历转换
我觉得最难的部分还是阳历与阴历转换,在做之前我真的不知道农历到底是怎么和阴历一一对应的,我查找了很多资料,才找到下面的介绍以及代码[11]。
阳历与阴历的转换,这部分程序是参考别的程序,程序中总共有199(1901-2099)年的阳历对应阴历数据。
阳历对应的阴历数据(每年占用单片机三字节)格式:
第一字节BIT7-4位表示闰月月份,为0,则无闰月;BIT3-0位对应阴历第1-4月的大小。
第二字节BIT7-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子台历毕业论文 电子 台历 毕业论文