从单片机基础到程序框架(全集 2019pdf版).pdf - 第571页

第一百一十节: 按键控制跑马灯的速度。 【110.1 按键控制跑马灯的速度。 】 上图 11 0.1.1 独立按键 上图 11 0.1.2 LED 电路 上图 11 0.1.3 有源蜂鸣器 的电路 之前 10 9 节讲到跑马灯的启 动、 暂停、 停止 、 方向 , 本节在此基础上 , 把原 来的 “停止” 更 改为 “速度” , 加深理解输 入设备如何关 联应用程序的 程序框 架。 本节例程的 功能如下: (1) 【启动暂停】 按键 K…

100%1 / 836
}
break;
}
}
第一百一十节: 按键控制跑马灯的速度。
【110.1 按键控制跑马灯的速度。
上图 110.1.1 独立按键
上图 110.1.2 LED 电路
上图 110.1.3 有源蜂鸣器的电路
之前 109 节讲到跑马灯的启动、暂停、停止方向本节在此基础上把原来的“停止”改为“速度”
加深理解输入设备如何关联应用程序的程序框架。
本节例程的功能如下:
(1)【启动暂停】按键 K1。上电后,按下【启动暂停】按键 K1 启动之后,跑马灯处于“启动”状态,4
LED 灯挨个依次循环的变亮给人“跑”起来的感觉。此时如果再按一次【启动暂停】按键 K1则跑马灯
处于“暂停”状态,如果再按一次【启动暂停】按键 K1,跑马灯又变回“启动”状态。因此【启动暂停
按键 K1 是专门用来切换“启动”和“暂停”这两种状态。
(2)【速度】按键 K2。每按一次【速度】按键 K2,跑马灯就在“慢”“中”“快”三档速度之间切换。
(3)【方向】按键 K3。跑马灯上电后默认处于“往右跑”的方向。每按一次【方向】按键 K3,跑马灯
就在“往右跑”与“往左跑”两个方向之间切换
#include "REG52.H"
#define KEY_VOICE_TIME 50
#define KEY_FILTER_TIME 25
#define RUN_TIME_SLOW 500 //“慢”档速度的时间参数
#define RUN_TIME_MIDDLE 300 //“中”档速度的时间参数
#define RUN_TIME_FAST 100 //“快”档速度的时间参数
void T0_time();
void SystemInitial(void) ;
void Delay(unsigned long u32DelayTime) ;
void PeripheralInitial(void) ;
void BeepOpen(void);
void BeepClose(void);
void VoiceScan(void);
void KeyScan(void);
void KeyTask(void);
void RunTask(void); //跑马灯的任务函数
//4 个跑马灯的输出
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P3_3=P3^3;
//蜂鸣器的输出口
sbit P3_4=P3^4;
sbit KEY_INPUT1=P2^2; //【启动暂停】按键 K1 的输入口。
sbit KEY_INPUT2=P2^1; //【速度】按键 K2 的输入口。
sbit KEY_INPUT3=P2^0; //【方向】按键 K3 的输入口。
volatile unsigned char vGu8BeepTimerFlag=0;
volatile unsigned int vGu16BeepTimerCnt=0;