您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 基于89C51单片机的秒表课程设计
《单片机技术》课程设计报告题目:基于MCU-51单片机的秒表设计班级:学号:姓名:同组人员:指导教师:王瑞瑛、汪淳2014年6月17日目录1课程设计的目的....................................................................................32课程设计题目描述和要求....................................................................32.1实验题目.......................................................................................32.2设计指标.......................................................................................32.3设计要求.......................................................................................42.4增加功能.......................................................................................42.5课程设计的难点...........................................................................42.6课程设计内容提要.......................................................................43课程设计报告内容................................................................................43.1设计思路.......................................................................................43.2设计过程.......................................................................................53.3程序流程及实验效果..................................................................63.4实验效果....................................................................................134心得体会............................................................................................14基于MCS-51单片机的秒表设计摘要:单片机控制秒表是集于单片机技术、模拟电子技术、数字技术为一体的机电一体化高科技产品,具有功耗低,安全性高,使用方便等优点。本次设计内容为以8051单片机为核心的秒表,它采用键盘输入,单片机技术控制。设计内容以硬件电路设计,软件设计和PCB板制作三部分来设计。利用单片机的定时器/计数器定时和计数的原理,用集成电路芯片、LED数码管以及按键来设计计时器。将软、硬件有机地结合起来,使他拥有正确的计时、暂停、清零、并同时可以用数码管显示,在现实生中应用广泛。关键词:秒表;8051;定时器;计数器1课程设计的目的《单片机应用基础》课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的就是配合本课程的教学和平时实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有独立单片机产品和科研的基本技能,是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。2课程设计题目描述和要求2.1实验题目开始时,显示“00.0”,第一次按下按钮后开始从0-99.9s计时,显示精度为0.1s;对用有4个功能按键,第1个按键复位00.0,第2个按键正计时开始按钮,第3个按键复位99.9,第4个按钮倒计时开始。2.2设计指标了解8051芯片的的工作原理和工作方式,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、99.9秒、倒计时清零等功能,精确到0.1秒。要求选用定时器的工作方式,画出使用单片机控制LED数码管显示的电路图,并实现其硬件电路,并编程完成软件部分,最后调试秒表起动、停止、清零等功能。2.3设计要求(1)画出电路原理图(或仿真电路图);(2)软件编程与调试;2.4增加功能增加一个“复位00.0”按键(即清零),一个“暂停”和“开始”按键,一个“复位99.9”按键(用来99.9秒倒计时),一个倒计时“逐渐自减”按键。2.5课程设计的难点单片机电子秒表需要解决三个主要问题,一是有关单片机定时器(一个控制顺序计时,一个控制倒计时)的使用;二是如何实现LED的动态扫描显示;三是如何对键盘输入进行编程。2.6课程设计内容提要本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED数码管以及实验箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。其中本课程设计有四个开关按键:其中key2按键按下去时开始计时,即秒表开始键(同时也用作暂停键),key1按键按下去时数码管清零,复位为“00.0”,key3按键按下去时数码管复位为“99.9”(用于倒计时),key4按键按下去则是数码管开始“逐渐自减”倒计时。3课程设计报告内容3.1设计思路3.1.1系统硬件方案设计单片机应用系统由硬件系统和软件系统两部分组成。硬件系统是指单片机以及扩展的存储器、I\O接口、外围扩展的功能芯片以及接口电路。软件系统包括监控程序和各种应用程序。在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。与单片机配套的有相应的时钟电路如图3.1所示以及扩展的存储器和I\O接口,使单片机应用系统能够运行。在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED指示灯就可以进行处理了。在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。这里我们选择独立键盘如图3.2所示。系统硬件结构整体如图3.3所示。图3.1时钟电路图3.2按键电路图3.3系统硬件结构框图3.2设计过程3.2.1系统设计思路及描述该课程设计要求进行计时并在数码管上显示时间,则可利用MCS-51系列单片机的芯片AT89C52的P3.4,P3.5,P3.6,P3.7作为按键的入口;定时器T0作为每0.1秒减一的定时器;定时器T1作为每0.1秒加一的定时器。其中“开电源开关及指示模块四个独立功能按键模块系统时钟模块STC89C52RC三个数码管显示模块始”按键当开关由上向下拨时开始计时,此时若再拨“开始”按键则数码管暂停;“清零”按键当开关由上向下拨时数码管清零,此时若再拨“开始”按键则又可重新开始计时。方框图图3.4所示:图3.4数字秒表设计导向图3.2.2.课程设计仪器集成电路芯片8051,七段数码管,MCS-51系列单片机微机仿真课程系统中的软件(Keiluvision2),protues仿真软件。3.3程序流程及实验效果3.3.1程序流程图NY图3.5主程序流程图开始初始化判断是否开启中断计时等待中断发生调用显示子程序调用开关子程序图3.6按键流程图图3.7显示流程图计时数值入口计时数值除以100显示秒十位计时数值减去秒十位乘以100在除以10显示秒个位计时数值减去秒十位、秒个位显示微秒送显示到第一个数码管送显示到第二个数码管送显示到第三个数码管选择按键按键1按键2按键3按键4复位00.0按一下,正计时开始;再按一下,停止。复位99.9按一下,倒计时开始,再按下,停止。NYNY图3.8计时流程图3.3.2源程序及说明#includereg52.h//52系列单片机头文件#defineucharunsignedchar//宏定义#defineuintunsignedintsbitkey1=P3^4;//申明四个按键的锁存端sbitkey2=P3^5;sbitkey3=P3^6;sbitkey4=P3^7;ucharcodetable[]={//含有0~9的数字数组0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67};计时开始计时1.0s是否到秒位加1计时10s是否到十秒位加1ucharcodetable2[]={//含有0~9的数字数组(带小数点)0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfc,0x87,0xff,0xe7};voiddelayms(uint);//声明延时函数voiddisplay(uchar,uchar,uchar);//声明显示函数voidkeyscan();//声明按键函数ucharnum1,num2,bai,shi,ge;//变量声明uintnum;voidmain()//主函数入口{TMOD=0x11;//设置TO,T1定时器TH0=(65536-45872)/256;//装初值11.05992M晶振50ms数为45872TL0=(65536-45872)%256;TH1=(65536-45872)/256;TL1=(65536-45872)%256;EA=1;//开总中断ET0=1;//开启定时器T0中断ET1=1;//开启定时器T1中断while(1)//程序停在这里等待中断的发生,这个大循环也是实现数据显示的主体{keyscan();//三个数码管要选送的数据bai=num/100;//百位shi=(num-100*bai)/10;//十位ge=num-100*bai-shi*10;//个位display(bai,shi,ge);//数码管显示}}voiddisplay(ucharbai,ucharshi,ucharge){P1=0xfe;//位选选中第一个数码管P2=table[bai];//送段选数据delayms(10);//延时P1=0xff;//关闭位选P1=0xfd;//位选选中第二个数码管P2=table2[shi];//送段选数据delayms(10);//延时P1=0xff;//关闭位选P1=0xfb;//位选选中第二个数码管P2=table[ge];//送段选数据delayms(10);//延时P1=0xff;//关闭位选}voiddelayms(uintxms)//延时子函数{uinti,j;for(i=xms;i0;i--)//i=xms即延时约xms毫秒for(j=110;j0;j--);}voidkeyscan(){if(key1==0)//清零{delayms(10);//延时去抖if(key1==0){while(!key1)//等待按下{TR0=0;//定时器TR0关闭TR1=1;//定时器TR1打开num=0;//送数据num=0TR1=0;//定时器TR1关闭}}}if(key2==0)//暂停和开始{delayms(10);if(key2==0){while(
本文标题:基于89C51单片机的秒表课程设计
链接地址:https://www.777doc.com/doc-4250620 .html