单片机多功能秒表
基于单片机的多功能秒表

郑州科技学院单片机课程设计题目基于单片机的多功能秒表学生姓名专业班级学号院(系)指导教师完成时间2015 年1 月16 日目录1 设计概述 (1)1.1设计目的 (1)1.2设计要求 (1)1.3设计意义 (1)2 系统总体方案及硬件设计 (2)2.1系统总体方案 (2)2.2硬件设计 (2)2.3时钟电路 (3)2.4复位电路 (4)2.5按键电路 (5)2.6显示电路 (6)3 软件设计 (7)3.1设计思路 (7)3.2程序流程框图设计 (7)4 PROTEUS软件仿真 (9)5 课程设计体会 (10)参考文献 (12)附录1:总体电路原理图 (13)附录2:元器件清单........................................... 错误!未定义书签。
附录3:实物图 . (15)附录4:源程序 (16)1 设计概述1.1 设计目的设计一个单片机控制的秒表系统。
利用单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及按键来设计秒表。
将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时具有开始/暂停,记录,上翻下翻,清零等功能。
1.2 设计要求(1)共四位LED显示,显示时间为00:00~59.99(2)共五个按键,分别是开始/暂停,记录,上翻,下翻,清零键;(3)能同时记录多个相对独立的时间并分别显示;(4)按上下翻按钮查看多个不同的计时值;1.3 设计意义(1)通过本次课程设计可以使我们进一步熟悉和掌握单片机内部结构和工作原理,了解单片机应用系统设计的基本步骤和方法。
(2)通过利用A T89C51单片机,理解单片机在自动化仪表中的作用以及掌握单片机的编程方法。
(3)通过设计一个简单的实际应用输入及显示模拟系统,掌握单片机仿真软件PROTEUS的使用方法。
(4)该实验通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、功能,并能同时记录多个相对独立的时间利用翻页按钮查看多个不同的计时值,该种秒表在现实生活中应用广泛,具有现实意义。
新建基于单片机的多功能电子秒表提交版

摘要本设计不仅是一个简单的电子秒表,还能够显示电子时钟和年、月、日,还能够提供整点报时等功能,本设计的秒表能显示从毫秒级、秒级和分级三个段,分别用六个数码管显示,秒表能够精确计时,方便应用各个领域,另外硬件部分设置了开始、暂停、清零、复位以及电子时钟和电子秒表的切换按键,可以对秒表和时钟进行实时控制。
本设计的数字电子秒表和时钟是采用AT89C52为控制核心器件利用74LS245作为数码管的驱动芯片,再利用定时/计数器定时和计数原理,结合显示电路、数码管以及中断原理(实时与分时操作)来实现电子秒表的制作。
将软件、硬件有机的结合起来,使得系统能够实现六位数码管显示,能显示分、秒、毫秒,计时精度为0.01秒。
其中软件采用C语言编写程序,包括显示程序、电子秒表定时中断程序、电子时钟定时中断程序、外部中断程序、按键程序、延时程序和主程序。
并在keil中调试运行,利用proteus软件仿真调试,简单且易于观察,在仿真中可以观察到实际的工作状态。
关键字:单片机;AT89C52;74LS245;电子秒表,电子时钟,程序;仿真。
引言近年来,随着科技的飞速发展,单片机的应用正在不断的走向深入,同时带动着传统控制检测日新月异更新,在实时检测和自动控制的单片机应用系统中,单片机往往是作为控制核心来使用,仅是单片机方面的知识是不够的,还要根据具体的硬件结构,以及针对具体的应用对象的软件结合,加以完善。
单片机自二十世纪以来,以极好的性价比受到人们的重视和关注,所以发展很快,应用广泛。
单片机的主要特点是体积小、集成度高、抗干扰能力强。
对环境的要求较低,价格低廉、可靠性高、灵活性强、开发较容易等特点,所以广泛的应用到各个领域。
几乎到了无孔不入的地步,在我国单片机广泛的应用于工业自动化控制、自动检测、智能仪表、航空航天和军事技术领域等各方面我们可以开发利用单片机系统获得更高的经济效益,更重要的意义是单片机应用改变了传统的设计思想和方法。
基于单片机的多功能秒表设计

