51单片机实验秒表设计

合集下载

51电子秒表课程设计

51电子秒表课程设计

51电子秒表课程设计一、课程目标知识目标:1. 学生理解电子秒表的基本原理,掌握其计时功能的工作机制。

2. 学生掌握51单片机的编程基础,能够运用C语言进行简单的程序编写。

3. 学生了解电子秒表中涉及到的电子元器件,如晶振、电容、按键等,并理解它们在电路中的作用。

技能目标:1. 学生能够运用所学知识,独立完成51电子秒表的硬件电路搭建。

2. 学生能够编写程序,实现电子秒表的启动、停止、清零及计时功能。

3. 学生能够通过实际操作,解决电子秒表中遇到的问题,提高动手能力和故障排查能力。

情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发学习热情,养成积极探索和主动学习的良好习惯。

2. 学生通过合作完成项目,培养团队协作能力和沟通能力,增强集体荣誉感。

3. 学生在课程学习中,树立正确的价值观,认识到科技对生活的影响,增强社会责任感。

课程性质:本课程为实践性课程,结合理论知识与动手实践,旨在提高学生的实际操作能力和创新能力。

学生特点:学生具备一定的物理和数学基础,对电子技术有较高的兴趣,喜欢动手操作,但编程能力可能较弱。

教学要求:结合学生特点,注重理论与实践相结合,循序渐进,由浅入深地引导学生掌握电子秒表的设计与制作。

在教学过程中,关注学生的个体差异,鼓励学生积极参与,充分调动学生的主观能动性。

通过课程学习,使学生在知识、技能和情感态度价值观方面均取得具体、可衡量的学习成果。

二、教学内容本课程教学内容主要包括以下几部分:1. 电子秒表原理:介绍电子秒表的工作原理,分析计时功能的实现过程,探讨51单片机在电子秒表中的应用。

2. 硬件电路设计:学习51单片机的基本电路,掌握晶振、电容、按键等电子元器件的选择和使用方法,学会搭建电子秒表的硬件电路。

3. 软件编程:学习C语言编程基础,掌握51单片机的编程技巧,编写电子秒表的程序,实现启动、停止、清零及计时功能。

4. 实践操作:学生分组进行硬件电路搭建,编程调试,实际操作电子秒表,解决过程中遇到的问题。

基于51单片机的数字秒表设计

基于51单片机的数字秒表设计

摘要本设计是基于AT89S51单片机的简易数字秒表设计,主要组成是以51单片机最小系统为核心,通过运用单片机的振荡电路实现计时同时用数码管同步显示。

本秒表最大计时为99秒。

本设计的特点是:大部分功能通过软件实现,使电路简单明了,系统稳定性好。

关键词:AT89S51 振荡电路计时数码管目录1设计概述 (1)1.1AT89S51概述 (1)1.2系统设计功能概述 (1)2系统设计 (2)2.1设计思路 (2)2.2硬件设计 (2)2.2.1单片机最小系统的设计 (2)2.2.2数码管显示电路设计 (3)2.3软件设计 (7)2.3.1软件设计流程图 (7)2.3.2消除开关抖动 (9)2.3.3数码管延时显示程序 (9)2.3.4延时1秒的程序 (10)3软件调试和结果 (10)3.1软件调试与下载 (10)3.2硬件仿真 (11)4心得体会 (12)参考文献 (14)附录 (15)I基于单片机的数字秒表设计主程序 (15)IIPCB电路图 (17)III实物图 (17)11 设计概述1.1 AT89S51概述AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In -system programmable)的可反复擦写1000次的Flash 只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS -51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash 存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:40个引脚,4k Bytes Flash 片内程序存储器,128 bytes 的随机存取数据存储器(RAM ),32个外部双向输入/输出(I/O )口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT )电路,片内时钟振荡器。

c51数字秒表课程设计

c51数字秒表课程设计

c51数字秒表课程设计一、课程目标知识目标:1. 学生能理解C51单片机的基本原理,掌握数字秒表的硬件设计及编程方法。

2. 学生能够运用C语言编写程序,实现秒表的启动、停止、计时的功能。

3. 学生了解数字秒表在实际应用中的重要性,如时间测量、实验数据记录等。

技能目标:1. 学生能够运用所学的C51知识,设计并实现一个具有基本功能的数字秒表。

2. 学生通过实际操作,提高动手实践能力,培养解决实际问题的能力。

3. 学生能够运用所学知识,对数字秒表进行调试和优化,提高程序运行效率。

情感态度价值观目标:1. 学生培养对单片机编程的兴趣,提高学习主动性和积极性。

2. 学生通过合作完成任务,培养团队协作能力和沟通能力。

3. 学生在解决问题的过程中,培养坚持不懈、勇于探索的精神。

本课程针对高年级学生,结合C51单片机课程内容,注重理论与实践相结合。

课程设计旨在帮助学生巩固所学知识,提高动手实践能力,培养解决实际问题的能力。

通过数字秒表的设计与实现,让学生充分体会单片机编程的乐趣,激发学生的学习兴趣,为后续课程学习打下坚实基础。

同时,课程强调团队协作和情感态度的培养,使学生在学习过程中形成积极向上的人生态度。

本章节教学内容主要包括以下几部分:1. C51单片机原理回顾:复习C51单片机的硬件结构、工作原理及编程基础,重点掌握I/O口编程、定时器/计数器等知识点。

2. 数字秒表的硬件设计:介绍数字秒表的硬件组成,包括单片机、时钟电路、显示电路等,分析各部分功能及相互关系。

3. 数字秒表的编程实现:学习如何使用C语言编写程序,实现数字秒表的功能。

内容包括:- 定时器/计数器的配置与使用;- 按键扫描程序编写;- 数码管显示程序编写;- 秒表功能模块设计(启动、停止、计时)。

4. 教学案例分析与实践:结合教材案例,分析数字秒表的设计过程,引导学生动手实践,完成一个具有基本功能的数字秒表设计。

5. 调试与优化:介绍程序调试方法,指导学生运用调试工具,对数字秒表程序进行调试和优化,提高程序运行效率。

51单片机实验 秒表设计

51单片机实验 秒表设计

