基于单片机的数字秒表系统设计1

合集下载

基于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单片机的秒表设计1

(完整版)基于51单片机的秒表设计1

实训报告题目秒表系统的设计年级专业班级学号姓名地点日期目录一,目⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 3 二,系硬件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4 三,系件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯7 四,系与果⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12 五,片机小⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13设计目标最近几年来跟着科学技术的发展,单片机的应用范围愈来愈广,也成为好多专业的必修课。

本文简单论述了鉴于单片机的秒表设计。

本设计的主要特色是计时精度达到 0.01 秒,能够用来为各样体育比赛计时等。

本设计的数字秒表采纳AT89才 51 单片机为主要器件,利用其准时器的原理,结LED数码管以及外面中止电路来设计计时器。

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

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

按下键 3 时,数据清零。

系统硬件设计1 、1整体方案的设计数字秒表拥有显示直观、读取方便、精度高等长处,在计时中宽泛应用。

本设计顶用单片机和数码管构成数字秒,力争构造简单。

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

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

主控制器采纳单片机AT89才 51,显示电路采纳四位共阴极数码管显示计不时间。

本设计利用 AT89才 51 单片机的准时器,使其能精准计时。

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

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

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

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

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

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

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

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

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

2、计时精度达到 001 秒。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

基于单片机的数字电子秒表的设计与实现

基于单片机的数字电子秒表的设计与实现

主电源引脚Vss和Vcc①Vss接地②Vcc正常操作时为+5伏电源外接晶振引脚XTAL1和XTAL2①XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。

当采用外部振荡器时,此引脚接地。

②XTAL2内部振荡电路反相放大器的输出端。

是外接晶体的另一端。

当采用外部振荡器时,此引脚接外部振荡源。

图1.2 8051单片机引脚图控制或与其它电源复用引脚RST/VPD,ALE/PROG,PSEN和EA/Vpp①RST/VPD 当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位在Vcc掉电期间,此引脚可接上备用电源,由VPD向内部提供备用电源,以保持内部RAM中的数据。

接电源及额定段导通电流来确定相应的限流电阻。

图1.4 (a)数码管引脚图(b)共阳极内部结构图(c)共阴极内部结构图本设计采用共阴极数码显示管做显示电路,由于采用的是共阴的数码显示管,所以只要数码管的a、b、c、d、e、f、g、h引脚为高电平,那么其对应的二极管就会发光,使数码显示管显示0~9的编码见表1.1。

表1.1 共阴极数码显示管字型代码字型共阴极代码字型共阴极代码0 3FH 5 6DH1 06H 6 7DH2 5BH 7 07H3 4FH 8 7FH4 66H 9 6FH动态显示电路由显示块、字形码驱动模块、字位驱动模块三部分组成。

如图1.3所示为本系统的5位LED动态显示器接口电路。

图中,5个数码管的8段段选线分别与外接上拉电阻的单片机P0口对应相连,而5个数码管的位控制端则和NPN型三极管的集电极相连接。

单片机的P2.0~P2.4口则分别对应数码显示管的最低位到最高位,P2.0~P2.4口分别和五个NPN型三极管的基极相连,做三极管导通的控制端,而NPN型三极管选用9013型三极管。

根据9013的资料显示:其耐压值为40V,最大功率为0.65W,最大反向放大器所构成的振荡电路,XTAL1和XTAL2分别为振荡电路的输入和输出端,8051单片机的时钟信号通常用两种电路形式得到:内部振荡方式与外部振荡方式。

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

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

基于stm32单片机的数字秒表设计摘要:本设计用stm32单片机搭以其它硬件组成数字电子秒表,采用主程序设计,通过数码管显示计时结果。

对硬件电路和软件进行设计,并进行仿真测试,结果表明,计时准确,结构简单,稳定性强。

关键词:STM32;单片机;数字秒表一、研究原理在刚通电后打开电源开关,使系统初始化,此时计时器显示为00.00.00,按下开关开始计时时,stm32单片机接收到外部中发来的中断请求后,转到开启TIM2定时器。

计时是靠TIM2定时器的中断来完成的,TIM2定时器时钟为72Mhz,定时器预分频为72分频,即时钟的72个周期,每1微妙定时器自加1,溢出值设定为999,即从0-999的共1000次,每1毫秒发生一次定时器中断,每当一处定时溢出是就向TIM发出中断请求,实现数据的累加,达到10次就实现进位加一,以此类推,直到实现最大计时23小时59分59.99秒后复位。

在定时器工作过程中,外部按下暂停键,信息会传送到TIM2的捕获输入引脚,CPU就收到捕获中断请求执行定时器捕获中断的程序,显示数据,并将数据存到寄存区内。

在暂停后,对PA0进行扫描,如果按下就回到主程序,准备开始新的计时。

在暂停健被按下时,此时显示时间被存到缓存内,再按下暂停键,再次继续计时时,上次显示的计时时间从缓存区转到最终存储区。

在秒表停止计时后扫描查看键PA2,PA2口是高电平,就查看最近的一次计时缓存,是低电平就调用最终缓存区的计时数据查看前面的计时数据。

从而实现多次计时和查看前面计时数据的功能。

二、硬件设计设计成品由硬件电路和软件程序协调合一组成。

硬件电路由显示电路、电源电路、控制电路、主控电路等组成。

主控电路以STM32为主,显示电路则用1602来作为显示工具。

本秒表利用STM32单片机的定时的定时原理,来达到精确计时的目标。

开始和暂停的功能靠的是单片机的中断系统。

在单片机的几个接口中,PB口为输出口,输出计时数据,列扫描的输出则是安排在PB0-PB4口,三个按钮开关接口为PA0、PA1、PA2,功能依次为开始、暂停、存储和查看前面的计时数据。

基于单片机的99秒表设计

基于单片机的99秒表设计

基于单片机的99秒表设计(一).方案论证及设计说明1.控制器的选择单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。

由于其功耗低、体积小、技术成熟和成本低等优点,各个领域应用广泛。

本实验采用AT89C51单片机。

2.数码管的选择(1)LED显示方式有共阴极和共阳极两种。

由于平时习惯于用共阴极数码管,在本实验中采用共阴极数码管。

1)字形码表的产生以共阴极为例,LED七段数码管的每一段接高电平时亮,不同的2)显示方式: 静态显示在静态显示方式下,每一位显示器的字段控制线是独立的。

当显示某一字时,该位的各字段线和字位线的电平不变,也就是各字段的亮灭状态不变。

静态显示方式下LED 显示器的电路连接方法是:每位LED 的字位控制线门共阴极点或共阳极点连在一起,接地或接 + 5V ;由于显示的是整数,所以小数点那位可以不接,所以其字段控制线 (a ~g )分别接到一个7位口。

动态显示1)利用人眼的视觉暂留效应,通过位选分时显示不同的数码管,这样可以看到正常的显示。

调用延时子程序循环显示各路水压值, 使能清楚的看到八路水压的大小。

2)本实验采用共阴极数码管,动态循环显示各路水压值,并在设置上下限时显示上下限的大小。

显示数码与共阴极断码的对应关系:0 1 2 3 4 5 6 7 8 9 3FH06H 5BH 4FH 66H6DH7DH07H 7FH 6FH静态显示占的的IO 资源多,动态显示可以节省IO 口,本实验中IO 口足够用,所以用静态显示。

3.设计说明99秒表的设计有2个控制键,开始键和复位键,按下开始键则开始计时,再按一下开始键则停止计时,显示计时的秒数,按一下复位键则复位,显示00。

按键通过外部中断来实现,用外部中断0和外部中断1来实现。

按下开始键则进入外部中断0,为了区分是开始计时还是计时停止,给寄存器R1赋初值为0,判断R1为零,给R1赋值1,则启动定时器,进入定时器中断,执行计时,每隔一秒数码管显示的值自动加一,当再次按下开始键时,再次进入中断0,R1的值为1,通过比较指令判断为停止计时指令,则跳转到指令使定时器停止计时,则显示定时的时间,同时把R1的值再设为0。

