单片机课程设计-秒表

合集下载

单片机课程设计-99S秒表

单片机课程设计-99S秒表

单片机课程设计说明书学院:专业:班级:指导老师:姓名:学号:2012年6月【摘要】:随着电子技术的发展,电子技术在各个领域的运用也越来越广泛,人对它的认识也逐步加深。

秒表计时器秒表计时器常常用于体育竞赛及各种其他要求有较精确时间的各领域中。

其中启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。

本设计就是利用所学到的电子元器件将脉冲源用数码管显示出来,以制做简易的秒表。

[关键词]机械计时器启/停开关数码管显示简易目录1.设计任务 (4)2.设计题目 (4)3. 功能分析 (4)4. 总体设计 (4)4.1硬件设计4.1.189C51单片机 (4)4.1.2晶体振荡电路 (5)4.1.3按键电路 (6)4.1.4显示电路 (6)4.2引脚控制 (6)5. 电路原理图 (8)6. 程序设计 (9)7. 程序仿真 (11)8. 实物制作 (11)8.1所需元件 (11)8.2所需工具 (11)8.3焊接 (11)8.4烧录程序并运行 (12)9.心得体会 (12)10.参考文献 (12)单片机原理及应用课程设计说明书1、设计任务以单片机为核心,设计一个0-99S秒表,按键时具有计时功能。

2、设计题目定时器控制8段2位数码LED显示秒表3、功能分析采用2个LED数码管显示时间,计时范围设置为0~99.秒,即精确到1秒,用按键控制秒表的“开始”、“暂停”。

按开关按键,开始计时;再按开关按键,系统暂停计时;4、总体设计本实验利用单片机的定时器/计数器定时和计数的原理,通过采用Proteus仿真软件来模拟实现。

模拟AT89C51单片机、LED数码管以及控件来控制秒表的计数以及计时的开启、暂停、继续。

其中有两个数码管来显示数据,两个数码管显示秒(两位)。

4.1硬件设计4.1.1 89C51单片机MCS-51系列单片机是8位单片机产品,89C51是其中的典型代表,基本模块包括以下几个部分:(1)CPU:89C51的CPU是8位的,另外89C51内部有1个位处理器(2)R0M:4KB的片内程序存储器,存放开发调试完成的应用程序(3)RAM:256B的片内数据存储器,容量小,但作用大(4)I/O口:P0-P3,共4个口32条双向且可位寻址的I/O口线(5)中断系统:共5个中断源,3个内部中断,2个外部中断(6)定时器/计数器:2个16位的可编程定时器/计数器(7)通用串行口:全双工通用异步接收器/发送器(8)振荡器:89C51的外接晶振与内部时钟振荡器为CPU提供时钟信号(9)总线控制:89C51对外提供若干控制总线,便于系统扩展89C51的引脚如下图:89C51单片机引脚图4.1.2晶体振荡电路89C51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反相振荡放大器的输入及内部时钟工作电路的输入和来自反相振荡器的输出,该反相放大器可以配置为片内振荡器。

单片机课程设计-秒表

单片机课程设计-秒表

单片机课程设计姓名:***学号:设计课题:秒表指导老师:同组人员:*********设计时间:2009年12月16日一、设计目的1.单片机的基本原理及相关的简单应用。

2.掌握用单片机设计系统的一般步骤。

3.了解LED数码管的基本知识和驱动方法。

4.掌握单片机系统各个组成部分的作用以及分布位置。

5.学会运用单片机的硬件资源。

二、设计要求1、要求设计一个秒表,精度为00.01秒;2、显示位数为4位;3、有启动、停止、清零功能三、设计工具1.PC机一台2.TDN-MI教学实验系统一台(配串行口通讯线)四、元器件4位数码管(1个)、30P瓷片电容(2个)、12M晶振(1个)、12*12键盘(2个)、面包板(1块)、连接线(若干)、10K排阻(1个)五、电路连接1、本系统中“启动/停止”按钮接在外部中断0口(P3.2);2、本系统中“清零”按钮接在RST脚(第9管教);3、本系统的位选通信号接在P1口的低四位;4、本系统的LED数据端口使用的是P0口,由于采用了共阴数码管,且面包板上空间有限,未加扩流三极管,只使用了上拉电阻。

5、为使电路工作更加稳定,加了上电复位电路。