实验报告一、实验名称10秒计时的秒表设计二、实验内容精确到0.1秒的秒表三、相关模块led数码管、usb、独立键盘四、实验代码#include "reg52.h"typedef unsigned int u16; //对数据类型进行声明定义typedef unsigned char u8;sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;sbit k1=P3^1;sbit k2=P3^0;sbit k3=P3^2;sbit k4=P3^3;u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};u16 s,sec;unsigned int i;unsigned int j;unsigned int a,b,c,d;u8 mb[2];void Timer0Init(){TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。

TH0=0XFC; //给定时器赋初值,定时1msTL0=0X18;TR0=0;//打开定时器}void delay(u16 n){while(n--);}void DigDisplay1(u16 i){switch(i){case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break;case(2):LSA=0;LSB=1;LSC=0; break;case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;case(6):LSA=0;LSB=1;LSC=1; break;case(7):LSA=1;LSB=1;LSC=1; break;}if (i==1){P0=smgduan[mb[i]]+0x80;//发送段码}else{P0=smgduan[mb[i]];}delay(1); //间隔一段时间扫描P0=0x00;//消隐}void DigDisplay2(u16 i){i=i+3;switch(i){case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break;case(2):LSA=0;LSB=1;LSC=0; break;case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;case(6):LSA=0;LSB=1;LSC=1; break;case(7):LSA=1;LSB=1;LSC=1; break;}if (i==4){P0=smgduan[a]+0x80;}else{P0=smgduan[b];}delay(1);P0=0x00;}void DigDisplay3(u16 i){i=i+6;switch(i){case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break;case(2):LSA=0;LSB=1;LSC=0; break;case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;case(6):LSA=0;LSB=1;LSC=1; break;case(7):LSA=1;LSB=1;LSC=1; break;}if (i==7){P0=smgduan[c]+0x80;}else{P0=smgduan[d];}delay(1);P0=0x00;}void key1(){delay(10);if(k1==0){TR0=!TR0;while(!k1);}}void key2(){delay(10);if(k2==0){s=0;sec=0;while(!k2);}}void key3(){delay(10);if(k3==0){if (j==0) j=1;else j=0;if (j==1){a=mb[1];b=mb[0];}if (j==0){c=mb[1];d=mb[0];}while(!k3);}}void key4(){delay(10);if(k4==0){s=0;sec=0;a=0;b=0;c=0;d=0;while(!k2);}}void main(){Timer0Init();i=0;j=0;while(1){delay(10);key1();if(TF0==1){TF0=0;TH0=0XFC; //给定时器赋初值,定时1msTL0=0X18;s++;}if(s==60){s=0;sec++;if(sec==100)sec=100;}key2();mb[0]=sec%10;mb[1]=(sec/10)%10;key3();DigDisplay1(i);DigDisplay2(i);DigDisplay3(i);i++;i=i%2;key4();}}五、实验效果K1作用:启动、开始或暂停计时K2作用:计数位清零K3作用:记录当前时间并显示K4作用:清零所有的数码管六、实验遇到的问题经过前几次的实验,0到10秒的计数已经不成问题,本次实验的难点主要在几个按键的功能实现上。

基于51单片机的数字秒表课程设计

基于51单片机的数字秒表课程设计

电气与自动化工程学院卓越工程师培养计划暑期实训报告题目秒表系统的设计年级11级专业自动化班级卓越班学号*********姓名俞雷地点大学生创新实验室日期2012年8月12日~2012年8月20日目录一、单片机简介............................................................................- 2 -二、设计目标................................................................................- 3 -1、设计目的: (3)2、具体操作: (3)三、硬件设计................................................................................- 4 -原理图:. (4)四、系统的软件设计....................................................................- 5 -1、软件整体设计思路: (5)2、软件流程图: (5)3、程序: (6)(1)数码管秒表显示程序: ...................................................- 6 -(2)1602液晶秒表显示程序:............................................ - 13 -五、系统的调试及设计结果..................................................... - 18 -1602液晶——秒表显示效果图:. (18)LED数码管——秒表显示效果图: (18)六、创新实验室课程设计小结................................................. - 19 -一、单片机简介单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,数据采集系统、智能化仪器仪表,及通讯设备、日常消费类产品、玩具等。

51单片机秒表课程设计

51单片机秒表课程设计

51单片机秒表课程设计一、课程目标知识目标:1. 理解51单片机的基本原理,掌握其编程方法;2. 学习并掌握定时器/计数器在51单片机中的应用,理解其工作原理;3. 了解秒表的功能需求,掌握秒表的程序设计方法。

技能目标:1. 能够独立完成51单片机的程序编写,具备基本的编程能力;2. 能够运用定时器/计数器进行计时,完成秒表的实时显示功能;3. 能够分析和解决程序运行过程中出现的问题,具备一定的调试能力。

情感态度价值观目标:1. 培养学生的团队协作精神,提高沟通与交流能力;2. 增强学生对电子制作的兴趣,激发创新意识;3. 培养学生严谨、细心的学习态度,养成良好的编程习惯。

分析课程性质、学生特点和教学要求,将课程目标分解为以下具体学习成果:1. 学生能够掌握51单片机的基本原理和编程方法;2. 学生能够运用定时器/计数器实现秒表的计时功能;3. 学生能够通过团队协作,共同完成秒表的程序设计和调试;4. 学生能够对编程过程中遇到的问题进行分析和解决,提高自身调试能力;5. 学生能够体验电子制作的乐趣,培养创新意识和严谨、细心的学习态度。

二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 51单片机基础知识:- 单片机概述与51单片机的结构原理;- 51单片机的寄存器、I/O口及其编程方法;- 定时器/计数器的工作原理与应用。

2. 秒表功能需求分析:- 秒表的功能定义与需求分析;- 电路设计与硬件连接;- 软件设计框架及流程图。

3. 定时器/计数器的应用:- 定时器/计数器的工作模式;- 定时器/计数器的编程实现;- 秒表计时功能的具体实现。

4. 程序编写与调试:- 51单片机程序结构;- 程序编写技巧与调试方法;- 秒表程序编写与功能测试。

5. 教学案例与实战:- 案例分析:经典秒表程序剖析;- 实战练习:学生分组进行秒表的程序编写与调试;- 成果展示与评价。

教学内容安排和进度:第一课时:51单片机基础知识学习;第二课时:秒表功能需求分析与电路设计;第三课时:定时器/计数器的应用;第四课时:程序编写与调试;第五课时:教学案例与实战。

51单片机电子秒表设计(Proteus)

51单片机电子秒表设计(Proteus)

