1、简易秒表制作1子情境内容:制作简易秒表,利用按键构成键盘实现秒表的启动、停止与复位,利用LED数码管显示时间。2 子情境目标:(1)通过简易秒表的制作,进一步熟悉LED数码管与单片机的接口电路(2)学习定时/计数器、中断技术的综合运用并会使用简易键盘3 知识点链接独立式按键的使用:图549为按键与单片机的连接图。机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来.其抖动过程如图550所示,抖动时间的长短与开关的机械特性有关,一般为510ms。在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这
2、种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。本子情境中采用软件去抖。图按键与单片机连接图 图按键被按下时电压的变化4 任务步骤41 步骤一:PROTEUS电路设计,简易秒表的原理图如图551所示。1、选取元器件单片机:AT89C51两位共阴极蓝色数码管:7SEGMPX2-CCBLUE排阻:RESPACK-8按钮:BUTTON2、放置元器件、放置电源和地、连线、元器件属性设置简易秒表的原理图如图551所示,整个电路设计操作都在ISIS平台中进行。与子情景3相似,故不详述.图简易秒表的原理图42 步骤二:源程序设计与目标代码文件生
3、成(1)程序流程图开始位,变量,数组,子程序声明主程序启动键是否按下?noyes按键防抖停止键是否按下?noyes复位键是否按下?noyes按键防抖按键防抖开定时器关定时器秒表清零是否到20次50ms?noyes秒表清零数码管显示是否到60秒?秒加1yesno图552 秒表流程图(2)源程序设计include0;y-);void display(uchar shi,uchar ge) /显示子程序P2=0xbf;P0=tableshi;delay(10);P2=0x7f;P0=tablege;delay(10); /使用动态扫描的方法实现数码管显示void init() /初始化子程序temp
4、=0;TMOD=0x01; /使用定时器T0的方式1TH0=(6553650000)/256;TL0=(65536-50000)256; /定时50ms中断一次EA=1; /中断总允许ET0=1; /允许定时器T0中断void timer0() interrupt 1TH0=(6553650000)/256;/重新赋初值TL0=(6553650000)%256;aa+; /中断一次变量aa的值加1if(aa=20) /中断20次后,定时时间为2050ms=1000ms=1s,将变量temp的值加1aa=0;temp+;if(temp=60) /秒表到达60s后回零temp=0;shi=temp
5、%100/10;ge=temp%10; /分离个位和十位43 步骤三:PROTEUS仿真加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program File一栏中单击打开按钮,出现文件浏览对话框,找到miaobiao.hex文件,单击“打开”按钮,完成添加文件。单击按钮,启动仿真,仿真运行片段如图所示。按下“启动”按钮后,秒表开始计时,如图所示.按下“停止”按钮,秒表停止计时。按下“复位”按钮,秒表回到最初始的状态,如图所示。图按下“启动”按钮后秒表开始计时图按下“复位”按钮后,秒表回到最初始的状态5 扩展练习此子情境设计的秒表只能显示两位整数,如果要记录110跨栏12:88秒的成绩,则必须再增加两位数码管来显示小数位。想想硬件和软件应该做如何改动。