日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

簡介:上位機通過RS232串口發(fā)送消息給下位機,下位機收到消息并做出2個動作:


(1)LED燈變化。


(2)將消息通過RS232串口返回給上位機;


上位機收到消息后將內(nèi)容顯示在UI界面上。


windows7 64位環(huán)境完整源碼及源程序打包下載:   https://download.csdn.net/download/robin_xx/10791050


主要代碼粘貼如下:


PIC單片機下位機源程序:


#include

__CONFIG(HS&WDTDIS&LVPDIS);

unsigned char i=0;

//void interrupt ISR(void);

void interrupt usart(void);

void Init(void); //初始化

unsigned char* sendData="";

 

const unsigned char led10[]=//8個led流水燈碼表

    {

        0B00000000,

        0B00000001,

        0B00000010,

        0B00000100,

        0B00001000,

        0B00010000,

        0B00100000,

        0B01000000,

        0B10000000,

        0B11111111

    };

void main(void)

{

 

    Init();

    while(1)

    {

        if (i==10)

            i=0;

        PORTB=led10[i];

    }

}

 

 

/*void interrupt ISR(void)//

{

    if(INTF==1)//按鍵中斷

    {

        INTF=0;//清中斷標(biāo)志位

        i+=1;//每次產(chǎn)生中斷時流水燈從頭開始點亮

    }

}*/

 

void interrupt usart(void)

{

    if(RCIE&&RCIF) //判斷是否為串口接收中斷

    {

        i+=1;

        while(!TRMT);//等待接受完畢

        sendData=RCREG; 

        //i=sendData;

    }

    if(sendData!="")

    {    

        RCIE=0;//發(fā)送前關(guān)閉接受中斷使能位

        TXREG = sendData; //把接收到的數(shù)據(jù)發(fā)送回去

        while(!TXIF);//等待發(fā)送完成

        RCIE = 1;//發(fā)送完成開啟接收中斷使能位

        sendData="";

    }

}

 

void Init(void)

{

    TRISB=0B00000000;//控制8個LED,輸出口

    PORTB=0B00000000;//

 

    //初始化端口程序

    TRISC7 = 1; //RX端口設(shè)為輸入有效

    TRISC6 = 0; //TX端口設(shè)為輸出有效

 

    //SPBRG = 0X19;   //設(shè)置波特率為9600BPS

    SPBRG = 0XC;    //設(shè)置波特率為19200BPS

 

    //TXSTA = 0x04;   //異步通訊-禁止發(fā)送數(shù)據(jù)-高速模式

    TXSTA = 0X24;  //使能串口發(fā)送,選擇高速波特率

 

    //RCSTA = 0xA0;   //串口使能-接收單字符-禁止連續(xù)接受

    RCSTA = 0X90; //使能串口工作,連續(xù)接收

 

    RCIE=0X1; //使能接收中斷

    GIE=0X1; //開放全局中斷

    PEIE=0X1; //使能外部中斷

}

QT上位機源程序:


mainwindow.h


#ifndef MAINWINDOW_H

#define MAINWINDOW_H

 

#include

#include

#include

 

namespace Ui {

class MainWindow;

}

 

class MainWindow : public QMainWindow

{

    Q_OBJECT

 

public:

    QSerialPort *serial;

    explicit MainWindow(QWidget *parent = 0);

    ~MainWindow();

 

 

private slots:

 

    void on_pushButton_send_clicked();

 

    void on_pushButton_openPort_clicked();

 

    void read_Com();

 

    void on_pushButton_ClearRec_clicked();

 

 

private:

    Ui::MainWindow *ui;

};

 

#endif // MAINWINDOW_H

 


mainwindow.cpp

 


#include "mainwindow.h"

#include "ui_mainwindow.h"

 

MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MainWindow)

{

    ui->setupUi(this);

 

    foreach (const QSerialPortInfo &info,QSerialPortInfo::availablePorts())

    {

        QSerialPort serial;

        serial.setPort(info);

        //判斷串口能否打開

        if(serial.open(QIODevice::ReadWrite))

        {

            QString portStr = info.portName();

            ui->comboBox_portList->addItem(portStr);

            serial.close();

        }

     }

 

    ui->comboBox_portList->setCurrentIndex(0);

    ui->comboBox_BPS->addItem("7200");

    ui->comboBox_BPS->addItem("9600");

    ui->comboBox_BPS->addItem("14400");

    ui->comboBox_BPS->addItem("19200");

    ui->comboBox_BPS->addItem("38400");

    ui->comboBox_BPS->addItem("57600");

 

    ui->comboBox_BPS->setCurrentIndex(3);

 

    on_pushButton_openPort_clicked();

    on_pushButton_openPort_clicked();

 

}

 

MainWindow::~MainWindow()

{

    delete ui;

}

 

 

//讀取接收到的信息

 void MainWindow::read_Com()

 {

     QByteArray temp=serial->readAll();

     if(!temp.isEmpty())//如果讀到的數(shù)據(jù)不為空

     {

         ui->textBrowser_RecList->insertPlainText(temp);

     }

 }

 

 

//發(fā)送按鈕槽函數(shù)

void MainWindow::on_pushButton_send_clicked()

