单片机课程设计姓名:仇成功学号:201311041063学院:理学院班级:电子信息科学与技术-22目录1引言...................................................................31.1单片机的发展概况..................................................31.2数字秒表的描述与分析..............................................41.2.1问题描述.......................................................41.2.2设计要求.......................................................42设计目的及要求.........................................................52.1设计目的..........................................................52.2设计要求..........................................................63系统硬件电路设计.......................................................63.1数字秒表电路原理..................................................63.2数字秒表电路设计..................................................94软件设计..............................................................104.1编程环境的介绍...................................................104.2设计思想.........................................................104.3主程序设计.......................................................104.4外部中断程序设计.................................................114.5定时中断程序设计.................................................124.6实验程序.........................................................135仿真结果..............................................................17总结....................................................................20附录1..................................................................21231引言1.1单片机的发展概况单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,数据采集系统、智能化仪器仪表,及通讯设备、日常消费类产品、玩具等。并且已经深入到工业生产的各个环节以及人民生活的各层次中,如车间流水线控制、自动化系统等、智能型家用电器(冰箱、空调、彩电)等。管脚图如图1所示。图189C52单片机引脚图(1)电源地组Vcc和Vss;VCC—(40)脚接+5V电压;VSS—(20)脚接地(2)时钟电路组XTAL1和XTAL2(3)控制信号组RST/ALE/PSEN和EA(4)I/O端口P0,P1,P2和P3近来,单片机的发展尤为迅猛,并且趋于高智能化、存储器大量化、更多的外围电路内装化以及工艺上的多元化等方向,广泛应用于单机应用领域、多机应用领域、自动4控制领域和智能化控制领域等。单片机应用系统的结构通常分为三个层次,即单片机、单片机系统和单片机应用系统。单片机通常指应用系统主处理机,即所选择的单片机器件等。单片机系统指按照单片机的技术要求和嵌入对象的资源要求而构成的基本系统。时钟电路、复位电路和扩展存储器等与单片机共同构成了单片机系统。单片机应用系统指能满足嵌入对象要求的全部电路系统。在单片机系统的基础上加上面向对象的接口电路,如前向通道、后向通道、人机交互通道(键盘、显示器、打印机等)和串行通信口(RS232)以及应用程序等。单片机应用系统层次关系如图2所示。图2单片机应用系统三个层次的关系1.2数字秒表的描述与分析1.2.1问题描述设计一个秒表,第一次按键,开始计数,数码管显示从00.00每10毫秒自动加1;第两二次按键,系统暂停计数,数码管显示当前的计数;第三次按键系统清零,数码管显示00.00。1.2.2设计要求1.使用四位数码管显示,显示时间00.00~99.99秒;2.正常计数时,每10毫秒自动加1;3.一个按键(包括开始、暂停、清零),一个复位按键;向后通道单片机单片机系统单片机应用系统向前通道人机交互通道应用程序串行通信口54.实现计数、复位、清零功能;5.单片机通电后,首先初始化。第一次按键用来控制秒表工作的开始;第二次按键用来暂停程序的运行;第三次按键用来进行显示器清零;复位键是用来对程序复位用的,当程序出现死循环或想从00.00开始重新计时,按下复位键可返回程序开始,重新执行。2设计目的及要求2.1设计目的1.建立数字电子电路系统的基本概念;62.通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。3.掌握定时器、外部中断的设置和编程原理。4.通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。2.2设计要求设计一个数字电子秒表,该秒表具有显示功能和清零、开始计时、停止计时等功能。设计的要求如下:1.以10毫秒为最小单位进行显示;2.秒表可显示00.00~99.99秒的量程;3.该秒表具有清零、开始计时、停止计时功能;3系统硬件电路设计3.1数字秒表电路原理数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。本设计用单片机组成数字电子秒表,力求结构简单、精度高为目标。设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制器,计时与显示电路和回零、启动等。主控制器采用单片机89C52,显示电路采用四位共阳极LED7数码管显示计时时间。由于本实验有四位数码管,如果采用静态显示要占用全部的I/O端口,所以本次试验采用静态显示,共使用12个引脚,即简化了电路又节省了原料。本设计利用89C52单片机的定时器/计数器定时和记数的原理,使其能精确计时。利用中断系统使其能实现开始和复位的功能。P2口输出段码数据,74HC573用作驱动输出,P1.0口接一个按钮开关,分别实现开始、暂停、清零功能。电路原理图设计最基本的要求是正确性,其次是布局合理,最后在正确性和布局合理的前提下力求美观。秒表原理图如图3所示。8图3秒表原理图93.2数字秒表电路设计图4秒表设计图104软件设计4.1编程环境的介绍KeilSoftware公司推出的uVision3是一款可用于多种8051MCU的集成开发环境(IDE),该IDE同时也是PK51及其它开发套件的一个重要组件。除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外,uVision3还提供了一个配置向导功能,加速了启动代码和配置文件的生成。此外其内置的仿真器可模拟目标MCU,包括指令集、片上外围设备及外部信号等。uVision3提供逻辑分析器,可监控基于MCUI/O引脚和外设状态变化下的程序变量。uVision3提供对多种最新的8051类微处理器的支持,包括AnalogDevices的ADuC83x和ADuC84x,以及Infineon的XC866等4.2设计思想本设计采用了C语言编写,由于C语言编程灵活,可移植性强。在一定程度上简化了编程过程。模块化结构程序的设计,可以使系统软件便于调试与优化,也使其他人更好地理解和阅读系统的程序设计。4.3主程序设计本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序组成。其中主程序是整个程序的主体。可以对各个中断程序进行调用。协调各个子程序之间的联系。系统(上电)复位后,进入主程序,主程序流程图如图5所示。当外部中断有请求则去执行外部中断服务程序。并在执行完后返回主程序。114.4外部中断程序设计中断的概念:CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。K=1Temp++图5主程序流程图开开始始程序初始化Temp=0K=2Temp=tempK=0Temp=0显示数据开始124.5定时中断程序设计定时/计数器的结构:定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。定时/计数器的原理加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0图6中断程序子流程图否K=2是K++INT0中断K=013或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。图7定时器T0子程序流程图4.6实验程序4.61主函数设计voidmain(){init();//初始化子程序while(1){if(k==0){init();//初始化子程序wela=1;//初始设置显示00.00否是中断返回定时器T0入口地址调用数码显示子程序Temp加1置初值定时器溢出中断14P2=0XFF;wela=0;P0=0xc0;}if(k==1)//第二次按键开始计数{if(temp==9999)//当计数超过99.99秒时清零{temp=0;}qian=temp/1000;//计算数码管第一位bai=temp%1000/100;//计算数码管第二位shi=temp%1000%100/10;//计算数码管第三位ge=temp%10;//计算数码管第四位display(qian,bai,shi,ge);//显示时间}Else//第二次按键时停止{qian=temp/1000;bai=temp%1000/100;shi=temp%1000%100/10;ge=temp%10;display(qian,bai,shi,ge);if(k==3)//第三次按键时清零k=0;}}}154.62中断子程序设计voidtime0()interrupt0//中断子程序{k++;}4.61延时子函数设计4.61显示子程序设计voiddisplay(uintqian,uintbai,uintshi,uintge)//显示子函数{wela=1;//显示数码管第一位P2=0x01;wela=0;P0=table[qian];delay(1);wela=1;//显示数码管第二位P2=0x02;wela=0;P0=table1[bai];delay(1);wela=1;//显