单片机实验-秒表详细步骤_第1页
单片机实验-秒表详细步骤_第2页
单片机实验-秒表详细步骤_第3页
单片机实验-秒表详细步骤_第4页
单片机实验-秒表详细步骤_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

..简易秒表制作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④按钮:BUTTON2、放置元器件、放置电源和地、连线、元器件属性设置简易秒表的原理图如图5-51所示,整个电路设计操作都在ISIS平台中进展。与子情景3相似,故不详述。图简易秒表的原理图4.2步骤二:源程序设计与目标代码文件生成〔1〕程序流程图开场位,变量,数组,子程序声明主程序开场位,变量,数组,子程序声明主程序启动键是否按下"noyes按键防抖停顿键是否按下"noyes复位键是否按下"noyes按键防抖按键防抖开定时器关定时器秒表清零是否到20次50ms`"noyes秒表清零数码管显示是否到60秒`"秒加1yesno图5-52秒表流程图〔2〕源程序设计#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitkey1=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)//检测"停顿"按钮是否按下 { delay(10);//延时去抖动 if(key2==0)//再次检测"停顿"按钮是否按下 { while(!key2);//松手检测 TR0=0;//关闭定时器 } } if(key3==0)//检测"复位"按钮是否按下 { delay(10); //延时去抖动 if(key3==0)//再次检测"复位"按钮是否按下 { while(!key3);//松手检测 temp=0;//将变量temp的值清零 shi=0;//将十位清零 ge=0;//将个位清零 TR0=0;//关闭定时器 } } display(shi,ge);//调用显示子函数 }}voiddelay(uintz)//延时子函数{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddisplay(ucharshi,ucharge)//显示子程序{ P2=0xbf; P0=table[shi]; delay(10); P2=0x7f; P0=table[ge]; delay(10);//使用动态扫描的方法实现数码管显示}voidinit()//初始化子程序{ temp=0; TMOD=0x01;//使用定时器T0的方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256;//定时50ms中断一次 EA=1;//中断总允许 ET0=1;//允许定时器T0中断 }voidtimer0()interrupt1{ TH0=(65536-50000)/256;//重新赋初值 TL0=(65536-50000)%256; aa++;//中断一次变量aa的值加1if(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文件,单击"翻开〞按钮,完成添加文件。单击按钮,启动仿真,仿真运行片段如下图。按下"启动〞按钮后,秒表开场计时,如下图。按下"停

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论