单片机实验秒表详细步骤Word格式文档下载.docx

上传人:b****7 文档编号:22017685 上传时间:2023-02-02 格式:DOCX 页数:8 大小:105.85KB
下载 相关 举报
单片机实验秒表详细步骤Word格式文档下载.docx_第1页
第1页 / 共8页
单片机实验秒表详细步骤Word格式文档下载.docx_第2页
第2页 / 共8页
单片机实验秒表详细步骤Word格式文档下载.docx_第3页
第3页 / 共8页
单片机实验秒表详细步骤Word格式文档下载.docx_第4页
第4页 / 共8页
单片机实验秒表详细步骤Word格式文档下载.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

单片机实验秒表详细步骤Word格式文档下载.docx

《单片机实验秒表详细步骤Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机实验秒表详细步骤Word格式文档下载.docx(8页珍藏版)》请在冰豆网上搜索。

单片机实验秒表详细步骤Word格式文档下载.docx

本子情境中采用软件去抖。

图按键与单片机连接图图按键被按下时电压的变化

4任务步骤

4.1步骤一:

PROTEUS电路设计,简易秒表的原理图如图5-51所示。

1、选取元器件

①单片机:

AT89C51

②两位共阴极蓝色数码管:

7SEG-MPX2-CC-BLUE

③排阻:

RESPACK-8

④按钮:

BUTTON

2、放置元器件、放置电源和地、连线、元器件属性设置

简易秒表的原理图如图5-51所示,整个电路设计操作都在ISIS平台中进

图5-52秒表流程图

(2)源程序设计

#include<

reg52.h>

#defineuintunsignedint

#defineucharunsignedchar

sbitkey1=P3^0;

//定义"

启动"

按钮

sbitkey2=P3^1;

停止"

sbitkey3=P3^2;

复位"

uchartemp,aa,shi,ge;

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

//共阴极数码管编码

voiddisplay(ucharshi,ucharge);

//声明显示子函数

voiddelay(uintz);

//声明延时子函数

voidinit();

//声明初始化函数

voidmain()

{

init();

//调用初始化子程序

while

(1)

{

if(key1==0)//检测"

按钮是否按下

{

delay(10);

//延时去抖动

if(key1==0)//再次检测"

{

while(!

key1);

//松手检测,若按键没有释放,key1始终为0,那么!

key1始终为1,程序就一直停在此while语句处

TR0=1;

//启动定时器开始工作

}

}

if(key2==0)//检测"

按钮是否按下

if(key2==0)//再次检测"

while(!

key2);

//松手检测

TR0=0;

//关闭定时器

if(key3==0)//检测"

if(key3==0)//再次检测"

{

key3);

temp=0;

//将变量temp的值清零

shi=0;

//将十位清零

ge=0;

//将个位清零

}

}

display(shi,ge);

//调用显示子函数

}

}

voiddelay(uintz)//延时子函数

{

uintx,y;

for(x=z;

x>

0;

x--)

for(y=110;

y>

y--);

voiddisplay(ucharshi,ucharge)//显示子程序

{

P2=0xbf;

P0=table[shi];

delay(10);

P2=0x7f;

P0=table[ge];

//使用动态扫描的方法实现数码管显示

voidinit()//初始化子程序

temp=0;

TMOD=0x01;

//使用定时器T0的方式1

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

//定时50ms中断一次

EA=1;

//中断总允许

ET0=1;

//允许定时器T0中断

 

voidtimer0()interrupt1

//重新赋初值

aa++;

//中断一次变量aa的值加1

if(aa==20)//中断20次后,定时时间为20*50ms=1000ms=1s,将变量temp的值加1

{

aa=0;

temp++;

if(temp==60)//秒表到达60s后回零

temp=0;

shi=temp%100/10;

ge=temp%10;

//分离个位和十位

}

4.3步骤三:

PROTEUS仿真

加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框ProgramFile一栏中单击打开按钮

,出现文件浏览对话框,找到miaobiao.hex文件,单击“打开”按钮,完成添加文件。

单击按钮

,启动仿真,仿真运行片段如图所示。

按下“启动”按钮后,秒表开始计时,如图所示。

按下“停止”按钮,秒表停止计时。

按下“复位”按钮,秒表回到最初始的状态,如图所示。

图按下“启动”按钮后秒表开始计时

图按下“复位”按钮后,秒表回到最初始的状态

5扩展练习

此子情境设计的秒表只能显示两位整数,如果要记录110跨栏12:

88秒的成绩,则必须再增加两位数码管来显示小数位。

想想硬件和软件应该做如何改动。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1