顺计时秒表及倒计时秒表设计--单片机与微机原理及应用课程设计报告.docx
《顺计时秒表及倒计时秒表设计--单片机与微机原理及应用课程设计报告.docx》由会员分享,可在线阅读,更多相关《顺计时秒表及倒计时秒表设计--单片机与微机原理及应用课程设计报告.docx(29页珍藏版)》请在咨信网上搜索。
单片机微机原理课程设计——顺计时秒表及倒计时秒表设计 2016年电子工程专业2014级卓越工程师班 《单片机与微机原理及应用》 课程设计报告 设计题目: 顺计时秒表及倒计时秒表设计 专业班级: 电子卓越1401班 学生姓名: 林晓强 学生学号: 5120141478 指导教师: 聂诗良、许超(助教) 答辩日期: 第13周周六上午9点 答辩地点: 综合楼4-311实验室 西南科技大学信息工程学院制 2016年5月 目 录 1.摘要 1 1.1课程设计制作题目及要求 2 2.系统方案设计 2 2.1设计思路 2 2.2总体设计框图 3 3.硬件设计 3 3.1 硬件选型 3 3.2 系统硬件电路原理详图 4 3.3 实际连线详图 5 3.3.1共阴极数码管原理图以及四位数码管引脚图 6 3.3.2红绿灯模拟仿真电路 6 3.3.3 51单片机主控实物图以及原理图 6 4.软件设计 6 4.1 软件功能设计 6 4.2 软件流程设计 7 4.2.1主流程图 8 4.2.2 按键判断 9 4.2.3 数码管显时 10 5.软件调试 10 5.1 单元调试 10 5.1.1 显示模块测试 10 5.1.2 按键模块测试 11 5.2 总体测试 11 6.心得体会 11 7.参考文献 12 附录1 13 附录2 26 顺计时秒表以及倒计时秒表设计 1摘要 (1) 近年来随着科技的飞速发展,单片机的应用正在不断的走向深入,同时带动着传统控制检测日新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面的知识是不够的,还要根据具体的硬件结构,以及针对具体的应用对象的软件结合,加以完善。 (2) 人们在日常生活中,有很多时候要精确地计算时间,但往往因为人为因素造成人们不愿意看到的误差。秒表的出现,解决了传统的由于人为因素造成的误差和不公平性。。 (3) 本次设计主要完成具备基本功能的电子秒表的理论和实践设计,电子秒表是重要的记时工具,广泛运用于各行各业中。作为一种测量工具,电子秒表相对其它一般的记时工具具有便捷、准确、可比性高等优点。不仅可以提高精确度,而且可以大大减轻操作人员的负担,降低错误率。因此电子秒表常常用于体育竞赛及各种其他要求有较精确时间的各领域中。其中开启、停止按键的使用方法与传统的机械计时器相同,即按一下开启按键,启动计时器开始计时,按一下停止按键计时终止。而复位按键可以在任何情况下使用,即使在计时过程中,只要按一下复位按键,计时应立即终止,并对计时器清零。 (4) 在有些时刻会涉及到倒计时的功能,比如在10S内要完成什么任务,这就要用到一定时间的定时器,这里为秒表增加了一个倒计时的功能手动设置初值,然后开始倒计时,大大增加了这个设计的实用性。 1.1课程设计制作题目及要求 用AT89S52单片机设计顺计时和倒计时功能的电子秒表。要求:用四位数码管显示时间,最高位显示分,精确到0.1S,启动按键、暂停按键、清零按键按键,采用单片机内部定时器方式计时。 要求: (1)顺计时秒表:在系统开始运行之后,按键四控制定时器的开启,如果系统没有进入倒计时模式,则按下按键四直接开始秒表计时,计时最大长度为9分59秒。 (2)暂停、继续计时:在顺计时或倒计时过程中,按键三可以控制定时器的暂停,这样可以起到暂停计时的作用,再次按下这个按键,又重新启动定时器,继续上一次的时间开始计时。 (3)倒计时:在系统刚开始通电时,如果给系统赋值,则系统自动进入倒计时模式,在设置完初值过后,按下按键四开启定时器,开始计时。 (4)复位按键在任何时间都可以起到清零的作用。 2.系统方案设计 2.1设计思路 通过设置模式倒计时还是顺计时两种,分别进去两种模式,这个模式切换可以通过按键来控制,秒表的时间显示我们用4位数码管,这样既容易操作,也容易理解,在秒表运行的过程中吗,还可以通过按键来进行中断,使秒表暂停或者继续计时。 在秒表设计中,时间的精准度是设计的一大要素,所以设计的时间控制用AT89s52的定时器进行,设定定时器初值为46080,(由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断),记录20次中断标志为1s,同时用IO口的电平转换来检测按键,来判断相应的功能。用数码管显示时刻相应的时间。 2.2总体设计框图 3.硬件设计 3.1 硬件选型 单片机特点: (1)高集成度,体积小,高可靠性 单片机将各功能部件集成在一块晶体芯片上,集成度很高,体积自然也是最小的。芯片本身是按工业测控环境要求设计的,内部布线很短,其抗工业噪音性能优于一般通用的CPU。单片机程序指令,常数及表格等固化在ROM中不易破坏,许多信号通道均在一个芯片内,故可靠性高。 (2)控制功能强 为了满足对对象的控制要求,单片机的指令系统均有极丰富的条件:分支转移能力,I/O口的逻辑操作及位处理能力,非常适用于专门的控制功能。 (3)低电压,低功耗,便于生产便携式产品 为了满足广泛使用于便携式系统,许多单片机内的工作电压仅为1.8V~3.6V,而工作电流仅为数百微安。 (4)易扩展 片内具有计算机正常运行所必需的部件。芯片外部有许多供扩展用的三总线及并行、串行输入/输出管脚,很容易构成各种规模的计算机应用系统。 (5)优异的性能价格比 单片机的性能极高。为了提高速度和运行效率,单片机已开始使用RISC流水线和DSP等技术。单片机的寻址能力也已突破64KB的限制,有的已可达到1MB和16MB,片内的ROM容量可达62MB,RAM容量则可达2MB。由于单片机的广泛使用,因而销量极大,各大公司的商业竞争更使其价格十分低廉,其性能价格比极高。 数字逻辑电路特点: 用数字电路逻辑器件组成控制电路,这样原理简单清楚,但是调节起来很复杂,需要更改电路结构。 根据设计要求及设计的需要我采用单片机来作为控制手段,选用AT89S52单片机作为该课程设计的核心来对数字信息进行处理及储存。它是一个低电压,高性能的CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口,AT89S52可以按照常规方法进行编程,也可以在线编程。 3.2 系统硬件电路原理详图 3.2.1复位电路原理图以及时钟电路原理图 3.3 实际连线详图 3.3.1共阴极数码管原理图以及四位数码管引脚图 3.3.2红绿灯模拟仿真电路 3.3.3 51单片机主控实物图以及原理图 4.软件设计 4.1 软件功能设计 利用单片机的定时器产生准确的时钟信号,从而进行时间控制,控制十字路口的红、黄、绿灯交替亮灭。并且使用共阴极四位LED数码管,时刻显示当前路口的红灯或者绿灯还将持续的时间。两个方向的通行时间可用按键进行设置,可以控制路口的红绿灯的持续时间,这样模拟现实中的不同时间段,车流量不同而智能控制时间,这样更加合理的控制路口的通行,提高道路的通行效率,系统的启停和复位也由按键控制。 4.2 软件流程设计 4.2.1主流程图 4.2.2 按键判断 4.2.3 数码管显时 5.软件调试 5.1 单元调试 5.1.1 显示模块测试 首先在硬件电路上按照要求连接数码管,然后由单片机控制,看能否控制数码管显示任何组合,测试通过则开始调试红绿灯程序代码,不通过则检查问题,硬件问题或者软件问题。 最后在中断完成扫描一次数码管,看数码管的显示是否良好,消隐是否消彻底,测试完成后,确认无误则进行下一步测试。 5.1.2 按键模块测试 在按键接入电路之后,用万用表的测试通断档检测每个按键按下时,按键是否接通如果接通,则按键电路硬件无误,在软件程序里面测试,每个检测按键的程序都延时一小段时间在检测按键情况,如果按键情况不变,则判断执行按键程序,如若延时后按键情况消失,则判断为系统的电源抖动,不予处理。 5.2 总体测试 在程序搭建完成之后,结合硬件进行最后的测试,用按键控制时间加减,然后观察程序的BUG,做多种尝试,尽量消除完程序存在的BUG,比如时间如果减为0,或者时间加到数码管显示的最大值之后怎么处理,都是我们程序里面要考虑到的问题,然后检测中断程序控制的 时间与实际时间的差距,尽量调整时间没有差距,这也是程序控制与实际的结合,达到误差标准之后,然后运行程序,要求时间持续时间长,如果出现问题,那么就要分析问题原因,是硬件问题还是软件BUG,将问题处理完之后,作品完成。 6.心得体会 在调试的过程中,遇到很多问题,第一、不够细心比如由于粗心大意焊错了线,由于对单片机理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课设是对我的学习态度的一次检验。对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。 在这次难得的课程设计过程中我锻炼了自己的思考能力和动手能力。通过题目选择和设计电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。并且我们熟练掌握了有关器件的性能及测试方法。 再次感 谢老师的辅导以及同学的帮助,是他们让我有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路。课程设计时间虽然很短,但我学习了很多的东西,使我眼界打开,感受颇深。 7.参考文献 [1] 周伟,淮阴师范学院,数学科学学院,《c语言程序设计》课程教学研究,维普期刊资源整合服务平台。 [2] 谭浩强,《c语言程序设计》(第四版),清华大学出版社,北京,2010年。 [3]郭天祥. 十天学会单片机。 附录1 《C语言源程序代码》 #include<reg52.h> #include<intrins.h> #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 sbit K1=P1^0; //定义按键1为加时间 sbit K2=P1^1; //定义按键2为减时间 sbit K3=P1^2; //定义按键3为暂停时间 sbit K4=P1^3; //定义按键4为开始计时 uchar code wetable[]={ 0xf7,0xfb,0xfd,0xfe };//数码管位选 0xfe,0xfd,0xfb,0xf7 //共阳极数码管 0xef,0xdf,0xbf,0x7f uchar code dutable[]={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF};//数码管段选 //共阳极数码管0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f uchar code dutable1[]={ 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xBF}; //数码管段选-加点 uint closedu,closewe,ge,count,doucount,dounum,shi,shi1,ge1,doucount,dounum1;//定义大变量 uchar wenum,num1,num=0,doufirst=0,fen=0,doufirst1=0; //定义小变量 void delay(uint z); //微小延时函数函数声明 void init(); //定时器初始化函数声明 void display(uint fen,uint shi,uint ge,uint doufrist); //显示函数声明 void display1(uint fen,uint shi1,uint ge1,uint doufrist1); //显示函数声明 void main() //主函数 { P1=0xFF; //P1口清零(段选口) while(1) { if(K1==0) //按键1按下 { delay(500); //延时消抖 if(K1==0) //确认按键1按下 { num1++; //秒时间加1 if(num1==60) //按键设定时间是秒数不能大于60, { num1=0; fen++; if(fen>9) //按键设定时间是分钟数不能大于9 { fen=0; } } shi1=num1/10; ge1=num1%10; delay(500); } } if(K2==0) { delay(500); if(K2==0) { num1--; //秒时间减1 if(num1<=0) //按键设定时间是秒数不能小于0, { num1=60 ; if(fen<=0) //按键设定时间是分钟数不能小于0 { fen=10; } fen--; } shi1=num1/10; ge1=num1%10; delay(500); } } if(K4==0) { delay(500); if(K4==0) { init(); while(1) { if(num1!=0) { while(1) { if(K3==0) //一边计时,一边判断暂停是否按下 delay(1000); if(K3==0) // 确认暂停是否按下 { while(1) { EA=0; //关闭中使能端 display1(fen,shi1,ge1,doufirst1);//显示暂停时的值 if(K3==0) delay(500); if(K3==0) { while(1) { EA=1; display1(fen,shi1,ge1,doufirst1); if(K3==0) //一边计时,一边判断暂停是否按下 delay(1000); if(K3==0) // 确认暂停是否按下 { while(1) { EA=0; //关闭中使能端 display1(fen,shi1,ge1,doufirst1);//显示暂停时的值 if(K3==0) delay(500); if(K3==0) { while(1) { EA=1; display1(fen,shi1,ge1,doufirst1); // num= shi*10+ ge; } } } } // num= shi*10+ ge; } } } } display1(fen,shi1,ge1,doufirst1); //显示秒表计数时的值 } } else if(num1==0) { while(1) { if(K3==0) //一边计时,一边判断暂停是否按下 delay(1000); if(K3==0) // 确认暂停是否按下 { while(1) { EA=0; //关闭中使能端 display(fen,shi,ge,doufirst);//显示暂停时的值 if(K3==0) delay(500); if(K3==0) { while(1) { EA=1; display(fen,shi,ge,doufirst); if(K3==0) //一边计时,一边判断暂停是否按下 delay(1000); if(K3==0) // 确认暂停是否按下 { while(1) { EA=0; //关闭中使能端 display(fen,shi,ge,doufirst);//显示暂停时的值 if(K3==0) delay(500); if(K3==0) { while(1) { EA=1; display(fen,shi,ge,doufirst); // num= shi*10+ ge; } } } } // num= shi*10+ ge; } } } } display(fen,shi,ge,doufirst); //显示秒表计数时的值 } } } } } display1(fen,shi1,ge1,doufirst1); //显示手动加减初始值时的值 } } void init() //初始化函数 { dounum=0; doucount=0; count=0; wenum=0; //各个变量赋初值 closedu=0xff; closewe=0xff; P2=closewe;//关闭位选 P3=closedu;//关闭段选 TMOD=0x01; TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。 TL0=(65536-46080)%256;//46080的来历,为50000*11.0592/12 EA=1; //打开总中段 ET0=1; TR0=1; } void delay(uint z)//延时1ms 函数 { uint x,y; for(x=z;x>0;x--) { for(y=0;y<11;y++) { } } } void display(uint fen,uint shi,uint ge,uint doufrist) //显示函数 { closedu=0xff; closewe=0xff; wenum=3; P2=wetable[wenum]; //选中第一个数码管 P3=dutable[doufirst]; //给上分秒值 delay(10); P2=closewe; // P3=closedu; wenum--; P2=wetable[wenum]; //选中第一个数码管 P3=dutable1[ge]; //给上秒值个位 delay(10); P2=closewe; // P3=closedu; wenum--; P2=wetable[wenum]; //选中第一个数码管 P3=dutable[shi]; //给上分秒值十位 delay(10); P2=closewe; // P3=closedu; wenum--; P2=wetable[wenum]; //选中第一个数码管 P3=dutable1[fen]; //给上分值 delay(10); wenum=3; } void display1(uint fen,uint shi1,uint ge1,uint doufrist1) //显示秒表倒函数 { closedu=0xff; closewe=0xff; wenum=3; P2=wetable[wenum]; //选中第一个数码管 P3=dutable[10]; //给上分秒值 delay(10); P2=closewe; // P3=closedu; wenum--; P2=wetable[wenum]; //选中第一个数码管 P3=dutable1[ge1]; //给上秒值个位 delay(10); P2=closewe; // P3=closedu; wenum--; P2=wetable[wenum]; //选中第一个数码管 P3=dutable[shi1]; //给上分秒值十位 delay(10); P2=closewe; // P3=closedu; wenum--; P2=wetable[wenum]; //选中第一个数码管 P3=dutable1[10]; //给上分值 delay(10); wenum=3; } void time0() interrupt 1 { TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。 TL0=(65536-46080)%256;//46080的来历,为50000*11.0592/12 count++; doucount++; if(count==20) //1S钟数值加1 { count=0; num++; num1--; } if(num>59) { num=0; fen++; } if(num1==0) { num1=60; fen--; } shi=num/10; ge=num%10; shi1=num1/10; ge1=num1%10; if(shi>6) { num=0; fen++; } if(doucount==2) //0.1S钟数值加1 { doucount=0; dounum++; dounum1--; if(dounum==10) { dounum=0; } if(dounum1==0) { dounum1=9; } doufirst=dounum ; doufirst1=dounum1; } } 附录2 程序模块原理图以及部分实物图 27- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计时 秒表 倒计时 设计 单片机 微机 原理 应用 课程设计 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文