光电信息综合设计报告多功能秒表设计院(系)名称信息工程学院专业名称光电信息科学与工程姓名学号0指导教师2018年5 月20日摘要近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。
本文阐述了基于单片机的多功能电子秒表设计。
本设计主要特点就是具有倒计时功能,还可以按圈计时,而且误差在0、01s,就是各种体育竞赛的必备设备之一,另外硬件部分设置了查瞧按键,还具备有定时提醒功能,让您时时刻刻都掌握时间。
本设计的数字电子秒表系统采用STC89C52单片机为中心器件,利用其定时器/计数器定时与记数的原理,结合显示电路、数码管以及外部中断电路来设计计时器。
将软、硬件有机地结合起来,使得系统能够实现4位LED显示,显示时间99s内,能正确地进行计时,同时能记录10组时间,并在暂停就是对时间进行查询。
其中软件系统采用C语言编写程序,包括显示程序,定时中断服务延时程序等,并在KEIL中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。
关键字:单片机;数字电子秒表;提醒目录1 总体设计方案 (1)2 硬件设计 (3)2、1 单片机的选择 (3)2、2 显示电路的选择与设计 (5)2、3 按键电路的选择与设计 (6)2、4 时钟电路的选择与设计 (6)2、5 系统总电路的设计 (7)3 软件设计 (9)3、1 程序设计思想 (9)3、2 主程序设计 (9)3、3 中断程序设计 (10)3、4程序模块设计: (11)主程序................................................................................... 错误!未定义书签。
(2)停止子程序...................................................................... 错误!未定义书签。
单片机课设多功能秒表

1 引言设计一个单片机控制的秒表系统。
利用单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及按键来设计计时器。
将软、硬件有机地结合起来,使得系统能够正确地进行加、减(倒)计时,数码管能够正确地显示时间。
设计要求如下:1、能同时记录四个相对独立的时间并分别显示。
2、两位LED动态显示,显示时间为00~99秒。
3、每秒自动加1。
4、一个开始按键、一个复位按键、一个暂停按钮和一个计录按钮(附加功能)。
5、翻页按钮查看四个不同的计时值。
2 设计方案及原理本系统采用AT80C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合硬件电路如电源电路,晶振电路,复位电路,显示电路,将软、硬件有机地结合起来。
其中软件系统采用汇编语言编写程序,包括显示程序,加减计数程序,,中断,延时程序,按键消抖程序等,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。
系统电路原理图如图1所示。
图1 系统电路原理3 硬件设计3.1 单片机MCS-51单片机在一块芯片上集成了CPU,存储器RAM,ROM以及输入与输出接口电路,这种芯片习惯上被称为单片微型计算机,简称单片机。
3.2 复位电路单片机的复位操作有上电自动复位和按键自动复位两种方式。
上电复位是通过外部复位电路的电容充电来实现的。
这个系统中的复位电路是采用上电加按钮来实现的。
因为MCS-51单片机的复位是靠外部电路实现的。
MCS-51单片机工作之后,只要在他的RST引线上加载10ms以上的高点平,单片机就能有效地进行复位。
如图2所示。
图2 复位电路3.3 晶体振荡电路时钟电路用于产生单片机工作所需的时钟信号。
在MCS-51系列单片机芯片外部,通过XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟电路。
如图3所示。
图3 晶体振荡电路3.4 键盘电路我们采用按键电路,用部分P1口做开关,P1.0停止,P1.1复位,P1.3暂停记录,P1.4上翻,P1.5下翻。
基于单片机的多功能秒表系统课程设计

基于单片机的多功能秒表系统课程设计单片机课程设计报告多功能秒表系统设计姓名:学号:专业班级:指导老师:所在学院:2009年6月10日单片机已经无处不在,与我们生活更是息息相关并已渗透到了生活的方方面面。
单片机的特点是体积小,重量轻,功能强,通用性好,也就是说集成度高,其内部的结构是普通的计算机系统的简化。
在增加一些外围电路之后,就能成为一个完整的系统。
在众多单片机中,MCS-51系列单片机具有系统结构完整,特殊功能寄存器规范化以及指令系统的控制功能强等特色,使起成为单片机中的主流机型。
本设计是一个由AT89C51单片机控制,利用单片机的定时器/计数器定时和记数的原理,结合显示电路、电源电路、LED数码管以及键盘电路按键计时来实现的多功能秒表系统。
在本次设计中我们以AT89C51单片机为主要器件,利用它的定时器/计数器定时和记数的原理,结合7809电源提供的+5V稳压电压,上电加按钮复位电路,晶体振荡电路,由P0口驱动的LED动态显示电路,键盘电路等来完成多功能秒表的设计。
这个多功能秒表系统能够实现两位LED显示,显示的时间为00~99秒,每秒自动加1,能正确地进行加、减(倒)计时,能同时记录4个相对独立的时间,通过上翻键和下翻键来查看这4个不同的计时值,还具有快加和复位功能,基本上实现了老师的要求。
我们使用汇编语言来编写程序,采用模块化程序设计方法,主程序有多个子程序构成,这些子程序可以单独的设计,调试和管理,其中包括加1子程序、减1子程序、延时子程序、快加子程序,复位子程序和显示子程序等。
将源程序代码在WAVE中进行编译和调试,硬件系统利用Proteus软件来实现,可以方便的看到运行结果。
关键词:多功能秒表、单片机、子程序模块、Proteus仿真1 概述 (3)1.1单片机简介 . (3)1.2设计任务 (3)1.3设计要求 (3)2 系统总体方案及硬件设计 ......................................................错误!未定义书签。
单片机多功能秒表课程设计

单片机课程设计报告电子秒表摘要:本设计的成品是在单片机最小系统的基础上增加显示电路和控制电路来完成电子秒表的硬件电路的。
电子秒表电路主要由AT89S52单片机最小系统电路、七段数码管动态显示电路和控制电路组成,它能实现八位数码显示和多次计时,能通过控制电路能控制时间的暂停、开始和清零,能够多次存储时间,并查询显示计时时间的顺序。
关键字:AT89S52 数码管最小系统1 方案设计1.1系统分析设计的电路主要是能多次记时和查询时间,记时的多少通过显示电路显示出来,每一次计时可以通过控制电路查询出来。
设计框图如图一所示;1.2系统方案方案一:利用AT89S52单片机设计数显定时器和定时器。
单片机软件编程灵活、自由度大,可用软件编程实现各种控制算法和逻辑控制。
利用74HC573锁存器和按键作为控制电路,通过位选和段选来实现数码管的显示。
2 硬件设计2.1 控制芯片的介绍AT89S52(与AT89S51相同)单片机的外型如图四所示。
单片机可分为通用型和专用型,种类繁多。
这里我们主要介绍AT89S52单片机是属于典型代表的MCS-51系列单片机,它是一种能处理8位数据的通用型单片机。
以Atmel公司生产的具有CMOS工艺、低功耗、高性能的AT89S52为例,介绍单片机的工作原理、控制程序的编写及开发应用。
AT89S52是一个高性能CMOS 8位单片机,芯片内集成了通用8位中央处理器,片内含8k Bytes的可反复擦写1000次的Flash只读程序存储器(ROM), 支持ISP(In-system programmable)功能。
AT89S52内部有128 bytes的随机存取数据存储器(RAM),图五 AT89S52引脚图5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT )电路,片内时钟振荡器。
兼容标准MCS-51指令系统及80C51引脚结构。
图四AT89S52有40个引脚,32个外部双向输入/输出(I/O )口。
51单片机,实现秒表功能

#define uchar unsigned char
#define uint unsigned int
char cent=0;
char second=0;
char minite=0;
bit s2=0;
bit s3=0;
bit s4=0;
bit s5=0;
bit s6=0;
/********************************************************/
//函数名:void Delay1ms(uint count)
//功能:延时时间为1ms
//输入参数:count,1ms计数
//说明:总共延时时间为1ms乘以count,crystal=12Mhz
/*共阳数码管字型码*/
/*0,1,2,3,4,5,6,7,8,9,p.,灭*/
char code dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c,0xff,0xbf};
/*P点显示代码序号*/
char data find_code[]={0,0,12,0,0,12,0,0};
/********************************************************/
/*延迟函数*/
void Delay1ms(uint count)
{
uint j;
while(count--!=0)
{
for(j=0;j<80;j++);
}
}
/************************************************************************/
单片机多功能秒表

单片机综合实验报告题目: 多功能数字时钟班级:姓名:学号:一、实验内容:设计一个单片机控制的秒表系统.利用单片机的定时器的原理,结合显示电路、LED数码管以及按键来设计计时器,使系统能够正确地进行加、减<倒)计时,数码管能够正确地显示时间.6tCXaz8fPRb5E2RGbCAP目的要求1)两位LED显示,显示时间为00~99秒.2)每秒自动加1.3)一个开始按键、一个复位按键和一个暂停按钮.4)翻页按钮查看四个不同的计时值 .5)添加倒计时初始值设置功能6)不同功能通过功能键Setup实现切换.二、实验电路及功能说明本实验以51单片机为核心,应用其中断来定时,通过按键来控制时间和日期的调整,通过1602LCD来数字显示时钟,做成一个简易的数字时钟.本实验要求能定时,还要能设置闹铃,由于对C51程序代码的写法不是很熟,没能实现闹铃功能.所以,最后该实验能实现的功能为时间和日期的调整.6tCXaz8fPRp1EanqFDPw其原理图如下图所示:三、实验程序流程图:主程序:主程序流程图子流程图<按键功能设置)四、实验结果分析经过proteus仿真可知:该方案可行,能够对时间进行精确的调整,也能对日期进行更正,基本上能实现上述功能.6tCXaz8fPRDXDiTa9E3d五、心得体会通过该实验我对51的了解更加深入了一层,特别是对C51的写法更加了解,还对1602的基本操作有了一定的了解.同时,也发现C语言的重要性,以后要多加强对C语言的学习.6tCXaz8fPRRTCrpUDGiT六、程序清单#include <REG52.H>#include <INTRINS.H> //库函数头文件,代码中引用了_nop_(>函数// 定义控制信号端口sbit RS=P2^4。
//P2.4sbit RW=P2^5。
//P2.5sbit E=P2^6。
//P2.6sbit set=P1^4。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机综合实验报告题目: 多功能数字时钟班级:姓名:学号:一、实验内容:设计一个单片机控制的秒表系统。
利用单片机的定时器的原理,结合显示电路、LED 数码管以及按键来设计计时器,使系统能够正确地进行加、减(倒)计时,数码管能够正确地显示时间。
目的要求1)两位LED显示,显示时间为00~99秒。
2)每秒自动加1。
3)一个开始按键、一个复位按键和一个暂停按钮。
4)翻页按钮查看四个不同的计时值。
5)添加倒计时初始值设置功能6)不同功能通过功能键Setup实现切换。
二、实验电路及功能说明本实验以51单片机为核心,应用其中断来定时,通过按键来控制时间和日期的调整,通过1602LCD来数字显示时钟,做成一个简易的数字时钟。
本实验要求能定时,还要能设置闹铃,由于对C51程序代码的写法不是很熟,没能实现闹铃功能。
所以,最后该实验能实现的功能为时间和日期的调整。
其原理图如下图所示:三、实验程序流程图:主程序:主程序流程图子流程图(按键功能设置)四、实验结果分析经过proteus仿真可知:该方案可行,能够对时间进行精确的调整,也能对日期进行更正,基本上能实现上述功能。
五、心得体会通过该试验我对51的了解更加深入了一层,特别是对C51的写法更加了解,还对1602的基本操作有了一定的了解。
同时,也发现C语言的重要性,以后要多加强对C语言的学习.六、程序清单#include <REG52.H>#include <INTRINS.H> //库函数头文件,代码中引用了_nop_()函数// 定义控制信号端口sbit RS=P2^4; //P2.4sbit RW=P2^5; //P2.5sbit E=P2^6; //P2.6sbit set=P1^4; //设置键sbit add1=P1^5; //加1键sbit sub1=P1^6; //减1键sbit enter=P1^7; //确认键bit k=0,f=0;//k为0表示运行状态,k为1表示设置状态;f为0表示第一行显示,f为1表示第二行显示char sec,n,m;unsigned char count,key;unsigned char lcdd[]="0123456789";/*声明调用函数*/void dispd(); //日期显示函数void dispt(); //时间显示函数unsigned char keys();//按键扫描函数void lcd_w_cmd(unsigned char com); //写命令字函数void lcd_w_dat(unsigned char dat); //写数据函数unsigned char lcd_r_start(); //读状态函数void int1(); //LCD初始化函数void delay(unsigned char t); //可控延时函数void delay1(); //软件实现延时函数,5个机器周期/*主函数*/void main(){TMOD=0x01; //设置为定时器模式1TH0=(65536-50000)/256; //晶振6MHz,定时时间100msTL0=(65536-50000)%256;IE=0x82; //开全局中断和定时中断TR0=1; //启动定时器sec=0; //秒count=0; //中断次数清0n=-3; //设置键按下次数,第一行日期m=-3; //设置键按下次数,第二行时间P0=0xff; // 送全1到P0口int1(); // 初始化LCDdelay(255);while(1){key=keys(); //读取按键switch(key){case 0xe0: //按下设置键{TR0=0;k=1;if(f==0){n=n+3;if(n==9){n=0;m=0;f=1;}}else{m=m+3;if(m==12){m=0;n=0;f=0;}}if(f==0){lcd_w_cmd(0x0d);lcd_w_cmd(0x86+n);}else{lcd_w_cmd(0x0d);lcd_w_cmd(0xc4+m);}} break;case 0x70: //按下确认键{k=0;TR0=1;n=-3;m=-3;f=0;} break;case 0xd0: //按下加1键{if(k==1){if(f==0){(m==6){sec++;if(sec==100) sec=0;}dispt(); //调用第二行显示函数lcd_w_cmd(0x0d); //光标闪烁lcd_w_cmd(0xc4+m);//返回设置值显示地址}}} break;case 0xb0: //按下减1键{if(k==1){if(f==0){if(m==6){sec--;if(sec<0) sec=99;}dispt(); //调用第二行显示函数lcd_w_cmd(0x0d); //光标闪烁lcd_w_cmd(0xc4+m);//返回设置值显示地址}}} break;}if(k==0) {dispd();dispt();} //调用LCD显示函数}}/*延时函数*/void delay(unsigned char t){unsigned char j,i;for(i=0;i<t;i++)for(j=0;j<20;j++);}/*延时函数1*/void delay1(){_nop_();_nop_();_nop_();}/*LCD初始化函数*/void int1(){lcd_w_cmd(0x3c); // 设置工作方式lcd_w_cmd(0x0c); // 设置光标lcd_w_cmd(0x01); // 清屏lcd_w_cmd(0x06); // 设置输入方式lcd_w_cmd(0x80); // 设置初始显示位置}/*LCD读状态函数*///返回值:返回状态字,最高位D7=0,LCD控制器空闲;D7=1,LCD 控制器忙unsigned char lcd_r_start(){unsigned char s;RW=1; //RW=1,RS=0,读LCD状态delay1();RS=0;delay1();E=1; //E端时序delay1();s=P0; //从LCD的数据口读状态delay1();E=0;delay1();RW=0;delay1();return(s); //返回读取的LCD状态字}/*LCD写命令函数*/void lcd_w_cmd(unsigned char com){unsigned char i;do { // 查LCD忙操作i=lcd_r_start(); // 调用读状态字函数i=i&0x80; // 与操作屏蔽掉低7位delay(2);} while(i!=0); // LCD忙,继续查询,否则退出循环RW=0;delay1();RS=0; // RW=0,RS=0,写LCD命令字delay1();E=1; //E端时序delay1();P0=com; //将com中的命令字写入LCD数据口delay1();E=0;delay1();RW=1;delay(255);}/*LCD写数据函数*/void lcd_w_dat(unsigned char dat){unsigned char i;do { // 查忙操作i=lcd_r_start(); // 调用读状态字函数i=i&0x80; // 与操作屏蔽掉低7位delay(2);} while(i!=0); // LCD忙,继续查询,否则退出循环RW=0;delay1();RS=1; // RW=1,RS=0,写LCD数据delay1();E=1; // E端时序delay1();P0=dat; // 将dat中的显示数据写入LCD数据口delay1();E=0;delay1();RW=1;delay(255); }/*****定时中断函数*****/void timer0() interrupt 1{TH0=(65536-50000)/256; //晶振6MHz,定时时间100msTL0=(65536-50000)%256;count++;if(count==20){count=0;sec++;if(sec==99){sec=0;} /*按键扫描函数*/unsigned char keys(){unsigned char cod,del;P1=0xf0;cod=P1&0xf0; //读入P3口键值if(cod!=0xf0) //先检测有无按键按下{delay(100); //去抖if(cod!=0xf0){cod=P1&0xf0; //读入键值do //等待键释放{P1=0xf0;del=P1&0xf0;}while(del!=0xf0);return(cod);//返回键值}}return(0xf0); //返回该值}void dispt(){lcd_w_dat(lcdd[sec%10]);delay(2);lcd_w_dat(' ');delay(2);lcd_w_dat('W');delay(2);}。