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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机课程设计论文万年历.docx

1、单片机课程设计论文万年历单片机课程设计论文设计题目:基于DS12CR887时钟芯片的电子万年历 目录:前言-P3摘要-P4正文-P4-P9 (1)设计方案的对比、选择及确定-P4-P5(2)设计思路-P5-P6(3)单元电路设计-P6-P7(4)程序设计流程-P8-P9(5)课程设计心得-P10-P13参考文献-P14附录-P15(1)附录一原器件清单-P15(2)附录二系统设计原理图-P16(3)附录三系统实物图-P17 (3)附录四源程序清单-P18-P31前 言随着电子技术的不断发展,单片机技术在设计中所体现在出来的优势越来越明显,它不仅是电子信息类专业的一个重要部分,而且在其它类专业工

2、程中也是不可缺少的。广泛地应用于家电、工业过程控制、仪器仪表、智能武器、航空和空间飞行器等领域发展更是迅速,已成为新一代一些电子设备不可缺少的核心部件。目前世界上单片机年产量已达十多亿片,通常是当年微处理器产量的4-5倍以上。用最少的芯片就能实现最强大的功能。可以想见,这是将来电子产品的主流方向,它将无可置疑地一步步取代其它同类产品,其数量之大和应用面之广,是其它任何类型的计算机所无法比拟的。单片机是应工业测控需要而诞生的。它把计算机最基本的功能电路,如CPU、程序存储器、数据存储器、I/O接口、定时、计数器、中断系统等集成到一块芯片上,形成单片形态的计算机。单片机通常以最小系统运行,在家用电

3、器中和常用的智能仪器仪表中常常可以“单片”工作,同时单片机在我们日常生活中也经常见到,如电子表、舞厅里的一些灯光的控制、一些招牌灯光的控制、工厂一些自动控制等。将来只要有自动控制方面的都会离不开单片机的开发和使用,对于现代的自动化控制起着举足轻重的作用。为了顺应形势发展的需要,我们学习了单片机课程,此次用液晶显示万年历和时间设置以及显示测温度的数据对单片机的学习起到了很好的巩固作用,尤其是对C语言程序的设计。 在此次课程设计的编写过程中得到了老师的大力支持和指导。以及参考了多种电子设计资料如电子线路设计实验测试(第二版),单片机的C语言应用程序设计(第四版)等。在编写此次课程设计的过程中由于时

4、间的仓促和本人的水平有限,在设计和制作的过程中难免出现缺点和不足之处,还请各位老师批评和指正。摘要:电子万年历是一种通过电子元器件控制、执行、显示的电子产品。其主要功能是显示公历、农历时间和温度,并能够进行时间的调节的定时和各种图形的变换。电子万年历广泛应用于各种公共场所、商业场合和居民家庭。由于其走时准确、误差极小、外观时尚等特点受到了广泛的欢迎。 我们的设计就是用目前我们掌握的相关知识,如:单片机、模拟电路、数字电路等,进行一个简单电子万年历的设计和开发调试。由于能力有限,我们设计的电子万年历的功能是:显示公历时间和环境温度并能够进行时间的调节的定时。正文:一、 设计方案的对比、选择及确定

5、:电子万年历的核心内容是对时间的处理。具体说是对各位时间的正常运行、进位、调节和定时。用什么来处理时间就成为了关键问题。大体思路有两种,一种是直接用89C51内部的定时器,另一种是用专门的事件处理芯片。前者的缺点很明显,定时不准确、误差较大且在进位处理上过于麻烦,需要编制大量的程序来控制时间的处理过程。而后一种就可以有效的解决以上提到的问题。首先时钟芯片一般都具有独立的工作频率和内部工作电源,这样就可摆脱对CPU依赖,从而稳定工作。其次时钟芯片内部有专门的控制寄存器和数据寄存器,这样就可以简单快捷地对其进行读取,同时也省去了大量的控制程序,控制较为简单。最后时钟芯片具有掉电后继续工作和数据保存

6、功能。因此我设计小组决定选取时钟芯片来设计电子万年历。而在芯片的选择上,常用的时钟芯片也分以下几种:1. 串口通讯类型(1)I2C接口Phlilps的PCF8563,PCF8583EPSON的RX8025 内置晶振,误差小,比较不错MAXIM-DALLAS的DS1307RICOH的RS5C372,国内的贝岭仿制型号BL5372日本精工的S-35390Intersil的X1288深圳威帆电子公司出的SD2000系列,晶振,电池全部内置,体积较大;(2)三线接口MAXIM-DALLAS的DS1305, DS1302,其中DS1302国内有相关的仿制产品,PTI的仿制型号是PT7C4302。 台湾合

