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

上图 12 4.1.4 LED 电路 本节小项目 ,意在“人机 界面”与“ 过程控 制”如何关联的 练习。 程序功能如 下: (1)数码 管显示的格 式是“S.D.CC” 。其中 S 是代表 3 档速 度,能显示的数字范围 是“1、 2、3 ” ,分别 代表“慢、 中、快”3 档速 度。D 代表方向, 往右跑 显示符号 “r” (ri ght 的首字母 ) ,往 左跑显示符 号“L” (Left 的首字母 ) 。 CC 代表计数 器,跑…

100%1 / 836
第一百二十四节: 数显仪表盘显示“速度、方向、计数器”的跑马灯。
【124.1 数显仪表盘显示“速度、方向、计数器”的跑马灯。
上图 124.1.1 数码管
上图 124.1.2 独立按键
上图 124.1.3 有源蜂鸣器
上图 124.1.4 LED 电路
本节小项目,意在“人机界面”与“过程控制”如何关联的练习。
程序功能如下:
(1)数码管显示的格式是“S.D.CC”。其中 S 是代表 3 档速度,能显示的数字范围是“1、2、3,分别
代表“慢、中、快”3 档速度。D 代表方向,往右跑显示符号“r”(right 的首字母,往左跑显示符号“L”
(Left 的首字母CC 代表计数器,跑马灯每跑完一次,计数器自动 1,范围是 0 99。
(2)【速度】按键 K1。每按一次【速度】按键 K1,速度档位显示的数字在“1、2、3”之间切换。
(3)【方向按键 K2。跑马灯上电后默认处于“往右跑”的方向,默认显示字“r”每按一次【方向】
按键 K2,跑马灯就在“往右跑”与“往左跑”两个方向之间切换,显示的字符在“r、L”之间切换。
(4)【启动暂停】按键 K3。上电后,按下【启动暂停】按键 K3 启动之后,跑马灯处于“启动”状态,4
LED 灯挨个依次循环的变亮给人“跑”起来的感觉,此时再按一次【启动暂停】按键 K3,则跑马灯处于
“暂停”状态,接着又按一次【启动暂停】按键 K3,跑马灯又变回“启动”状态。因此【启动暂停】按键
K3 是专门用来切换“启动”和“暂停”这两种状态
代码如下:
#include "REG52.H"
#define KEY_FILTER_TIME 25
#define SCAN_TIME 1
#define VOICE_TIME 50
#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 KeyScan(void);
void KeyTask(void);
void RunTask(void); //跑马灯的任务函数
void VoiceScan(void);
void DisplayScan(void);
void DisplayTask(void);
void Wd1(void); //窗口 1。
void BeepOpen(void);
void BeepClose(void);
sbit KEY_INPUT1=P2^2;
sbit KEY_INPUT2=P2^1;
sbit KEY_INPUT3=P2^0;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P3_4=P3^4;
//4 个跑马灯的输出
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P3_3=P3^3;
//数码管转换
code unsigned char Cu8DigTable[]=
{
0x3f, //0 序号 0
0x06, //1 序号 1
0x5b, //2 序号 2
0x4f, //3 序号 3
0x66, //4 序号 4
0x6d, //5 序号 5
0x7d, //6 序号 6
0x07, //7 序号 7
0x7f, //8 序号 8