51单片机电子秒表设计(Proteus)单片机硬件设计结课论文简易秒表设计专业:计算机科学与技术学生姓名:学号: 1307064248完成时间:2020年12月28日目录一、简述 (3)二、主要工具 (2)三、线路连接图(ISIS 7 Professional环境) (2)四、实现细则 (2)显示电路 (2)定时计数器 (3)五、程序 (4)六、模拟运行截图 (16)七、心得体会 (16)一、简述此秒表主要实现的功能是利用单片机内部定时计数器实现计时,然后通过LED组件显示出来。

因为这次设计时使用的是并排的6个数字显示LED,所以在计时时精确到10ms,最大即时59分59秒99。

实现过程中的主要部分包含显示和定时。

因为该LED与单片机相接的引脚只有14个,其中8个接在P0口上实现字形的显示,剩下的6个接在P2口用于选择6个数字型LED中的一个显示,所以每次只能显示一个数字。

要实现多个数字的显示需要快速显示每个LED,利用人的视觉差来实现多个数字同时显示。

计时只用到定时计数器T1(因为需要配合中断优先级,故没有使用T0,下文会详细讲到)。

另外还用到了两个按键,和两个LED灯(红、绿)。

按键用于控制开始计时和暂停、重置,LED 灯用于指示当前工作状态。

二、主要工具Keil uVision3,ISIS 7 Professional,AT89C51基础组件(试验箱)。

三、线路连接图(ISIS 7 Professional环境)四、实现细则显示电路数字型LED的实现原理为每个单元(共6个单元)含8个发光独立的LED灯,其中7个构成“8”字形,剩下的一个为小数点。

6个单元的每个相同位置引脚并联起来,最后通过8根线连接到单片机的P0口。

因此如果不把另外6根线连接上,每次通过P0口输出值时6个显示单元都会显示相同的图形(数字)。

LED单元组中另外6根引脚连接到单片机上,实现“按位显示”,并且是低电平选择,例如“111101”对应显示的是从右到左的第5个LED 单元。

基于51单片机秒表的程序的设计[1]

基于51单片机秒表的程序的设计[1]

基于51单片机秒表的程序设计1.设计目的:(1)利用单片机定时器中断和定时器计数方式实现秒、分定时。

(2)通过LED显示程序的调整,熟悉8155与8051,8155与LED的接口技术,熟悉LED动态显示的控制过程。

(3)通过键盘程序的调整,熟悉8155与矩阵式键盘的接口技术,熟悉键盘扫描原理。

(4)通过阅读和调试简易秒表整体程序,学会如何编制含LED动态显示、键盘扫描和定时器中断等多种功能的综合程序,初步体会大型程序的编制和调试技巧。

2.设计步骤与要求(1)要求:以8位LED右边2位显示秒,左边6位显示0,实现秒表计时显示。

以4×4矩阵键盘的KE0、KE1、KE2等3键分别实现启动、停止、清零等功能。

(2)方法:用单片机定时器T0中断方式,实现1秒定时;利用单片机定时器1方式3计数,实现60秒计数。

用动态显示方式实现秒表计时显示,用键盘扫描方式取得KE0、KE1、KE2的键值,用键盘处理程序实现秒表的启动、停止、清零等功能。

(3)软件设计:软件整体设计思路是以键盘扫描和键盘处理作为主程序,LED动态显示作为子程序。

二者间的联系是:主程序查询有无按键,无按键时,调用二次LED动态显示子程序(约延时8ms)后再回到按键查询状态,不断循环;有按键时,LED动态显示子程序作为按键防抖延时被连续调用二次(约延时16ms),待按键处理程序执行完后,再回到按键查询状态,同时兼顾了按键扫描取值的准确性和LED动态显示的稳定性。

秒定时采用定时器T0中断方式进行,60秒计数由定时器1采用方式3完成,中断及计数的开启与关闭受控于按键处理程序。

由上述设计思路可设计出软件流程图如图1.1所示。

(5)程序编制:编程时置KE0键为“启动”,置KE1键为“停止”,置KE2键为“清零”,因按键较少,在处理按键值时未采用散转指令“JMP”,而是采用条件转移指令“CJNE”,每条指令后紧跟着一条无条件跳转指令“AJMP”,转至相应的按键处理程序,如不是上述3个按键值则跳回按键查询状态。

51单片机电子秒表设计

51单片机电子秒表设计

实验二电子秒表设计(键盘状态转移法)一、实验内容用单片机实现电子秒表的功能,并采用0号键实现计时启动、停止和回零操作。

第一次按0号键,计时开始;第2次按0号键,计时停止;第3次按0号键,计时回零。

初始状态显示0.00;计时状态显示当前计时时间;停止计时显示最后计时时间。

二、实验程序设计对各个状态和各任务号分配如下:0状态:初始状态;1状态:计时状态;2状态:停止计时状态;123号任务:计时归零,显示初始值。

根据上述分析,建立状态表如下:程序流程图如图2.1所示。