{

    QString str=ui->lineEdit_sendText->text();//從LineEdit得到字符串

    if(str!="")

    {

        ui->textBrowser_RecList->insertPlainText("n");

        serial->write(str.toLatin1());//以ASCII碼形式將數(shù)據(jù)寫入串口

        //ui->lineEdit_sendText->clear();

    }

}

 

void MainWindow::on_pushButton_openPort_clicked()

{

    if(ui->comboBox_portList->isEnabled())

     {

        ui->pushButton_openPort->setText("ClosePort"); //按下“OpenPort”后,按鍵顯示為“ClosePort”

        ui->comboBox_portList->setDisabled(true); //按下“OpenPort”后,禁止再修改COM口

 

        serial = new QSerialPort;

        //設(shè)置串口名

        serial->setPortName(ui->comboBox_portList->currentText());

 

        ui->textBrowser_RecList->insertPlainText("nNowPort:"+ui->comboBox_portList->currentText());

        //自動尋找可用串口的方法

 

        //先關(guān)串口,再打開,可以保證串口不被其它函數(shù)占用。

        //serial->close();

 

        //打開串口

        serial->open(QIODevice::ReadWrite);

 

        //設(shè)置波特率

        serial->setBaudRate(ui->comboBox_BPS->currentText().toInt());

        ui->comboBox_BPS->setDisabled(true);

 

         //設(shè)置數(shù)據(jù)位數(shù) (8)

         serial->setDataBits(QSerialPort::Data8);

 

        //設(shè)置校驗位(如0)

         serial->setParity(QSerialPort::NoParity);

 

        //設(shè)置停止位(如1)

         serial->setStopBits(QSerialPort::OneStop);

 

        //設(shè)置流控制(無)

         serial->setFlowControl(QSerialPort::NoFlowControl);

 

         //把串口的readyRead()信號綁定到read_Com()這個槽函數(shù)上

         connect(serial,SIGNAL(readyRead()),this,SLOT(read_Com()));

    }

    else

    {

        ui->pushButton_openPort->setText("OpenPort"); //按下“ClosePort”后,按鍵顯示為“OpenPort”

        ui->comboBox_portList->setEnabled(true);      //按下“ClosePort”后,COM口可被修改

        ui->comboBox_BPS->setEnabled(true);

        serial->close(); //關(guān)串口

    }

}

 

 

void MainWindow::on_pushButton_ClearRec_clicked()

{

    ui->textBrowser_RecList->clear();

}

main.cpp


#include "mainwindow.h"

#include

 

int main(int argc, char *argv[])

{

    QApplication a(argc, argv);

    MainWindow w;

    w.show();

 

    return a.exec();

}

UI界面:

windows7 64位環(huán)境完整源碼及源程序打包下載:   https://download.csdn.net/download/robin_xx/10791050

關(guān)鍵字:RS232串口  PIC單片機  下位機  QT  上位機通信 引用地址:基于RS232串口實現(xiàn)PIC單片機下位機與QT上位機通信

上一篇:PIC單片機入門筆記(新手學(xué)PIC必看)——基于PIC16F886
下一篇:PIC單片機的指針

推薦閱讀

目前的機器人已經(jīng)能夠勝任精確、重復(fù)性的工作,但很多時候,它還不能夠靈活地為新任務(wù)進行自我調(diào)整,也不能應(yīng)付一個不熟悉的或不確定的情景。不過,這些情況都在發(fā)生改變,機器人正在變得更加智能。我們不禁要問,讓機器人實現(xiàn)智能的關(guān)鍵技術(shù)到底是什么?這些技術(shù)在最近十年會發(fā)展到什么程度?整個產(chǎn)業(yè)的應(yīng)用前景將會如何?隨著家用機器人的應(yīng)用需求不斷增...
微型機器人是典型的微機電系統(tǒng)。它的體形很小,和蜻蜓或蒼蠅一樣大,有的甚至更小,小到我們看不見它們。世界各國已經(jīng)在微型機器人的研究方面取得了不少成果。 瑞士和英國的研究人員在美國雜志上發(fā)表報告說,他們開發(fā)出一款柔性微型機器人。這款機器人長度約1毫米,借助其他技術(shù),它還可以變得更小。 研究人員說,他們受到自然界中一些微生物隨環(huán)境變...
一、項目概述1.1 引言隨著社會的發(fā)展,盲人對獨立生活和事業(yè)追求越來越強烈,但是要保證在車水馬龍的城市生活中安全自如的活動就需要一個專門的導(dǎo)盲設(shè)備來進行輔助。因此我們就要設(shè)計一款多功能的導(dǎo)盲車來完成這份重任。1.2 項目背景/選題動機在實際生活中,我們遇到過一些獨立生活的盲人,他們在出行方面面臨著很大的問題,比如說他們在按盲道走的過程...
我想要TIM定時器輸出的PWM波形:0.1%精度占空比, 頻率范圍:200Hz - 10KHz。請問能實現(xiàn)嗎? Ⅰ寫在前面如果有朋友下載了上一篇文章我提供的例程,在“bsp_timer.h”文件下,你就會發(fā)現(xiàn)有如下一段被我注釋了的【說明性文字】。這個工程是我從之前項目中提取出來(復(fù)制部分代碼),從新整理的一個的工程。里面的這個被注釋了的描述文字是之前整理的,今天...

史海拾趣

小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved