请用QX-MCS51开发板制作一份简易秒表,要求用到独立按键,数码管,流水灯,蜂鸣器。并写出实验报告与代码

时间: 2023-08-06 21:02:20 浏览: 52
实验报告: 一、实验目的 本实验的目的是使用QX-MCS51开发板,设计并实现一个简易秒表,通过独立按键控制启动、停止、复位,通过数码管显示时间,通过流水灯和蜂鸣器进行提示。 二、实验原理 1.秒表原理 秒表是一种计时器,可以用来测量时间间隔。在本实验中,我们使用单片机作为计时器,通过定时器中断来实现时间的计算和更新。 2.独立按键原理 独立按键是一种开关元件,通过按下和松开按键来实现电路的开关。在本实验中,我们使用独立按键来控制启动、停止、复位秒表。 3.数码管原理 数码管是一种数字显示器件,可以显示数字和一些字母。在本实验中,我们使用数码管来显示秒表的时间。 4.流水灯原理 流水灯是一种LED灯的组合,可以实现类似于水流一样的效果。在本实验中,我们使用流水灯来进行提示。 5.蜂鸣器原理 蜂鸣器是一种声音发生器,可以发出不同的声音。在本实验中,我们使用蜂鸣器来进行提示。 三、实验步骤 1.接线 将独立按键的一个端口连接到P1.0,连接到P1.1,连接到P1.2;将数码管的A~G端口连接到P2.0~P2.6,连接DP端口到P2.7;将流水灯的LED1~LED8端口连接到P0.0~P0.7;将蜂鸣器的正极连接到P3.5,负极连接到VCC。 2.编写程序 首先定义一些常量和变量,包括计时器、秒数、分数、小时数、是否启动、是否停止等。然后编写定时器中断函数,在其中更新计时器和时间。接着编写启动、停止、复位函数,通过设置标志位来控制秒表的状态。最后在主函数中循环调用启动、停止、复位函数,并控制流水灯和蜂鸣器。 3.下载程序 将程序下载到QX-MCS51开发板中。 4.测试 按下启动键开始计时,再按下停止键停止计时并显示时间,再按下复位键可以重新开始计时。 四、实验代码 ``` #include <REG52.H> #include <intrins.h> #define uchar unsigned char #define uint unsigned int #define LED P0 #define KEY P1 #define DIG P2 sbit BEEP = P3^5; uchar code Table[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF}; uchar hour = 0; uchar min = 0; uchar sec = 0; uchar msec = 0; bit Start = 0; bit Stop = 0; void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void delayus(uint xus) { while(xus--); } void Timer0Init() { TMOD |= 0x01; TH0 = (65536-1000)/256; TL0 = (65536-1000)%256; ET0 = 1; EA = 1; TR0 = 1; } void Timer0() interrupt 1 { TH0 = (65536-1000)/256; TL0 = (65536-1000)%256; msec++; if(msec == 10) { msec = 0; sec++; if(sec == 60) { sec = 0; min++; if(min == 60) { min = 0; hour++; if(hour == 24) hour = 0; } } } } uchar KeyScan() { uchar key = 0; if(KEY == 0x07) { delayms(10); if(KEY == 0x07) { key = 1; while(KEY == 0x07); } } else if(KEY == 0x0B) { delayms(10); if(KEY == 0x0B) { key = 2; while(KEY == 0x0B); } } else if(KEY == 0x0D) { delayms(10); if(KEY == 0x0D) { key = 3; while(KEY == 0x0D); } } return key; } void DisplayTime() { DIG = 0xFE; LED = Table[hour/10]; delayus(1000); DIG = 0xFD; LED = Table[hour%10]; delayus(1000); DIG = 0xFB; LED = Table[min/10]; delayus(1000); DIG = 0xF7; LED = Table[min%10]; delayus(1000); DIG = 0xEF; LED = Table[sec/10]; delayus(1000); DIG = 0xDF; LED = Table[sec%10]; delayus(1000); } void StartTimer() { Start = 1; } void StopTimer() { Stop = 1; } void ResetTimer() { hour = 0; min = 0; sec = 0; msec = 0; Start = 0; Stop = 0; LED = 0x00; } void main() { uchar key = 0; Timer0Init(); while(1) { key = KeyScan(); if(!Start && key == 1) StartTimer(); if(Start && !Stop && key == 2) StopTimer(); if((Start || Stop) && key == 3) ResetTimer(); if(Start) DisplayTime(); if(sec == 30 && msec == 0) { BEEP = 1; LED = 0xff; delayms(500); BEEP = 0; LED = 0x00; } } } ``` 五、实验总结 通过本次实验,我们学会了使用QX-MCS51开发板设计并实现一个简易秒表,掌握了独立按键、数码管、流水灯和蜂鸣器的使用方法。同时,我们还深入理解了定时器和定时器中断的原理,加深了对单片机系统的认识。

