简易秒表制作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<>#define uint unsigned int#define uchar unsigned charsbit 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); ...