表2.1 电子秒表键控状态表图2.1 电子秒表键控主程序流程图参考程序代码如下:LOAD BIT P1.2 ;串行命令加载,上升沿激活DIN BIT P1.0 ;串行数据输出,接CH451的数据输入DCLK BIT P1.1 ;串行数据时钟,上升沿激活DOUT BIT P3.3 ;INT1,键盘中断和键值数据输入,接CH451的数据输出KEY_F BIT 00H ;20H.0位作有键标志位ST EQU 21H ;存状态号KEY EQU 22H ;存放键盘中断中读取的键码KD EQU 23H ;存放键号MSEC EQU 24H ;百分之一秒计数单元SEC EQU 25H ;秒计数单元MIN EQU 26H ;分计数单元ORG 0000HAJMP MAINORG 000BH ;定时器中断入口LJMP CLOCKORG 0013HLJMP CH451_ INT1ORG 100HMAIN: MOV SP, #60H ;系统初始化MOV ST,#0CLR KEY_FMOV KD,#0MOV P1,#60H ;禁止P1接口上的其它芯片ACALL CH451_INIT ;CH451初始化DISP: LCALL DISPLAY ;当前计时值显示ML0: NOPJNB KEY_F,ML0 ;无按键等待CLR KEY_F ;有按键,清按键标志MOV DPTR, #STAB ;计算状态行地址MOV A, STMOV B, #2MUL ABADD A, DPLMOV DPL, AMOV A, BADDC A, DPHMOV DPH, A ;DPTR=#STAB + ST*2MOV A,KD ;读取次状态号RL A ;KD*2MOV R0,AMOVC A,@A+DPTR ;获得次状态号MOV ST,A ;更新STMOV A,R0INC AMOVC A,@A+DPTR ;得到任务号MOV B,#3MUL AB ;每个LJMP占3个字节MOV DPTR,#TASKJMP @A+DPTR ;散转TASK: LJMP P_0 ;跳转子程序0LJMP P_1 ;跳转子程序1LJMP P_2 ;跳转子程序2P_0: …;启动计时程序略,自己编写P_1: …;计时停止程序略,自己编写P_2: …;归零程序略,自己编写;状态表; K0;ST, PRSTAB:DB 1, 1 ; stat0DB 2, 2 ; stat1DB 0, 0 ; stat2;------------------------------------ ------------------------------------ CH451_INIT:略;CH451初始化子程序参考实验一;------------------------------------------------------------------------CH451_INT1: ;键盘中断子程序PUSH PSW ;现场保护PUSH ACCCLR EX1LCALL READ _CH451 ;读取键码ACALL GET_KD ;获得键号POP ACCPOP PSWSETB EX1CLR IE1 ;清中断标志RETI;------------------------------------------------------------------------ READ_CH451:; 略,参考实验一;------------------------------------------------------------------------GET_KD: ;获得键号子程序MOV A,KEYCJNE A,#40H,OUTMOV A,#0 ;0# 键;………在使用多个键的情况下,继续判断其它键号MOV KD,A ;存键号SETB KEY_F ;置有键标志位OUT: RET;------------------------------------------------------------------------CLOCK: ;略,定时器中断服务子程序,自己编写DISPLAY:略,显示子程序,自己编写;----------------------------------------------------------------------------END图2.2 定时器中断服务子程序流程图图2.3 显示子程序流程图二、实验操作步骤1. 打开KEILuvison3软件,建立工程,设置调试环境,实验板上电;2. 输入源程序,编译,连接,加载;3. 运行程序,观察数码管显示应为000.00;4. 按0键,启动计时,数码管显示计时时间;5. 再按0键,停止计时,数码管显示累计时时间;6. 再按0键,计时归零,数码管显示返回初始状态。

基于51单片机的秒表设计报告

基于51单片机的秒表设计报告

课程名称:微机原理课程设计题目:基于51单片机的秒表设计随着社会的发展,单片机已经渗透到我们生活中的各个领域,广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等。

本设计就是由单片机STC89C52RC芯片和四位一体LED数码管为核心,辅以必要的电路,构成了一个单片机电子秒表。

秒表是一种常用的测试仪器,它可以用在百米赛跑等需要精确计时的地方,为人们的生活提供了很大的方便。

该单片机电子秒表布置合理,全部器件分布在7*9cm洞洞板上,看起来小巧精简。

采用的是单片机内部定时/计数器计时,走时非常精确而且不易出错。

0.56英寸的四位数码管发出红光,可以直观地显示时间。

一个控制按键就可以控制秒表的计数与停止,按一下控制键,秒表工作状态就由计时变为计时变为停止或停止变为计时,按一下清零键就可以清零,操作非常简单。

由于是四位数码管,它的计时周期为100秒,显示满刻度为99:99秒,从左往右数共四位,前两位显示整数部分,后两位显示小数部分,中间两个个秒闪灯(秒闪灯一直亮)。

关键词:秒表,51单片机,C语言一、设计任务与要求 (18)1.1 设计任务 (18)1.2 设计要求 (18)二、方案总体设计 (19)2.1 方案一 (19)2.2 方案二 (19)2.3 系统采用方案 (19)三、硬件设计 (21)3.1 单片机最小系统 (21)3.2 数码管显示模块 (21)3.3 系统电源 (22)3.4 整体电路 (22)四、软件设计 (24)4.1 keil软件介绍 (24)4.2 系统程序流程 (24)五、仿真与实现 (27)5.1 proteus软件介绍 (27)5.2 仿真过程 (27)5.3 实物制作与调试 (29)5.4 使用说明 (30)六、总结 (32)6.1设计总结 (32)6.2经验总结 (20)七、参考文献 (21)一、设计任务与要求1.1 设计任务1).对更多小器件的了解2).巩固51单片机和C语言的知识,熟悉单片机和C语言的实际操作运用3).掌握仿真软件的运用和原理图的绘制4).加深焊接的技巧,提高焊接的能力5).熟悉调试方法和技巧,提高解决实际问题的能力6).熟悉设计报告的编写过程1.2 设计要求1).清零键进行清零2).一个独立按键进行停止与运行的操作3).秒闪灯一直亮二、方案总体设计设计一个基于51单片机的秒表。

89C51单片机课程设计之秒表设计实验报告

89C51单片机课程设计之秒表设计实验报告

单片机课程设计报告单片机秒表系统课程设计班级:课程名称:秒表设计成员:实训地点:北校机房实训时间:6月4日至6月15日目录1课程设计的目的和任务1.1 单片机秒表课程设计的概述1.2课程设计思路及描述1.3 课程设计任务和要求2硬件与软件的设计流程2.1系统硬件方案设计2.2所需元器件3 程序编写流程及课程设计效果3.1源程序及注释3.2原理图分析3.3课程设计效果4 心得体会1. 课程设计的目的和任务1.1单片机秒表课程设计的概述一、课程设计题目秒表系统设计——用STC89C51设计一个4位LED数码显示“秒表”,显示时间为000.0~9分59.9秒,每10毫秒自动加一,每1000毫秒自动加一秒。

二、增加功能增加一个“复位”按键(即清零),一个“暂停”和“开始”按键。

三、课程设计的难点单片机电子秒表需要解决几个主要问题,一是有关单片机定时器的使用;二是如何实现LED的动态扫描显示;三是如何对键盘输入进行编程;四是如何进行安装调试。

四、课程设计内容提要本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED数码管以及课程箱上的按键来设计计时器。

将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。

其中本课程设计有三个开关按键:其中key1按键按下去时开始计时,即秒表开始键,key2按键按下去时数码管清零,复位为“00.00”. key3按键按下去时数码管暂停。

五、课程设计的意义1)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。

2)掌握定时器、外部中断的设置和编程原理。

3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