单片机课程设计+基于单片机的秒表系统设计

单片机课程设计+基于单片机的秒表系统设计

目录一总体方案设计 (1)1.1 设计要求 (1)1.2 优点及意义 (1)1.3 初步设计思路 (1)二、硬件电路设计 (1)2.1 AT89C51单片机模块 (1)2.1.1 89C5单片机 (1)2.1.1单片机中断系统 (2)2.2 复位与时钟电路模块 (3)2.2.1晶振电路 (3)2.2.2 复位电路 (3)2.3按键模块 (3)2.4蜂鸣器模块 (4)①蜂鸣器工作原理 (4)2.5数码管模块 (4)三、软件设计 (5)3.1程序流程图 (5)3.2主程序设计 (5)3.2.1定义管脚、指示灯、蜂鸣器 (5)3.2.2启动与暂停 (5)3.2.3每秒报警 (7)3.2.4数码管显示 (7)3.3子程序设计 (8)3.3.1 定时器子程序设计 (8)总结 (9)参考文献 (10)附录 (11)一总体方案设计1.1 设计要求1、设计精度为0.1S的秒表系统。

2、设置启动、暂停、清零按钮。

3、设计每一秒钟都有提醒功能。

4、秒表的最长计时长度为9:59:59,超过此长度,报警。

1.2 优点及意义单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。

事实上单片机是世界上数量最多的计算机。

现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。

1.3 初步设计思路该实验要求进行计时并在数码管上显示时间,则可利用单片机微机仿真实验系统中的芯片AT89C51中的P3.2管脚做为外部中断0的入口地址,并实现“开始/停止”、“暂停”、“清零”按键的功能;定时器T0作为每秒加一的定时器。

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

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

《单片机数字秒表系统设计》课程设计学生姓名:三毛学号:**********专业班级:自动化084班指导教师:大毛二○○六年七月七日目录1.课程设计目的 (1)2.课程设计题目描述和要求 (1)3.课程设计报告内容 (1)4.结论 (10)参考书目 (10)基于单片机的数字秒表系统专业: 自动化学号:6100308223 学生姓名:凌益斌指导老师: 王俐1.课程设计目的1.1 用AT80C51单片机作为主控制器设计数字秒表系统。

1.2 熟悉AT80C51,74LS164,RX8以及LED数码管的结构和用法。

2.课程设计题目描述和要求2.1问题描述设计一个秒表,按“开始”按键,开始计数,数码管显示从00每秒自动加一;按“复位”按键,系统清零,数码管显示00;按“暂停”按键,系统暂停计数,数码管显示当前的计数;按“快加”按键,系统每10ms快速加一,即数码管显示在原先的计数上快速加一。

2.2设计要求1) 使用两位数码管显示,显示时间00-99秒;2) 正常计数时,每秒自动加一;3) 一个开始按键,一个复位按键,一个暂停按键和一个快加按键;4) 实现计数、复位、清零和快加功能;5) 单片机通电后,首先初始化,然后进行对按键扫描。

开始键用来控制秒表工作的开始;暂停键用来暂停程序的运行;快加键控制快速计数的开始,利用暂停键停止;复位键是用来对程序复位用的,当程序出现死循环或想从00开始重新计时,按下复位键可返回程序开始,重新执行。

3.课程设计报告内容该实验要求进行计时并在数码管上显示时间,则可利用MCS系列单片机微机仿真实验系统中的芯片8051中的P3.2管脚作为外部中断0的入口地址,并实现“开始”按键的功能;将P3.3作为外部中断1的入口地址,并实现“清零”按键的功能;使用P0口作为段码数据输出控制口,74LS164用作驱动输出控制,P1.1、P1.2口分别实现暂停、快加的功能。

显示电路由两位共阴极数码管组成。

使用定时器T0实现10ms的定时,进行快加延时;当想实现正常计数时的1s延时,只需要实现40次25ms的定时器T1控制延时就可以实现。

