導航:首頁 > 操作系統 > 單片機與超級終端

單片機與超級終端

發布時間:2023-06-02 09:40:02

A. 單片機虛擬終端輸入與顯示不匹配

virtual terminal 默認顯示字元,如果單片機發送的是非顯示字元,則虛擬終端不會顯示,會導致用戶認為通訊未通。運行程序,在虛擬終端窗口裡面點擊右鍵,在彈出菜單裡面:選HEX DISPLAY MODE,則顯示按十六進制顯示,能顯示所有字元。2.virtual terminal 默認情況下不顯示回顯字元,運行程序,在虛擬終端窗口裡面點擊右鍵,在彈出菜單裡面:選Echo Typed Characters 顯示回顯字元3.virtual terminal 和模擬物理串口COMPIM不能同時使用,同時使用會發生相互影響。

二、Proteus 虛擬終端顯示不正確,16進制沒有顯示出0x90,0x30,0x64

void main()部分,在while循環中不斷調用下面的兩行代碼。send(0x90,0x30,0x64);send(0x80,0x30,0x40);void send(uchar cc,uchar kk,uchar vv){TR1=1; SBUF=cc;while(TI==0);TI=0;SBUF=kk;while(TI==0);TI=0;SBUF=vv;while(TI==0);TI=0;TR1=0; //發送函數}晶振和51單片機都是11.0592,MHZ的。到底哪出錯?send函數是串口依次發送出0x90,0x30,0x64

三、怎麼用proteus里的虛擬終端給單片機發送字元,在窗口裡打字元沒有反應啊

proteus模擬虛擬終端時,要注意虛擬終端與單片機RXD,TXD要交叉連接,單片機的晶振頻率改為11.0592M。測試時,可以在P1口放兩個BCD數碼管顯示接收的數據。

四、單片機proteus虛擬終端里只能顯示符號?

proteus里的虛擬終端與電腦上的超級終端是一樣的,只能顯示ASCII字元,用單片機發送時,不能發送十六進制數,十六進制數小於20H是不顯示的,從20H開始才能顯示的,例如發送0x30~0x39,就是顯示0~9這十個數字。要顯示字母,要發送字元或字元串,例如,發單個字母,SBUF= A 才能顯示字母A。如果是發一串字元串,應該先聲明一個字元串再發送,例如,unsigned char str[ ]= HELLO 2020yea! 然後就可以發字元串了,才能顯示出這個字元串。追問

但是顯示出

B. 利用串口實現單片機與PC超級終端通信

標准串口參考程序如下:(來源周立功單片機公司)具有一般參考意義。
#include<reg51.h>
unsigned char UART_RX; //定義串口接收數據變數
unsigned char RX_flag; //定義穿行接收標記
/*********************************************************************************************
函數名:UART串口初始化函數
調 用:UART_init();
參 數:無
返回值:無
結 果:啟動UART串口接收中斷,允許串口接收,啟動T/C1產生波特率(佔用)
備 註:振盪晶體為12MHz,PC串口端設置 [ 4800,8,無,1,無 ]
/**********************************************************************************************/
void UART_init (void){
EA = 1; //允許總中斷(如不使用中斷,可用//屏蔽)
ES = 1; //允許UART串口的中斷

TMOD = 0x20; //定時器T/C1工作方式2
SCON = 0x50; //串口工作方式1,允許串口接收(SCON = 0x40 時禁止串口接收)
TH1 = 0xF3; //定時器初值高8位設置
TL1 = 0xF3; //定時器初值低8位設置
PCON = 0x80; //波特率倍頻(屏蔽本句波特率為2400)
TR1 = 1; //定時器啟動
}
/**********************************************************************************************/

/*********************************************************************************************
函數名:UART串口接收中斷處理函數
調 用:[SBUF收到數據後中斷處理]
參 數:無
返回值:無
結 果:UART串口接收到數據時產生中斷,用戶對數據進行處理(並發送回去)
備 註:過長的處理程序會影響後面數據的接收
/**********************************************************************************************/
void UART_R (void) interrupt 4 using 1{ //切換寄存器組到1
RI = 0; //令接收中斷標志位為0(軟體清零)
UART_RX = SBUF; //將接收到的數據送入變數 UART_data
RX_flag=1; //標記接收
//用戶函數內容(用戶可使用UART_data做數據處理)

//SBUF = UART_data; //將接收的數據發送回去(刪除//即生效)
//while(TI == 0); //檢查發送中斷標志位
//TI = 0; //令發送中斷標志位為0(軟體清零)
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:UART串口發送函數
調 用:UART_T (?);
參 數:需要UART串口發送的數據(8位/1位元組)
返回值:無
結 果:將參數中的數據發送給UART串口,確認發送完成後退出,採用非中斷方式
備 註:
/**********************************************************************************************/
void UART_T (unsigned char UART_data){ //定義串口發送數據變數
ES=0; //禁止穿行中斷
SBUF = UART_data; //將接收的數據發送回去
while(TI == 0); //檢查發送中斷標志位
TI = 0; //令發送中斷標志位為0(軟體清零)
ES=1; //打開穿行中斷
}
/*********************************************************************************************
函數名:UART串口發送字元串函數
調 用:UART_S (?);
參 數:需要UART串口發送的數據(8位/1位元組)
返回值:無
結 果:將參數中的數據發送給UART串口,確認發送完成後退出,採用非中斷方式
備 註:
/**********************************************************************************************/
void UART_S(unsigned char *str)
{
while(1)
{
if(*str=='\0') break;
UART_T(*str++);
}
}
/*********************************************************************************************
函數名:主函數
調 用:main();
參 數:
返回值:無
結 果:
備 註:
/**********************************************************************************************/
void main()
{
unsigned char Buf_data[]={" welcome to MCU world. \n\r"};
UART_init();
UART_S(Buf_data);
while(1){
if(RX_flag==1)
{
UART_T(UART_RX);
RX_flag=0;
}
}
}
///////////////////////////////////////////////////////////////////
個人認為普通單片機在通信頻率上及不上AVR單片機,更可能使用USB轉串口工具進行開發,所以串口波特率不能過高,最好是2400或4800。過高只會導致亂碼或丟失。而樓主的中斷服務程序也不正確,設計缺乏經驗,所以需要繼續努力。

C. 51單片機怎麼串口發送漢字給超級終端

51單片機,先後發送兩個位元組,即可發出一個漢字。

超級終端,收到後,自然,就能顯示出來對應的漢字。

D. 如何使用widows自帶的超級終端

在調試MCU系統時,我們常用widows自帶的超級終端來做為顯示。
通過點擊開始→程序→附件→通訊中的超級終端,我們可以打開一個新的 終端。然後設置好名稱,選擇好埠(如COM1),波特率(即每秒位數), 數據位(通常選擇8位),奇偶校驗(一般選擇無),停止位,數據流控制(
一般選擇無),然後就可以開始使用超級終端了。用鍵盤直接在超級終端輸入
字元,就會通過串口發送出去,在沒有設置回顯時,輸入的是看不到的。 將串口的2腳(即數據接收端)跟3腳(即數據發送端)連接在一起,再敲 鍵盤,就會發現按下的鍵顯示在上面了,這樣可以用來檢測串口是否工作正 常。將單片機的串口通過232電平轉換後連接到PC的串口上,就可以通過 超級終端來顯示信息和發送命令了。
超級終端是windows自帶的一個串口調試工具,其使用較為簡單,被廣泛使用在串口設備的初級調試上。
下面介紹一下一般使用的步驟:
配置連接需要調試串口基本參數,其操作為: 1) 選擇菜單「文件」下「屬性」菜單項。

2) 配置調試設備所連接串口「連接時使用」