详见下图六、设计原理图1、3641数码管脚位图2、系统电路图七、程序流程图(1)主函数(2)LED动态扫描八、设计程序/************************************************设计题目:秒表设计要求:设计带启动、停止、清零功能的秒表利用4位数码管,显示整数两位和小数两位设计者:何友东付艳娟设计精度:0.01s完成日期:09.12.16*************************************************/#include "reg52.h"#include "intrins.h"//************** PIN CONFIGURE ********************sbit Start_Stop = P3^2; //定义启动/停止按键sbit Clear = P3^3; //定义清零按键sbit Sel_A1 = P1^0; // 定义数码管第一位sbit Sel_B1 = P1^1; // 定义数码管第二位sbit Sel_C1 = P1^2; // 定义数码管第三位sbit Sel_D1 = P1^3; // 定义数码管第四位#define LED P0 //定义LED 数据端口#define DP 0x80 //定义小数点//**************************************************bdata unsigned char flag; //定义标志寄存器sbit Status_Flag = flag^0; //1----计时0----停止sbit Is_KeyS_Hold = flag^1; //定义键盘释放判断标志位//1---未释放0---释放unsigned char xiaoshu1 = 0 , //定义计时的小数部分,第一位xiaoshu2 = 0 , //定义小数部分第二位miao1 = 0 ; //定义计时的整数部分第一位(十位)miao2 = 0 ; //定义整数部分第二位(个位)code unsigned char table[]={0x3f,0x06,0x5b, // 定义0~9 编码0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};//******************函数声明*************************void init(); //初始化函数void display(); // 数码管显示函数void delay(); //数码管单个显示延时函数void key(); //键盘释放判断操作函数//****************************************************//*********************主函数************************* void main(){init(); //调用初始化函数while(1){key(); //调用键盘操作函数display(); //调用LED动态显示函数}}//********************键盘释放判断操作函数************* void key() //启动停止按钮释放键盘判断{if(Is_KeyS_Hold)if(Start_Stop){Is_KeyS_Hold = 0 ;EX0 = 1 ;}}//****************display()的内部延时函数*************** void delay(){unsigned int i ;for(i = 0; i<300; i++);}//***************LED的动态显示函数********************** void display(){Sel_A1 = 1;Sel_B1 = 1;Sel_C1 = 1;Sel_D1 = 0;LED = table[xiaoshu2];delay(); //显示小数的第二位Sel_A1 = 1;Sel_B1 = 1;Sel_C1 = 0;Sel_D1 = 1;LED = table[xiaoshu1];delay(); //显示小数的第一位Sel_A1 = 1;Sel_B1 = 0;Sel_C1 = 1;Sel_D1 = 1;LED = table[miao2]|DP;delay(); //显示秒的第二位//并显示小数点Sel_A1 = 0;Sel_B1 = 1;Sel_C1 = 1;Sel_D1 = 1;LED = table[miao1];delay(); //显示秒的第一位}//******************外部中断0处理函数************************ void Key_Start_Stop() interrupt 0 //外部中断0 启动停止按钮连接于此{EX0 = 0;Status_Flag = ~ Status_Flag ;Is_KeyS_Hold = 1;if( Status_Flag )TR0 = 1;elseTR0 = 0;}//*******************定时器0中断处理函数****************void time10ms() interrupt 1 //定时器中断延时时间10ms{TL0 = 0XEF;TH0 = 0XD8;TR0 = 1 ; //开定时器xiaoshu2+=1;if(xiaoshu2 == 10) { xiaoshu2 = 0 ; xiaoshu1 += 1;}if(xiaoshu1 == 10) { xiaoshu1 = 0 ; miao2 += 1;}if(miao2 == 10) { miao2 = 0 ; miao1 += 1;}if(miao1 == 10) miao1 = 0; //计数最大值99.99 ,//下一时刻00.00}//*********************系统初始化函数********************void init(){Sel_A1 = Sel_B1 = Sel_C1 = Sel_D1 = 1 ;LED = 0XFF; //关显示Status_Flag = 0; //标志位清零(未计数)xiaoshu1 = xiaoshu2 = miao1 = miao2 = 0 ;//初始化显示00.00ET0 = 1; //定时器0开中断EX0 = 1; //外部中断0开中断EA = 1 ; //开总中断TMOD = 0X01; //定时器0工作方式1TL0 = 0XEF; //延时10ms初始化设置TH0 = 0XD8;TR0 = 0 ; //定时器停止计数}九、实验步骤1.先在电脑上编写程序,然后在试验箱上装载,编译并运行,验证时钟功能是否正确。

秒表(跑表)-课程设计-单片机

秒表(跑表)-课程设计-单片机

第一章设计的内容、要求及目的1.1设计内容本课题以单片机为核心,要求设计和制作一个秒表,实现计时功能。

开始时,全显示“0”,自行设计按钮,要求第1次按下按钮后就开始计时,计时精度最好为0.01秒;第2次按按钮后,计时停止,此时可读取计时数值;第3次按按钮后,计时归零,全显示“0”。

此为基本要求,学生可根据自己的创意添加相应扩张,完善或者添加部分功能。

1.2设计要求1.设计方案要合理、正确;2.系统硬件设计;3.完成必要元器件选择;4.系统软件设计及调试;5.写出设计报告。

1.3目的及意义要求通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。

同时要求掌握定时器、外部中断的设置和编程原理。

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

该实验通过单片机的定时器/计数器定时和计数原理,设计简单的秒表计时系统,拥有正确的计时、暂停、清零功能,并同时可以用数码管或者液晶显示器显示,在现实生活中应用广泛,比如说体育项目中的跑步竞赛计时,因此具有现实意义。

第二章 系统方框图与工作原理2.1 系统方框图秒表系统主要由单片机、显示电路,控制按钮等组成。

硬件系统比较简单,其系统方框图如下:图1 系统构成框图2.2 系统工作原理秒表系统比较简单,因此,实施了相应扩展,显示器采用了液晶显示器取代LED 数码管显示器。

同时,添加一个控制按钮,实现可计10个计数值的功能。

主要硬件部分与逻辑功能如下: 秒表系统主要用到的是一个内部定时器,如T0,每隔10MS 产生一次中断,实现秒表计时的“跑动”;一个外部中断,用于控制按钮,控制的实现由软件判定来实现;此外,就是一个显示电路,由内存读取需要显示的数值传输给显示器循环显示。

主要逻辑和控制均由51单片机的软件编程来实现。

对于内部定时器,为了保证计时要求,保证计时精度,步进定为10MS,51单片机系统内部定时器T0产生中断,定时时间为10MS,每次中断重写计数初值。

单片机课程设计之秒表设计

单片机课程设计之秒表设计

单片机课程设计之秒表设计一、课程目标知识目标:1. 学生理解单片机的基本原理,掌握单片机编程基础知识;2. 学生掌握秒表设计的流程和关键步骤,了解计时器的工作原理;3. 学生熟悉并掌握单片机中断、定时器等相关知识,并能将其应用于实际项目中。

技能目标:1. 学生能够运用所学知识,独立设计并实现一个简单的秒表程序;2. 学生能够通过编程调试,解决在秒表设计过程中遇到的问题;3. 学生具备团队协作能力,能够与同学共同分析问题、讨论方案并完成项目。

情感态度价值观目标:1. 学生培养对单片机及电子制作的兴趣,激发创新精神和实践能力;2. 学生养成勤奋好学、独立思考的良好习惯,形成积极向上的学习态度;3. 学生在项目实践中,培养团队精神,学会相互尊重、沟通协作。

本课程针对单片机课程设计之秒表设计,结合学生年级特点,注重理论与实践相结合,培养学生的动手能力和实际操作技能。

通过课程学习,使学生能够掌握单片机基础知识,具备实际项目设计与实施能力,同时培养他们的团队协作和创新能力。

课程目标明确、具体,可衡量,有助于学生和教师在教学过程中清晰了解预期成果,并为后续教学设计和评估提供依据。

二、教学内容1. 单片机基础知识回顾:主要包括单片机的结构、工作原理、指令系统及编程基础;2. 定时器与中断:讲解单片机定时器的工作原理,中断处理过程,以及如何利用定时器实现精确计时;3. 秒表设计原理:分析秒表的功能需求,设计流程,以及所需硬件和软件资源;4. 程序设计:根据秒表设计原理,编写程序代码,实现秒表的开始、停止、计次、清零等功能;5. 硬件电路设计:介绍秒表所需硬件电路的设计方法,包括单片机、按键、显示屏等部分的连接;6. 调试与优化:教授学生如何对程序进行调试,找出并解决存在的问题,优化程序性能;7. 课外拓展:引导学生思考如何改进秒表功能,增加趣味性和实用性。

