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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于51单片机的万年历设计Word格式.docx

1、1.可以去学校图书馆或者网上, 搜集整理相关的资料, 做好前期理论准 备,为以后设计电路,看懂电路图做理论支持。2.构想万年历电路图,并且具有可行性,画出电路图。3.列举电路所需的电子元件, 仔细对比所需的元件的参数, 通过去电子 元件经销商或者网购购买。2.2设计要求1.显示年、月、日、时、分、秒。2.可通过键盘自动调整时间。3.计时精度:月误差小于 20 秒。3单片机发展概况单片机诞生于 20 世纪 70 年代末,它的发展史大致可分为三个阶段: 第一阶段( 1976-1978 ):初级单片机微处理阶段。该时期的单片 机具有 8 位 CPU,并行 I/O 端口、 8 位时序同步计数器,寻址范

2、围 4KB, 但是没有串行口。第二阶段( 1978-1982 ):高性能单片机微机处理阶段,该时期的单片 机具有 I/O 串行端口,有多级中断处理系统, 15 位时序同步技术器, RAM、 ROM 容量加大,寻址范围可达 64KB。第三阶段(1982- 至今)位单片机微处理改良型及 16 位单片机微处理 阶段民用电子产品、计算机系统中的部件控制器、智能仪器仪表、工业测 控、网络与通信的职能接口、军工领域、办公自动化、集散控制系统、并 行多机处理系统和局域网络系统。STC系列单片机是由 STMicroelectronics 公司生产,并有宏晶公司做大 陆代理的。本设计使用 STC89C52作为控

3、制核心,其管脚兼容其他 51 系列 的单片机,以下对 STC89C52进行简单讲解。STC89C52单片机包含中央处理器、 程序存储器 (ROM)、数据存储器 (RAM)、 定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地 址总线和控制总线等三大总线。采用 40Pin 封装的双列直接 DIP 结构,图 3.1是它们的引脚配置, 40个引脚中,正电源和地线两根, 外置石英振荡器 的时钟线两根, 4组8位共32个I/O 口,中断口线与 P3口线复用。现在对 各引脚功能说明如下(图 3.2):(1)主电源引脚Vcc :接5V 电源正端。Vss :接5V 电源地端。(2)输入输出引脚

4、P.0P0.7:P0口的 8 个引脚。在不接片外存储器与不扩展 IO 接口 时,可作为准双向输入输出接口。 在接有片外存储器或扩展 I O 接口时, P0口分时复用为低 8 位地址总线和双向数据总线。P1.0 P1.7:P1口的 8个引脚。可作为准双向 IO接口使用。对于 52 子系列, P1.0 与 P1.1还有第二种功能: P1.0 可用作定时器计数器 2 的 Word 资料计数脉冲输入端 T2。P1.1可用作定时器计数器 2 的外部控制端 T2EX。P2.0 P2.7:P2口的 8个引脚。可作为准双向 IO接口;有接有片外 存储器或扩展 IO 接口且寻址范围超过 256 个字节时, P2

5、口用作高 8 位 地址总线。P3.0 P3.7:P3口的 8个引脚。除作为准双向 IO接口使用外,还具 有第二种功能 ,详见图 3.2。图 3.1 STC89C52 单片机管脚图引脚第二功能P3.0RXD(串行口输入)P3.1TXD(串行口输出)P3.2INT0(外部中断 0 输入)P3.3INT1(外部中断 1 输入)P3.4P3.5T0(定时器 0 的外部输入)P3.6T1(定时器 1 的外部输入)P3.7WR(片外数据存储器写控制信号)RD(片外数据存储器读控制信号)图 3.2 P3 口第二功能表4设计原理与功能说明4.1设计思想以 STC89C52 单片机为核心,外接单片机复位电路,单

6、片机晶振电路, 时钟芯片 DS1302,按键电路,液晶显示电路,通过控制 STC89C52单片机 的接口来控制时钟芯片 DS1302模块,按键电路,液晶显示模块, 使液晶能 显示阳历年、月、日、星期相应的农历时间。图 4-1 硬件系统设计框架4.2总体电路图图 4-2 总电路图4.3时钟模块DS1302 是美国 DALLAS公司推出的一种高性能、低功耗、带 RAM 的 实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有 闰年补偿功能,工作电压为 2.5V5.5V。采用三线接口与 CPU 进行同步通 信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。DS1302 内部

7、有一个 318 的用于临时性存放数据的 RAM 寄存器。图 4-3 时钟电路图4.4液晶显示模块本系统选择的 LCD是 AMPIRE12864的汉字图形型液晶显示模块,可 显示汉字及图形。 单片机 P1 口作为数据输出口, RS,RW ,E分别通过 10K 的上拉电阻连接到单片机的 P0.0,P0.1,P0.2。VDD 接 5V 电源, VSS接地。 VEE 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对 比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器 调整对比度)。RS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择指令寄存器。 R/