wk_ad_begin({pid : 21});wk_ad_after(21, function(){$('.ad-hidden').hide();}, function(){$('.ad-hidden').show();});

3) 按「配置」按鈕進行配置選定串口信息

4) 依次選定每秒位數(波特率)等參數,一般情況下MODEM設置波特率後即可,其它位取默認設置。

5) 確定退出配置
6) 按工具條上「呼叫」按鈕連接所調試設備

7) 輸入英文字母AT然後回車,此時如果設置正確,則會返回英文字母OK

) 如果參數設置不正確,則提示無法連接,或者連接後無法輸入AT字母,此時,請確認步驟2)中串口選擇正確、請確認波特率設置正確。
9) 大部分GPRS MODEM出廠的時候其波特率已經設置為115200,但是也可能部分設置為9600或者其它。在MODEM支持的范圍內,越高的波特率代表了越高的計算機傳輸數據到MODEM的能力。 常用的幾個AT命令 1) AT
測試指令,返回OK表示串口設備正常 2) AT+CGMM

顯示MODEM型號 3) AT+CGMR
顯示MODEM軟體版本號 4) AT+CGMI 顯示MODEM生產廠家
5) AT+IPR=?/AT+IPR?/ AT+IPR=115200
前者查詢MODEM支持的所有波特率,後者顯示當前設定波特率,最後一條是設置MODEM波特率為115200。