其中“开始”按键当开关由1拨向0时开始计时;“清零”按键当开关由1拨向0时数码管清零,此时若再拨“开始”按键则又可重新开始计时。

初始状态下计时器显示00,当按下开始键时,外部中断INT0向CPU发出中断请求,CPU转去执行外部中断0服务程序,即开启定时器T0,并且进行100次计数,当到100次时,即延时1s时,产生一个中断信号,向CPU发出请求,执行计数器加一且送往数码管显示。

在计时过程中,只要按下暂停键,即根据P1.0口电平变化去执行控制程序,关断定时器T0和T1,调用显示子程序,实现暂停功能。

在按下暂停键时,将此时的计时时间存入中间缓存区,当再次按下开始键时,则讲中间缓存区的数据转入最终缓存区。

计时采用定时器T1中断完成,定时溢出中断周期为25ms,并同时进行40次计数,当有溢出时,会产生中断信号,向CPU发出中断请求,每发出一次中断请求就对计数单元低位进行加一,达到10次就对高位进行加一,送数码管显示,依此类推,直到99秒后再加一后返回00,重新开始。

数码管显示电路采用动态扫描的方式,由于数码管采用共阴极的接法,当位选信号为高电平时,该位选通,P0口中的数据送到该段上显示,节省接口资源,又能实时动态的性能。

再看按键的处理。

这四个键可以采用中断的方法,也可以采用扫描的方法来识别。

复位键和开始键功能在于使程序从头执行,对于时间的要求即单片机上电初始化时的值00;而停止键则要用于对时间的锁定,需要比较准确的控制;而对于快加键,当检测到有快加信号时,则启动定时器T0, 完成一个周期定时时产生一个溢出中断请求,向CPU发送请求,每发一次就对计数单元低位进行加一操作,达到10次就对高位进行加一操作,送数码管显示,依次循环;同时检测是否有暂停信号,有暂停信号时,跳出快加程序,执行显示子程序。

因此可以对暂停和快加按键采取扫描的方式。

而对开始和复位键采用外部中断的方式。

3.1硬件设计1)数字秒表电路设计数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。

本设计用单片机组成数字电子秒表,力求结构简单、精度高为目标。

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

其硬件电路主要有主控制器,计时与显示电路和回零、启动和快加电路等。

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

本设计利用8051单片机的定时器/计数器定时和记数的原理,使其能精确计时。

利用中断系统使其能实现开始和复位的功能。

P0口输出段码数据,74LS164用作驱动输出,P1.1、P1.2、P3.2、P3.3口接四个按钮开关,分别实现暂停、快加、开始和复位功能。

电路原理图设计最基本的要求是正确性,其次是布局合理,最后在正确性和布局合理的前提下力求美观。

硬件电路图按照图3进行设计。

主电路见附录。

图3 数字秒表硬件电路基本原理图根据要求知道秒表设计主要实现的功能是计时和显示。

本设计中,数码管显示的数据存放在内存单元11H和12H中。

其中12H存放低位数据,11H存放高位数据,每一地址单元内均为十进制BCD码。

由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中。

显示时,分别取出11H、12H地址中的数据,然后查得对应的显示用段码,并从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。

采用了汇编语言编写,汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。

汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。

2)电源电路电源电路是系统的最基本部分,任何部分都离不开电源部分,单片机系统也不例外,而且我们应该高度重视电源部分,不能因为电源部分电路比较简单而有所疏忽,其实有一半的故障或制作失败都和电源有关,电源部分做好才能保证电路的正常工作。

3)单片机晶振电路MCS-51单片机内部的振荡电路是一个增益反相放大器,引线XYAL1和XTAL2分别为反相放大器的输入和内部时钟电路输入和来自反相放大器的输出,该反相放大器可以配置为片内振荡器。

单片机内部虽然有震荡电路,但要形成时钟,外部还需要附加电路石晶振荡和陶瓷振荡均可采用,有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,单必须保证脉冲的高低电平要求的宽度。