7、泰的HT1380,HT13812. 并口通讯类型MAXIM-DALLAS DS12C887系列DS12C887的功能简介:DS12C887 实时时钟芯片功能丰富,可以用来直接代替IBM PC 上的时钟日历芯片DS12887,同时,它的管脚也和MC146818B、DS12887 相兼容。由于DS12C887 能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决子“千年”问题;DS12C887 中自带有锂电池,外部掉电时,其内部时间信息还能够保持10 年之久;对于一天内的时间记录,有12 小时制和24 小时制两种模式。在12 小时制模式中,用AM和PM

8、 区分上午和下午;时间的表示方法也有两种,一种用二进制数表示,一种是用BCD 码表示;DS12C887 中带有128 字节RAM,其中有11 字节RAM用来存储时间信息,4 字节RAM用来存储DS12C887 的控制信息,称为控制寄存器,113 字节通用RAM 使用户使用;此外用户还可对DS12C887 进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。基于以上优点我们决定选用DS12C887芯片来完成我们的设计。 而在显示方面,为了方便控制、显示清楚、便于读取,我们选择了LCD芯片1602。二、 系统设计思路此设计即液晶上显示年、月、日、时、分、秒、星期及温度(原理框图如图

9、1.1),电路包括以下几个部分:键盘、单片机、温度传感器及显示电路。图1.1 单片机实现液晶显示万年历以及温度总框图各部分说明:(1) 键盘用来校正,调节液晶上显示的时间。(2) 单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。(3) 温度传感器用来采集温度值。(4) 单片机发送的信号经过显示电路通过译码最终在液晶上显示出来。系统的主要元件:主芯片AT89S52 时钟芯片DS12C887 显示芯片1602温度测量芯片DS18B20系统工作过程:时间的主要处理过程是在DS12C887中完成的。首先对此芯片进行初始化,对其初值进行设置,然后启动芯片工作。芯片会在内部晶振提供的频率下对秒进行加

10、计数并在必要时进位。 CPU会随时对12887进行读取数据的操作。在读取了相应的寄存器的值后,CPU将读取的值进行处理,再通过IO口把数据传入1602。1602在接受到数据后在相应的位置上进行显示。 而温度信号会通过18B20进行采集,然后通过CPU处理后同样传给1602输出。 系统的设计按照系统的工作过程,将CPU相应的IO口分配给对应的芯片完成相应的控制和数据的传递。简单地可概括为以CPU为中心,将12887和18B20的时间的温度信号通过CPU处理后输入到1602进行输出显示。三、 单元电路设计1 AT89S52单片机系统设计AT89S52是一种低功耗,高性能的CMOS8位微处理器,内部

11、有8K字节的闪速PEROM ,该芯片采用ATMEL公司高密度、非挥发性存储器工艺制成且与工业标准的MCS-51系列的引脚及指令兼容,FLASH系列存储器为快速擦写存贮器。其最小系统设计如图所示2 DS12C887时钟芯片电路设计DS12C887内部含有锂电池和晶振,可以在掉电的情况下正常工作。MOT接VCC采用Intel总线时序,八位地址数据总线与P0口相连,片选信号接P1.4,地址信号接P1.5,读写信号接P1.6,数据信号接P1.7,中断申请信号接外部中断1(P3.3)。3 DS18B20温度传感器电路设计DS18B20温度传感器是美国Dallas公司生产的最新的单线数字温度传感器,支持“

12、1-Wire”接口。其DQ经上拉电阻接在P3.0引脚。4 液晶1602电路设计液晶1602用来显示时间,日期,周及温度。其数据口与P2口相连,P3,7、P3.6、P3.5分别控制数据命令选择端、读写选择端及使能信号。5 键盘电路键盘用来调节时间。分别与P1.0、P1.1、P1.2、P1.3连接。电路如图所示。键盘功能描述:key_1键为设置键 key_2键为时间加一键 key_3键为时间减一键 key_4键位定时设置键四、 程序设计流程1 主程序设计流程2 键盘扫描程序设计流程调时方法:按下key_1键为设置时间 按键次数 功能 1 设置秒2 设置分3 设置时4 设置日5 设置月6 设置年7