4)该课程通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义1.2课程设计思路及描述该课程设计要求进行计时并在数码管上显示时间,则可利用MCS-51系列单片机的芯片AT89C51的P3.2,P3.3,RST作为按键的入口;定时器T1作为每0.1秒加一的定时器。

c51电子秒表课程设计

c51电子秒表课程设计

c51电子秒表课程设计一、课程目标知识目标:1. 学生能够理解C51单片机的基础知识,掌握其编程方法。

2. 学生能够掌握电子秒表的基本原理,包括计时、暂停、清零等功能。

3. 学生能够了解并掌握电子秒表中的中断处理、定时器/计数器等硬件资源的使用。

技能目标:1. 学生能够运用C语言编写C51单片机程序,实现电子秒表的计时功能。

2. 学生能够通过实验操作,学会使用开发板、编译器等工具进行程序编写和调试。

3. 学生能够培养实际动手能力,独立完成电子秒表的搭建和调试。

情感态度价值观目标:1. 学生能够培养对电子制作的兴趣和热情,提高学习积极性。

2. 学生能够培养团队协作意识,学会与他人共同解决问题。

3. 学生能够认识到科技发展对社会进步的重要性,增强科技创新意识。

课程性质:本课程为实践性课程,注重培养学生的动手能力和实际操作技能。

学生特点:学生具备一定的C语言基础,对单片机有一定了解,但实践经验不足。

教学要求:教师需引导学生通过实际操作,掌握C51单片机编程和电子秒表制作技能,同时注重培养学生的情感态度价值观。

将课程目标分解为具体学习成果,以便在教学设计和评估中逐一实现。

二、教学内容1. 理论部分:- C51单片机基础知识:介绍C51单片机的结构、工作原理和编程环境。

- 中断处理和定时器/计数器:讲解中断的概念、中断处理过程,以及定时器/计数器的使用方法。

- 电子秒表原理:阐述电子秒表的计时原理、功能模块及其相互关系。

2. 实践部分:- C51编程实践:指导学生使用C语言编写电子秒表程序,掌握程序结构、函数调用等。

- 硬件搭建与调试:学生动手搭建电子秒表电路,学习电路连接、元件识别等,并进行程序下载和调试。

- 综合应用:结合所学知识,学生独立完成一个具有计时、暂停、清零等功能的电子秒表项目。

3. 教学大纲安排:- 第一课时:C51单片机基础知识学习,介绍教材相关章节内容。

- 第二课时:中断处理和定时器/计数器原理学习,结合教材实例进行讲解。

基于51单片机的数字秒表设计

基于51单片机的数字秒表设计

单片机系统课程设计成绩评定表设计课题:数字秒表学院名称:电气工程学院专业班级:自动1204学生:学号:指导教师:王黎设计地点:31-630设计时间:2013-12-29~2013-1-9单片机系统课程设计课程设计名称:数字秒表专业班级:自动1204学生姓名:学号:指导教师:王黎课程设计地点:31-630课程设计时间:2013-12-29~2013-1-9单片机系统课程设计任务书目录1绪论 (3)2系统概述 (4)2.1数字式秒表的设计意义 (4)2.2设计要求与分析 (5)3 硬件电路设计 (6)3.1基准脉冲的获取 (6)3.2键盘及控制电路 (12)3.3计数、译码及显示电路 (14)4 数字秒表系统软件设计 (16)4.1 主程序软件设计 (16)4.2 中断服务程序设计 (16)5调试与仿真 (19)5.1软件调试与烧写 (19)5.2 硬件仿真 (20)6. 结论 (21)参考文献: (23)附录 (24)附录一系统原理图 (24)附录二源程序代码 (25)1绪论21世纪,单片机的发展非常的迅速。

单片机是把主要计算机功能部件都集成在一块芯片上的微型计算机。

它是一种集计数和多种接口于一体的微控制器,被广泛应用在智能产品和工业自动化上,而51单片机是个单片机中最为典型和最有代表性的一种。

51单片机是对所有兼容Intel 8031指令系统的单片机的统称。

该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是Atmel的AT89系列,它广泛应用于工业测控系统之中。

很多公司都有51系列的兼容机型推出,今后很长的一段时间将占有大量市场。

本次的设计任务是一个数字秒表,而秒表与普通的钟表不同,它的目的是对从某一时刻到另一时刻的时间间隔进行计时。

秒表的数字化常给人们的生活带来极大的方便,它广泛应用于社会的各个领域。

基于51单片机的秒表设计

基于51单片机的秒表设计

目录一,设计目标 (3)二,系统硬件设计 (4)三,系统软件设计 (7)四,系统调试与设计结果 (12)五,单片机实训小结 (13)设计目标近年来随着科学技术的发展,单片机的应用范围越来越广,也成为很多专业的必修课。

本文简单阐述了基于单片机的秒表设计。

本设计的主要特点是计时精度达到0.01秒,可以用来为各种体育竞赛计时等。

本设计的数字秒表采用AT89S52单片机为主要器件,利用其定时器的原理,结LED数码管以及外部中断电路来设计计时器。

将软硬件结合起来,使得系统能实现0~99.99秒的计时,计时精度位0.01秒。

当按下一个键1时,开始显示数字,即计时开始,再按下键2时,暂停计时并显示刚才的结果,这个时候如果再按键1,则继续计时,也就是显示的数字包括刚才的数据。

按下键3时,数据清零。

系统硬件设计1、1 总体方案的设计数字秒表具有显示直观、读取方便、精度高等优点,在计时中广泛应用。

本设计中用单片机和数码管组成数字秒,力求结构简单。

设计中包括硬件电路的设计和系统程序的设计。

硬件电路主要有主控制器、控制按钮与显示电路组成。

主控制器采用单片机AT89S52,显示电路采用四位共阴极数码管显示计时时间。

本设计利用AT89S52单片机的定时器,使其能精确计时。

利用键盘上的独立按键实现开始计时和暂停以及清零。

P0口输出段码数据,P2.0~P2.2连上译码器作为位选。

设计的基本要求是正确性。

计时器采用T0中断实现,定时溢出中断周期为1ms,当溢出中断后向CPU 发出溢出中断请求,每发出10次中断请求就对10ms位(即最后一位)加一,达到100次就对100ms位加一,以此类推,直到99.99s为止。

1.2 单片机的选择本设计在选取单片机时,充分借鉴了许多成型产品使用单片机的经验。

