您好,欢迎访问三七文档
设计(论文)题目基于单片机的秒表设计作者分院专业班级指导教师(职称)论文字数5414论文完成时间2014/11/16目录1概述………………………………………………………………………11.1单片机简介……………………………………………………………11.2设计任务………………………………………………………………21.3设计要求………………………………………………………………22系统总体方案及硬件设计………………………………………………32.1复位电路………………………………………………………………32.2键盘电路………………………………………………………………43设计软件………………………………………………………………44ISIS7Profession软件仿真…………………………………………105课程设计体会…………………………………………………………116参考文献………………………………………………………………117程序清单…………………………………………………………………12概述1.1单片机简介单片机是性能价格比高、体积小、对国民经济渗透力大、最有前途的微控制器。单片机自20世纪70年代初研制成功并发展至今,已进入第四代。它主要是在一块芯片上集成了CPU、存储器以及输入输出电路,在工业过程中被广泛应用在控制电路中。从单片机的系列来看,国内外已超过50个系列、近500个品种,当前正处于更新换代、百花齐放的时期。新的系列和专用系列正在不断涌现。按位数分类有4位、8位、16位以及32位单片机等,4位单片机由于价格低和出现的早得到了广泛的应用,特别是在家电应用领域中其还有很大的优势,为了抵御8位机的竞争,4位机在结构和功能上都有很大的改进。8位机的生产厂家以及品种都很多,在实际的生产中应用也最为广泛,其中Intel公司的8051系列单片机在我国应用最为广泛,另外8位单片机也在其功能和内部结构上不断的进行改进,目前功能是越来越强大。16位单片机在数据处理以及单片机的性能上有了很大的改进。32位单片机是随着高科技产业的发展而产生的。1.2.设计任务设计一个单片机控制的多功能秒表系统,利用单片机的定时器/计数器定时和记数的原理,结合显示电路、用两个阴极LED数码管以及按键来设计00~99秒计时器。将软、硬件有机地结合起来,使得系统能够正确地进行加计时,同时数码管能够正确地显示时间。1.3设计要求1,四位LED动态显示,显示时间为00.00-99.992,每秒自动加13,一个开始和暂停键,一个清零键系统总体方案本设计的最主要的元器件就是MCS-51单片机。MCS-51单片机在一块芯片上集成CPU,存储器RAM,ROM以及输入与输出接口电路,这种芯片习惯上被称为单片微型计算机,简称单片机。MCS-51单片机是INTEL公司在1980年推出的高档8位单片机。它的典型产品有:8051,8031,8751,80C51,80C31,87C51。单片机由CPU,振荡器与时序电路,4个8位的I/O端口(P0,P1,P2,P3),串行口等组成。P0口有三个功能:1、外部扩展存储器时,当做数据总线(如图中的D0~D7为数据总线接口)。2、外部扩展存储器时,当作地址总线(如图中的A0~A7为地址总线接口)。3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。P1口只做I/O口使用:其内部有上拉电阻。P2口有两个功能:1、扩展外部存储器时,当作地址总线使用;2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由寄存器来设置。ALE:地址锁存控制信号PSEN:外部程序存储器读选通信号EA/VPP:访问和序存储器控制信号RST:复位信号XTAL1和XTAL2外接晶振引脚VCC:电源+5V输入VSS:GND接地。2.1复位电路:采用上电加按钮复位。这个系统中的复位电路是采用上电加按钮来实现的。因为MCS-51单片机的复位是靠外部电路实现的。MCS-51单片机工作之后,只要在他的RST引线上加载10ms以上的高点平,单片机就能有效地进行复位。MCS-51单片机通常采用上电自动复位、按键复位、以及上电加按键复位等,我们采用的是上电加按键复位方式,这样做的优点是上电后可以直接进入复位状态,当程序出现错误时,可以随时使电路复位。2.2键盘电路:用部分P1口做开始暂停开关,P2口复位,设计软件3设计思想因为秒表设计相对较为简单,因此在软件设计中我们一般采用模块化程序设计的方法。模块是一个具有独立功能的程序,可以单独设计、调试与管理,模块可分为功能模块和控制模块两类。我们通过模块化程序设计可按适当的原则把一个情况复杂、规模较大的程序系统划分为一个个较小的、功能相关而又相对独立的模块。每个小的模块完成一个确定的功能,在这些小的模块之间建立必要的联系,互相协作完成整个程序要完成的功能。它具有明显的优点,把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。其中的模块即为子程序,子程序是功能独立的程序段。子程序的基本思想是编写一次,可以重复使用。子程序的形式可以是一个程序文件,也可以是一个过程或函数。子程序总被其他程序调用而不单独执行,这与主程序相对。这个主程序也是由多个子程序模块组成,各程序模块都要完成一个明确的任务,实现某个具体的功能,、快加、复位,计数和显示等,在具体需要时调用相应的模块即可。程序代码//12M晶振。4位共阴数码管,P0段码,P2.0~P2.3位控//显示00.00~99.99//20110707E:\DPJ_C\00.00\00.00.c#includereg51.h#defineucharunsignedcharsbitP20=P2^0;sbitP21=P2^1;sbitP22=P2^2;sbitP23=P2^3;sbitP27=P0^7;sbitKS=P1^0;//开始sbitKR=P1^1;//复位uchartime,xs,ge,shi,bai,qian;ucharcodetab[]={0x3F,/*0*/0x06,/*1*/0x5B,/*2*/0x4F,/*3*/0x66,/*4*/0x6D,/*5*/0x7D,/*6*/0x07,/*7*/0x7F,/*8*/0x6F,/*9*/};voiddelay_ms(unsignedintms)//1ms延时{uchara;while(ms--)for(a=123;a0;a--);}voiddisplay();voidT0intinit()//定时器T0初始化{TMOD=0x01;TH0=(65536-10000)/256;//10ms定时TL0=(65536-10000)%256;EA=1;ET0=1;}voidmain(){T0intinit();while(1){display();while(!KS)//开始/暂停键{display();if(KS)TR0=!TR0;}while(!KR)//清零键{display();if(KR)TR0=0;qian=0;bai=0;shi=0;ge=0;}if(bai==10){bai=0;qian++;}if(qian==10){qian=0;TR0=0;}}}voiddisplay(){P23=0;P0=tab[ge];delay_ms(1);P23=1;P22=0;P0=tab[shi];delay_ms(1);P22=1;P21=0;P0=tab[bai]|0x80;delay_ms(1);P21=1;P20=0;P0=tab[qian];delay_ms(1);P20=1;}voidT0int()interrupt1//定时器T0中断方式1{TH0=(65536-10000)/256;//重装10ms定时常数TL0=(65536-10000)%256;ge++;if(ge==10){ge=0;shi++;}if(shi==10){shi=0;bai++;}}ISIS7Profession软件仿真利用KeiluVision软件对源程序进行编译,编译成功后,把编译结果保存。然后根据我们的软件在PROTEUS中设计出相应的硬件电路,并将该电路保存到与WAVE程序相同的文件夹中,最后将程序装载到单片机中,通过ISIS7Professionl仿真,看程序是否能够实现预想的功能课程设计体会经过一周的不懈努力,单片机的课程设计终于完成了。在这期间我们学会了很多,也学到了很多,同时,对单片机这门课程有了更深一步的理解和掌握。1、本次课程设计使我加深了对单片机课程的全面认识,复习和掌握,对MC-51单片机有了更深入的了解,对I/O口的使用,晶振电路的接法,以及复位电路等的掌握都有了很大程度的提高,这为以后的实践打下了良好的基础。2、掌握了定时器、外部中断的设置和编程原理。3、通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。4、还要根据实验的实际情况,添加些额外程序来使系统更加的稳定,如开关的消震荡(采用延迟)。5、程序要尽量做到由各个子程序组成,在有些程序后面最好加注释,这样在程序出错的检查过程中可以更容易查找的到,也更简洁,更明白易懂。6、我在编程过程中还有好多不理解的地方,经过同学的帮助终于完成了这次设计。在这个过程中体会到了合作的好处,更了解的互相帮助的重要性。由于编程能力的有限和所学知识的局限性,在这个程序和设计系统中虽然实现了所有的基本要求和部分的高级要求,但是这其中还有许多不完善的地方,有时在上翻和下翻时会出现一些问题,这说明我在这方面还存在着很多不足,知识不够完备和系统,在以后的学习中还有待提高。另外,在实践中虽然焊接好了硬件电路,却没能实践成功,希望老师能在以后的学习和生活中对我多加指导,促使我能取得更大的进步。参考文献【1】余发山编著.单片机原理及应用技术徐州:中国矿业大学出版社2003年【2】杨凌霄编著.微型计算机原理及应用.徐州:中国矿业大学出版社,2004年【3】杨宁编著.单片机与控制技术.北京:北京航空航天大学出版社,2004年【4】王闪编著.AT89系列单片机原理与接口技术.北京:北京航空航天大学出版社,2004年程序清单//12M晶振。4位共阴数码管,P0段码,P2.0~P2.3位控//显示00.00~99.99//20110707E:\DPJ_C\00.00\00.00.c#includereg51.h#defineucharunsignedcharsbitP20=P2^0;sbitP21=P2^1;sbitP22=P2^2;sbitP23=P2^3;sbitP27=P0^7;sbitKS=P1^0;//开始sbitKR=P1^1;//复位uchartime,xs,ge,shi,bai,qian;ucharcodetab[]={0x3F,/*0*/0x06,/*1*/0x5B,/*2*/0x4F,/*3*/0x66,/*4*/0x6D,/*5*/0x7D,/*6*/0x07,/*7*/0x7F,/*8*/0x6F,/*9*/};voiddelay_ms(unsignedintms)//1ms延时{uchara;while(ms--)for(a=123;a0;a--);}voiddisplay();voidT0intinit()//定时器T0初始化{TMOD=0x01;TH0=(65536-10000)/256;//10ms定时TL0=(65536-10000)%256;EA=1;ET0=1;}voidmain(){T0intinit();while(1){display();while(!KS)//开始/暂停键{display();if(KS)TR0=!TR0;}while(!KR)//清零键{display();if(KR)TR0=0;qian=0;bai=0;shi=0;ge=0
本文标题:秒表
链接地址:https://www.777doc.com/doc-3452869 .html