晶振电路如图4、5所示。

图4 内部晶振电路图5 外部晶振电路单片机的时钟产生方式有两种,分别为:内部时钟方式和外部时钟方式。

利用其内部的震荡电路XTAL1和XTAL2外接定时元件,内部震荡电路便产生自激震荡,用示波器可以观察到XTAL2的输出时钟信号。

在MCS-52中通常用内部时钟方式,也就是在XTAL1和XTAL2之间连接晶体振荡器与电容构成稳定的自激震荡器。

晶体和电容决定了单片机的工作精度为1微秒,晶体可在1.2-12MHZ之间选择。

MCS-51单片机在通常情况下,使用震荡频率为6MHZ的石英晶体,而12MHZ 频率主要是在高速串行通信情况才使用,在这里我们用的是12MHZ的石英晶体。

对电容无严格要求,但它在取值对震荡频率的输出的稳定性、大小及震荡电路起震荡速度有点影响。

C1和C2可在10-100pF之间取值,一般情况下取30pF。

外部时钟方式是把外部震荡信号源直接接入XTAL1或XTAL2。

由于XTAL2的逻辑电平不是TTL,所以还要接上拉电阻。

4)单片机复位电路单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作。

上电复位要求接通电源后,自动实现复位操作。

手动复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。

单片机要完成复位,必须向复位端输出并持续两个机器周期以上的高电平,从而实现复位操作。

上电自动复位通过电容C1充电来实现和限流电阻R2。

手动按键复位是通过按键将电阻R1与VCC接通来实现。

R1作为上拉电阻,当复位键按下是产生一个触发脉冲,进行复位操作。

在MCS-51中,复位电路的外部逻辑电路由通过二极管的单向导通性和施密特触发器组成(图 6),最常见的几种方式的复位电路如图(图7、8、9),它能有效的实现上电复位和手动复位。

RST引脚是复位信号输入端,复位信号为高电平有效,其有效时间应持续24个振荡周期以上才能完成复位操作,若使用6MHz 晶振,则需持续4μs以上才能完成复位操作。

如图中在通电瞬间,由于RC的充电过程,在 RST端出现一定宽度的正脉冲,只要该正脉冲保持10ms以上,就能使单片机自动复位,在6MHz时钟时,通常CR取22μF,R1取200Ω,R2取1KΩ,这时能可靠的上电复位和手动复位。

图6内部复位电路逻辑图图7上拉复位电路图8按键电平复位电路图9按键脉冲复位电路3.2 软件设计本设计软件部分包含三大部分:主程序,紧急情况中断服务子程序,显示子程序。

1)设计思想本设计采用了汇编语言编写,汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。

汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。

使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。

模块化结构程序的设计,可以使系统软件便于调试与优化,也使其他人更好地理解和阅读系统的程序设计。

2)主程序设计本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序和外部中断1服务程序组成。

其中主程序是整个程序的主体。

可以对各个中断程序进行调用。

协调各个子程序之间的联系。

系统(上电)复位后,进入主程序,主程序流程图如图10所示,部分子程序流程图由图11、12、13、14、15、16给出。

首先对系统进行初始化,包括设置各入口地址、中断的开启、对各个数据缓存区清“0”、赋定时器初值,初始化完毕后,就进入数码管显示程序。

在主程序中还进行了赋寄存区的初始值、设置定时器初值以及开启外部中断等操作,当定时时间到后就转去执行定时中断程序。

当外部中断有请求则去执行外部中断服务。

并在执行完后返回主程序。

图10 主程序流程图图11 加一子程序流程图图13 INT1中断子程序 图12 INT0中断子程序图14定时器T0子程序图15数码显示流程图图16定时器T1子程序3.3仿真结果3.4 结束语本设计的数字电子秒表是由8051单片机、共阴数码显示管、控制按键等器件构成的,设有两位计时显示,开始、暂停、复位按键以及一个实现快加功能的按钮。

计时精度能到达10ms,设计精简,使用简单易懂。

相关文档
最新文档