子电万年历课程设计报告--本科毕业设计.doc
《子电万年历课程设计报告--本科毕业设计.doc》由会员分享,可在线阅读,更多相关《子电万年历课程设计报告--本科毕业设计.doc(27页珍藏版)》请在咨信网上搜索。
24 大连民族学院机电信息工程学院 自动化系 单片机系统课程设计报告 题 目: 电子万年历 专 业: 自动化 班 级: 114 学生姓名: 曹学亮 张怀宇 马建龙 指导教师: 赵凤强 张艳 设计完成日期: 2013年 10月15日 课程设计任务书 题目: 电子万年历 课程设计时间: 2013.9.24~2013.10.19 一、设计任务 给定1602液晶显示器和单片机最小系统,学习使用单片机最小系统,设计在1602上显示年月日、时间和星期并能更改,完成相关的软件。 二、设计内容及要求 ⒈ 系统设计的方案; ⒉ 检测电路和过程通道的设计; ⒊ 系统软件设计与实现; ⒋ 需要的详细材料和工具清单; ⒌ 设计的性能指标; ⒍ 撰写设计报告; ⒎ 资料归档。 三、设计重点 检测电路和过程通道设计; 系统软件设计、调试。 四、课程设计进度要求 ⒈ 13.9.25~13.9.28 系统方案设计; ⒉ 13.9.29~13.10.5 检测电路和过程通道设计; ⒊ 13.10.6~13.10.7 完成系统硬件设计与实现; ⒋ 13.10.8~13.10.13 检测电路和过程通道设计; ⒌ 13.10.13~13.10.15 撰写设计报告; ⒍ 13.10.19 验收答辩。 五、参阅书目 [1] 祁伟,杨亭,单片机C51程序设计教程与实验[M]。北京:北京航空航天大学出版社,2006.1 [2] 徐科军,传感器与检测技术[M]。北京:电子工业出版社,2010.11 [3] 方彦军,孙健,智能仪器技术及其应用[M]。北京:化学工业出版社,2004.4 [4] 徐爱钧,智能化测量控制仪表原理与设计[M]。北京:北京航空航天大学出版社,2004.9 目 录 1任务分析和性能指标 1 1.1任务分析 1 1.2性能指标 1 2 总体设计方案 1 2.1硬件方案 1 2.2软件方案 1 3 系统硬件设计 2 3.1检测电路 2 3.2控制电路 2 4 系统软件设计 2 4.1 主程序设计 2 4.2 数据采集程序设计 2 4.3 监控程序设计 2 5 调试及性能分析 2 5.1 调试分析 2 5.1.1 软件调试 2 5.1.2 硬件调试 2 5.1.3 系统功能调试 3 5.2 性能分析 3 总 结 3 参考文献 4 附录1 元器件清单 5 附录2 调试系统照片 6 1任务分析和性能指标 1.1任务分析 电子万年历是日常生活中常见的小型电子产品,其形式多种多样,小到带有日期的电子腕表,大到公共场所悬挂的大型电子日历,此外,眼下我们还常能在宾馆、饭店等场所见到一种带有年、月、日、时、分、秒、星期甚至节气等信息的电子日历牌。 电子日历的主要功能是给人们提供时间和日期信息,无论其形式如何,从外部都可分为显示和校准两部分。为使电子日历协调工作,整个系统从功能上可分为实时时钟、显示和键盘三个模块,分别完成时间和日期的计算以及人机交互的管理等。 1.2性能指标 实时时钟(RTC:Real Time Clock)是系统的核心,其运行精度直接影响产品质量。 实时时钟的实现有两种方案可选,一是利用单片机系统时钟和中断完成时间和日期的计算;二是利用专用时钟芯片。前者不用附加芯片,系统简单,但是累计误差较大,只有 短时计时才可使用。长时间计时一般都采用后者。后者采用32.768KHz晶体振荡器振作 为脉冲源,内部的15位计数器刚好产生标准秒脉冲。该类芯片除时钟计时外,还有年 月日和星期的计算功能,并且还可计算闰年。芯片初始化后可脱离CPU自动运行,有 些芯片内部带有电池,出厂时芯片即开始运行。专用时钟芯片的种类很多,与CPU的 通信方式有并行, 也有串行。 常见的芯片有DALLAS 公司生产的DS1302和DS12C887, 前者为串行,需要外加后备电池;后者为并行,芯片内置锂电池和晶体振荡器,无外加 电源的情况下可运行10年。此外,还有许多时钟芯片,如Epson、Holtek、深圳兴威帆 等公司都推出自己的时钟芯片.因为我们具备单片机相关知识的基础,所以我们利用单片机系统时钟和中断完成时间和日期的计算。 1 2总体方案设计 2.1硬件方案 显示部分 数据显示常采用液晶,液晶显示有耗电低、外形美观的优点,并且,点阵液晶可显示较复杂的字符或图案。 键盘部分 时钟系统的键盘设置三个键:确认键、加1键、减1键。 实时时钟部分 利用单片机系统时钟和中断完成时间和日期的计算。 2.2软件方案 C语言编属于高级语言,具有可移植性,能够结构化编程。使用标准C语言的程序,几乎都可以不作改变移植到不同的微机平台上,对于嵌入式等的微控制芯片,属于标准C语言的部分也很少需要修改,而且程序很容易读懂。 C语言编写程序结构清晰,移植性好,容易维护和修改。 汇编语言针对不同的操作系统平台,不同的微控制器,指令都是完全不同的,即使指令相似,也不具有可移植性。但是汇编语言是针对专门的控制器的,所以运行速度可以精确到一个指令周期。汇编语言的程序读懂需要借助微控制器的指令手册以及各个寄存器的说明,所以很难读懂。 汇编语言编写代码实时性强,能够直接控制硬件的工作状态,但是不具有可移植性,维护和修改困难。 经过我们三人的讨论我们决定使用c语言来编写程序 ,因为c语言程序容易学,也很容易读懂,编写程序结构清晰,易于我们组员之间的讨论和学习。而且相对于汇编我们更加擅长c语言。 2 3硬件设计与实现 由于单片机系统时钟和中断能完成年、月、日、时、分、秒等时间信息,对于一天内的时间记录,有12小时制和24 小时制两种模式。在12小时制模式中,用 AM 和 PM 区分上午和下午; 时间的表示方法也有两种,一种用二进制数 表示,一种是用 BCD 码表示。而显示部分我们采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示文字,图形,显示多样,清晰可见,而其体积较小,使用方便,可以使电路更加简洁,所以选择了液晶显示器。 3.1 1602显示电路 3.2键盘电路 4 3.3 晶振电路 3.4复位电路 3.5单片机电路 4软件设计与实现 4.1 主程序 void main() { init(); while(1) { anjian(); } } 4.2子程序 4.2.1按键程序 void anjian() //按键函数 { rd=0; if(s1==0) { delay(5); if(s1==0) { s1num++; while(!s1); if(s1num==1) { TR0=0; write_com(0x80+0x40+12); write_com(0x0f); } } if(s1num==2) { write_com(0x80+0x40+9); } if(s1num==3) { write_com(0x80+0x40+6); } if(s1num==4) { write_com(0x80+15); } if(s1num==5) { write_com(0x80+9); } if(s1num==6) { write_com(0x80+6); } if(s1num==7) { write_com(0x80+1); } if(s1num==8) { s1num=0; write_com(0x0c); TR0=1; if(yue==1) { tian=ri-ri4; } if(yue==2) { tian=31+ri-ri4; } if(yue==3) { tian=59+ri-ri4; } if(yue==4) { tian=90+ri-ri4; } if(yue==5) { tian=120+ri-ri4; } if(yue==6) { tian=151+ri-ri4; } if(yue==7) { tian=181+ri-ri4; } if(yue==8) { tian=212+ri-ri4; } if(yue==9) { tian=243+ri-ri4; } if(yue==10) { tian=272+ri-ri4; } if(yue==11) { tian=304+ri-ri4; } if(yue==12) { tian=334+ri-ri4; } ri4=0; } } if(s1num!=0) { if(s2==0) { delay(5); if(s2==0) { while(!s2); if(s1num==1) { miao++; if(miao==60) miao=0; write_sfm(12,miao); write_com(0x80+0x40+12); } if(s1num==2) { fen++; if(fen==60) fen=0; write_sfm(9,fen); write_com(0x80+0x40+9); } if(s1num==3) { shi++; if(shi==24) shi=0; write_sfm(6,shi); write_com(0x80+0x40+6); } if(s1num==4) { xingqi++; if(xingqi==8) xingqi=1; write_xq(15,xingqi); write_com(0x80+15); } if(s1num==5) { ri++; if(ri==32) ri=1; write_yr(9,ri); write_com(0x80+9); } if(s1num==6) { yue++; if(yue==13) { yue=1; tian=1; } write_yr(6,yue); write_com(0x80+6); } if(s1num==7) { nian++; write_n(1,nian); write_com(0x80+1); } } } if(s3==0) { delay(5); if(s3==0) { while(!s3); if(s1num==1) { miao--; if(miao==-1) miao=59; write_sfm(12,miao); write_com(0x80+0x40+12); } if(s1num==2) { fen--; if(fen==-1) fen=59; write_sfm(9,fen); write_com(0x80+0x40+9); } if(s1num==3) { shi--; if(shi==-1) shi=23; write_sfm(6,shi); write_com(0x80+0x40+6); } if(s1num==4) { xingqi--; if(xingqi==0) xingqi=7; write_xq(15,xingqi); write_com(0x80+15); } if(s1num==5) { ri--; ri4++; if(ri==0) { ri=31; } write_yr(9,ri); write_com(0x80+9); } if(s1num==6) { yue--; if(yue==0) { yue=12; tian=334+ri; } write_yr(6,yue); write_com(0x80+6); } if(s1num==7) { nian--; write_n(1,nian); write_com(0x80+1); } } } } } 12 4.2.2中断程序 void timer0() interrupt 1 //开中断1 (定时器中断0) 包括时间的算法程序 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; t0++; if(t0==20) { t0=0; miao++; } if(miao==60) { miao=0; fen++; } write_sfm(12,miao); //调用函数 write-()都为调用上边的显示子函数 下同 if(fen==60) { fen=0; shi++; } write_sfm(9,fen); if(shi==24) { shi=0; xingqi++; tian++; } write_sfm(6,shi); if(xingqi==8) { xingqi=1; } write_xq(15,xingqi); if(tian!=0) { ri=tian; if(tian<=31) { yue=1; } write_yr(6,yue); if(tian>=32&&tian<=59) { yue=2; ri=tian-31; } write_yr(6,yue); if(60<=tian&&tian<=90) { yue=3; ri=tian-59; } write_yr(6,yue); if(91<=tian&&tian<=120) { yue=4; ri=tian-90; } write_yr(6,yue); if(121<=tian&&tian<=151) { yue=5; ri=tian-120; } write_yr(6,yue); if(152<=tian&&tian<=181) { yue=6; ri=tian-151; } write_yr(6,yue); if(182<=tian&&tian<=212) { yue=7; ri=tian-181; } write_yr(6,yue); if(213<=tian&&tian<=243) { yue=8; ri=tian-212; } write_yr(6,yue); if(244<=tian&&tian<=273) { yue=9; ri=tian-243; } write_yr(6,yue); if(274<=tian&&tian<=304) { yue=10; ri=tian-273; } write_yr(6,yue); if(305<=tian&&tian<=334) { yue=11; ri=tian-304; } write_yr(6,yue); if(335<=tian&&tian<=365) { yue=12; ri=tian-334; } write_yr(6,yue); if(tian==366) { tian=1; yue=01; ri=1; nian++; } write_n(1,nian); } write_yr(9,ri); } 4.2.3显示年 void write_n(uchar add,uint date) //液晶显示年 { uint shi,ge,bai,qian; qian=date/1000; bai=date/100%10; shi=date/10%10; ge=date%10; write_com(0x80+add); write_date(0x30+qian); write_date(0x30+bai); write_date(0x30+shi); write_date(0x30+ge); } 4.2.4显示星期 void write_xq(uchar add,uchar date) // 液晶显示星期 { write_com(0x80+add); write_date(0x30+date); } 4.2.5显示月日 void write_yr(uchar add,uchar date) //液晶显示月日 { uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_date(0x30+shi); write_date(0x30+ge); } 4.2.6显示时分秒 void write_sfm(uchar add,uchar date) //液晶显示时分秒 { uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); //液晶屏第二行的选着地址 write_date(0x30+shi); write_date(0x30+ge); //液晶屏显示数字的方式 } 4.2.7程序初始化 void init() //函数初始化 一些相应的变量 { miao=53; fen=59; shi=23; xingqi=5; ri4=0; tian=284; nian=2013; dula=0; wela=0; lcden=0; write_com(0x38); //显示模式设置,设置16乘2显示,5×7点阵,八位数据接口 write_com(0x0c); //显示状态为整体显示 write_com(0x06); //光标的设定 当读或写一个字符后地址指针加一,光标加一 write_com(0x80); //液晶屏第一行选着地址 write_com(0x01); //清除显示 否则后面出现黑一块 for(num=0;num<17;num++) { write_date(table1[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<13;num++) { write_date(table2[num]); delay(5); } TMOD=0x01; //中断初始化 定时器0的工作方式一 EA=1; ET0=1; TR0=1; TH0=(65536-50000)/256; TL0=(65536-50000)%256; } 4.2.8写数据到液晶显示器 void write_date(uchar date) //液晶屏数据指令 { rs=1; lcden=0; P0=date; delay(5); lcden=1; delay(5); lcden=0; } 4.2.9写指令到液晶显示器 void write_com(uchar com) //液晶屏控制指令 { rs=0; lcden=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } 4.2.10延时子函数 void delay(uchar z) //延时程序 { uchar x,y; for(x=z;x>0;x--); for(y=116;y>0;y--); } 5 调试及性能分析 5.1 调试分析 5.1.1 软件调试 软件调试时,开始出现了很多错误,主要是液晶屏乱码,不显示数字。后来经过调试找出原因并改正得到想要的结果。 5.1.2 硬件调试 硬件主要是单片机,液晶,我们的任务是主要将他们各个引脚的作用和芯片的功能弄清楚,通过软件操控它们,按照PCB原理图焊接到板上。 5.1.3 系统功能调试 通过键盘和软件设置来控制时钟功能,我们是按照顺序一个一个进行调试的,这样层次清晰写起程序来也容易。 5.2 性能分析 计时器最关键的是计时的精度。电子万年历中DSl602上最好使用专用的晶振。经测试制作的电子万年历,一星期快了3 s左右,误差较大,实验设计中可换用标准晶振或用软件进行修正。 20 总 结 这次课程设计,我们组三个人分工合作。从一开始的选题,然后确定方案、买零件,到最后的设计调试,我们组员都在一起研究讨论。经过这次设计,我们三个人都有了很大的收获,对单片机编程控制有了进一步的了解。 该设计涉及到了单片机的时序控制,数据接口同时用到了控制按键、数据显示处理等。这次设计,基本上涉及到了所有的单片机控制功能模块。因此,通过这次设计,基本能掌握单片机的所有基本控制,这也是我们组选择该题目的一个重要原因。 21 参考文献 [1] 郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社,2009. [2] 胡汉才.单片机原理与接口技术[M].北京: 清华大学大学出版社,2004.1-505. [3] 马忠梅,刘滨等. 单片机C语言Windows环境编程宝典[M]. 北京: 北京航空航天大学出版社. 2003. 24 附录1 元器件清单 元器件名称 型号 数量(个) 单片机 STC89C51 1 瓷片电容 10 uF 1 液晶显示器 LCD1602 1 晶振 11.0596MHZ 1 电阻 10K 2 电位器 10K 1 瓷片电容 30pF 2 瓷片电容 0.1uF 1 电源接口 5V 1 杜邦线 16 排针 16 1 按键 16 总计 37 附录2 调试系统照片 整体显示如图: 图9 电子万年历- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 万年历 课程设计 报告 本科 毕业设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文