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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、基于51单片机的万年历设计单片机课程设计 题 目基于51单片机的万年历设计 学生XX 专业班级 学 号 院 系 指导教师 完成时间 1课程设计的目的1.通过制作万年历,可以对单片机这门课程更好的认识。2.理论与实践结合,提高自己的动手能力。3.学会与合作者更好的交流学习,共同进步和提高。4.能够增长查阅资料的能力,视野更加开阔。5.拓展其他学科的联系,全面开展。6.培养自我发现问题,解决问题的能力。2课程设计的任务与要求2.1设计任务1.可以去学校图书馆或者网上,搜集整理相关的资料,做好前期理论准备,为以后设计电路,看懂电路图做理论支持。 2.设想万年历电路图,并且具有可行性,画出电路图。3.

2、列举电路所需的电子元件,仔细比照所需的元件的参数,通过去电子元件经销商或者网购购置。2.2设计要求1.显示年、月、日、时、分、秒。2.可通过键盘自动调整时间。3.计时精度:月误差小于20秒。3单片机开展概况单片机诞生于20世纪70年代末,它的开展史大致可分为三个阶段: 第一阶段1976-1978:初级单片机微处理阶段。该时期的单片机具有 8 位CPU,并行 I/O 端口、8 位时序同步计数器,寻址范围 4KB,但是没有串行口。 第二阶段1978-1982:高性能单片机微机处理阶段,该时期的单片机具有I/O 串行端口,有多级中断处理系统,15 位时序同步技术器,RAM、ROM 容量加大,寻址范围

3、可达 64KB。 第三阶段1982-至今位单片机微处理改良型及 16 位单片机微处理阶段民用电子产品、计算机系统中的部件控制器、智能仪器仪表、工业测控、网络与通信的职能接口、军工领域、办公自动化、集散控制系统、并行多机处理系统和局域网络系统。STC系列单片机是由STMicroelectronics 公司生产,并有宏晶公司做大陆代理的。本设计使用STC89C52作为控制核心,其管脚兼容其他51系列的单片机,以下对STC89C52进展简单讲解。STC89C52单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和

4、控制总线等三大总线。采用40Pin封装的双列直接DIP构造,图3.1是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在对各引脚功能说明如下图3.2:1主电源引脚Vcc :接5V电源正端。Vss :接5V电源地端。2输入输出引脚P.0P0.7:P0口的8个引脚。在不接片外存储器与不扩展IO接口时,可作为准双向输入输出接口。在接有片外存储器或扩展IO接口时,P0口分时复用为低8位地址总线和双向数据总线。P1.0P1.7:P1口的8个引脚。可作为准双向IO接口使用。对于52子系列,P1.0 与 P1.1还有第二种功能:

5、P1.0 可用作定时器计数器2的计数脉冲输入端T2。P1.1可用作定时器计数器2的外部控制端T2EX。P2.0P2.7:P2口的8个引脚。可作为准双向IO接口;有接有片外存储器或扩展IO接口且寻址范围超过256个字节时,P2口用作高8位地址总线。P3.0P3.7:P3口的8个引脚。除作为准双向IO接口使用外,还具有第二种功能 ,详见图3.2。图3.1STC89C52单片机管脚图引脚第二功能P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7RXD串行口输入TXD串行口输出INT0外部中断0输入INT1外部中断1输入T0定时器0的外部输入T1定时器1的外部输入WR片外数据存储器写控制

6、信号RD片外数据存储器读控制信号图3.2 P3口第二功能表 4设计原理与功能说明4.1设计思想以STC89C52单片机为核心,外接单片机复位电路,单片机晶振电路,时钟芯片DS1302,按键电路,液晶显示电路,通过控制STC89C52单片机的接口来控制时钟芯片DS1302模块,按键电路,液晶显示模块,使液晶能显示阳历年、月、日、星期相应的农历时间。图4-1 硬件系统设计框架4.2总体电路图图4-2 总电路图4.3时钟模块DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进展计时,具有闰年补偿功能,工作电压为2.5V5.5V。

7、采用三线接口与CPU进展同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个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时选择数据存

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

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

10、模拟信号时需要一定的时间,会对延时有较高要求。所以在调用温度子程序时,先关闭定时器1中断允许,在温度子程序反回时再翻开定时器1中断允许。6总结在这几天的单片机课程设计中,教师先给我们介绍各种电子原件,让我们了解了各种原件的不同以及本卷须知,这次课程不仅仅让我们动了手动了脑,更让我们体会到了理论与实践相结合的重要性,使我又不得不成认理论的重要,我们必须打好根底。在实验设计的过程中,让我们体会到以前从来没有过的动手能力,以及新颖的思维方式,让我从中获益非浅。实验过程中,刚开场就参看电路指导书,画出了多电路图,进展了仿真,但是由于实验元件选择的不恰当,是的电灯不能依次闪烁,许但最后用万用表才得以发现

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

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

13、为我们以后的工作学习打下坚实的根底。本次设计中同学之间明确分工,互相帮助,才有了本次设计的圆满成功。参考文献1 何立民. MCS-51单片机应用系统设计系统配置与接口技术.:航空航天大学,2003.2 周立功. 单片机实验与实践教程三.航空航天大学,2006.3 谭浩强.C语言程序设计.:清华大学,2006.4 付家才. 单片机实验与实践.:高等教育,2006.5淡海英. 关于单片机控制的数字万年历设计J. 电子制作,2021.6鲁广英. 基于单片机电子万年历的设计与实现J. 硅谷,2021.附录一:总体电路原理图总体电路原理图附录二:主程序#includelcd.h/* 函 数 名 : Lc

