基于51单片机的秒表设计_第1页
基于51单片机的秒表设计_第2页
基于51单片机的秒表设计_第3页
基于51单片机的秒表设计_第4页
基于51单片机的秒表设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-PAGE4单片机课程设计课程题目:基于51单片机的秒表设计专业:电气工程及其自动化班级:电气111学号:姓名:目录第一章题要求内容及目的………………21.1单片机课题内容……21.2单片机课题要求……21.3单片机课题目的……3第二章硬件设计…………32.1AT89C51单片机简介………………42.2设计思路………………4第三章软件设计…………53.1软件程序………………53.2设计实验电路图……11第四章实验设计总结……12第五章参考文献…………132.硬件设计2.1AT89C51单片机简介AT89C51是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器(FPEROM-FlashProgrammableandEraseableReadOnlyMemory)的8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与89C51引脚和指令系统完全兼容。引脚分别如图2.1所示。图2.1图2.1所示的单片机是引脚双列直插封装方式,电源引脚40脚与接地脚20。P0口作输入口使用时,应先向口锁存器写入1。P1口是一个带有内部上拉电阻的8位双向I/O端口。P1的输出缓存可驱动4个TTL输入。P2口是一个带有内部上拉电阻的8位双向I/O端口。P3口也是一个带有内部上拉电阻的8位双向I/O端口,P3端口还用于一些复用功能。2.2设计思路这次的试验要求进行计时并且在数码管上显示时间,先要基本了解硬件内在结构,确定用p2并行端口进行数码管控制输入,使用P1.6,P1.5,P1.4进行选择0.1秒位,秒位,十位秒位,以P3.0为开始控制,P3.1为停止控制,P3.2为清零控制。本次实验设计的基本思路是要求借助AT89C51单片机做出一个0-99.9秒表从十位秒到0.1位秒数这些计时的位数是存在一个内嵌的结构,就是0.1秒位满足条件然后进行跳位使秒位加一的过程,当0.1s到0.9s时该位自动清零并且秒位加一,秒位达到9时也自动清零并向十秒位加一。当计数超过范围是所有数码管全部清零重新计数。其次开始控制,停止控制,清零控制等功能,我们采用蜂鸣器进行提示,该信号由P1.0输出由7406非门与外加电源驱动,通过一个延时子程序加以控制。最后就是根据硬件的条件进行编程,要求软硬件相互兼容。这也是设计的关键之处。3.软件设计3.1软件程序根据课题内容,可作出主流程序树状图如图3.1所示:

流程图体现着设计程序的思路程序,开始后首先进行数据初始化然后是条件判断满足条件或不满足则进行对应的处理,如首先依次判断是是否是否手动开关定时器溢出中断对定时器重新赋值进行加一操作后重新计算时间往P0口和P2口送显示时间数码管显示中断返回主函数对定时器/计数器初始化始化程序开始判断P0^4口是否有低电平信号开中断并启动定时器开始、暂停或者继续计数置零判断P0^7口是否有低电平信号图3.1,然后十分之一秒计数,再判断是否进位。实验程序清单:

#include<reg51.H>{sbitsta_end=P3^4;sbitreset=P3^7;unsignedcharcodetable0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedcharcodetable1[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90};/*声明second10用于计数十分之一秒变化,second1用于记录秒的个*//*位,second2用于记录秒的十位*/unsignedintsecond10,second1,second2;bitbdataflag;/*以下是设置延时功能的函数*/voiddelay(){unsignedchari,j;for(i=90;i>0;i--)for(j=200;j>0;j--);}}/*以下是设置时间的函数*/voidsetTime(){second10++;if(second10==10)/*当十分之一秒计数到十后从零重新计时*/{ second10=0;/*同时秒计时个位加一*/ second1++; if(second1==10)/*当秒计数个位到十后从零重新计时*/ { second1=0; second2++;/*同时秒计时十位加一*/ if(second2==10) second2=0; }}}/*以下是向LED管输数据并使之显示的函数*/voiddispact(){P3=0xfe;P0=table1[second1];delay();P3=0xfd;P0=table1[second2]; delay();P2=table0[second10]; }/*以下是设置时间函数和输数据函数被此函数调用实现,利用定时器中断*//*十分之一秒刷新一次,实现十分之一秒进一*/Timer0()interrupt1using1{TH0=(65535-50000)/256;TL0=(65535-50000)%256;if(flag)setTime();dispact();}voidmain(void){TMOD=0x01;TH0=(65535-50000)/256;/*定时器赋初值*/TL0=(65535-50000)%256;flag=0;EA=1;/*cpu开中断*/TR0=1;/*利用定时器0*/ET0=1;/*外部中断允许*/do{if(!sta_end) { if(flag==0) flag=1; elseflag=0; } if(!reset)/*复位设置,全部清零*/ { flag=0; second10=0; second1=0; second2=0; }}while(1);}3.2设计实验电路图设计的实验原理图如下所示:4.实验设计总结通过这两周程设计,我对一些专业知识和电子设计有了更深的了解,同时也尝试着去应用自己的所掌握的知识。本次电子课程设计主要是对已学习的模拟电子技术、数字电子技术和单片机的综合应用,同时加上电路等知识,设计完成了利用软件模拟的秒表。经过几天的奋战,我感受很深.我们一小组四个人一块儿讨论设计了此次试验,在设计过程中深感自己在培养动手能力这方面还需很大的努力。同时,通过这次我们积极的通过网络,书籍等资源,在同学的帮助下,把这个课程设计作为一次锻炼,为以后生活学习中培养善于动手,乐于动手的习惯。单片机课程设计不仅给我们提供了一个良好的应用自己所掌握的知识的平台,又是检验自己所学知识的一次考核。我们运用各自在各方面的优势中和起来,形成了一个团队.通过团队力量,才使设计得以完成.可以说,我们三个人是一个不可或缺的整体,少了任何一个人都是无法完成任务的。在设计的过程中我们也不可避免的遇到了很多的问题。尤其是在调试过程中,会因为某些原因出不来结果,或三个人之间出现了意见分歧,但在最后都达成一致。通过这次的课程设计,我们也发现了不少自己不会的知识,通过查询各方面资料,我们也进步了很多,有学会了很多上课时没掌握的东西,最后在调试结果出来后,我们更是无比的兴奋,无比的自豪。总之,通过这次电子课程设计,我

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论