8、W 为读写信号线,高电平 (1)时进行读操作,低电平 (0)时进行写操作。 E(或 EN)端为使能 (enable)端,下降沿使能。 DB0-DB7 为 双向数据总线, 同时最高位 DB7 也是忙信号检测位。 BLA、BLK分别为显示 器背光灯的正、负极。图 4-4 液晶显示电路图4.5按键模块本系统使用 5 个 button 元件分别设置为增加键、减小键、退出键、设 置/OK 键。4 个按键与一个 4 个驱动电阻相连,作为整个按键控制功能系统, 以触发 AT89C52 中断为方式使用设置功能。5系统测试5.1硬件测试在调试硬件时遇到过很多问题,但只要细心、认真检查这些问题都是可以避免的,主要

9、问题及解决办法现列如下:认真检查电路是否有短路的地方,线与线之间,管脚刺破邻近的漆包 线之间是否连接在一起,有的话要用刀划开,或者重新焊接。检查完毕后接通电源后 LCD1602 没有正确的显示。在不通电状态下用 万用表检测电路是否正常连接,在检查回路时发现有的点之间看似连接, 但由于虚焊导致其并无电气连接,只能对焊脚进行在加工直到解决问题。5.2软件测试由于本系统涉及到多个子程序,多个芯片的编程。首先必须对可编程 芯片的控制字即其控制指令要熟记于心。其次,芯片很多都有时钟输入端, 需要晶振支持。对芯片的读写都需要在相应的触发沿到来时才能进行。由 于 DS18B20 是串行通信数据,只用一个口线

10、传输,在处理采集的模拟信号 时需要一定的时间,会对延时有较高要求。所以在调用温度子程序时,先 关闭定时器 1 中断允许,在温度子程序反回时再打开定时器 1 中断允许。 6 总结在这几天的单片机课程设计中,老师先给我们介绍各种电子原件,让 我们了解了各种原件的不同以及注意事项,这次课程不仅仅让我们动了手 动了脑,更让我们体会到了理论与实践相结合的重要性,使我又不得不承 认理论的重要,我们必须打好基础。在实验设计的过程中,让我们体会到 以前从来没有过的动手能力,以及新颖的思维方式,让我从中获益非浅。 实验过程中,刚开始就参看电路指导书,画出了多电路图,进行了仿真, 但是由于实验元件选择的不恰当,是

11、的电灯不能依次闪烁,许但最后用万 用表才得以发现问题的所在,并在老师的指导下,终于完成了实验设计, 虽然道路艰难,但我们却也乐在其中,既锻炼了动手能力,有培养了动脑 能力,更加利于我们在社会上工作。经过我们组员三天的不懈努力,终于成功完成了万年历的设计,完成 了任务给出的所有要求 ,期间遇到了很多问题,相关资料的搜集、整理,编 写、调试程序的时候所出现的错误,硬件电路的选择、连接。例如:液晶 屏时间显示出现了错误即乱码现象,我们通过查找书籍和上网搜索的形式 知道了问题所在,与延时程序有关,修改了延时程序之后问题得到了解决。 在画原理图的时候,刚开始每个原件是用线连接的,但是后来发现越连越 多,

12、越连越乱,可视性太差了,很容易连错线,而且一旦出现错误,很难 检查出错误,所以我们换了一种更好的方法,对其进行标号处理,从而使 得原理图更加的简洁、直观,而且操作起来很方便。最终还是解决了这个 难题,诸如此类的错误在本次设计中有不少,但是通过我们组员之间的通 力合作与不懈努力终于克服了这些困难,本次实训不仅巩固了我们所学的 知识,而且学到了很多课本之外的东西,真正做到了学以致用,加强了逻 辑思维能力,对我们大学生来说试一次很好的经历,同时也让我们深刻体 会到了团结合作的重要性,组员之间合理分工,更加高效、迅速。另外对 于了解较少的知识,我们不要气馁,我们可以通过上网查阅、到图书馆借 书浏览等方

13、式了解学习,一定要相信自己,要持之以恒,这次经历加强了 我们分析问题、解决问题的能力,为我们以后的工作学习打下坚实的基础。 本次设计中同学之间明确分工,互相帮助,才有了本次设计的圆满成功。参考文献1.北京:北京航空航2006.何立民. MCS-51 单片机应用系统设计(系统配置与接口技术) 天大学出版社, 2003.2周立功 . 单片机实验与实践教程(三) .北京航空航天大学出版社,3谭浩强 . C语言程序设计 .北京:清华大学出版社 ,2006.4付家才 . 单片机实验与实践 .北京:高等教育出版社, 2006.5淡海英 . 关于单片机控制的数字万年历设计 J. 电子制作 ,2014.6鲁广