13、设置星期 8 调节结束 按下key_4键为设置定时时间 按键次数 功能 1 设置秒2 设置分3 设置时4 设置结束五、 课程设计心得参考文献:【1】 柴钰. 单片机原理应用(M). 西安:西安电子科技大学出版社,2009.附录附录1 元器件清单:芯片器件数目芯片器件数目AT89S521电阻5K1DS12C8871电阻1K2DS18B201电阻2001电容30PF2锁紧架1晶振12M1电源开关1小按键5电解电容10uF1液晶16021电位器10K1附录2系统设计原理图:附录3附录4源程序清单:1 头文件:/*/1602液晶显示头文件/时间:2009年4月28日/*#ifndef _1602_H_

14、#define _1602_H_#define uchar unsigned char#define uint unsigned intsbit lcdrs=P37 ;sbit lcdrw=P36 ;sbit lcden=P35 ;#endif/* /*/ DS12CR887时钟芯片头文件/时间:2009年5月15日/* #ifndef _ds12cr887_H_#define _ds12cr887_H_sbit dscs=P14;sbit dsas=P15;sbit dsrw=P16;sbit dsds=P17;sbit dsirq=P33;#endif/*2 源程序:/*/*万年历*/功能

15、描述:采用时钟芯片DS12CR887计时,DS18B20/ 测量温度,LCD1602显示时间。可从2000/ 年至2099年随意调节,显示包括年、月、/ 日、时、分、秒、星期和温度。/键盘说明:key_1键为设置键/ key_2键为时间加一键/ key_3键为时间减一键/ key_4键位定时设置键/调时方法:按下key_1键为设置时间/ 按键次数 功能/ 1 设置秒/ 2 设置分/ 3 设置时/ 4 设置日/ 5 设置月/ 6 设置年/ 7 设置星期/ 8 调节结束/ 按下key_4键为设置定时时间/ 按键次数 功能/ 1 设置秒/ 2 设置分/ 3 设置时/ 4 设置结束/制作时间: 200

16、9年6月/*/#include #include 1602.h#includeds12cr887.h/*键盘引脚定义*/sbit key_1 = P10; /设置格式sbit key_2 = P11; /+ sbit key_3 = P12; /-sbit key_4 = P13; /定时设置sbit buzzer= P31; /蜂鸣器 sbit DQ = P30; /定义DS18B20/*小点闪烁*/bit at=0;/*全局变量*/uchar t0=0,second=0, min=0, hour=0,day=0,month=0,year=0,weekday=0,flag=0,temp=0,

17、flag1=0;/*初始化时间*/uchar code table1= 2009-05-12 MON ;uchar code table2=00:00:00 0000;/*字符表*/uchar code word=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x20,0x2d;uchar code week3=SUN,MON,TUE,WED,THU,FRI,SAT;/*数据缓冲与键盘计数变量*/uchar databuffer14,TempBuffer4,count,t_value;uint num=0;/*函数声明*/void

18、 init();void lcd_write_com(uchar command); /1602液晶写命令void lcd_write_data(uchar date); /1602液晶写数据void delay(uint a);void newbuf(); /数据转换void keyboard(); /键盘子程序void disp(); /显示程序void write_ds(uchar add,uchar date);uchar read_ds(uchar add);void Init_DS18B20( );void delay_18B20(unsigned int i);uchar Rea

19、dOneChar(void );void WriteOneChar(uchar dat);void ReadTemp(void);void temp_to_str();/*主函数*/void main() init(); /初始化 Init_DS18B20( ); /DS18B20初始化 lcd_write_com(0x80+0x00); /设置指针地址为首行 for(num=0;num15;num+) /将table字符串写入 lcd_write_data(table1num); delay(20); lcd_write_com(0x80+0x40); /设置指针地址为第二行 for(num

20、=0;num13;num+) /将table1字符串写入 lcd_write_data(table2num); delay(20); while(1) uchar b; keyboard(); /调整时间 ReadTemp(); /开启温度采集程序 temp_to_str(); /温度数据转换成液晶字符 lcd_write_com(0x80+0x40+9); delay(20); for(b=0;b0;x-) for(y=110;y0;y-);/*缓冲数据处理*/void newbuf() /更新缓冲区子程序 databuffer0=second%10; databuffer1=second/

21、10; databuffer3=min%10; databuffer4=min/10; databuffer6=hour%10; databuffer7=hour/10; databuffer8=day%10; databuffer9=day/10; databuffer10=month%10; databuffer11=month/10; databuffer12=year%10; databuffer13=year/10;/*液晶数据显示*/void disp() /显示程序 uchar j=0; lcd_write_com(0x80+0x40); /设置指针地址为第二行 lcd_write_data(worddatabuffer7); /小时十位 lcd_write_data(worddatabuffer6); /小时个位 lcd_write_data(worddatabuffer5); lcd_write_data(worddatabuffer4); /分十位 lcd_write_data(worddatabuffer3); /分个位 lc

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

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