教学内容依据课程目标制定,涵盖单片机基础知识、定时器与中断、程序设计、硬件电路设计等方面,以确保内容的科学性和系统性。

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

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

单片机课程设计_基于单片机的数字秒表设计在当今科技迅速发展的时代,电子设备的应用无处不在,其中数字秒表作为一种常见的计时工具,具有广泛的应用场景,如体育比赛、科学实验、工业生产等。

本次课程设计旨在基于单片机技术实现一个数字秒表,通过对硬件电路的设计和软件程序的编写,掌握单片机系统的开发流程和方法,提高实践动手能力和解决问题的能力。

一、设计要求1、能够实现秒表的启动、暂停、复位功能。

2、计时精度达到 001 秒。

3、能够通过数码管显示计时结果。

二、系统方案设计1、硬件设计单片机选型:选用常见的 STC89C52 单片机作为核心控制器,其具有性能稳定、价格低廉、易于编程等优点。

显示模块:采用 8 位共阴极数码管作为显示器件,通过动态扫描的方式实现数字的显示。

按键模块:设置三个独立按键,分别用于启动、暂停和复位操作。

时钟模块:使用单片机内部的定时器/计数器产生精确的时钟信号,实现计时功能。

2、软件设计主程序:负责系统的初始化、按键扫描和计时处理等。

中断服务程序:利用定时器中断实现 001 秒的定时,更新计时数据。

三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。

晶振频率选择 12MHz,为单片机提供时钟信号。

复位电路采用上电复位和手动复位相结合的方式,确保系统能够可靠复位。

2、显示电路将 8 位数码管的段选引脚通过限流电阻连接到单片机的 P0 口,位选引脚通过三极管连接到单片机的 P2 口。

通过动态扫描的方式,依次点亮每个数码管,实现数字的显示。

3、按键电路三个按键分别连接到单片机的 P10、P11 和 P12 引脚,采用低电平有效。

当按键按下时,相应引脚的电平被拉低,单片机通过检测引脚电平的变化来判断按键的操作。

四、软件程序设计1、主程序流程系统初始化后,进入主循环。

在主循环中,不断扫描按键状态,如果检测到启动按键按下,则启动计时;如果检测到暂停按键按下,则暂停计时;如果检测到复位按键按下,则将计时数据清零。

单片机课程设计-秒表

单片机课程设计-秒表

单片机课程设计姓名: 学号: 设计课题: 指导老师: 同组人员: 设计时间: 一、设计目的1.单片机的基本原理及相关的简单应用。

2.掌握用单片机设计系统的一般步骤。

3.了解LED数码管的基本知识和驱动方法。

4•掌握单片机系统各个组成部分的作用以及分布位置5•学会运用单片机的硬件资源。

*********2009 年12 月16二、设计要求1、要求设计一个秒表,精度为00.01秒;2、显示位数为4位;3、有启动、停止、清零功能三、设计工具1.PC机一台2.TDN-MI教学实验系统台(配串行口通讯线)四、元器件4位数码管(1个)、30P瓷片电容(2个)、12M晶振(1个)、12*12键盘(2个)、面包板(1块)、连接线(若干)、10K排阻(1个)五、电路连接1、本系统中“启动/停止”按钮接在外部中断0 口(P3.2);2、本系统中“清零”按钮接在RST脚(第9管教);3、本系统的位选通信号接在P1 口的低四位;4、本系统的LED数据端口使用的是P0口,由于采用了共阴数码管,且面包板上空间有限,未加扩流三极管,只使用了上拉电阻。

5、为使电路工作更加稳定,加了上电复位电路。

