基于c语言单片机秒表课程设计

上传人:仙*** 文档编号:37540190 上传时间:2021-11-03 格式:DOC 页数:16 大小:304.01KB
返回 下载 相关 举报
基于c语言单片机秒表课程设计_第1页
第1页 / 共16页
基于c语言单片机秒表课程设计_第2页
第2页 / 共16页
基于c语言单片机秒表课程设计_第3页
第3页 / 共16页
点击查看更多>>
资源描述
课程设计报告课程名称:单片机原理及应用报告题目:秒表学生姓名:所在学院:信息科学与工程学院专业班级:学生学号:指导教师:2013 年 12 月 25 日课程设计任务书报告题目秒表完成时间学生姓名专业班级指导教师职称讲师总体设计要求和技术要点设计一个秒表的要求与任务,要求如下: (1)显示时间为“秒秒-100ms10ms”。(2)设计一个“开始”键,按此键开始计时。(3)设计一个“复位”键。按此键时间归零。(4)设计一个“保存”键。按此键保存当前时间,继续计时,能保存最后50组时间。(5)设计一个“读出”键。按此键读出保存的时间,停止状态下才有效。(6)设计一个“停止”键。按此键停止计时,显示当前时间。任务如下:用AT89C51设计一个2位的LED数码显示作为“秒表”。工作内容及时间进度安排第15周:周1-周3 :立题、论证方案设计周4-周5 :预答辩第16周:周1-周3 :仿真实验7周4-周5 :验收答辩课程设计成果1与设计内容对应的软件程序2课程设计总结报告摘要 近年来随着科技的飞速发展,单片机的应用正在不断的走向深入,秒表计时器是电器制造,工业自动化控制、国防、实验室以及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等时间测试。本文阐述了基于单片机的数字电子秒表设计。本设计主要特点是计时从00到99秒秒表系统,方便了在计时精度要求不高的情况下计时。因为计时精度为1,所以系统电路比较简单。另外硬件部分设置了开始、暂停、清零、复位按键,可以对秒表系统进行计时控制。 本设计的数字电子秒表系统采用AT89C51单片机位中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。将软、硬件有机的相结合起来,使得系统能够实现两位LED显示,显示时间为0099秒,计时精度为1秒,能正确地进行计时,同时能记录一次时间,其中软件系统采用C语言编写程序,包括显示程序,定时中断服务,延时程序等,并用KeiL中调试运行,硬件系统利用Proteus强大的功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。 关键词:单片机;数字电子秒表;仿真目录一、概述11.1设计目的11.2设计要求11.3设计意义1二、系统总体方案及硬件设计121系统总体方案222硬件设计22.21晶体振荡电路22.22复位电路32.23按键电路32.24 显示电路42.25系统电路4三、软件设计51.设计特点52.秒表设计源程序93.程序流程图10四、结论与心得11五、参考文献11一、 概述1.1设计目的设计一个单片机控制的秒表系统。利用单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码以及按键来设计秒表。将软、硬件有机的结合起来,使得系统能够正确的进行计时,同时具有开始/暂停,复位,读数,清零等功能。1.2设计要求(1)共四位LED显示,显示时间为:(2)共五个按键,分别是开始、复位、保存、读出、(3)能同时记录多个相对独立的时间并分别显示出来;(4)显示时间从00一直到99(5)具有自动清零功能1.3 设计意义(1)通过本次课程设计可以使我们进一步熟悉和掌握单片内部和工作原理,了解单片机应用系统设计的基本步骤和方法。(2)通过利用AT89C52单片机,理解单片机在自动化仪表的作用以及掌握单片机的编程方法。(3)通过设计一个简单的实际应用输入以及显示模拟系统,掌握单片机仿真软件的使用方法。(4)该实验通过单片机的定时器/计数器定时和计数原理,设计简单的记时器系统,拥有正确的计时、暂停、清零、保存、读出的功能,该秒表在现实生活中应用广泛,具有现实意义。二、 系统总体方案及硬件设计2.1 系统总体方案本系统采用AT89C52单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合硬件电路如电源电路,晶振电路,复位电路,显示电路,以及以一些按键电路等来设计计时器,将软、硬件有机地结合起来。其中软件系统采用C语言编写程序,包括显示、计数、中断、延时、按键消抖程序等,并且在变程软件中调试运行,硬件系统利用Proteus强大的功能来实现,简单且易于观察,在仿真中可以观察到实际的工作状态。 单 片 机 外围 电路 电路 电源 电路 电路 显示电路 键盘电路 2.2 硬件设计MCS-52系列单片机是8位单片机产品,89C52是其中的典型代表,基本模块包括以下几个部分:(1) CPU:89C52的CPU是8位的,另外89C51内部有一个处理器(2) ROM:4KB的片内程序存储器,存放开发调试完成的应用程序(3) RAM:256B的片内数据存储器,容量小,但作用大(4) I/O口:P0-P3,共4个口32条双向且可位寻址的I/O口线(5) 中断系统:共5个中断源,3个内部中断,2个外部中断(6) 定时器/计数器:2个16位的可编程定时器/计数器(7) 通用串行口:全双工通用异步接收器/发送器(8) 振荡器:89C52的外接晶振与内部时钟振荡器位CPU提供时钟信号(9) 总线控制:89C52对外提供若干控制总线,便于系统扩展2.2.1晶体振荡点路 图1 晶体振荡电路89C52芯片内部有一个高增益反相放大器,用于构成振荡器。引线XTAL1和 XTAL2分别为反向放大器的输入和输出,两端跨接石英晶体及两个电容就可构成稳定的自激振荡器。这里,我们选用52单片机12MHZ的内部振荡方式,电容器C1,C2起稳定振荡频率,并对振荡频率有微调作用C1和C2可在20-100PF之间取值,这里取33P。2.2.2复位电路 图2 复位电路采用上电加按键复位电路,上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电加按键复位的操作。2.2.3按键电路 图3 按键电路在按键电路中,我们可以在I/O口上直接接按键,或者通过I/O口设计一个键盘,然后通过键盘扫描程序判断是否有键按下等。键盘扫描电路节省I/O口,但编程有些复杂,在这里,由于我们所用的按键较少,且系统是一个小系统,有足够的I/O口可以使用,为了使程序简化,我们采用按键电路,用部分P1口做开关,P1.0开始/暂停,P1.1保存,P1.2读数,P1.3复位,P1.4清零。对于按键的设计,采用了防抖动的程序设计,使系统的性能得到进一步的提升。当按键被按 下时,相应的引脚被拉低,经扫描后,获得键值,并执行键功能程序,因此按下不同的按键,将执行不同的功能程序。2.2.4显示电路 图4 显示电路 显示电路既可以选用液晶显示器,也可以选用数码管显示。我们采用的是数码管显示电路。用两个共阴极LED显示,LED是七段式显示器,内部有7个条形发光二极管和1个小圆点发光二极管组成,根据各管的亮暗组合成字符。在用数码管显示时,我们有静态和动态两种选择,静态显示程序简单,显示稳定,但是占用端口比较多;动态显示所使用的端口比较少,可以节省单片机的I/O口。在设计中,我们采用LED动态显示,用P0口驱动显示。由于P0口的输出级是开漏电路,用它驱动时需要外接上拉电阻才能输出高电平。2.2.5 系统电路图: 图五 系统电路三、软件设计3.1设计特点在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,优化和分工,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。应用系统的程序由包含多个模块的主程序和各种子程序组成。各程序模块都要完成一个明确的任务,实现某个具体的功能,如:计数、延时、和显示等,在具体需要时调用相应的模块即可。3.2秒表设计源程序源程序如下:#include #define uchar unsigned char#define uint unsigned intvoid diyi(); /函数声明void xianshi();/函数声明void panduan();/函数声明void delay(uchar z);/函数声明uchar t=0,i,j,temp,b; /定义相关变量uchar code at=0xe0,0xd0,0xb0,0x70;uchar code as10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uchar code bs=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;uchar a50;/数组定义void main()/主函数 diyi(); EA=0; /调用定义函数 while(1) panduan(); /调用判断函数 xianshi();/调用显示函数 void diyi()/定义定义子函数 P2=0xbf;P0=0xbf; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1;void exer1() interrupt 1 /定义定时器/计数器子函数 uchar t1; TH0=(65536-50000)/256; TL0=(65536-50000)%256; t1+; if(t1=20) t1=0; t+; if(t=99) t=0; void xianshi()/定义显示子函数 P2 = 0xdf;P0 =bs0; P2=0x1f; P0=0xff; P2 = 0xff; P0 =ast%10; P2=0x1f;P0=0x00;delay(3);P2 = 0xdf;P0 =bs1; P2=0x1f; P0=0xff; P2 = 0xff; P0 =as(t/10)%10; P2=0x1f;P0=0x00;delay(3);void delay(uchar z)/延时子函数 uchar i,j; for(i=0;iz;i+) for(j=0;j110;j+);void panduan()/判断子函数 P3=0xfe; delay(5); temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(5); if(temp!=0xf0) P2 = 0xc0;P0 =bs4; P2=0x00;P0=0xff;P2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3); while(P3!=0xfe); /判断是否有键按下及格键功能if(temp=at0) EA=1;t=0;i=0;j=0; if(temp=at1) if(i52) ai=t; i+;if(temp=at2) if(b=1) if(j52) t=aj; j+; if(temp=at3) EA=0;t=0; i=0;j=0; P2 = 0xc0;P0 =bs4; P2=0x00;P0=0xff;P2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3); P3=0xfd; delay(5); temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(5); if(temp!=0xf0) P2 = 0xc0;P0 =bs4; P2=0x00;P0=0xff;P2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3); while(P3!=0xfd); /判断是否有键按下及格键功能if(temp=at0) EA=0; b=1; P2 = 0xc0;P0 =bs4; P2=0x00;P0=0xff;P2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3); 3.3程序流程图 四、结论与心得经过几个星期的课程设计,我学会了很多知识和技能。我从一开始对单片机一窍不通到现在的理解,我花费了很多的时间和精力,比如上网查阅资料,去图书馆借相关书籍,向身边的同学讨教等等。我重新对c语言又有了一些新的理解,也对单片机产生了浓厚的兴趣。单片机对于我们电子专业的学生来说是一门很重要的学科,所以我们好好学号这一门技术,这对于我们未来的发展有很大的帮助。下面我来谈谈本人通过这次课程设计的一些体会: (1)、这段日子里,通过学习的理论知识和实践相结合,我收获了很多,这些收获将是我人生的宝贵财富。 (2)、通过这次课程设计,让我养成了发现问题、提出问题、解决问题的好习惯,也使我善于思考和动手,更增强了我与同学们的交流合作。 (3)、这次课程设计不仅让我对c语言有了很大的认识,使我的编程能力有了很大的提高,也让我对单片机产生了浓厚的兴趣。 (4)、通过这次课程设计,切实的提高了我的动手能力和解决实际问题的能力。 总之,这次课程设计虽然没有达到我的预期,但是结果我还是可以接受的,毕竟这是自己的第一次接触单片机。通过这次课程设计,不仅加深了我对c语言的理解,更是让我认识了单片机理论,锻炼了我的动手能力和思考能力,使我养成了做事耐心和细心的习惯。最后感谢老师的指导和同学们的帮助。五、参考文献1于海生。微型计算机控制技术、清华大学出版社 2周立功。单片机实验与实践、北京航空航舰大学出版社 3李群芳。单片机微型计算机与接口技术(第三版)、电子工业社 4百度百科教师评语及设计成绩教师评语:(指导教师手写)课程设计成绩:指导教师:(签名)日期:年月日11
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!