14、英 . 基于单片机电子万年历的设计与实现 J. 硅谷 ,2010.主程序#includelcd.h/* 函数名: Lcd1602_Delay1ms* 函数功能 延时函数,延时 1ms* 输入 c出 无* 说名 该函数是在 12MHZ 晶振下, 12 分频单片机的延时。void Lcd1602_Delay1ms(uint c) / 误差 0usuchar a,b;for (; c0; c-)for (b=199;bb-)for(a=1;aa-); LcdWriteCom 向 LCD 写入一个字节的命令* 输 入 com* 输 出*/#ifndef LCD1602_4PINS /当没有定义这个 L

15、CD1602_4PINS 时 void LcdWriteCom(uchar com) / 写入命令LCD1602_E = 0; / 使能LCD1602_RS = 0; / 选择发送命令LCD1602_RW = 0; / 选择写入LCD1602_DATAPINS = com; / 放入命令Lcd1602_Delay1ms(1); / 等待数据稳定LCD1602_E = 1; / 写入时序Lcd1602_Delay1ms(5); / 保持时间#elsevoid LcdWriteCom(uchar com) / 写入命令/ 选择写入命令 / 使能清零/由于 4 位的接线是接到 P0口的高四位,所以传

16、送高四位不用改/ Lcd1602_Delay1ms(1);LCD1602_DATAPINS = com 4; / 发送低四位#endif LcdWriteData 向 LCD 写入一个字节的数据 dat#ifndef LCD1602_4PINSvoid LcdWriteData(uchar dat) / 写入数据 LCD1602_RS = 1; / 选择输入数据LCD1602_DATAPINS = dat; / 写入数据#else void LcdWriteData(uchar dat) / 写入数据 / 选择写入数据 / 由于 4位的接线是接到 P0口的高四位, 所以传送高四位不用改LCD1

17、602_DATAPINS = dat / 写入低四位/ 写入时序 LcdInit() 初始化 LCD 屏/LCD 初始化子程序/ 开显示/ 开显示不显示光标/ 写一个指针加 1/ 清屏LcdWriteCom(0x80); / 设置数据指针起点void LcdInit()LcdWriteCom(0x32);LcdWriteCom(0x28);LcdWriteCom(0x0c);LcdWriteCom(0x06);LcdWriteCom(0x01);/ 将 8 位总线转为 4 位总线/ 在四位线下的初始化/ 设置数据指针起点#endif /* 实验名 : 定时器实验* 使用的 IO :* 实验效果

18、 :1602 显示时钟,按 K3 进入时钟设置,按 K1 选择设置的时分秒, 按 K2 选择*选择设置加 1。* 注意 : */ #include sbit K1=P36;sbit K4=P34;Word 资料sbit K3=P35;sbit K2=P33;unsigned char Time;/ 用来计时间的值void Delay1ms(unsigned int c);void TimerConfiguration();void Int0Configuration();unsigned char SetPlace; main 主函数* void main(void)unsigned char

19、 hour,minit,second;unsigned int i;TimerConfiguration();Int0Configuration();LcdInit();hour=12;LcdWriteData(0+hour/10);+hour%10);-);+minit/10);+minit%10);+second/10);+second%10);while(1)if(TR0=0)if(K1=0) / 检测按键 K2 是否按下Delay1ms(10); / 消除抖动if(K1=0)SetPlace+;if(SetPlace=3)SetPlace=0;while(i=60)second=0;e

20、lse if(SetPlace=1)minit+;if(minitminit=0;elsehour+;if(hour=24)hour=0;(K2=0)if(Time=20) / 一秒钟来到改变数值Time=0;if(second=60)if(minit=60)if(hour=24)/- 显示时钟 -/LcdWriteCom(0x83);LcdWriteCom(0x86); Delay1ms() 延时 1msvoid Delay1ms(unsigned int c) / 误差 0us unsigned char a,b;for(b=199; TimerConfiguration() 配置定时器值

21、void TimerConfiguration()TMOD = 0x01; / 选择工作方式 1TH00x3C;/ 设置初始值TL0 =0x0B0;EA =1;/ 打开总中断ET0 =/ 打开定时器0 中断TR0/ 启动定时器 Timer0() 定时器 0 中断函数void Timer0() interrupt 1 TH0 = 0x3C; / 设置初始值 TL0 = 0x0B0;Time+; Int0Configuration() 配置外部中断 0void Int0Configuration()/ 设置 INT0IT0=1;/ 跳变沿出发方式(下降沿)EX0=1;/ 打开 INT0 的中断允许。EA=1; Int0() interrupt 0 外部中断 0 的中断函数*

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

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