详见下图06级电子信息工程单片机课程设计六、设计原理图1、3641数码管脚位图nO1DI01Gco6JGAAiiiiiA Ki i A ii i i ******; l E C D [ f F 帥fi c > r t or ij B C J> F r cDIG*neoA if F ;W*I0 6 61 4 2O O O OI ICM 32、系统电路图19七、程序流程图(1)主函数(2) LED动态扫描(3)外部中断0 (4)定时器0羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊//乂)人羽PIOA诲国庙第工酉&寅易咸诲〃!()Xe|sp piOA 诲国工酉易咸诲//!()Xe|dsip piOA滋国羽券回//:()l!U! P!OA************************* 国羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊Mj9X0'jZX020X0'PZX0'P9X0'99X0hX0'qgxo'90XO‘j£Xo}=[]o|qEl 」Eip psu6isun spoo! 0 = SOBjLU0 = snqsoeix 0 = i^nqsoeix jeqo psu6isunJvbElj = P|OH_se>rs| *qs !0v6e|j = 6e|d _sn;e;s l!qs !6e|j jeqo psu6isun e;epq3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3dD0lzlN00 Nld 羊羊羊羊羊羊羊羊羊羊羊羊羊 *//uM SUUiuj,,spnpuj# ”UN9bai”spnpuj#/羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊91/乙1/60 :晡目妞琴 SLOO:首1糾4視 即磷4》当尊回:#W韋戢 '可劃 '程日 黑44視:來壷44視華矽:@WW羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊,MW 6~o *申 //(冯亠)冯一骂占涯诲轟阴呦44孙爭〃! 0 = l^oeiiu*//单诲\[/孙爭〃 口陳舉滋a3i x 君〃冯园骂易咸诲孙爭// 冯三骂易咸诲孙爭// 冯二骂易咸诲孙爭// 冯一骂易咸诲孙爭// ws 韋戢 m WS 可劃/程日"II08X0 da ou!Qp# 0d a31 ou!Qp#:£vid = LC T IOS *qs 2v ・d = LO_|8S *qsiivid =旧 PS *qs :0vid = LV_|8S *qs!£v£d = JBSIO *qs3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.3f.44探屋削酗月寅屋工冒马£因舵90void key() 〃启动停止按钮释放键盘判断{if(ls_KeyS_Hold)if(Start_Stop){Is_KeyS_Hold = 0 ; EXO = 1 ;〃****************display(void delay() {unsigned int i ; for(i = 0; i<300; i++); }void display() {Sel_A1 = 1; Sel_B1 = 1; Sel_C1 = 1; Sel_D1 = 0;LED = table[xiaoshu2];delay();Sel_A1 = 1; Sel_B1 = 1; Sel_C1 = 0;//********************* void main() { init(); while(1){ key(); display 。

单片机课程设计---秒表

单片机课程设计---秒表

新疆工业高等专科学校电气系课程设计说明书十秒的秒表专业班级:电力10—10(2)班学生姓名:赵学奋指导教师:陈晓芸完成日期: 2012年6月 8日电气系系课程设计任务书教研室主任(签名)系(部)主任(签名)年月日新疆工业高等专科学校电气系课程设计评定意见设计题目:十秒的秒表学生姓名:赵学奋专业电力系统自动化班级 10—10(2)班评定意见:评定成绩:指导教师(签名):年月日评定意见参考提纲:1.学生完成的工作量与内容是否符合任务书的要求。

2.学生的勤勉态度。

3.设计或说明书的优缺点,包括:学生对理论知识的掌握程度、实践工作能力、表现出的创造性和综合应用能力等。

目录1单片机介绍 (1)1.1单片机概述 (1)1.2单片机芯片 (1)1.3单片机的应用分类 (2)1.3.1通用型/专用型 (2)1.3.2总线型/非总线型 (2)1.3.3控制型/家电型 (2)1.4单片机的发展历史 (3)1.4.1基本结构 (3)1.4.2主要阶段 (3)1.5早期发展史 (4)1.6单片机的硬件特性 (5)1.7单片机的应用范围 (5)1.7.1智能仪器 (5)1.7.2工业控制 (6)1.7.3家用电器 (6)1.7.4网络和通信 (6)1.7.5医用设备领域 (6)1.7.6模块化系统 (6)1.7.7汽车电子 (6)1.8Proteus介绍 (7)1.9 Keil C51 介绍 (7)2.硬件设计 (8)2.1电源电路 (8)2.2晶体振荡电路 (8)2.3复位电路 (8)2.4显示电路 (9)2.5键盘电路 (9)2.6硬件主电路图设计 (10)2.7 元器件清单 (10)3.主要原器件介绍 (12)3.1 A T89C51单片机 (12)3.2发光二极管 (14)3.3石英晶振 (15)3.4数码管 (15)4.课程设计 (17)4.1设计题目 (17)4.2电路原理图 (17)4.3工作原理 (17)4.4程序设计 (18)4.4.1如图3.2是我们组利用Keil进行编程的环境 (18)4.4.2以下就是使是秒秒表实现功能的C语言程序 (18)4.5仿真效果 (20)4.5.1按第一次按开关按键计时器开始计时 (21)4.5.2按第二次开关按键计时器暂停计时 (21)4.5.3按第三次开关按键定时器清零 (22)结论 (23)致谢 (24)参考文献 (25)摘要本实验利用单片机的定时器/计数器和计数的原理,结合按键开关以及LED数码管来设计计时器。

单片机课程设计——秒表

单片机课程设计——秒表

单片机预习报告--------------秒表一、题目分析利用单片机内部定时/计数器和中断功能,实现分、秒、十分之一秒的正计时和倒计时功能,并将计时时间通过六位数码管实时动态显示出来。

倒计时模式中可通过键盘上的按键分别对分、秒进行定时设定,在计时过程中,可通过相应按钮进行暂停、开始,从而实现了六位倒计时秒表功能。

二.系统总体设计与框图系统框图如图下图所示。

该过程是:利用单片机8051实现计数功能,按键开关 K4按下,切换定时与计时。

定时范围在0到99分,计时范围在0到99.99.秒。

首先通过检测按键K4,来确定系统工作什么模式,计时模式有开始,暂停,复位3种功能,倒计时模式有,置数,开始,暂停,复位功能。

系统总体设计与框图三.解决方案:初始化为何种状态,开关是否按下,显示是定时状态还是计时状态。

若为定时状态,。

用6个共阴数码管LED显示起显示时间,采用动态显示的方法,P2.4、P2.5、P2.6、P2.7作为位选信号,P0口输出选段码。

键盘为独立式按键,分别接在P3.2、P3.3、P3.4、P3.5上。

K1为设置/启动功能键。

按下时,系统进入时间设置;再按下,系统启动。

K2为倒计时时间十位数设定键,按下时十位数字在0到9的范围。

K3倒计时个位数设定键,按下时,个位数字在0到9的范围。

K4为复位键。

K5为定时与计时的切换键,按下切换到计时状态,不按为定时状态。

P3.5连接发光二极管状态指示,系统时间设为定时状态熄灭,倒计时状态闪烁。

P3.6输出控制信号驱动蜂鸣器,倒计时时间到,蜂鸣器响。

开始正计时,正计时结束,蜂鸣器再响,程序结束。

四.各模块方案1.计时模式开始计时:利用外部中断1与定时中断1进行开始功能与计时功能暂停计时:利用外部中断关闭时实现暂停功能硬件复位:利用电容的冲电与放电特性实现硬件复位。

实现方法:用8051单片机做一个最小系统,计数器的复位功能通过单片机的硬件复位来实现。

秒表的显示用数码管显示,秒表的秒计数和循环通过程序控制单片机的输出来显示在数码管上。

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单片机设计一个简单的秒表程序。

单片机课程设计报告秒表(WORD档)

单片机课程设计报告秒表(WORD档)

单片机课程设计报告秒表设计电子科学系班级:姓名:学号:指导老师:实用文档2013.12.01实用文档课程设计任务书实用文档实用文档摘要:在生活中我们常常用到秒表作为计时器,为了更深刻理解它的工作原理。

本次课程设计以STC89S51单片机为控制核心,以2位共阴数码管作为显示器。

并用外部中断0控制秒表的清零和用外部中断1控制秒表的开始/暂停。

利用Altium.Designer 10.0设计原理图和PCB。

设计完成后在面包板上搭建电路进行验证和调试。

实验成功后,利用化学方法进行腐蚀刻板。

通过一个个多次实验修改,最后设计出了一个能从00~99秒计时的秒表。

此外后文还对对本次课程设计进行了归纳与总结。

关键词:单片机、数码管、中断、Altium.Designer、腐蚀刻板实用文档目录一、设计要求: (8)二、方案论证: (9)2.1总方案设计方框图: (9)2.2方案选择: (9)2.2.1显示电路: (9)2.2.2按键控制: (10)三、硬件设计: (10)3.1系统主芯片STC89C51单片机介绍: (10)3.2电源电路: (12)3.3时钟电路: (13)3.4复位电路: (13)3.5显示电路: (14)3.6键盘电路: (14)实用文档3.7扩展电路: (15)3.8硬件总电路图设计: (15)四、软件设计 (17)4.1系统主程序设计 (17)4.2定时器T1中断: (17)4.3 外部中断0流程图: (18)4.4 外部中断1流程图: (18)4.5数码管显示程序: (19)五、设计中遇到的问题及解决方法: (20)5.1设计原理图和画PCB遇到问题及解决方法: (20)5.1.1设计原理图: (20)5.1.2 绘制PCB: (20)5.2 在面包板调试时遇到问题及解决方法: (21)5.3在腐蚀刻板时遇到问题及解决方法: (21)5.3.1打印PCB印菲林纸: (21)5.3.2在涂蓝油过程中: (21)5.3.3在显影过程中: (22)实用文档5.4焊接完成后遇到问题及解决方法: (22)结束语 (22)谢辞 (23)参考文献: (24)附录A:秒表设计的源程序 (24)附录B:元件清单: (30)附录C: 秒表的原理图和PCB图: (32)附录D:成绩评定表: (34)附录E:实物图(已通过验证) (36)秒表设计一、设计要求:1.1用89C51设计一个2位的LED数码作为“秒表”。

单片机课程设计(交通灯、秒表)

单片机课程设计(交通灯、秒表)

单片机课程设计
在单片机课程设计中,学生通常会接触到各种实际的应用场景,比如交通灯控
制和秒表功能。

这些实际项目既能帮助学生巩固所学的理论知识,又能培养他们的实际动手能力和解决问题的能力。

交通灯设计
项目简介
交通灯控制是一个常见的单片机应用项目,通过控制红绿灯的亮灭顺序,模拟
实际道路的交通流量控制。

学生可以通过这个项目了解控制流程和时序控制。

设计思路
在这个项目中,学生可以设计一个简单的交通灯系统,包括红灯、黄灯和绿灯。

他们需要考虑如何控制各个灯的亮灭顺序,以及红绿灯的时间间隔。

实现步骤
1.设计红绿灯的控制逻辑,确定各个灯的亮灭顺序。

2.编写程序,实现控制逻辑。

3.测试程序,检查红绿灯的切换顺序和时间间隔是否符合要求。

秒表设计
项目简介
秒表是用来计时的工具,通常用于测量短暂时间间隔。

在单片机课程设计中,
学生可以通过设计秒表项目来巩固定时器的使用和计时逻辑。

设计思路
学生可以设计一个简单的秒表系统,通过单片机的定时器功能实现计时功能。

他们需要考虑如何初始化计时器、开始计时、暂停计时和重置计时。

实现步骤
1.初始化定时器,设置时间间隔。

2.编写计时功能的程序,包括开始、暂停和重置功能。

3.测试程序,检查计时功能是否准确。

总结
通过交通灯和秒表项目的设计,学生可以巩固单片机的编程技能和实际应用能力。

这些项目不仅有助于加深对单片机工作原理的理解,还可以培养学生解决实际问题的能力。

希望学生在完成这些项目的过程中,能够不断学习和进步,成为优秀的单片机工程师。

单片机课程设计——电子秒表

单片机课程设计——电子秒表
电子秒表的设计过程:从需求分析到硬件设计,再到软件编程,最后到调试和测试
设计过程中的难点与挑战:硬件电路的设计、软件编程的调试、测试结果的分析 设计过程中的收获与体会:提高了实践能力,加深了对理论知识的理解,增强了解决问题的能 力
存在的不足与改进方向
功能实现:部分功能尚未实现, 如倒计时、暂停等功能
总体设计思路和方案
硬件设计:选择合适的单片 机、显示模块、按键模块等 硬件设备
设计目标:实现电子秒表的 基本功能,如计时、暂停、 清零等
软件设计:编写相应的程序, 实现电子秒表的功能
测试与调试:对电子秒表进 行测试和调试,确保其正常
运行
硬件电路设计
单片机选择:选择合适的单片机型号,如STC89C52 晶振选择:选择合适的晶振频率,如12MHz 复位电路设计:设计复位电路,确保系统稳定运行 定时器设计:设计定时器,实现秒表的计时功能 显示电路设计:设计显示电路,显示秒表的时间信息 电源电路设计:设计电源电路,为系统提供稳定的电源电
显示更新:显示驱动程序的显示更新函数,包括刷新显示内容、更新显示时间等。
中断处理:显示驱动程序的中断处理函数,包括处理显示中断、更新显示内容等。
按键处理程序流程图和代码实现
流程图:按键输入、处理、输出
流程图和代码实现:按键处理程序 的流程图和代码实现
添加标题
添加标题
添加标题
添加标题
代码实现:按键扫描、状态判断、 时间更新
特点:单片机具 有体积小、功耗 低、可靠性高、 编程简单等优点。
应用:在电子秒 表中,单片机负 责接收按键输入、 显示时间、控制 蜂鸣器等操作。
单片机的分类和特点
单片机分类:根据功能、性能、应用领域等不同,可以分为8位、16位、32位等不同类型。 特点:单片机具有体积小、功耗低、可靠性高、编程灵活等特点,广泛应用于各种电子设备中。 应用领域:单片机广泛应用于工业控制、智能家居、汽车电子、医疗电子等领域。 发展趋势:随着技术的不断发展,单片机正在向高性能、低功耗、高集成度方向发展。

单片机课程设计之多功能秒表

单片机课程设计之多功能秒表

单片机报告单片机报告—————多功能秒表多功能秒表实验者:蒋晓婷实验者:蒋晓婷班级:2008级电自9班 学号:20080711304 组员:丁秀香组员:丁秀香一、实验要求1.1.硬件电气原理图一张(含元器件清单一份;所有引脚标注清楚)硬件电气原理图一张(含元器件清单一份;所有引脚标注清楚)硬件电气原理图一张(含元器件清单一份;所有引脚标注清楚)2、软件程序清单一套(含主要程序流程图,全部源程序及详细的注释)、软件程序清单一套(含主要程序流程图,全部源程序及详细的注释)3、使用功能说明书一份(含功能描述及操作指南和收获体会)、使用功能说明书一份(含功能描述及操作指南和收获体会)4、软件在开发板上调试成功,并能成功表演,达到设计课题的要求、软件在开发板上调试成功,并能成功表演,达到设计课题的要求二、实现要求二、实现要求秒表功能秒表功能1、设计可以显示、设计可以显示0.10.10.1——100s 100s的秒表,最小单位为毫秒;的秒表,最小单位为毫秒;的秒表,最小单位为毫秒;2、通过按键控制秒表清零、暂停、继续、退出等功能;、通过按键控制秒表清零、暂停、继续、退出等功能;3、具有倒计时功能;、具有倒计时功能;4、秒表可以分组存储,批量显示;、秒表可以分组存储,批量显示;5、显示北京时间;、显示北京时间;6、可利用蜂鸣器添加提示音。

、可利用蜂鸣器添加提示音。

附加功能附加功能1、利用实时钟芯片,显示年月日以及星期;、利用实时钟芯片,显示年月日以及星期;2、选择蜂鸣器电路,实现闹钟设置和报警功能;、选择蜂鸣器电路,实现闹钟设置和报警功能;3、可以通过按键调整日期、时间;、可以通过按键调整日期、时间;4、可以设置两组闹钟,闹钟时间到,蜂鸣器响;、可以设置两组闹钟,闹钟时间到,蜂鸣器响;5、利用蜂鸣器实现整点报时。

、利用蜂鸣器实现整点报时。

三、硬件原理:1.ADUC848管脚图ADUC848管脚图ADUC848管脚图如下图所示。

单片机实验——秒表(详细步骤)

单片机实验——秒表(详细步骤)
机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图5-50所示,抖动时间的长短与开关的机械特性有关,一般为5~10ms。
在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。本子情境中采用软件去抖。
{
delay(10);//延时去抖动
if(key3==0) //再次检测"复位"按钮是否按下
{
while(!key3); //松手检测
temp=0; //将变量temp的值清零
shi=0; //将十位清零
ge=0; //将个位清零
TR0=0; //关闭定时器
}
}
display(shi,ge); //调用显示子函数
sbit key1=P3^0; //定义"启动"按钮
sbit key2=P3^1; //定义"停止"按钮
sbit key3=P3^2; //定义"复位"按钮
uchar temp,aa,shi,ge;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
TR0=1; //启动定时器开始工作
}
}
if(key2==0) //检测"停止"按钮是否按下
{
delay(10); //延时去抖动
if(key2==0) //再次检测"停止"按钮是否按下
{

单片机课程设计报告-秒表设计

单片机课程设计报告-秒表设计

硬件综合课程设计报告设计课题:秒表设计专业班级:计算机科学与技术学生姓名:李新娱饶琪学号:2010211912 2010211914指教教师:刘锐设计时间:2013年6月秒表设计1. 设计题目、内容用盛群单片机HT48F50E设计秒表,要求实现以下功能:(1)计时开始、停止设置。

(2)计时初值0设置。

(3)计时状态显示。

2. 设计思路及电路设计原理图。

本次设计使用HT-IDE的集成开发环境,在其软件部分用c语言编写时钟功能代码,并用其硬件工具HT-ICE 仿真器烧写程序在HT48F50E上,再根据相应电路实现秒表功能。

整体程序包括两大模块:动态显示和键盘扫描,程序执行流程为:单片机初始化—>扫描按键—>显示计时结果,定时器1产生固定的定时,通过变量计算时间然后通过数码管实时显示。

整个设计利用软件模拟定时器功能,采用软计时以cpu的消耗为代价,能够动态实现数码管的显示及动态扫描键盘输入,键盘控制。

其中LED屏显示秒和毫秒,分钟数由灯以二进制进行显示,可以存储时间并查阅。

a)模块电路如图所示本设计分为时钟电路、按钮电路、显示电路和单片机四大部分,这些模块中单片机占主控地位。

b)HT48F50E的芯片结构的构造图及目标板的键盘分布:本目标板上有一个4*4键盘。