E. 從超級終端和串口調試助手發送相同的信息到單片機,但超級終端和串口調試助手返回的信息卻不一樣

這兩個軟體原理不一樣,單片機應該和超級終端比較匹配吧!
超級終端的原理
超級終端的原理是將用戶輸入隨時發向串口(採用TCP協議時是發往網口,這里只說串口的情況),但並不顯示輸入。它顯示的是從串口接收到的字元。所以,嵌入式系統的相應程序應該完成的任務便是:
1、將自己的啟動信息、過程信息主動發到運行有超級終端的主機;
2、將接收到的字元返回到主機,同時發送需要顯示的字元(如命令的響應等)到主機。

串口調試助手的原理
一個很好而小巧的串口調試助手,支持常用的300-115200bps波特率,能設置校驗、數據位和停止位,能以ASCII碼或十六進制接收或發送任何數據或字元(包括中文),可以任意設定自動發送周期,並能將接收數據保存成文本文件,能發送任意大小的文本文件。
當然了,還有其它版本的相同功能的工具,也都叫 串口調試助手例如:

超級終端一般用於ASCII收發,並你按一個鍵該字元立刻發送,同時不會顯示回車鍵;串口調試助手在你寫完命令後還應加一個回車字元,而鍵盤上沒有回車字元,這樣你就必須有二進制方式。

閱讀全文

與單片機與超級終端相關的資料

熱點內容
安卓i怎麼查找蘋果手機 瀏覽:947
雲伺服器宕機概率 瀏覽:227
在線買葯用什麼app知乎 瀏覽:810
ubuntu解壓xz文件 瀏覽:674
宏傑加密時電腦關機 瀏覽:388
自己寫單片機編譯器 瀏覽:598
單片機按鍵閃爍 瀏覽:380
為什麼icloud總是顯連接伺服器失敗 瀏覽:888
如何設置域控伺服器 瀏覽:738
想在上海租房子什麼app好 瀏覽:184
編譯程序各部分是必不可少的嗎 瀏覽:885
編程不超過十行 瀏覽:763
數電編譯器的作用 瀏覽:337
時間演算法與現在有什麼區別 瀏覽:164
7zip解壓後沒文件夾 瀏覽:904
為什麼安卓送玫瑰ios收不到 瀏覽:10
美篇文章加密是什麼意思 瀏覽:84
ilasm編譯dll 瀏覽:40
呼吸燈單片機程序 瀏覽:954
linux域socket 瀏覽:250