并根据自己的实际情况,选用了ATMEL公司的AT89S52。

ATMEL公司的89系列单片机以其卓越的性能、完善的兼容性、快捷便利的电擦写操作、低廉的价格完全替代了87C51/62和8751/52,低电压、低功耗,有DIP、PLCC、QFP封装,是目前性能最好、价格最低、最受欢迎的单片机之一。

51单片机数字秒表设计报告论文

51单片机数字秒表设计报告论文

51单片机数字秒表设计报告目录摘要 (I)ABSTRACT (II)第一章引言 (1)1.1秒表的概述 (1)1.2本设计任务 (1)1.3系统主要功能 (2)第二章硬件设计 (3)2.1总体方案的设计 (3)2.2单片机的选择 (4)2.3各部分电路设计 (5)2.3.1系统时钟电路的设计 (5)2.3.2系统复位电路的设计 (6)2.3.3 按键与按钮电路设计 (7)2.4显示电路的选择与设计 (7)2.4.1数码管的内部结构 (8)2.4.2 数码管的外部结构 (8)2.5系统总体电路的设计 (9)第三章软件设计 (11)3.1主程序设计 (11)3.2中断程序设计 (12)第四章系统调试 (16)第五章总结 (17)参考文献 (18)摘要近年来随着科学技术的发展,单片机的应用正在不断发展。

本文阐述了基于51单片机的数字秒表的设计。

计时秒表是一种先进的电子计数器,较多的应用在教学器材、比赛计时等,而且采用数字显示,具有直观、读取方便、功能方便等诸多优点。

本设计是由硬件电路和软件程序两部分组成,硬件电路由AT89C51单片机、按键控制电路、数码显示电路、晶振电路以及复位电路组成,它使用元件少,电路结构简单,功能强大;软件采用C语言程序设计,使用keil编译源程序,产生的可执行性文件能够让单片机快速执行。

该设计充分利用单片机内部资源,通过程序利用定时器中断服务程序对计时秒表开始、暂停、清零等操作进行处理,提高单片机的工作效率,使得系统能实现0~99秒的计时。

关键字:51单片机;秒表;定时器;中断服务程序ABSTRACTadvanced electronic counter, more application in teaching equipment, timing, etc., and adopts digital display, intuitive, easy to read, convenient features, and many other advantages. This design is consists of two parts, hardware circuit and software program, the hardware circuit is controlled by AT89C51, key circuit, digital display circuit, crystals circuit and reset circuit, it USES less component, the circuit structure is simple, powerful; Software using C language program design, use the keil compiler source code, can let the enforceability file microcontroller rapid execution. This design make full use of the single chip microcomputer internal resources, through the application using the timer interrupt service routine for timing stopwatch start, pause, reset operations such as processing, improve the work efficiency of the single chip microcomputer system can realize the timing of 0 ~ 99 seconds.Key words:51 single chip,microcomputer A stopwatch,The timer,Interrupt service routin第一章引言20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

51单片机秒表程序设计

51单片机秒表程序设计

51单片机秒表程序设计1. 简介秒表是一种用于测量时间间隔的计时器,常见于体育比赛、实验室实验等场合。

本文将介绍如何使用51单片机设计一个简单的秒表程序。

2. 硬件准备•51单片机开发板•LCD液晶显示屏•按键开关•连接线3. 程序流程3.1 初始化设置1.设置LCD液晶显示屏为8位数据总线模式。

2.初始化LCD液晶显示屏。

3.设置按键开关为输入模式。

3.2 主程序循环1.显示初始界面,包括“00:00:00”表示计时器初始值。

2.等待用户按下开始/暂停按钮。

3.如果用户按下开始按钮,则开始计时,进入计时状态。

4.如果用户按下暂停按钮,则暂停计时,进入暂停状态。

5.在计时状态下,每隔1毫秒更新计时器的数值,并在LCD液晶显示屏上显示出来。

6.在暂停状态下,不更新计时器的数值,并保持显示当前数值。

3.3 计时器控制1.定义一个变量time用于存储当前的计时器数值,单位为毫秒。

2.定义一个变量running用于标记计时器的状态,0表示暂停,1表示运行。

3.定义一个变量start_time用于存储计时器开始的时间点。

4.定义一个变量pause_time用于存储计时器暂停的时间点。

5.在计时状态下,每隔1毫秒更新time的值为当前时间与start_time的差值,并将其转换为小时、分钟、秒的表示形式。

6.在暂停状态下,保持time的值不变。

3.4 按键检测1.检测按键开关是否被按下。

2.如果按键被按下,判断是开始/暂停按钮还是复位按钮。

3.如果是开始/暂停按钮,并且当前处于计时状态,则将计时状态设置为暂停状态,并记录暂停时间点为pause_time;如果当前处于暂停状态,则将计时状态设置为运行状态,并记录开始时间点为当前时间减去暂停时间的差值。

4.如果是复位按钮,则将计时器数值重置为0,并将计时状态设置为暂停。