引脚KA0—KA3用于选择键盘的列,引脚KB0—KB3用于选择键盘的行。

通常检测哪一个按键被按下的方法是:利用单片机依次向KA0—KA3输出0,然后再去读KB0—KB3的值。

如果读回的值为”1111”,则表示没有键被按下。

KA0—KA3,KB0—KB3行列对应关系如下:KB0KB1KB2KB3在本次试验中,我们用了三个键和reset键。

reset键为开始和暂停。

按SW13键暂停计时,SW14键存储当前时间,查看存储过的时间则利用SW16进行下翻,浏览查看。

c)本次设计的电路连线图:其中PA设计为输出端,输出七段码。

PB4-7为输出端,接入com0-com3,作为片选。

单片机秒表课程设计

单片机秒表课程设计

单片机秒表课程设计设计目的本文档旨在介绍一个基于单片机的秒表课程设计方案,通过该课程设计,学生可以学习和掌握单片机的基本原理和应用,同时加深对计时器和中断的理解和应用能力。

课程设计内容本课程设计将通过以下几个步骤来实现一个基本的秒表功能:1.硬件准备:准备一个支持单片机编程的开发板、显示屏模块和按钮模块。

2.程序框架:编写程序框架,初始化单片机的引脚和外设,并定义相关的变量和常量。

