单片机实验——秒表 (详细步骤)
更新时间:2023-06-09 09:49:01 阅读量: 实用文档 文档下载
单片机,protuse仿真,秒表,定时器
简易秒表制作
1子情境内容:制作简易秒表,利用按键构成键盘实现秒表的启动、停止与复位,利用LED数码管显示时间。
2 子情境目标:
(1)通过简易秒表的制作,进一步熟悉LED数码管与单片机的接口电路
(2)学习定时/计数器、中断技术的综合运用并会使用简易键盘
3 知识点链接
独立式按键的使用:图5-49为按键与单片机的连接图。
机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图5-50所示,抖动时间的长短与开关的机械特性有关,一般为5~10ms。
在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。本子情境中采用软件去抖。
图按键与单片机连接图 图按键被按下时电压的变化
4 任务步骤
4.1 步骤一:PROTEUS电路设计,简易秒表的原理图如图5-51所示。
1、选取元器件
①单片机:AT89C51
②两位共阴极蓝色数码管:7SEG-MPX2-CC-BLUE
③排阻:RESPACK-8
④按钮:BUTTON
2、放置元器件、放置电源和地、连线、元器件属性设置
简易秒表的原理图如图5-51所示,整个电路设计操作都在ISIS平台中进
单片机,protuse仿真,秒表,定时器
行。与子情景3相似,故不详述。
图简易秒表的原理图
4.2 步骤二:源程序设计与目标代码文件生成
(1)程序流程图
单片机,protuse仿真,秒表,定时器
主程序
单片机,protuse仿真,秒表,定时器
图5-52 秒表流程图
(2)源程序设计
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
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,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71}; //共阴极数码管编码
void display(uchar shi,uchar ge); //声明显示子函数
void delay(uint z); //声明延时子函数
void init(); //声明初始化函数
void main()
{
init(); //调用初始化子程序 while(1) { if(key1==0) //检测"启动"按钮是否按下 { delay(10); //延时去抖动 if(key1==0) //再次检测"启动"按钮是否按下 {
while(!key1); //松手检测,若按键没有释放,key1始终为
0,那么!key1始终为1,程序就一直停在此
while语句处
TR0=1; //启动定时器开始工作
单片机,protuse仿真,秒表,定时器
}
} } if(key2==0) //检测"停止"按钮是否按下 { } if(key3==0) //检测"复位"按钮是否按下 { } display(shi,ge); //调用显示子函数 delay(10); //延时去抖动 if(key3==0) //再次检测"复位"按钮是否按下 { } while(!key3); //松手检测 temp=0; //将变量temp的值清零 shi=0; //将十位清零 ge=0; //将个位清零 TR0=0; //关闭定时器 delay(10); //延时去抖动 if(key2==0) //再次检测"停止"按钮是否按下 { } while(!key2); //松手检测 TR0=0; //关闭定时器
void delay(uint z) //延时子函数
{
uint x,y; for(x=z;x>0;x--)
单片机,protuse仿真,秒表,定时器
}
void display(uchar shi,uchar ge) //显示子程序
{
}
void init() //初始化子程序
{
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;//重新赋初值 TL0=(65536-50000)%256; aa++; //中断一次变量aa的值加1
if(aa==20) //中断20次后,定时时间为20*50ms=1000ms=1s,
将变量temp的值加1 temp=0; TMOD=0x01; //使用定时器T0的方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; //定时50ms中断一次 EA=1; //中断总允许 ET0=1; //允许定时器T0中断 P2=0xbf; P0=table[shi]; delay(10); P2=0x7f; P0=table[ge]; delay(10); //使用动态扫描的方法实现数码管显示
单片机,protuse仿真,秒表,定时器
} } aa=0; temp++; if(temp==60) //秒表到达60s后回零 { } shi=temp%100/10; ge=temp%10; //分离个位和十位 temp=0;
4.3 步骤三:PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program File一栏中单击打开按钮,出现文件浏览对话框,找到miaobiao.hex,启动仿真,仿真运文件,单击“打开”按钮,完成添加文件。单击按钮
行片段如图所示。
按下“启动”按钮后,秒表开始计时,如图所示。
按下“停止”按钮,秒表停止计时。
按下“复位”按钮,秒表回到最初始的状态,如图所示。
单片机,protuse仿真,秒表,定时器
图按下“启动”按钮后秒表开始计时
图按下“复位”按钮后,秒表回到最初始的状态
单片机,protuse仿真,秒表,定时器
5 扩展练习
此子情境设计的秒表只能显示两位整数,如果要记录110跨栏12:88秒的成绩,则必须再增加两位数码管来显示小数位。想想硬件和软件应该做如何改动。
正在阅读:
单片机实验——秒表 (详细步骤)06-09
财税2009固定资产抵扣范围进一步明确10-28
声现象知识点及习题 - 图文07-03
常燕 心理咨询师论文06-02
江苏省淮安市淮阴区南陈集中学苏科版七年级下册数学教学案第9章03-10
黑龙江省教师资格证普通话水平测试内容、要求及注意事项05-11
空气呼吸器标准04-13
2018届高三英语南京市高三年级学情调研考试试卷(含答案)07-02
期末复习方法主题班会06-07
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 秒表
- 单片机
- 步骤
- 实验
- 详细
- Boltzmann分布计算分子不同构象比例
- 工频交流试验电源
- 2021届云南、四川、贵州、西藏四省名校高三第一次大联考化学试题(解析版)_1
- 梁惠星教授“民法解释学”讲义
- 漳浦县新农村建设调查报告
- 英语与汉语的差别
- 第四章 建设工程合同管理
- 霍桑_红字_的女性主义解读
- 2012年中级经济师考试人力资源考前模拟试题3
- 广西百色市2008年初中毕业暨升学考试试卷
- 战后对纳粹罪行的审判与德国反省历史的自觉意识
- 小学二年级第二学期数学期末试题2013
- 济南大学信号与信息处理研究生课程安排
- 隧道掘进水压爆破方案
- 小学四年级作文题目我最熟悉的人的四年级优秀作文
- 浅谈我国的耕地和基本农田保护制度7.15
- 3、帷幕注浆施工工艺工法
- 学前班数学单数和双数教学设计
- 描写面部表情的句子
- I think 2012 is the end of the world