单片机课程设计报告基于MCS-51单片机的时钟设计.doc
《单片机课程设计报告基于MCS-51单片机的时钟设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计报告基于MCS-51单片机的时钟设计.doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机课程设计报告设计课题:基于MCS-51单片机的时钟设计专业班级:小组成员:指导教师: 设计时间: 目录设计任务与要求31.基本设计要求32.选作项目4相关硬件结构概述41.硬件结构原理42.相关电路图:7软件结构概述8程序清单10程序调试17课程总结17参考文献19设计任务与要求1.基本设计要求 (1)在ZY15MCU12BD型综合单片机实验箱的硬件结构上编写软件完成设计。也可以在其它MCS51单片机硬件板上完成,或自行设计硬件并制做完成。 (2)程序的首地址应使目标机可以直接运行,即从0000H开始。在主程序的开始部分必须设置一个合适的栈底。程序放置的地址须连续且靠前,不要在中间留下大
2、量的空闲地址,以使目标机可以使用较少的硬件资源。(3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 (4)在键盘上选定3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。 分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。 (5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法。 (6)上机调试通过。2.选作项目 有能力的同学,在做完以上设计后,可选作此项设计
3、内容。 (1)另设三个键,分别作小时、分、秒的减1调校。 (2)在以上设计的基础上,修改程序制作一个电子秒表。分、秒各占用2位显示,1/10秒、1/100秒各占用1位显示。设定二个键分别作启动停止、清零。 (3)在做完(2)后,将时钟与秒表合二为一,并且在同时使用时互不影响。即可在时钟与秒表之间任意切换,而不影响走时、计秒。相关硬件结构概述硬件结构原理该课程设计基于STC89C52单片机为核心完成的,外加少量其他辅助器件,硬件结构比较简单。由于本电路结构比较简单,单片机I/O口完全够用,故我们将6位8段LED直接和单片机相连。硬件结构中的6位8段LED显示器,采用动态方式驱动。我们采用的是共阳
4、电路,一位LED显示器显示内容一段时间,然后下一位LED显示器显示内容一段时间,周而复始。只要刷新频率不小于50Hz,就可以获得清晰稳定的显示效果。 为了增加和位选相连接的I/O口的驱动能力,直接接上上拉电阻。在本设计中,只使用了6个按键。复位键,模式设定键、2个上下调节键。1、定时器/计数器 定时器/计数器简称定时器,其作用主要用于生产各种时间间隔、记录外部脉冲与事件的数量等,是微机中最常用、最基本的部件之一。89C52单片机有2个16位的定时器/计数器0(T0)和定时器1(T1).T0由2个定时寄存器TH0和Th0构成,T1则由Th1和TL1构成,他们分别映射在特殊功能寄存器中,从而可以通
5、过对特殊功能寄存器的读写来实现对这两个定时器的操作。作为定时器时,每个机器周期定时寄存器自动加1,所以定时器也可以看做是计量机器周期的计数器。由于每个机器周期为12个时钟震荡周期,所以定时器的分辨率是时钟震荡频率的1/12.作为计数器时,只要在单片机外部引脚T0(T1)有从1到0电平的负跳变,计数器自动加1.计数的最高频率一般为振荡频率的1/24,例如,选用12MHz晶振,则最高计数频率为0.5MHz。2、中断系统当中央处理器CPU正在执行某程序时,由于某种原因,外界向CPU发出暂停目前工作去处理更重要的事情的请求,程序被打断;CPU响应该请求并转入相应的处理程序,处理程序完成以后,再返回原来
6、程序被打断的位置,继续原来的工作,这一过程称为中断。实现中断功能的部件称为中断系统,或称为中断控制逻辑系统。89C52单片机的中断系统简单实用。其基本特点是:有6个固定的可屏蔽的中断源,4个在片内,2个在片外,他们在程序存储器中各有固定的中断入口地址,由此进入中断服务程序;6个中断源由两级有先级,可形成中断嵌套;2个特殊功能寄存器用于中断控制和条件设置的编程。若某个中断源通过编程设置,处于被打开的状态,并满足中断响应的条件,而且满足如下3个条件时,单片机响应此中断:1)当前正在执行的那条指令已被执行完。2)当前未响应同级或高级中断。3不在操作IE、IP中断控制寄存器或执行RETI中断指令。在正
7、常情况下,从中断请求信号有效开始,到中断得到响应,通常需要3个机器周期到8个机器周期。中断得到响应后,自动清除中断请求标志(对串行IO端口的中断标志,要用软件清除),将断点即程序计数器之值(PC)压入堆栈(以备恢复用);然后把相应的中断入口地址装入PC,使程序转入相应的中断服务程序中去执行。各个中断源在程序寄存器中的中断入口地址如表1所示。中断源入口地址INT0(外部中断0)0003HTF0(T0中断)000BHINT1(外部中断T1)0013HTF1(T1中断)001BHRI/TI(串行口中断)0023HTF2(T2中断)002BH各个中断入口地址相隔很近,不便于存放各个比较长的中断服务程序
8、,故通常将中断服务程序存放在另外方便存放的地方,而在中断入口地址开始的二三个单元中,安排一条转移类指令,以转入中断服务程序。由于6个中断源各有其中断求标志IE0、TF0、IE1、TF1、RI/TI以及TF2,在中断源满足中断请求的条件下,各标志自动置1,向CPU请求中断。如果某个中断源提出中断请求后,CPU不能立即响应,只要该中断请求标志不被软件认为清除,中断请求的状态就将一直保持,直到CPU响应此中断为止。对串行口中断而言,这一过程与其他5个中断的不同之处在于,即使CPU响应了中断,其中断标志RI/TI也不会清零,必须在中断服务程序中设置清除RI/TI的指令后,才有可能再一次提出中断请求。C
9、PU的现场保护和恢复必须由被响应的相应中断服务程序去完成。当执行RI/TI中断返回指令后,断点值自动从栈顶2字节弹出并装入PC寄存器,使CPU继续执行被打断的程序。本课程设计中用到的定时器T0,并通过T0定时时间到产生中断。由于实验中定时器T0工作于方式1(即16位方式)且定时器中断允许,因此当定时器计满回零时,TF=1,并可申请中断;当CPU响应中断并进入中断服务程序后,TF自动清零。所以,在中断服务程序中只需要重新设置定时器初始值。如果通过对TF查询来确定定时器状态(定时器中断不被允许),在查得TF=1,亦即定时器回零后,要用指令将TF清零,以便下次操作。相关电路图:八段数码管:共阳极电路
10、:各部分电路原理图:显示部分电路:电源部分电路:单片机部分电路:数码管驱动电路:控制按钮:复位电路:仿真原理图:最后的PCB图:软件结构概述1主程序在主程序中只完成系统的初始化,同时进行时、分、秒按键的扫描。如果有按键按下,则做相应时、分、秒计数数据的加1处理。主程序执行的流程图如下图所示:开始初始化( 定时器、显示区、中断系统、计数单元等)开中断调用显示子程序调用键盘扫描子程序N有键按下?Y关中断Y秒加1处理秒键?NY分加1处理NY小时加1处理分键?小时键?N图1 主程序流程图(2)定时器中断服务程序定时器T0用于时间计时。定时计数个数为5000,由于采用12MHz晶体振荡器,所以定时益处中
11、断周期为5000u s=1ms。为保证计时的准确性,进入中断服务程序时应立即重设计数初始值。在中断程序中还要判断是否计时1s,若是,还应通过调用其他子程序作时、分、秒值的处理。定时器中断处理重送初值保护现场计数单元加1N到1秒?秒加1N秒清0、分加1秒到60?N分清0、小时加1分到60?N小时到24?小时清0恢复现场中断返回图2 定时器中断程序流程图(3)显示子程序该子程序通过在中断服务程序中被调用而执行。每一次中断程序调用一次,其作用是根据扫描指针循环驱动各个数码管。(4)时钟调整子程序当中断程序中判断出计时1s时,该程序即被调用执行。其作用为将秒的计数值加1,同时判断是否应对时批、分作相应
12、修改。(5)延时子程序用于键盘的延时去抖。程序清单:#include#include#define uchar unsigned char#define uint unsigned int/*八段共阴管显示定义*/ unsigned char wei8=0x1f,0x2f,0x37,0x3b,0x3d,0x3e;unsigned char code duan1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char code duan2=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xf
13、f,0xef;uchar BUFF6; /*定义并初始化变量*/uchar second=0; minute=0;hour=0;unit=0;hun=0;ten=0;sec=0;min=0;m,n,q; sbit P_s_add_on_off=P10; / 键值的定义sbit P_m_add=P11; sbit P_h_add=P12; sbit P_s_sub=P13;sbit P_m_sub=P14;sbit P_h_sub=P15;sbit P_del=P16;sbit P_tran=P37;/*函数声明*/void delay(uchar k ); /延时子程序void time( )
14、; /时间处理子程序void display( ); /时间显示子程序void keyboard( ); /键盘扫描子程序void stopwatch( ); /秒表显示子程序/*/*延时子程序*/*/void delay (uchar k)uchar j;while(k-)!=0) for(j=0;j125;j+) ; /*/* 时间显示子程序*/*/void display(void) uchar i;BUFF0=duan1second%10; /显示秒的个位BUFF1=duan1second/10; /显示秒的十位BUFF2=duan2minute%10; /显示分的个位BUFF3=du
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告 基于 MCS 51 时钟 设计
限制150内