3.显示模块:编写程序代码,实现显示屏的驱动,在屏幕上显示计时的时间。

4.按钮模块:编写程序代码,实现按钮的驱动,用于开始、停止和复位秒表。

5.计时功能:编写程序代码,实现秒表的计时功能,包括计时开始、计时停止和计时复位等操作。

6.中断处理:利用中断技术,实现定时中断,以精确计时,并实现按钮的中断处理功能。

7.调试和测试:将程序烧录到开发板上,进行调试和测试,确保秒表功能正常运行。

操作流程以下是使用该秒表的基本操作流程:1.程序启动:按下按钮模块上的启动按钮,秒表开始计时并在显示屏上显示计时时间。

2.计时中:显示屏上的时间会实时更新,秒表将一直计时。

3.计时停止:按下按钮模块上的停止按钮,秒表停止计时,但显示屏上的时间保持不变。

4.计时复位:按下按钮模块上的复位按钮,秒表归零,并在显示屏上显示零。

软件设计以下是软件设计的关键部分:程序框架#include <reg51.h>// 定义所使用的引脚和外设sbit startButton = P0^0; // 启动按钮sbit stopButton = P0^1; // 停止按钮sbit resetButton = P0^2; // 复位按钮sbit display = P1; // 显示屏// 定义所使用的变量和常量unsigned char hour; // 时unsigned char minute; // 分unsigned char second; // 秒unsigned int count; // 计数器// 函数声明void init();void displayTime();// 主函数void main(){init();// 主循环while(1){displayTime(); }}// 初始化函数void init(){// 初始化引脚和外设// ...// 初始化变量和常量 hour = 0;minute = 0;second = 0;count = 0;}// 显示时间函数void displayTime(){// 显示时间的代码// ...}显示模块使用该模块可以将计时的时间显示在屏幕上,具体实现需要根据显示屏的驱动方式来编写代码。