14、d1602_Delay1ms* 函数功能 : 延时函数,延时1ms* 输 入 : c* 输 出 : 无* 说 名 : 该函数是在12MHZ晶振下,12分频单片机的延时。*/void Lcd1602_Delay1ms(uint c) /误差 0us uchar a,b; for (; c0; c-) for (b=199;b0;b-) for(a=1;a0;a-); /* 函 数 名 : LcdWrite* 函数功能 : 向LCD写入一个字节的命令* 输 入 : * 输 出 : 无*/#ifndef LCD1602_4PINS /当没有定义这个LCD1602_4PINS时void LcdWrit

15、e(uchar ) /写入命令 LCD1602_E = 0; /使能 LCD1602_RS = 0; /选择发送命令 LCD1602_RW = 0; /选择写入 LCD1602_DATAPINS = ; /放入命令 Lcd1602_Delay1ms(1); /等待数据稳定 LCD1602_E = 1; /写入时序 Lcd1602_Delay1ms(5); /保持时间 LCD1602_E = 0;#else void LcdWrite(uchar ) /写入命令 LCD1602_E = 0; /使能清零 LCD1602_RS = 0; /选择写入命令 LCD1602_RW = 0; /选择写入

16、LCD1602_DATAPINS = ; /由于4位的接线是接到P0口的高四位,所以传送高四位不用改 Lcd1602_Delay1ms(1); LCD1602_E = 1; /写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0;/ Lcd1602_Delay1ms(1); LCD1602_DATAPINS = 4; /发送低四位 Lcd1602_Delay1ms(1); LCD1602_E = 1; /写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0;#endif/* 函 数 名 : LcdWriteData* 函数功能 : 向LCD写

17、入一个字节的数据* 输 入 : dat* 输 出 : 无*/ #ifndef LCD1602_4PINS void LcdWriteData(uchar dat) /写入数据 LCD1602_E = 0; /使能清零 LCD1602_RS = 1; /选择输入数据 LCD1602_RW = 0; /选择写入 LCD1602_DATAPINS = dat; /写入数据 Lcd1602_Delay1ms(1); LCD1602_E = 1; /写入时序 Lcd1602_Delay1ms(5); /保持时间 LCD1602_E = 0;#elsevoid LcdWriteData(uchar dat

18、) /写入数据 LCD1602_E = 0; /使能清零 LCD1602_RS = 1; /选择写入数据 LCD1602_RW = 0; /选择写入 LCD1602_DATAPINS = dat; /由于4位的接线是接到P0口的高四位,所以传送高四位不用改 Lcd1602_Delay1ms(1); LCD1602_E = 1; /写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; LCD1602_DATAPINS = dat 4; /写入低四位 Lcd1602_Delay1ms(1); LCD1602_E = 1; /写入时序 Lcd1602_Delay1ms(5

19、); LCD1602_E = 0;#endif/* 函 数 名 : LcdInit()* 函数功能 : 初始化LCD屏* 输 入 : 无* 输 出 : 无*/ #ifndef LCD1602_4PINSvoid LcdInit() /LCD初始化子程序 LcdWrite(0x38); /开显示 LcdWrite(0x0c); /开显示不显示光标 LcdWrite(0x06); /写一个指针加1 LcdWrite(0x01); /清屏 LcdWrite(0x80); /设置数据指针起点#elsevoid LcdInit() /LCD初始化子程序 LcdWrite(0x32); /将8位总线转为4

20、位总线 LcdWrite(0x28); /在四位线下的初始化 LcdWrite(0x0c); /开显示不显示光标 LcdWrite(0x06); /写一个指针加1 LcdWrite(0x01); /清屏 LcdWrite(0x80); /设置数据指针起点#endif/* 实验名 : 定时器实验* 使用的IO : * 实验效果 :1602显示时钟,按K3进入时钟设置,按K1选择设置的时分秒,按K2选择*选择设置加1。 * 注意 :*/#include #includelcd.hsbit K1=P36;sbit K4=P34;sbit K3=P35;sbit K2=P33;unsigned cha

21、r Time;/用来计时间的值void Delay1ms(unsigned int c);void TimerConfiguration();void Int0Configuration();unsigned char SetPlace;/* 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*/void main(void) unsigned char hour,minit,second; unsigned int i; TimerConfiguration(); Int0Configuration(); LcdInit(); hour=12; LcdWri

22、teData(0+hour/10); LcdWriteData(0+hour%10); LcdWriteData(-); LcdWriteData(0+minit/10); LcdWriteData(0+minit%10); LcdWriteData(-); LcdWriteData(0+second/10); LcdWriteData(0+second%10); while(1) if(TR0=0) if(K1=0) /检测按键K2是否按下 Delay1ms(10); /消除抖动 if(K1=0) SetPlace+; if(SetPlace=3) SetPlace=0; while(i=6

23、0) second=0; else if(SetPlace=1) minit+; if(minit=60) minit=0; else hour+; if(hour=24) hour=0; while(i=20) /一秒钟来到改变数值 Time=0; second+; if(second=60) second=0; minit+; if(minit=60) minit=0; hour+; if(hour=24) hour=0; /-显示时钟-/ LcdWrite(0x80); LcdWriteData(0+hour/10); LcdWriteData(0+hour%10); LcdWrite(

24、0x83); LcdWriteData(0+minit/10); LcdWriteData(0+minit%10); LcdWrite(0x86); LcdWriteData(0+second/10); LcdWriteData(0+second%10); /* 函 数 名 : Delay1ms()* 函数功能 : 延时1ms* 输 入 : c* 输 出 : 无*/ void Delay1ms(unsigned int c) /误差 0us unsigned char a,b; for (; c0; c-) for(b=199;b0;b-) for(a=1;a0;a-); /* 函 数 名 : TimerConfiguration()* 函

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2