嵌入式系统开发与应用--交通灯系统

该博客介绍了一个使用Qt-Creator编程实现的交通灯控制系统,包括十字路口的红绿灯计时显示、按钮控制启动和停止。系统要求考虑主次干道的不同时间设置,以及人行道指示灯的闪烁警告功能。扩展部分涉及紧急状况处理和时间自定义。提供的代码片段展示了类定义和部分函数实现。
摘要由CSDN通过智能技术生成

  任务

利用Qt-Creator编程实现各个路口红绿灯及时间显示,设计一个交通灯控制系统,交通灯参考

示意图如图1所示。

图1 交通灯示意图

  要求

1、基本要求

(1)按照题目要求使用Qt编程,独立设计系统所需界面。实现交通灯计时显示、按钮控制交

通灯启动和停止。

(2)在十字交叉路口,东南西北各方向都设置红、黄、绿色信号灯,红灯亮表示禁止通行,

绿灯亮表示可以通行,红灯灭之前5秒钟黄灯开始闪烁直到绿灯亮起后黄灯熄灭。其中东西方向为主干道,南北方向为次干道,各个方向分别设置两位数码管,用来显示红灯和绿灯倒计时间,东西方向时间一致,南北方向时间一致。

(3)启动时主干道为60秒倒计时,次干道为40秒倒计时。

(4)单独设计人行道指示灯标志,当禁止行走时为红灯,当可以横穿马路时,绿灯亮起,在

禁止通行之前10秒钟绿灯开始闪烁(以警示行人),最终红灯亮起绿灯熄灭。

2、扩展部分

(1)设定紧急状况行车,如遇火警、医护急救等。

(2)通过按键可随意设定主干道与次干道时间。

(3)真实场景仿真展示等。

  题目原理

       倒计时设计的系统框图如图2所示。

图2 交通灯系统框图

说明:可以改变方案,只要满足要求即可。

部分程序:

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();//遇到红绿灯情况

};

#endif // MAINWINDOW_H

实现界面:

  需要全部资料可从资源里下载。

资料内容:

 也可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。

纷传点击用微信打开即可,过程有点繁琐请见谅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白茶丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值