单片机课程设计秒表

单片机课程设计秒表

单片机课程设计 秒表一、课程目标知识目标:1. 让学生掌握单片机的基本原理和功能,理解单片机在秒表设计中的应用。

2. 使学生了解秒表的计时原理,掌握秒表的程序设计方法。

3. 帮助学生掌握单片机I/O口的使用,定时器/计数器的工作原理及其编程方法。

技能目标:1. 培养学生运用C语言进行单片机程序设计的能力,能够编写简单的秒表程序。

2. 培养学生动手实践能力,能够独立完成单片机秒表的硬件连接和程序下载。

3. 提高学生分析问题、解决问题的能力,能够对程序进行调试和优化。

情感态度价值观目标:1. 培养学生对单片机及嵌入式系统的兴趣,激发学生学习主动性和创新精神。

2. 培养学生团队合作意识,学会在团队中分享观点、沟通协作。

3. 培养学生严谨的科学态度和良好的学习习惯,注重实践与理论相结合。

课程性质分析:本课程为单片机原理与应用课程的一部分,以实践操作为主,理论讲解为辅。

针对学生特点,注重培养学生的学习兴趣和动手能力。

学生特点分析:学生为高中二年级学生,具备一定的电子基础和编程能力,对新鲜事物充满好奇心,喜欢动手实践。

教学要求:结合课程性质和学生特点,将课程目标分解为具体的学习成果,注重理论与实践相结合,确保学生能够掌握单片机秒表设计的相关知识和技能。

在教学过程中,关注学生的个体差异,提供个性化指导,以促进全体学生的全面发展。

二、教学内容1. 单片机基础理论:- 单片机原理与结构- 单片机的I/O口操作- 定时器/计数器原理与应用2. C语言编程基础:- 数据类型与运算符- 控制结构(循环、分支)- 函数的定义与调用3. 秒表程序设计:- 秒表的计时原理- 程序流程图设计- 编程实现秒表功能(启动、停止、复位、计次等)4. 硬件连接与调试:- 单片机与按键、显示器的连接方法- 程序下载与调试方法- 故障分析与排查技巧教学大纲安排:第一课时:单片机基础理论,介绍单片机原理、结构及I/O口操作第二课时:C语言编程基础,讲解数据类型、运算符、控制结构等第三课时:定时器/计数器原理与应用,分析秒表的计时原理第四课时:秒表程序设计,学习程序流程图设计及编程实现第五课时:硬件连接与调试,动手实践单片机秒表的硬件连接和程序下载,进行调试与优化教材章节关联:《单片机原理与应用》第三章:单片机I/O口编程《单片机原理与应用》第四章:定时器/计数器《C语言程序设计》第二章:数据类型与运算符《C语言程序设计》第三章:控制结构《C语言程序设计》第五章:函数教学内容确保科学性和系统性,结合课程目标和教学大纲,按照以上进度进行教学,使学生能够全面掌握单片机秒表设计与实现的相关知识与技能。

单片机系统课程设计--秒表

单片机系统课程设计--秒表

单片机系统课程设计 --基于单片机秒表的设计学院:通信与电子工程学院班级:电子111姓名:学号:指导老师:日期: 2013年12月19日摘要近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。

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

本设计主要特点是计时精度达到0.1s,解决了传统的由于计时精度不够造成的误差和不公平性,是各种体育竞赛的必备设备之一。

本设计是基于AT89C51单片机设计的,我们是分为几个模块来设计的。

首先对秒表的硬件进行了设计,它包括时钟电路设计、复位电路设计以及外部显示电路。

利用89C51单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。

计时精度为0.1s。

其次是软件进行了设计,软件系统采用汇编语言编写程序,包括显示程序,定时中断服务,外部中断服务程序,延时程序等。

最后通过仿真调试,在proteus环境下建立了仿真模型,仿真结果表明本设计是正确的。

关键词:单片机;秒表;系统设计目录摘要 (I)第1章设计内容要求及目的 (1)1.1课题内容 (1)1.2课题要求 (1)1.3课题目的 (1)第2章硬件简介与电路设计 (2)2.1单片机AT89C51介绍 (2)2.1.1 单片机AT89C51管脚说明 (2)2.1.2 振荡器特性 (4)2.2设计思路 (4)2.3硬件电路设计 (5)2.3.1 时钟电路与复位电路 (5)2.3.2 硬件电路设计 (5)第3章软件设计 (7)第4章系统调试与仿真 (8)4.1仿真软件简介 (8)4.2仿真调试 (8)结论 (11)参考文献 (12)附录1 (13)附录2 (18)附录3 (19)附录4 (20)附录5 (21)第1章设计内容要求及目的1.1课题内容用AT89C51设计一个秒表,该秒表课可显示0.0~59.9秒的时间,进行相应的单片机硬件电路的设计并进行软件编程利用单片机定时器/计数器中断设计秒表,从而实现秒、十分之一秒的计时。

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

单片机课程设计
姓名:***
学号:
设计课题:秒表
指导老师:
同组人员:*********
设计时间:2009年12月16日
一、设计目的
1.单片机的基本原理及相关的简单应用。

2.掌握用单片机设计系统的一般步骤。

3.了解LED数码管的基本知识和驱动方法。

4.掌握单片机系统各个组成部分的作用以及分布位置。

5.学会运用单片机的硬件资源。

