久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1110|回復: 10
打印 上一主題 下一主題
收起左側(cè)

菜鳥小白還要請教串口屏的問題

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:477441 發(fā)表于 2024-11-9 17:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
CLS(0) 是串口屏的清屏命令,我用下面的程序串口屏啥反應都沒有,但我在串口助手可以看到連續(xù)發(fā)送的數(shù)據(jù)是正常的 CLS(0),我在示波器上看到數(shù)據(jù)的驅(qū)動電壓幅度在5V左右,應該是夠用的,(我沒有邏輯分析儀)

#include <reg52.h>

#define uchar unsigned char                                                 //定義unsigned char型數(shù)據(jù)簡寫
#define uint unsigned int                                                 //定義unsigned int型數(shù)據(jù)簡寫
#define ulong unsigned long       

void Uart1_init()        //57600bps@11.0592MHz,串口初始化
{
        PCON |= 0x80;                //使能波特率倍速位SMOD
        SCON = 0x50;                //8位數(shù)據(jù),可變波特率
        TMOD &= 0x0F;                //設(shè)置定時器模式
        TMOD |= 0x20;                //設(shè)置定時器模式
        TL1 = 0xFF;                        //設(shè)置定時初始值
        TH1 = 0xFF;                        //設(shè)置定時重載值
        ET1 = 0;                        //禁止定時器中斷
        TR1 = 1;                        //定時器1開始計時
}


