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

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

ID:39482012

大小:101.01 KB

页数:9页

时间:2019-07-04

单片机实验——秒表  (详细步骤)_第1页
单片机实验——秒表  (详细步骤)_第2页
单片机实验——秒表  (详细步骤)_第3页
单片机实验——秒表  (详细步骤)_第4页
单片机实验——秒表  (详细步骤)_第5页
资源描述:

《单片机实验——秒表 (详细步骤)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、简易秒表制作1子情境内容:制作简易秒表,利用按键构成键盘实现秒表的启动、停止与复位,利用LED数码管显示时间。2子情境目标:(1)通过简易秒表的制作,进一步熟悉LED数码管与单片机的接口电路(2)学习定时/计数器、中断技术的综合运用并会使用简易键盘3知识点链接独立式按键的使用:图5-49为按键与单片机的连接图。机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图5-50所示,抖动时间的长短与开关的机械特性有关,一般为5~10ms。在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为

2、是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。本子情境中采用软件去抖。图按键与单片机连接图图按键被按下时电压的变化4任务步骤4.1步骤一:PROTEUS电路设计,简易秒表的原理图如图5-51所示。1、选取元器件①单片机:AT89C51②两位共阴极蓝色数码管:7SEG-MPX2-CC-BLUE③排阻:RESPACK-8④按钮:BUTTON2、放置元器件、放置电源和地、连线、元器件属性设置简易秒表的原理图如图5-51所示,整个电路设计操作都在ISIS平台中进行。与子情景3相似,故不详述。图简易秒表的原理图4

3、.2步骤二:源程序设计与目标代码文件生成(1)程序流程图开始位,变量,数组,子程序声明主程序启动键是否按下?noyes按键防抖停止键是否按下?noyes复位键是否按下?noyes按键防抖按键防抖开定时器关定时器秒表清零是否到20次50ms`?noyes秒表清零数码管显示是否到60秒`?秒加1yesno图5-52秒表流程图(2)源程序设计#include#defineuintunsignedint#defineucharunsignedcharsbitkey1=P3^0;//定义"启动"按钮sbitkey2=P3^1;//定义"停止"按钮sbitkey3=P3^2;

4、//定义"复位"按钮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(1

5、0);//延时去抖动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)//再次检测"复位"按钮是

6、否按下{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);//使用动态扫描的方法实现数码管

7、显示}voidinit()//初始化子程序{temp=0;TMOD=0x01;//使用定时器T0的方式1TH0=(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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。