二、设计要求
1、要求设计一个秒表,精度为00.01秒;
2、显示位数为4位;
3、有启动、停止、清零功能
三、设计工具
1.PC机一台
2.TDN-MI教学实验系统一台(配串行口通讯线)
四、元器件
4位数码管(1个)、30P瓷片电容(2个)、12M晶振(1个)、12*12键盘(2个)、面包板(1块)、连接线(若干)、10K排阻(1个)
五、电路连接
1、本系统中“启动/停止”按钮接在外部中断0口(P3.2);
2、本系统中“清零”按钮接在RST脚(第9管教);
3、本系统的位选通信号接在P1口的低四位;
4、本系统的LED数据端口使用的是P0口,由于采用了共阴数码管,且面包板上空间有限,未加扩流三极管,只使用了上拉电阻。

5、为使电路工作更加稳定,加了上电复位电路。

详见下图
六、设计原理图
1、3641数码管脚位图
2、系统电路图
七、程序流程图
(1)主函数(2)LED动态扫描
八、设计程序
/************************************************
设计题目:秒表
设计要求:设计带启动、停止、清零功能的秒表
利用4位数码管,显示整数两位和小数两位
设计者:何友东付艳娟
设计精度:0.01s
完成日期:09.12.16
*************************************************/
#include "reg52.h"
#include "intrins.h"
//************** PIN CONFIGURE ********************
sbit Start_Stop = P3^2; //定义启动/停止按键
sbit Clear = P3^3; //定义清零按键
sbit Sel_A1 = P1^0; // 定义数码管第一位
sbit Sel_B1 = P1^1; // 定义数码管第二位
sbit Sel_C1 = P1^2; // 定义数码管第三位
sbit Sel_D1 = P1^3; // 定义数码管第四位
#define LED P0 //定义LED 数据端口
#define DP 0x80 //定义小数点
//**************************************************
bdata unsigned char flag; //定义标志寄存器
sbit Status_Flag = flag^0; //1----计时0----停止
sbit Is_KeyS_Hold = flag^1; //定义键盘释放判断标志位
//1---未释放0---释放
unsigned char xiaoshu1 = 0 , //定义计时的小数部分,第一位
xiaoshu2 = 0 , //定义小数部分第二位
miao1 = 0 ; //定义计时的整数部分第一位(十位)
miao2 = 0 ; //定义整数部分第二位(个位)
code unsigned char table[]={0x3f,0x06,0x5b, // 定义0~9 编码
0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,};
//******************函数声明*************************
void init(); //初始化函数
void display(); // 数码管显示函数
void delay(); //数码管单个显示延时函数
void key(); //键盘释放判断操作函数
//****************************************************
//*********************主函数************************* void main()
{
init(); //调用初始化函数
while(1)
{
key(); //调用键盘操作函数
display(); //调用LED动态显示函数
}
}
//********************键盘释放判断操作函数************* void key() //启动停止按钮释放键盘判断
{
if(Is_KeyS_Hold)
if(Start_Stop)
{
Is_KeyS_Hold = 0 ;
EX0 = 1 ;
}
}
//****************display()的内部延时函数*************** void delay()
{
unsigned int i ;
for(i = 0; i<300; i++);
}
//***************LED的动态显示函数********************** void display()
{
Sel_A1 = 1;
Sel_B1 = 1;
Sel_C1 = 1;
Sel_D1 = 0;
LED = table[xiaoshu2];delay(); //显示小数的第二位
Sel_A1 = 1;
Sel_B1 = 1;
Sel_C1 = 0;
Sel_D1 = 1;
LED = table[xiaoshu1];delay(); //显示小数的第一位
Sel_A1 = 1;
Sel_B1 = 0;
Sel_C1 = 1;
Sel_D1 = 1;
LED = table[miao2]|DP;delay(); //显示秒的第二位
//并显示小数点
Sel_A1 = 0;
Sel_B1 = 1;
Sel_C1 = 1;
Sel_D1 = 1;
LED = table[miao1];delay(); //显示秒的第一位
}
//******************外部中断0处理函数************************ void Key_Start_Stop() interrupt 0 //外部中断0 启动停止按钮连接于此{
EX0 = 0;
Status_Flag = ~ Status_Flag ;
Is_KeyS_Hold = 1;
if( Status_Flag )
TR0 = 1;
else
TR0 = 0;
}
//*******************定时器0中断处理函数****************
void time10ms() interrupt 1 //定时器中断延时时间10ms
{
TL0 = 0XEF;
TH0 = 0XD8;
TR0 = 1 ; //开定时器
xiaoshu2+=1;
if(xiaoshu2 == 10) { xiaoshu2 = 0 ; xiaoshu1 += 1;}
if(xiaoshu1 == 10) { xiaoshu1 = 0 ; miao2 += 1;}
if(miao2 == 10) { miao2 = 0 ; miao1 += 1;}
if(miao1 == 10) miao1 = 0; //计数最大值99.99 ,
//下一时刻00.00
}
//*********************系统初始化函数********************
void init()
{
Sel_A1 = Sel_B1 = Sel_C1 = Sel_D1 = 1 ;
LED = 0XFF; //关显示
Status_Flag = 0; //标志位清零(未计数)
xiaoshu1 = xiaoshu2 = miao1 = miao2 = 0 ;//初始化显示00.00
ET0 = 1; //定时器0开中断
EX0 = 1; //外部中断0开中断
EA = 1 ; //开总中断
TMOD = 0X01; //定时器0工作方式1
TL0 = 0XEF; //延时10ms初始化设置
TH0 = 0XD8;
TR0 = 0 ; //定时器停止计数
}
九、实验步骤
1.先在电脑上编写程序,然后在试验箱上装载,编译并运行,验证时钟功能是否正确。

2.把数码管,单片机移到面包板上,正确接线,并验证是否正确。

十、作品目前缺陷
1、使用数码管为共阴数码管,使用面包板,空间有限,未能加扩流三极管,导致数码管亮度较低。

2、单片机长期工作在高功耗状态,寿命降低。

3、上拉电阻的引入,增加电路静态功耗。

4、可行的解决方案为:使用驱动能力更强的、能够直推LED的AT89C2051,或者使用三极管扩流,推荐使用共阳数码管。

十一、实验心得
1.进一步复习和巩固了单片机的知识,熟悉了单片机硬件资源的使用。

2.进一步学习了数码管的驱动方法。

3.最后感谢汤老师对我的指导。

相关文档
最新文档