51单片机秒表计时器课程规划设计报告(含C语言知识程序)
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世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
C51单片机秒表计时(C语言)
{ cout++;
mm=0;}
}
效果显示
图一(电路总图)
图二(效果显示)注:第四位显示为单位:S
程序清单
#include<reg51.h>
#include<stdio.h>
unsigned char Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };
sbit P37=P3^7;
}
/*********显示程序*****************/
void display()
{
x=cout/10;//秒十位
P34=0;
P1=Tab[x]; delay();
P34=1;
y=cout-x*10; //秒各位
P35=0;
P1=Tab[y]; delay();
P1=做任何修改或编辑并不能对任何下载内容负责
南开大学滨海学院
C51嵌入式软件设计(C语言)
题目:计时秒表
功能描述:本设计实现在99秒内的秒表计时,一个按键实现开始、暂停、复位。
原理概述:P1接四位七段数码管,P3.2接一按键产生外部中断0,P3.4-P3.7控制扫描显示。计时使用定时器0产生10ms中断累计。按键不同次序决定了对应的控制功能,因为第一次按键必定为开始计时,所以第二次按键判断为暂停,依次第三次为置零。主程序调用显示程序,显示程序实时显示计时时间。
sbit P36=P3^6;
sbit P35=P3^5;
sbit P34=P3^4;
unsigned int a=0,cout=0,mm=0;x,y,p,q;
51电子秒表课程设计
51电子秒表课程设计一、课程目标知识目标:1. 学生理解电子秒表的基本原理,掌握其计时功能的工作机制。
2. 学生掌握51单片机的编程基础,能够运用C语言进行简单的程序编写。
3. 学生了解电子秒表中涉及到的电子元器件,如晶振、电容、按键等,并理解它们在电路中的作用。
技能目标:1. 学生能够运用所学知识,独立完成51电子秒表的硬件电路搭建。
2. 学生能够编写程序,实现电子秒表的启动、停止、清零及计时功能。
3. 学生能够通过实际操作,解决电子秒表中遇到的问题,提高动手能力和故障排查能力。
情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发学习热情,养成积极探索和主动学习的良好习惯。
2. 学生通过合作完成项目,培养团队协作能力和沟通能力,增强集体荣誉感。
3. 学生在课程学习中,树立正确的价值观,认识到科技对生活的影响,增强社会责任感。
课程性质:本课程为实践性课程,结合理论知识与动手实践,旨在提高学生的实际操作能力和创新能力。
学生特点:学生具备一定的物理和数学基础,对电子技术有较高的兴趣,喜欢动手操作,但编程能力可能较弱。
教学要求:结合学生特点,注重理论与实践相结合,循序渐进,由浅入深地引导学生掌握电子秒表的设计与制作。
在教学过程中,关注学生的个体差异,鼓励学生积极参与,充分调动学生的主观能动性。
通过课程学习,使学生在知识、技能和情感态度价值观方面均取得具体、可衡量的学习成果。
二、教学内容本课程教学内容主要包括以下几部分:1. 电子秒表原理:介绍电子秒表的工作原理,分析计时功能的实现过程,探讨51单片机在电子秒表中的应用。
2. 硬件电路设计:学习51单片机的基本电路,掌握晶振、电容、按键等电子元器件的选择和使用方法,学会搭建电子秒表的硬件电路。
3. 软件编程:学习C语言编程基础,掌握51单片机的编程技巧,编写电子秒表的程序,实现启动、停止、清零及计时功能。
4. 实践操作:学生分组进行硬件电路搭建,编程调试,实际操作电子秒表,解决过程中遇到的问题。
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单片机基础知识学习;第二课时:秒表功能需求分析与电路设计;第三课时:定时器/计数器的应用;第四课时:程序编写与调试;第五课时:教学案例与实战。
单片机秒表课程设计报告
一:课程设计题目秒表/时钟计时器二:课程设计任务与要求:利用89C51单片机设计秒表/时钟计时器,通过LED显示器显示秒十位和个位,在设计过程中用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加1,当秒计数达到60时,就自动返回到0,重新开始秒计数。
三:设计过程:1.设计原理:此次课程设计题目是秒表/时钟计时器,由课程设计的要求和任务,我采用的C语言编程,设计秒表要求一秒定时,采用了定时器和FOR循环来定时,其中一个软件一个硬件,会在方案论证中分析在1秒时采用的是硬件定时,即用单片机内部的定时器T0。
先将时钟初始化,赋入初值50ms定时,循环20次来进行1秒定时。
然后由定义的变量second来进行加一运算,然后将其值通过P1,P2口在数码管上进行显示。
其中数码管的显示时,我在程序中首先定义了一个关于数码管显示的字形码定义,以便在显示时调用即可。
(1)方案论证:方案1:在方案1中,我们所选用的是软件定时,即用for循环来定时1秒进行显示的变化.方案2:在方案2中,采用的是硬件定时,即用单片机内部的定时器T0。
先将时钟初始化,赋入初值50ms定时,循环20次来进行1秒定时.方案比较:我们从两方面进行两种方案的比较,第一,由于此次课程设计要求是秒表,则在定时时要求比较精确,所以采用硬件的定时器定时时比较准确的。
第二,由于秒表的定时程序是很小的,在利用软件定时占用的CPU并不是很多,不能显现出来,但真正大程序时会很占用资源的,所以在用定时中断过程中是非常节省资源的.综合上述两种比较,我们选用了第二种方案.(2)创新点:a。
在课程要求的基础上,我们做成的电路板上,用复位键来控制秒表计时的重新开始,即清零。
b。
在以上设计的基础上,我们又重新设计了一个程序,基本原理没有变,只是将秒表在到达59清零的瞬间向分的位数上进1,程序将会在附录3中给出。
2.硬件系统框图与说明:首先,连接的是单片机51的最小系统,其中包括时钟电路,复位电路,在此中包括的元器件在附录3中.我们所选用的数码管是共阴极的,置1时导通,所以将单片机的P1。
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单片机设计一个简单的秒表程序。
单片机秒表课程设计(C语言)
课程设计(论文)课程名称 MCS-51单片机题目名称单片机秒表设计学生学部(系)机电学部专业班级 08自动化一班2010年 12 月 10 日目录1实验设计的目的和任务1.1 单片机秒表实验的概述1.2系统设计思路及描述1.3 系统设计任务和要求2软件与硬件设计2.1系统硬件方案设计2.2软件方案设计3 程序流程及实验效果3.1源程序及说明3.2原理图分析3.3实验效果4 参考文献1. 实验设计的目的和任务1.1单片机秒表实验的概述一、实验题目秒表系统设计——用STC89C52RC设计一个3位LED数码显示“秒表”,显示时间为00.0~59.9秒,每毫秒自动加一,每十毫秒自动加一秒。
二、增加功能增加一个“复位00.0”按键(即清零),一个“暂停”和“开始”按键,一个“复位60.0”按键(用来60秒倒计时),一个倒计时“逐渐自减”按键。
三,实验难点单片机电子秒表需要解决三个主要问题,一是有关单片机定时器(一个控制顺序计时,一个控制倒计时)的使用;二是如何实现LED的动态扫描显示;三是如何对键盘输入进行编程。
四、实验内容提要本实验利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED 数码管以及实验箱上的按键来设计计时器。
将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。
其中本实验设计了四个开关按键:其中key2按键按下去时开始计时,即秒表开始键(同时也用作暂停键),key1按键按下去时数码管清零,复位为“00.0”,key3按键按下去时数码管复位为“60.0”(用于倒计时),key4按键按下去则是数码管开始“逐渐自减”倒计时。
实验的意义1)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。
2)掌握定时器、外部中断的设置和编程原理。
3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
4)该实验通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义实验仪器集成电路芯片8051,七段数码管,TX-1C单片机开发板,MCS-51系列单片机微机仿真实验系统中的软件(Keil uvision2)1.2系统设计思路及描述该实验要求进行计时并在数码管上显示时间,则可利用MCS-51系列单片机的芯片AT89C52的P3.4,P3.5,P3.6,P3.7作为按键的入口;定时器T0作为每0.1秒减一的定时器;定时器T1作为每0.1秒加一的定时器。
51单片机的秒表设计报告
课程名称:微机原理课程设计题目:基于51单片机的秒表设计摘要随着社会的发展,单片机已经渗透到我们生活中的各个领域,广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等。
本设计就是由单片机STC89C52RC芯片和1602液晶为核心,辅以必要的电路,构成了一个单片机电子秒表。
秒表是一种常用的测试仪器,它可以用在百米赛跑等需要精确计时的地方,为人们的生活提供了很大的方便。
该单片机电子秒表布置合理,全部器件分布在7*10cm覆铜板上,看起来小巧精简。
采用的是单片机内部定时/计数器计时,走时非常精确而且不易出错。
1602液晶经蓝白滑动变阻器调节亮度,,可以直观地显示时间。
一个控制按键就可以控制秒表的计数与停止,按一下控制键,秒表工作状态就由计时变为计时变为停止或停止变为计时,按一下清零键就可以清零,操作非常简单。
液晶显示屏第一行显示2013.7.11字样的秒表制作完成时间,第二行显示计时时间。
它的计时周期为100秒,显示满刻度为99:99秒,从左往右数共四位,前两位显示整数部分,后两位显示小数部分。
关键词:秒表,51单片机,C语言,1602液晶目录一、设计任务、要求 (8)1.1 设计任务: (8)1.2 设计要求: (8)二、方案总体设计 (9)2.1 方案一: (9)2.2 方案二: (9)2.3系统采用方案 (9)三、硬件设计 (11)3.1 单片机最小系统 (11)3.2 液晶显示模块 (11)3.3 系统电源 (12)3.4 整体电路 (12)3.5 PCB整体电路 (13)四、软件设计 (14)4.1 keil软件介绍 (14)4.2程序流程图 (15)五、仿真 (17)5.1 proteus软件介绍 (17)5.2 仿真过程 (17)六、总结 (19)6.1设计总结: (19)6.2经验总结: 0七、参考文献 (1)一、设计任务、要求1.1 设计任务:1).对更多小器件的了解2).巩固51单片机和C语言的知识,熟悉单片机和C语言的实际操作运用3).掌握仿真软件的运用和原理图的绘制4).加深焊接的技巧,提高焊接的能力5).熟悉调试方法和技巧,提高解决实际问题的能力6).熟悉设计报告的编写过程7).熟悉PCB的制作1.2 设计要求:1).清零键进行清零2).一个独立按键进行停止与运行的操作3).蓝白滑动变阻器可以调节液晶亮度二、方案总体设计设计一个基于51单片机的秒表。
51单片机秒表计时器课程设计报告(含C语言程序).
XXXXXX学院51单片机系统设计课程设计报告题目:秒表系统设计专业、班级:学生姓名:学号:指导教师:分数:[摘要]本设计是一个秒表计时器,采用51单片机实现。
电路包括以下几部分:单片机最小系统部分,数码管显示部分,摁键开关部分部分。
电路选用共阴型4位数码管组成时钟显示电路;时钟的增减控制以及清零部分主要由轻触开关构成的摁键系统组成;信号接收和处理部分主要由单片机来执行。
接通电源后,秒表计时器处于初始状态,4位数码管显示000.0。
当摁下“开始”开关时,秒表开始计时,数码管显示当前状态的时间。
当再次摁下开关时,数码管停止计时。
摁下“清零”键后,系统重新回到初始状态。
[关键词]单片机最小系统秒表计时摁键控制1、任务设计一个秒表计时器,在51单片机的控制作用下,采用4个LED数码管显示时间,计时范围设置为00.0~60.0秒,即精确到0.1秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。
2、设计要求(1)开始时显示00.0。
每按下S1键一次,数值加1s;(2)每按下S2键一次,数值减1s;(3)每按下S3键一次,数值清零;(4)每按下S4键一次,启动定时器使数值开始自动每秒加1,再次按下S4键,数值停止自动加1,保持显示原数。
3、发挥部分(1)开关按键3:“复位60.0”按键(用来60秒倒计时)。
按键按下去时数码管复位为“60.0”(用于倒计时)。
(2)开关按键4:倒计时“逐渐自减”按键。
按键按下去则是数码管开始“逐渐自减”倒计时。
(3)开关按键5:倒计时初始值“增加”按键。
(4)开关按键6:倒计时初始值“减小”按键。
4、课程设计的难点单片机电子秒表需要解决三个主要问题,一是有关单片机定时器(一个控制顺序计时,一个控制倒计时)的使用;二是如何实现LED 的动态扫描显示;三是如何对键盘输入进行编程。
51单片机时钟秒表课程设计
51单片机时钟秒表课程设计
这个是我写的作业的方案,单片机课程结课作业,以下是我写的设计方案,写的不咋滴欢迎拍砖。
一、详细功能设计
1、基于51 单片机倒计时秒表,最大值为9999 秒,计时单位为0.1 秒;
2、计时的初始值为组员学号后4 位,键盘启动/停止计时;
3、设计多个按键,使用键盘选择不同成员的学号作为初始值。
二、8031 最小系统设计
1、最小系统设计原理图如图1.0 所示:
2、8031 最小系统概述;
8031 最小系统包含晶振电路与复位电路。
晶振选择12MHZ 晶振,晶振电容使用30pf 电容瓷片电容。
复位电路选择上电复位。
三、硬件设计
1、数码管电路
在本设计中,使用7 段共阴极数码管,选择数码管的型号为7SEG-MPX6- CC;
2、数码管片选电路;
由于本设计需要显示五位数字,同时为了驱动数码管,使用了74HC154 芯片。
与此同时,使用74HC154 芯片还可以扩展数码管显示数字的个数。
三、软件设计
1、程序流程图如图3.0 所示:
图3.0 程序流程图
2、程序流程说明
数码管显示和扫描键盘子函数放在0.1 秒的定时器中断里,而主函数的while(1)函数向数码管显示数据变量送数据。
数码管显示函数接受键盘状态,根。
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单片机编程及应用,注重理论与实践相结合,培养学生的实际操作能力。
c51电子秒表课程设计
c51电子秒表课程设计一、课程目标知识目标:1. 学生能够理解C51单片机的基础知识,掌握其编程方法。
2. 学生能够掌握电子秒表的基本原理,包括计时、暂停、清零等功能。
3. 学生能够了解并掌握电子秒表中的中断处理、定时器/计数器等硬件资源的使用。
技能目标:1. 学生能够运用C语言编写C51单片机程序,实现电子秒表的计时功能。
2. 学生能够通过实验操作,学会使用开发板、编译器等工具进行程序编写和调试。
3. 学生能够培养实际动手能力,独立完成电子秒表的搭建和调试。
情感态度价值观目标:1. 学生能够培养对电子制作的兴趣和热情,提高学习积极性。
2. 学生能够培养团队协作意识,学会与他人共同解决问题。
3. 学生能够认识到科技发展对社会进步的重要性,增强科技创新意识。
课程性质:本课程为实践性课程,注重培养学生的动手能力和实际操作技能。
学生特点:学生具备一定的C语言基础,对单片机有一定了解,但实践经验不足。
教学要求:教师需引导学生通过实际操作,掌握C51单片机编程和电子秒表制作技能,同时注重培养学生的情感态度价值观。
将课程目标分解为具体学习成果,以便在教学设计和评估中逐一实现。
二、教学内容1. 理论部分:- C51单片机基础知识:介绍C51单片机的结构、工作原理和编程环境。
- 中断处理和定时器/计数器:讲解中断的概念、中断处理过程,以及定时器/计数器的使用方法。
- 电子秒表原理:阐述电子秒表的计时原理、功能模块及其相互关系。
2. 实践部分:- C51编程实践:指导学生使用C语言编写电子秒表程序,掌握程序结构、函数调用等。
- 硬件搭建与调试:学生动手搭建电子秒表电路,学习电路连接、元件识别等,并进行程序下载和调试。
- 综合应用:结合所学知识,学生独立完成一个具有计时、暂停、清零等功能的电子秒表项目。
3. 教学大纲安排:- 第一课时: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单片机秒表计时器课程规划设计报告(含C语言知识程序)
+-XXXXXX学院51单片机系统设计课程设计报告题目:秒表系统设计专业、班级:学生姓名:学号:指导教师:分数:[摘要]本设计是一个秒表计时器,采用51单片机实现。
电路包括以下几部分:单片机最小系统部分,数码管显示部分,摁键开关部分部分。
电路选用共阴型4位数码管组成时钟显示电路;时钟的增减控制以及清零部分主要由轻触开关构成的摁键系统组成;信号接收和处理部分主要由单片机来执行。
接通电源后,秒表计时器处于初始状态,4位数码管显示000.0。
当摁下“开始”开关时,秒表开始计时,数码管显示当前状态的时间。
当再次摁下开关时,数码管停止计时。
摁下“清零”键后,系统重新回到初始状态。
[关键词]单片机最小系统秒表计时摁键控制1、任务设计一个秒表计时器,在51单片机的控制作用下,采用4个LED数码管显示时间,计时范围设置为00.0~60.0秒,即精确到0.1秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。
2、设计要求(1)开始时显示00.0。
每按下S1键一次,数值加1s;(2)每按下S2键一次,数值减1s;(3)每按下S3键一次,数值清零;(4)每按下S4键一次,启动定时器使数值开始自动每秒加1,再次按下S4键,数值停止自动加1,保持显示原数。
3、发挥部分(1)开关按键3:“复位60.0”按键(用来60秒倒计时)。
按键按下去时数码管复位为“60.0”(用于倒计时)。
(2)开关按键4:倒计时“逐渐自减”按键。
按键按下去则是数码管开始“逐渐自减”倒计时。
(3)开关按键5:倒计时初始值“增加”按键。
(4)开关按键6:倒计时初始值“减小”按键。
4、课程设计的难点单片机电子秒表需要解决三个主要问题,一是有关单片机定时器(一个控制顺序计时,一个控制倒计时)的使用;二是如何实现LED 的动态扫描显示;三是如何对键盘输入进行编程。
单片机秒表设计课程设计报告范文2
单片机秒表设计课程设计报告范文2基于52单片机的简易秒表课程设计摘要自20世纪70年代单片微型计算机(简称单片机)诞生以来,单片机以其功能强、体积小、质量轻、价格低、可靠性高、可塑性好等优点得到了广泛的应用,成为目前世界上数量最多的计算机和工程师们开发嵌入式应用系统和小型智能化产品的首选控制器。
一.设计任务及要求1、题目基于51单片机的简易秒表课程设计2、基本要求1)使用51系列单片机作为主控芯片构建最小系统,熟练掌握晶振与复位电路;2)用LED数码管来显示倒计时;3)用按键来实现起动与停止等功能;4)设计一完整电路,要求应用Protue软件进行仿真验证,并要求焊接实物后进行功能调试。
3、设计目的1)掌握单片机的接口技术及外围芯片的工作原理及控制方法;2)进一步掌握单片机程序编写及调试过程,掌握模块化程序设计方法;3)掌握LED数码管的工作原理;4)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解;4)掌握定时器、外部中断的设置和编程原理;5)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
4、设计任务1)用STC89C52RC单片机的定时器/计数器定时和计数的原理,通过proteu仿真软件模拟设计一个2位LED数码显示“秒表”,显示时间为00-99秒,每秒自动加一或减一。
2)另设计一个“开始(正计数)”按键和一个“倒计数”按键,再增加一个“暂停”按键。
按键说明:按“开始”按键,开始正计数,数码管显示从00开始,每秒自动加一;按“暂停”按键,系统暂停计数,数码管显示当时的计数;按“倒计数”按键,系统在原先的计数上自动减一秒。
按“总开关”按键,结束计数;再按一下,系统清零,数码管显示00。
二、总体方案设计1、硬件方案设计1)时钟电路模块时钟电路由一个晶体振荡器12MHZ和两个22pF的瓷片电容组成。
引线某TAL1和某TAL2分别是放大器的输入端和输出端。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
+-XXXXXX学院51单片机系统设计课程设计报告题目:秒表系统设计专业、班级:学生姓名:学号:指导教师:分数:[摘要]本设计是一个秒表计时器,采用51单片机实现。
电路包括以下几部分:单片机最小系统部分,数码管显示部分,摁键开关部分部分。
电路选用共阴型4位数码管组成时钟显示电路;时钟的增减控制以及清零部分主要由轻触开关构成的摁键系统组成;信号接收和处理部分主要由单片机来执行。
接通电源后,秒表计时器处于初始状态,4位数码管显示000.0。
当摁下“开始”开关时,秒表开始计时,数码管显示当前状态的时间。
当再次摁下开关时,数码管停止计时。
摁下“清零”键后,系统重新回到初始状态。
[关键词]单片机最小系统秒表计时摁键控制1、任务设计一个秒表计时器,在51单片机的控制作用下,采用4个LED数码管显示时间,计时范围设置为00.0~60.0秒,即精确到0.1秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。
2、设计要求(1)开始时显示00.0。
每按下S1键一次,数值加1s;(2)每按下S2键一次,数值减1s;(3)每按下S3键一次,数值清零;(4)每按下S4键一次,启动定时器使数值开始自动每秒加1,再次按下S4键,数值停止自动加1,保持显示原数。
3、发挥部分(1)开关按键3:“复位60.0”按键(用来60秒倒计时)。
按键按下去时数码管复位为“60.0”(用于倒计时)。
(2)开关按键4:倒计时“逐渐自减”按键。
按键按下去则是数码管开始“逐渐自减”倒计时。
(3)开关按键5:倒计时初始值“增加”按键。
(4)开关按键6:倒计时初始值“减小”按键。
4、课程设计的难点单片机电子秒表需要解决三个主要问题,一是有关单片机定时器(一个控制顺序计时,一个控制倒计时)的使用;二是如何实现LED 的动态扫描显示;三是如何对键盘输入进行编程。
5、课程设计仪器集成电路芯片STC89C52,八段数码管,MCS-51系列单片机微机仿真课程系统中的软件(keil uvision2)。
摘要 (2)关键词 (2)任务书 (3)1、设计任务目的 (5)2、设计方案选取与论证 (5)2.1 系统总体设计方案 (5)2.2 系统整体框图 (5)3、电路设计 (6)3.1 单片机最小系统设计 (6)3.2 数码管显示模块设计 (6)3.3 摁键控制系统模块设计 (6)3.4 程序设计 (6)4、制作及调试过程 (11)5、结果分析和总结 (12)参考文献 (12)附录a 秒表计时器原理图 (13)附录b 元器件清单 (14)附录c 秒表计时器实物图 (15)1、设计任务目的1.根据单片机课程所学内容,结合其他相关课程知识,设计电子秒表,以加深对单片机知识的理解,锻炼实践动手能力,为以后的毕业设计和工作打下坚实基础;2. 熟悉汇编语言或C 语言的程序设计方法,熟悉51系列单片机的使用;3. 掌握单片机的内部功能模块的应用,如定时器/计数器、中断、I/O 口、串行口通讯等功能;4. 掌握单片机应用系统的软硬件设计过程、方法及实现。
2、 设计方案选取与论证2.1系统总体设计方案使用STC89C51单片机作为核心控制部件,采用12M 晶体振荡器及30PF 微小电容构成振荡电路;用1个四位一体共阴极数码显示管作为显示部分,构成数字式秒表的主体结构,配合独立式键盘和复位电路完成此秒表的计时、清零、停止、增减初始时间等各项功能。
2.2 系统总体整体框图图2.2 系统设计框图3、 电路设计3.1 单片机最小系统设计图3.1 单片机最小系统1. 时钟电路在XTAL1、XTAL2 的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。
在本设计中采用的12M 的石英晶振。
和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。
当采用石英晶振时,电容可以在20 ~ 40pF 之间选择。
2. 复位电路复位操作通常有两种基本形式:上电自动复位和开关复位。
上电瞬间,电容两端电压不能突变,此时电容的负极和RESET 相连,电压全部加在了电阻上,RESET 的输入为高,芯片被复位。
随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。
并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。
3. EA/VPP(31 脚)的功能和接法51 单片机的EA/VPP(31 脚)是内部和外部程序存储器的选择管脚。
当EA 保持高电平时,单片机访问内部程序存储器;对于现今的绝大部分单片机来说,其内部的程序存储器(一般为flash)容量都很大,因此基本上不需要外接程序存储器,而是直接使用内部的存储器。
4. P0 口外接上拉电阻51 单片机的P0 端口为开漏输出,内部无上拉电阻。
所以在当做普通I/O 输出数据时,由于V2 截止,输出级是漏极开路电路,要使“1”信号(即高电平)正常输出,必须外接上拉电阻。
3.2 数码管显示模块设计显示部分采用动态显示。
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的共阴极增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的位选通端,就使各个数码管轮流受控显示,这就是动态驱动。
动态显示是利用人眼视觉暂留特性来实现显示的。
事实上,显示器上任何时刻只有一个数码管有显示。
由于各数码管轮流显示的时间间隔短、节奏快,人的眼睛反应不过来,因此看到的是连续显示的现象。
为防止闪烁延时的时间在1ms左右,不能太长,也不能太短。
3.3 摁键控制系统模块设计由P1口作为独立摁键信号的输入端控制时钟的加1s、减1s、复位60.0s等操作。
用外部中断0作为秒表计时器的开启和暂停的操作。
且所有摁键均为低电平有效。
其中部分摁键为单刀双掷开关用于控制增计时或减计时以及限60.0s计时和60.0s外计时。
3.4 程序设计如下:#include<reg52.h> //包含52单片机寄存器定义的头文件unsigned char Tab1[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //段码表unsigned char Tab2[ ]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //个位段码表unsigned int x;unsigned char k;sbit int0=P3^2;sbit int1=P3^3;sbit SUB60=P1^1;sbit S60=P1^2;sbit K5=P1^3;sbit K6=P1^4;sbit K7=P1^5;sbit K8=P1^6;/***************************延时1ms基准******************************************/void delay1ms(unsigned int i){unsigned char j;while(i--){for(j=0;j<125;j++) //1ms基准延时程序12MHZ晶振{;}}}/******************************************************************** ******************************数码管显示程序***********************************************/void Display(unsigned int x){P2=0xfe; //P2.0引脚输出低电平,DS6点亮P0=Tab1[x/1000]; //显示百位delay1ms(6);P2=0xfd; //P2.1引脚输出低电平,DS6点亮P0=Tab1[x%1000/100]; //显示十位delay1ms(6);P2=0xfb; //P2.2引脚输出低电平,DS6点亮P0=Tab2[x%100/10]; //显示个位delay1ms(6);P2=0xf7; //P2.3引脚输出低电平,DS7点亮P0=Tab1[x%10]; //显示0.1位delay1ms(6);P2=0xff;}/*******************************************函数功能:主函数******************************************/void main(void){x=0;TMOD=0x01; // TMOD=0000 0001B,使用计数器T0的工作方式1EA=1; //开起总中断ET0=1; //允许定时器T0的中断EX0=1; //允许外中断INT0IT0=1; //INT0为下负脉冲触发方式TH0=(65536-50000)/256; //计数器T0高8位赋初值TL0=(65536-50000)%256; //计数器T0低8位赋初值TF0=0; //溢出标志位清零while(1){/****************************************************************************K5 P1.3按一次加1开关S1***************************/ if(K5==0){delay1ms(20);if(K5==0){x=x+10;}while(!K5); //摁键关断摁一次触发一次}/***********************************************************************K6 P1.4按一次减1开关S2**************************/ if(K6==0){delay1ms(20);if(K6==0){if(x==0){x=10; //在00.0的时候停止}x=x-10;}while(!K6); //摁键关断摁一次触发一次}/******************************************************************** *******************K7 P1.5初始值赋值为60.0秒开关S5********************/if(K7==0){delay1ms(20);if(K7==0){x=600; //赋初值60.0秒}while(!K7); //摁键关断摁一次触发一次}/******************************************************************** *******************S60 控制60S停止开关P1.2****************************/if(x==600){if(S60==0) //如果P1.2口是低电平,秒表变化范围00.0~60.0{TR0=0;}}/******************************************************************** ******************K8 P1.6清零clear0摁键开关S3************************/ if(K8==0){delay1ms(20); //延时消震if(K8==0){x=0; //数据清0 数码管显示000.0TR0=0; //溢出标志位清0}}/************数码管显示***************************************/ Display(x);}}/**********INT0中断函数用于开始或暂停开关S4****************** **************************************************************/ void begin_stop() interrupt 0{if(int0==0){delay1ms(30); //延时消震if(int0==0){TR0=~TR0; //按键摁一次读秒开始或暂停if(x==0&&SUB60==0){TR0=0;}}}}/***************************************************************T0 计数器中断控制每隔加0.1秒***********************/ void add_one0() interrupt 1{k++;if(k==2){k=0;TF0=0;if(SUB60==1) //当P1.1口是高电平时秒表加0.1s//当P1.1口是低电平时秒表减0.1s{x=x+1; //秒表加0.1s}else{x=x-1; //秒表减0.1s}if(x==0){TR0=0;}if(x==9999){TR0=0;}}TH0=(65536-50000)/256; //计数器T0高8位赋初值TL0=(65536-50000)%256; //计数器T0低8位赋初值}4、制作及调试过程4.1 电路的制作(1) 分析各单元电路图,并分析其各部分的功能;(2) 用仿真软件仿真电路的功能,并检查是否有错,无误后进行下步工作;(3) 查找有关文献了解各元件的功能及引脚和有关的资料;(4) 分别焊接单片机最小系统、数码管显示电路和摁键控制电路,与此同时检查各元器件是否可用,并分辨其引脚;(5) 对照事先设计好的原理图仔细检查在实物中是否有接错的地方(主要检查集成电路的引脚与导线是否出错接错和是否出现了短路),若发现有,就立即改正。