通过百度网盘分享的文件:资料详解
链接:https://pan.baidu.com/s/1CSkQG87FVexIaclbbPMfag?pwd=dfnv
提取码:dfnv
一 实训任务
利用Qt-Creator编程实现各个路口红绿灯及时间显示,设计一个交通灯控制系统,交通灯参考 示意图如图1所示。
二 实训要求
1、基本要求
(1)按照题目要求使用Qt编程,独立设计系统所需界面。实现交通灯计时显示、按钮控制交 通灯启动和停止。
(2)在十字交叉路口,东南西北各方向都设置红、黄、绿色信号灯,红灯亮表示禁止通行, 绿灯亮表示可以通行,红灯灭之前5秒钟黄灯开始闪烁直到绿灯亮起后黄灯熄灭。其中东西方向为主干道,南北方向为次干道,各个方向分别设置两位数码管,用来显示红灯和绿灯倒计时间,东西方向时间一致,南北方向时间一致。
(3)启动时主干道为60秒倒计时,次干道为40秒倒计时。
(4)单独设计人行道指示灯标志,当禁止行走时为红灯,当可以横穿马路时,绿灯亮起,在 禁止通行之前10秒钟绿灯开始闪烁(以警示行人),最终红灯亮起绿灯熄灭。
2、扩展部分
(1)设定紧急状况行车,如遇火警、医护急救等。
(2)通过按键可随意设定主干道与次干道时间。
(3)真实场景仿真展示等。
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLabel>
#include <QDebug>
#include <QPainter>
#include <QTimer>
#include <QTime>
#define STOP 1
#define RUN 2
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
protected:
void paintEvent(QPaintEvent *event);
public:
QTimer *myTimer;
int m_nMainIndex; //用来计数
int m_nSecondIndex;
//两组红绿灯时间参数(1:南北 2:东西)
int count_red1;
int count_green1;
int count_yellow1;
int count_red2;
int count_green2;
int count_yellow2;
int carup_state;//向北行驶小车状态
int carleft_state;//向西行驶小车状态
int m_nClickCnt;
bool m_bclick;
int m_nmainTime; //主干道时间
int m_nsecondTime; //次干道时间
public:
void SetLed(QLabel* label, int color, int size,int type =0);
void Init();
void LightTime();//红绿灯时间交替
private slots:
void on_btn_car_start_clicked();
void on_btn_change_clicked();
void on_btn_stop_clicked();
void on_btn_start_clicked();
void doProcessTimeOut1();//南北
void doProcessTimeOut2();//东西
void sleep(unsigned int msec);//延时函数,控制小车速度
void carup_run();//小车正常向北行驶
void carup_stop();//小车向北停止
void up_through();//遇到红绿灯情况
};