void delayMS(uint ms)        //毫秒延時                            
{
    uchar i, j;
    while(ms--)
    {
        i = 11;
        j = 190;
        do
        {
            while (--j);
        } while (--i);
}


void SendByte(uchar dat)//向串口發(fā)送一個字節(jié)
{
    TI=0;
    SBUF=dat;
    while(!TI);
    TI=0;
}


void SendStr(uchar *s)//向串口發(fā)送字符串
{
    while(*s)     //通過檢測字符串末尾0x00停止發(fā)送
    {
        SendByte(*s++);
    }
        delayMS(5);
}


void main()
{
        Uart1_init();
        while (1)
        {
                SendStr("CLS(0);\r\n");
                delayMS(100);
        }
}       










       

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:477441 發(fā)表于 2024-11-9 17:08 | 只看該作者
串口屏的波特率也是57600,串口屏單獨接在電腦USB轉(zhuǎn)串口57600試過,在電腦發(fā)送 CLS(0) 時,串口屏是可以清屏的
回復

使用道具 舉報

板凳
ID:403593 發(fā)表于 2024-11-10 11:17 | 只看該作者
你打開一個串口屏的官方例程看看,應該是有起始碼和結(jié)束碼的,不會就這一句,這是我用的串口屏的上位機發(fā)送接收代碼,不一樣的產(chǎn)品相應的起始碼結(jié)束嗎也不一樣。
/*----------------------------
對接收到的數(shù)據(jù)進行處理

滑動返回:        71 4B 00 00 00 FF FF FF
page2返回:        65 02 04 01 FF FF FF
page3返回:        65 03 04 01 FF FF FF
----------------------------*/
void UART1_UnpackData()//數(shù)據(jù)解包
{
        if(comm_len)//收到數(shù)據(jù)
        {
                switch(comm_dat[0])//查看第一幀數(shù)據(jù)
                {
                        case 0x61://0x61表示數(shù)據(jù)是從上位機發(fā)來的               
                        Valve = comm_dat[1];//第2個字節(jié)為閥門開度
                        T_Set = comm_dat[2];//第3個字節(jié)為溫度設(shè)定
                        UART1ReceiveFlag=1;
                        break;
//                        case 0x65://0x65表示是觸摸熱區(qū)事件               
//                        //觸摸熱區(qū)事件返回
//                        //TouchEventReturn();
//                        break;
//                        case 0x70://0x70
//                        //字符串變量數(shù)據(jù)返回
//                        //StringValueReturn();
//                        break;
//                        case 0x71://
//                        //16進制類型變量數(shù)據(jù)返回
//                        NumberValueReturn();
//                        Valve = (u16)getnumval;//取得數(shù)值
////                        Signal=2;
//                        break;
                        //請再次處理其他事件返回
                        default: break;
                }
                comm_len = 0;
        }
}

void UART1_PackageData()//數(shù)據(jù)封包并發(fā)送
{
        u8 i;
        Tx_comm[0]=0x66;                //表明這是從STC上位機來的數(shù)據(jù)
        Tx_comm[1]=0xA5;                //在第二字節(jié)裝入溫度數(shù)據(jù)
        Tx_comm[2]=Position;           //在第三字節(jié)裝入閥門數(shù)據(jù)
        Tx_comm[3]=0x00;
        Tx_comm[4]=0x00;
        Tx_comm[5]=0xFF;                //停止位
        Tx_comm[6]=0xFF;
        Tx_comm[7]=0xFF;
                       
        for(i=0;i<8;i++)
        {
                UART1_SendData(Tx_comm[i]);//發(fā)送數(shù)據(jù)
        }
}

回復

使用道具 舉報

地板
ID:403593 發(fā)表于 2024-11-10 11:22 | 只看該作者
串口屏通訊是要起始碼和結(jié)束嗎的,不是單發(fā)一條命令就可以的,可以參考一下官方的例程。

這是我使用的部分串口通訊代碼,僅作為參考:

/*----------------------------
對接收到的數(shù)據(jù)進行處理

滑動返回:        71 4B 00 00 00 FF FF FF
page2返回:        65 02 04 01 FF FF FF
page3返回:        65 03 04 01 FF FF FF
----------------------------*/
void UART1_UnpackData()//數(shù)據(jù)解封
{
        if(comm_len)//收到數(shù)據(jù)
        {
                switch(comm_dat[0])//查看第一幀數(shù)據(jù)
                {
                        case 0x61://0x61表示數(shù)據(jù)是從上位機發(fā)來的               
                        Valve = comm_dat[1];//第2個字節(jié)為閥門開度
                        T_Set = comm_dat[2];//第3個字節(jié)為溫度設(shè)定
                        UART1ReceiveFlag=1;
                        break;
//                        case 0x65://0x65表示是觸摸熱區(qū)事件               
//                        //觸摸熱區(qū)事件返回
//                        //TouchEventReturn();
//                        break;
//                        case 0x70://0x70
//                        //字符串變量數(shù)據(jù)返回
//                        //StringValueReturn();
//                        break;
//                        case 0x71://
//                        //16進制類型變量數(shù)據(jù)返回
//                        NumberValueReturn();
//                        Valve = (u16)getnumval;//取得數(shù)值
////                        Signal=2;
//                        break;
                        //請再次處理其他事件返回
                        default: break;
                }
                comm_len = 0;
        }
}

void UART1_PackageData()//數(shù)據(jù)封包并發(fā)送
{
        u8 i;
        Tx_comm[0]=0x66;        //表明這是從STC上位機來的數(shù)據(jù)
        Tx_comm[1]=0xA5;        //在第二字節(jié)裝入溫度數(shù)據(jù)
        Tx_comm[2]=Position;           //在第三字節(jié)裝入閥門數(shù)據(jù)
        Tx_comm[3]=0x00;
        Tx_comm[4]=0x00;
        Tx_comm[5]=0xFF;                //停止位
        Tx_comm[6]=0xFF;
        Tx_comm[7]=0xFF;
                       
        for(i=0;i<8;i++)
        {
                UART1_SendData(Tx_comm[i]);//發(fā)送數(shù)據(jù)
        }
}


回復

使用道具 舉報

5#
ID:477441 發(fā)表于 2024-11-10 16:47 | 只看該作者
這一生只為你 發(fā)表于 2024-11-10 11:22
串口屏通訊是要起始碼和結(jié)束嗎的,不是單發(fā)一條命令就可以的,可以參考一下官方的例程。

這是我使用的部 ...

謝謝老師!!!
我試試看
回復

使用道具 舉報

6#
ID:1109793 發(fā)表于 2024-11-10 18:55 | 只看該作者
直接上MODBUS協(xié)議吧,通用
回復

使用道具 舉報

7#
ID:401564 發(fā)表于 2024-11-11 00:22 | 只看該作者
xiaobendan001 發(fā)表于 2024-11-10 18:55
直接上MODBUS協(xié)議吧,通用

串口并不全是用這個協(xié)議的,有的串口并有自己的協(xié)議
淘晶弛就是用它自己的協(xié)議通訊的
回復

使用道具 舉報

8#
ID:744809 發(fā)表于 2024-11-11 16:55 | 只看該作者
你這個是什么型號的單片機,12T的51單片機在11.0596MHz情況下,串口1好像只能配置成9600吧?
回復

使用道具 舉報

9#
ID:466505 發(fā)表于 2024-11-11 19:00 | 只看該作者
有沒有可能是發(fā)送完一個字節(jié)后延時5毫秒,導致發(fā)送字符串不是連續(xù)的,串口屏不認??
回復

使用道具 舉報

10#
ID:208271 發(fā)表于 2024-11-11 20:46 | 只看該作者
單片機與串口屏無法通信通常因為以下幾點,實際使用總結(jié)來的:
1.檢查下硬件,tx,rx,gnd是否可靠連接
2.通過波特率是否配對
3.電源電壓是否夠
4.通信格式是否完全按鍵串口屏說明來編寫
回復

使用道具 舉報

11#
ID:477441 發(fā)表于 2024-11-14 17:15 | 只看該作者
我的串口屏問題已解決
原因是串口屏的波特率默認115200,而我是用STC89C52RC的串口驅(qū)動,我用的是11.0592的晶振,其最高的波特率達不到115200,于是我降低波特率到9600使用
串口屏的波特率我也用上位機軟件改到9600,我斷電后再上電,又用上位機檢查了波特率,確實是9600
就一直認為串口屏的波特率已經(jīng)改成9600了,
今天用STC15W的波特率115200接串口屏試了一下,可以控制串口屏了,證明串口屏的波特率的確是115200
我又用上位機看了一下串口屏的波特率還是顯示9600,這說明雖然上位機顯示波特率已經(jīng)改9600成功,但實際上還是115200

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩av成人在线 | 国产成人av一区二区三区 | 亚洲91| 一级黄色片网址 | 中文字幕一区在线观看视频 | 午夜资源| 免费视频一区二区 | 欧美精品一 | 亚洲福利电影网 | 99精品欧美一区二区蜜桃免费 | 国产日产久久高清欧美一区 | 亚洲aⅴ| japanhd美女动 | 欧美一区久久 | 久久久久久久久久久久久9999 | 黄 色 毛片免费 | 午夜精品三区 | 天堂资源 | 国产日韩欧美一区二区 | 一级黄色片毛片 | 国产亚洲精品一区二区三区 | 成人免费看片又大又黄 | 久久久久久久电影 | 最新国产精品精品视频 | 激情久久av一区av二区av三区 | 亚洲人成人一区二区在线观看 | 久久69精品久久久久久久电影好 | 亚洲国产一区二区三区 | 亚洲+变态+欧美+另类+精品 | 国产精品久久久久久久久久久久 | 91免费在线视频 | 黄瓜av| 国产精品久久久久一区二区 | 亚洲综合激情 | 久久久青草婷婷精品综合日韩 | 一级片在线免费播放 | 国产一区二区三区在线免费观看 | 久久久久无码国产精品一区 | 一区二区中文 | 黑人巨大精品欧美一区二区免费 | 欧美寡妇偷汉性猛交 |