相关推荐

最新推荐

recommend-type

基于MCS-51单片机的断相与相序保护系统的设计

本文介绍了一种简单实用的数字式断相与相序保护技术的原理,给出了基于MCS—51单片机的断相与相序保护数字控制系统的硬件电路及简单软件介绍,实现了三相交流控制系统高效、安全可靠地运行。
recommend-type

MCS-51单片机汇编指令详解

本指令是要在ROM的一个地址单元中找出数据,显然必须知道这个单元的地址,这个单元的地址是这样确定的:在执行本指令立脚点DPTR中有一个数,A中有一个数,执行指令时,将A和DPTR中的数加起为,就成为要查找的单元的...
recommend-type

基于MCS一51单片机的多功能交通灯控制系统设计+

基于MCS一51单片机的多功能交通灯控制系统设计+基于MCS一51单片机的多功能交通灯控制系统设计+
recommend-type

MCS-51单片机应用设计课后答案.doc

《MCS-51单片机应用设计》,第二版 哈尔滨工业大学出版社 张毅刚等 课后习题答案
recommend-type

51单片机基础MCS-51单片机汇编语言程序设计

第二章 MCS-51单片机的硬件结构 第三章 MCS-51 单片机的指令系统 第四章 MCS-51单片机汇编语言程序设计 第五章 中断系统 第六章 MCS-51单片机的定时/计数器 第七章 单片机串行数据通信 第八章 单片机的系统扩展 ...
recommend-type

RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz

REALTEK 8188FTV 8188eus 8188etv linux驱动程序稳定版本, 支持AP,STA 以及AP+STA 共存模式。 稳定支持linux4.0以上内核。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

:YOLOv1目标检测算法:实时目标检测的先驱,开启计算机视觉新篇章

![:YOLOv1目标检测算法:实时目标检测的先驱,开启计算机视觉新篇章](https://img-blog.csdnimg.cn/img_convert/69b98e1a619b1bb3c59cf98f4e397cd2.png) # 1. 目标检测算法概述 目标检测算法是一种计算机视觉技术,用于识别和定位图像或视频中的对象。它在各种应用中至关重要,例如自动驾驶、视频监控和医疗诊断。 目标检测算法通常分为两类:两阶段算法和单阶段算法。两阶段算法,如 R-CNN 和 Fast R-CNN,首先生成候选区域,然后对每个区域进行分类和边界框回归。单阶段算法,如 YOLO 和 SSD,一次性执行检
recommend-type

ActionContext.getContext().get()代码含义

ActionContext.getContext().get() 是从当前请求的上下文对象中获取指定的属性值的代码。在ActionContext.getContext()方法的返回值上,调用get()方法可以获取当前请求中指定属性的值。 具体来说,ActionContext是Struts2框架中的一个类,它封装了当前请求的上下文信息。在这个上下文对象中,可以存储一些请求相关的属性值,比如请求参数、会话信息、请求头、应用程序上下文等等。调用ActionContext.getContext()方法可以获取当前请求的上下文对象,而调用get()方法可以获取指定属性的值。 例如,可以使用 Acti
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。