4. 程序代码示例#include <reg51.h>// 定义LCD控制端口和数据端口sbit LCD_RS = P1^0;sbit LCD_RW = P1^1;sbit LCD_EN = P1^2;sbit LCD_D4 = P1^3;sbit LCD_D5 = P1^4;sbit LCD_D6 = P1^5;sbit LCD_D7 = P1^6;// 定义按键开关端口sbit START_PAUSE_BTN = P2^0;sbit RESET_BTN = P2^1;// 定义全局变量unsigned int time = 0; // 计时器数值,单位为毫秒bit running = 0; // 计时器状态,0表示暂停,1表示运行unsigned long start_time = 0; // 开始时间点unsigned long pause_time = 0; // 暂停时间点// 函数声明void delay(unsigned int ms);void lcd_init();void lcd_command(unsigned char cmd);void lcd_data(unsigned char dat);void lcd_string(unsigned char *str);void lcd_clear();void lcd_gotoxy(unsigned char x, unsigned char y);// 主函数void main() {// 初始化设置lcd_init();while (1) {// 显示初始界面lcd_clear();lcd_gotoxy(0, 0);lcd_string("00:00:00");// 等待用户按下开始/暂停按钮while (!START_PAUSE_BTN && !RESET_BTN);// 判断按钮类型并处理计时器状态if (START_PAUSE_BTN) {if (running) { // 当前处于计时状态,按下按钮将进入暂停状态 running = 0;pause_time = time;} else { // 当前处于暂停状态,按下按钮将进入计时状态running = 1;start_time = get_current_time() - pause_time;}} else if (RESET_BTN) { // 复位按钮按下,重置计时器time = 0;running = 0;}}}// 毫秒级延时函数void delay(unsigned int ms) {unsigned int i, j;for (i = ms; i > 0; i--) {for (j = 110; j > 0; j--);}}// LCD初始化函数void lcd_init() {lcd_command(0x38); // 设置8位数据总线模式lcd_command(0x0C); // 显示开,光标关闭lcd_command(0x06); // 光标右移,不移动显示器lcd_command(0x01); // 清屏}// 向LCD发送指令函数void lcd_command(unsigned char cmd) {LCD_RS = 0;LCD_RW = 0;LCD_EN = 1;LCD_D4 = cmd >> 4 & 1;LCD_D5 = cmd >> 5 & 1;LCD_D6 = cmd >> 6 & 1;LCD_D7 = cmd >> 7 & 1;delay(1);LCD_EN = 0;LCD_D4 = cmd >> 0 & 1;LCD_D5 = cmd >> 1 & 1;LCD_D6 = cmd >> 2 & 1;LCD_D7 = cmd >> 3 & 1;delay(1);LCD_EN = 0;}// 向LCD发送数据函数void lcd_data(unsigned char dat) { LCD_RS = 1;LCD_RW = 0;LCD_EN = 1;LCD_D4 = dat >> 4 & 1;LCD_D5 = dat >> 5 & 1;LCD_D6 = dat >> 6 & 1;LCD_D7 = dat >> 7 & 1;delay(1);LCD_EN = 0;LCD_D4 = dat >> 0 & 1;LCD_D5 = dat >> 1 & 1;LCD_D6 = dat >> 2 & 1;LCD_D7 = dat >> 3 & 1;delay(1);LCD_EN = 0;}// 向LCD发送字符串函数void lcd_string(unsigned char *str) {while (*str) {lcd_data(*str++);delay(5);}}// 清屏函数void lcd_clear() {lcd_command(0x01);}// 设置光标位置函数void lcd_gotoxy(unsigned char x, unsigned char y) {unsigned char addr;if (y == 0)addr = x | (0x80 + y);else if (y == 1)addr = x | (0xC0 + y);lcd_command(addr);}5. 总结本文介绍了使用51单片机设计一个简单的秒表程序。

51单片机数字秒表设计

51单片机数字秒表设计

标准文档单片机系统单片机系统课程设计目录第 1 章数字式秒表的设计介绍⋯⋯⋯⋯⋯⋯⋯⋯⋯51.1 设计任务及功能要求说明⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯51.2 工作原理及其方法⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 5 第 2 章数字式秒表硬件系统的设计⋯⋯⋯⋯⋯⋯⋯72.1 数字式秒表硬件系统各模块功能简要介绍⋯⋯⋯72.1.1 AT89S52 简介⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.72.1.2 时钟电路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.82.1.3 键盘电路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯82.1.4 复位电路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..92.1.5 驱动及显示电路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯92.1.6 单片机下载口电路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯102.2 数字式秒表的硬件系统设计图⋯⋯⋯⋯⋯⋯⋯11.2.2.1 电路原理图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.11.2.2.2 PCB 图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯11. 第 3 章数字式秒表软件系统的设计⋯⋯⋯⋯⋯⋯⋯.11.3.1 数字式秒表使用单片机资源情况⋯⋯⋯⋯⋯⋯113.2 主程序流程图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12.3.3 中断服务程序流程图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯123.4 显示程序流程图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯143.5 软件系统程序清单⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..14 第 4 章设计总结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯154.1 数字式秒表的设计结论及使用说明⋯⋯⋯⋯⋯154.2 程序仿真与结果⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.154.3 误差分析及解决方法⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯16.. 总结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯16 参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯17 附录⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯17第 1 章数字式秒表的设计介绍1.1 设计任务及功能要求说明由单片机接收小键盘控制递增计时,由LED 显示模块计时时间,显示格式为XX (分):XX(秒).XX ,精确到0.01s 的整数倍。

51单片机秒表程序设计

51单片机秒表程序设计

51单片机秒表程序设计51单片机秒表程序设计班级:姓名:学号指导老师时间一、课题任务要求用*****设计一个2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加一。

即数码显示管在原先的计数上快速加一。

二、设计思路1、使用单片机,设计秒表,能显示分分秒秒;2、使用三个按键停止,开始,复位,其中“开始”按键当开关由上向下拨时开始计时,此时若再拨“开始”按键则数码管暂停;“清零”按键当开关由上向下拨时数码管清零,此时若再拨“开始”按键则又可重新开始计时;3、使用液晶或数码管显示;4、使用定时器中断;三、硬件设计1、单片机介绍单片机:*****是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

*****主要特性:与MCS-51 兼容低功耗的闲置和掉电模式4K字节可编程闪烁存储器全静态工作:0Hz-24MHz 寿命:1000写/擦循环数据保留时间:10年三级程序存储器锁定128×8位内部RAM 片内振荡器和时钟电路32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道管脚说明:VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

51单片机秒表课程设计

51单片机秒表课程设计

51单片机秒表课程设计一、课程目标知识目标:1. 学生能理解51单片机的基本原理,掌握其编程方法。

2. 学生能掌握秒表功能的基本组成部分,如计时、暂停、复位等。

3. 学生能理解并应用中断、定时器等51单片机的相关知识。

技能目标:1. 学生能运用C语言编写51单片机程序,实现秒表功能。

2. 学生能通过实验操作,调试并优化程序,解决实际问题。

3. 学生能熟练使用相关开发工具和调试设备,如编译器、仿真器等。

情感态度价值观目标:1. 学生培养对单片机编程的兴趣,激发创新意识和实践欲望。

2. 学生培养良好的团队合作意识,学会互相交流、协作解决问题。

3. 学生培养严谨的科学态度,注重实验数据的真实性,勇于面对和克服困难。

课程性质:本课程为实践性课程,以项目为导向,结合理论知识与实际操作,培养学生的动手能力和编程思维。

学生特点:学生具备一定的电子基础和编程基础,对51单片机有一定了解,但对中断、定时器等高级功能尚不熟悉。

教学要求:教师需引导学生运用已学知识,通过实际操作,逐步掌握51单片机的编程和应用。

在教学过程中,注重培养学生的实际操作能力、问题解决能力和团队协作能力。

课程目标的设定旨在使学生在完成本项目后,能够独立设计并实现简单的单片机应用系统。

二、教学内容1. 理论知识:- 51单片机结构及工作原理- C语言编程基础:数据类型、运算符、控制语句等- 中断和定时器的原理与应用- 键盘输入与数码管显示原理2. 实践操作:- 使用Keil软件编写和编译程序- 使用STC89C52RC单片机进行程序下载和调试- 设计并实现秒表功能,包括计时、暂停、复位等3. 教学大纲:- 第一周:回顾51单片机基本原理,学习C语言编程基础- 第二周:学习中断和定时器知识,分析秒表功能需求- 第三周:设计程序框架,编写中断处理程序和定时器程序- 第四周:编写键盘输入和数码管显示程序,实现秒表功能- 第五周:项目调试、优化和展示4. 教材章节及内容:- 第一章:51单片机概述,了解单片机的发展及其应用- 第二章:C语言编程基础,掌握基本语法和数据类型- 第三章:中断和定时器,学习中断处理和定时器编程方法- 第四章:输入输出接口,学习键盘输入和数码管显示技术教学内容的选择和组织旨在保证学生能够系统地掌握51单片机编程及应用,注重理论与实践相结合,培养学生的实际操作能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

.
实验报告
一、实验名称
10秒计时的秒表设计
二、实验内容
精确到0.1秒的秒表
三、相关模块
led数码管、usb、独立键盘
四、实验代码
#include
eg52.h
//对数据类型进行声明定义typedef unsigned int u16; typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^2;
sbit k4=P3^3;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
u16 s,sec;
unsigned int i;
资料Word
.
unsigned int j;
unsigned int a,b,c,d;
u8 mb[2];
void Timer0Init()
{
TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。

TH0=0XFC; // 给定时器赋初值,定时1ms
TL0=0X18;
TR0=0;//打开定时器
}
void delay(u16 n)
{
while(n--);
}
void DigDisplay1(u16 i)
{
switch(i)
{
case(0):
LSA=0;LSB=0;LSC=0; break;
case(1):
LSA=1;LSB=0;LSC=0; break;
资料Word
.
case(2):
LSA=0;LSB=1;LSC=0; break;
case(3):
LSA=1;LSB=1;LSC=0; break;
case(4):
LSA=0;LSB=0;LSC=1; break;
case(5):
LSA=1;LSB=0;LSC=1; break;
case(6):
LSA=0;LSB=1;LSC=1; break;
LSA=1;LSB=1;LSC=1; break;
}
if (i==1)
{
P0=smgduan[mb[i]]+0x80;//发送段码
}
else
{
P0=smgduan[mb[i]];
}
间隔一段时间扫描delay(1); //资料Word .
P0=0x00;//消隐
}
void DigDisplay2(u16 i)
{
i=i+3;
{
case(0):
LSA=0;LSB=0;LSC=0; break;
case(1):
LSA=1;LSB=0;LSC=0; break;
case(2):
LSA=0;LSB=1;LSC=0; break;
case(3):
LSA=1;LSB=1;LSC=0; break;
case(4):
LSA=0;LSB=0;LSC=1; break;
case(5):
LSA=1;LSB=0;LSC=1; break;
case(6):
LSA=0;LSB=1;LSC=1; break;
case(7): 资料Word
.
LSA=1;LSB=1;LSC=1; break;
}
if (i==4)
{
P0=smgduan[a]+0x80;
}
else
{
P0=smgduan[b];
}
delay(1);
P0=0x00;
}
void DigDisplay3(u16 i)
{
i=i+6;
{
case(0):
LSA=0;LSB=0;LSC=0; break;
case(1):
LSA=1;LSB=0;LSC=0; break; 资料Word
.
case(2):
LSA=0;LSB=1;LSC=0; break;
case(3):
LSA=1;LSB=1;LSC=0; break; case(4):
LSA=0;LSB=0;LSC=1; break; case(5):
LSA=1;LSB=0;LSC=1; break; case(6):
LSA=0;LSB=1;LSC=1; break;
case(7):
LSA=1;LSB=1;LSC=1; break; }
{
P0=smgduan[c]+0x80;
}
else
{
P0=smgduan[d];
}
delay(1);
资料Word
.
P0=0x00;
}
void key1()
{
delay(10);
if(k1==0)
{
TR0=!TR0;
while(!k1);
}
}
void key2() {
delay(10); if(k2==0)
{
s=0;
sec=0;
while(!k2);
}
}
void key3()
资料Word
.
{
delay(10); if(k3==0) {
if (j==0) j=1;
else j=0;
if (j==1)
{
a=mb[1];
b=mb[0];
}
if (j==0)
{
c=mb[1];
d=mb[0];
}
while(!k3);
}
}
void key4()
{
delay(10);
资料Word
.
if(k4==0) {
s=0; sec=0;
a=0;
b=0;
c=0;
d=0;
while(!k2);
}
}
void main() {
Timer0Init(); i=0;
j=0;
while(1)
{
delay(10);
key1();
if(TF0==1)
{
资料Word
.
TF0=0;
TH0=0XFC; //给定时器赋初值,定时1ms TL0=0X18;
s++;
}
if(s==60)
{
s=0;
sec++;
if(sec==100)sec=100;
}
key2();
mb[0]=sec_x0010_;
mb[1]=(sec/10)_x0010_;
key3();
DigDisplay1(i);
DigDisplay2(i);
DigDisplay3(i);
i++;
i=i%2;
key4();
}
资料Word
.
}
五、实验效果
K1作用:启动、开始或暂停计时K2作用:计数位清零
K3作用:记录当前时间并显示K4作用:清零所有的数码管
资料Word
.
资料Word
.
资料Word
.
六、实验遇到的问题
经过前几次的实验,0到10秒的计数已经不成问题,本次实验的难点主要在几个按键的功能实现上。

其中最难的便是K3按键,K3按键不仅需要保存当前时间,还要将时间覆盖现实到数码管上。

为此,我分别使用了abcd四个变量来保存当前时间,并用3个显示函数来实现数据的分别显示。

虽然这使得代码略显复资料
Word
.
杂,但却不失为一个简单有效的办法。

资料Word。

相关文档
最新文档