導航:首頁 > 操作系統 > 單片機怎麼接受電腦數據

單片機怎麼接受電腦數據

發布時間:2022-06-10 21:48:05

單片機的數據怎樣傳進,怎樣傳出

數據體現在單片機IO口上,不過就是兩種電平而已。
單片機輸出
高低電平
,這就是數據。
單片機也可以接受外來的電平信號,讓程序去讀這個IO的電平狀態,然後把獲得的數據進行處理,就是傳進數據了。

❷ 51單片機怎麼接收電腦發送的16位數據

51單片機是8位的,一次只能接一個位元組,你這16位的,要分兩次的。

電腦串口也是按兩次來發送,也就是把這個16位的拆成兩個位元組,所以每個位元組發送都是遵循串口協議的,你在單片機裡面開串口接收中斷即可。

你可能會疑問,要是第一個位元組中斷了,進入中斷函數接第一個位元組後,那第二個位元組會不會錯過,來不及接收?

這個不會的,上面說了,第二個位元組也是按串口標准發的,也就是起始位,數據位,(校驗位),結束位。

電腦在發一個位元組後,又會接著發第二個位元組。可是,要知道串口的波特率是很低的,遠遠比單片機的處理速度低。當你接了第一個位元組,將此位元組做一些處理,比如存起來時,電腦可能都還沒開始發第二個位元組呢,因為電腦發數據的速率是以K為單位的,而單片機處理速度是以M為單位的。

因此,不用擔心第二個位元組會丟失。

❸ 計算機怎麼接收數據計算機怎麼接收單片機發送的數據

使用單片機的串口功能與電腦通信,方法是;
准備一個pl2303串口模塊(某寶上有很多且不貴)。
再准備一個電腦的串口工具軟體(網上有很多免費下載)
將單片機的RXD接模塊的TXD,單片機的TXD接模塊的RXD,再將模塊插入電腦就可以進行單片機與電腦直接的收發操作了。
但是你必須學會單片機的串口收發編程,通過程序可以將信息發給電腦,也可以收電腦的數據。這個有點復雜要努力哦。

❹ 單片機的數據怎麼傳給電腦,除了串口助手,另外存放在電腦的哪裡,電腦上有軟體要調用

1、通過max232串口。將單片機的數據通過RXD和TXD與PC進行通信;
2、其實你也可以通過下載線和串口助手(或者自己寫上位機界面),上傳數據;
3、買一根USB轉串口線,接到電腦USB介面上,上傳數據也可以;
4、可能還有其他方式。

❺ 單片機與電腦相連需要怎麼連接

最方便的是COM(串口),Print(並口)也是可以的。USB我是不會用,一般是將USB轉成COM口,但要通信,你要學會VC或是其他程序軟體,這樣才可以寫上位機軟體。

❻ 單片機與PC怎麼 通信

我就我所知道的給你說說。
單片機的邏輯0是0V,邏輯1是+5V;而PC用的是負邏輯,邏輯0在+9v~+15v之間,邏輯1在-9v~-15v之間。若用九針串口連接的話,先得電平轉換,(轉換晶元就是大家熟知的RS232,轉3.3v 的話用RS3232).之後最重要做麻煩的就是要把時序和波特率設置好(說白了就是遵循相同的協議),這樣單片機和PC之間就可以互聯互通了,單片機中的串口通信講的就是這方面的內容,這些資料網上很豐富,或者買個單片機開發板研究研究。

❼ 51單片機接受數據怎麼接受的

串口通信如常式

#include <reg52.h>

#define uchar unsigned char

#include <stdio.h>

unsigned char* c;

sbit k0=P3^2;

sbit k1=P3^3;

sbit k2=P3^4;

sbit k3=P3^5;

sbit k4=P3^7;

sbit led1=P1^7;

uchar k;

bit y0,y1,y2,y3,y4,y5;

bit t,s,ld;

uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d};

void SendOneChar(char c) //發送位元組到PC

{

TI=0;

SBUF = c;

while(!TI);

TI=0;

}

void SendString(char *st) //發送字元串到PC

{

while(*st)

{

SendOneChar(*st++);

}

}

void main()

{

SCON = 0x50; //SCON: mode 1, 8-bit UART, enable rcvr

TMOD = 0x20; //TMOD: timer 1, mode 2, 8-bit reload

PCON = 0x80; // 數據位8、停止位1。效驗位無 (11.0592M)

TH1 = 0xF4; //TH1: reload value for [email protected]

TR1 = 1; //啟動定時器1

ES = 1; //允許串口中斷位

EA = 1; //允許總中斷位

c=0;

s=1;

k=0;

P1 =~table[k];

while(1)

{

if(k0==0 && y0==0)

{

y0=1;

c = "as";

SendString(c); //發送字元串

}

if(k0==1 ) { y0=0; }

if(k1==0 && y1==0)

{

y1=1;

c = "bs";

SendString(c); //發送字元串

}

if(k1==1 ) { y1=0; }

if(k2==0 && y2==0)

{

y2=1;

c = "ds";

SendString(c); //發送字元串

}

if(k2==1 ) { y2=0; }

if(k3==0 && y3==0)

{

y3=1;

c = "es";

SendString(c); //發送字元串

}

if(k3==1 ) { y3=0; }

if(k4==0 && y4==0)

{

y4=1;

c = "fs";

SendString(c); //發送字元串

}

if(k4==1 ) { y4=0; }

// for(i = 0; i < 4000; i++); //延遲一小段時間

}

}

void chuankou(void) interrupt 4

{

if(RI==1)

{

RI = 0;

if(t==1)

{

if(SBUF=='z') { k++;ld=~ld; }

s=1; t=0;

if(k==10) { k=0;}

P1 =~table[k];

led1=ld;

}

if(SBUF=='a' && s==1) { t=1;s=0;}

}

}

/////////////

#include <reg51.h> // 接收 試試

#define uchar unsigned char

unsigned char* c;

sbit led1=P3^2; // 接收 az , P.2 輸出低電平, P3.3 輸出高電平。

sbit led2=P3^3; // 接收 aa , P.2 輸出高電平, P3.3 輸出低電平。

sbit k0=P3^5;

bit y0,t,s;

uchar k;

uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d};

void SendOneChar(char c) //發送位元組到PC

{

TI=0;

SBUF = c;

while(!TI);

TI=0;

}

void SendString(char *st) //發送字元串到PC

{

while(*st)

{

SendOneChar(*st++);

}

}

void main (void)

{

SCON = 0x50; // REN=1允許串列接受狀態,串口工作模式1

TMOD = 0x21; // 定時器工作方式2

PCON = 0x80; // 數據位8、停止位1。效驗位無 (11.0592M)

TH1 = 0xF4; // TH1 = 0xFD; 波特率 2400

TH0=(65536-54253)/256; // 50 mS

TL0=(65536-54253)%256;

TR1 = 1;

ES = 1; // 開串口中斷

EA = 1; // 開總中斷

led1=1;led2=0;

// ET0=1;

// TR0=1;

s=1;

k=0;

P1 =~table[k];

while(1)

{

if(k0==0 && y0==0)

{

y0=1;

c = "az";

SendString(c); //發送字元串

}

if(k0==1 ) { y0=0; }

}

}

void chuankou(void) interrupt 4

{

if(RI==1)

{

RI = 0;

if(t==1)

{

if(SBUF=='s') {led1=~led1;led2=~led2; k++; }

//if(SBUF=='s') {led1=1;led2=0; k--; }

s=1; t=0;

if(k==10) { k=0;}

if(k==255) { k=9; }

P1 =~table[k];

}

if(SBUF=='a' && s==1) { t=1;s=0;}

}

}

void T0_time()interrupt 1

{

TH0=(65536-54253)/256; // 50 mS

TL0=(65536-54253)%256;

k++;

if(k==10) // 這里修改時間

{

k=0;

led1=1;

led2=1;

}

}

❽ 求計算機高人指點,單片機如何能接收數據什麼是TXD

1.首先從單片機信號說,單片機的信號不是1就是0。通信時通過通信協議來實現的,像51本身就有TXD和RXD ,也就是串口通信協議。關於協議的方面可以寫一大推,但是總的來說單片機就是在通信根據通信協議的處理時檢測收到的電平高低,比如串口協議,一個位元組的接收和發送 較常用協議規定為 一個起始位 8個數據位 一個奇偶校驗位 一個停止位 起始位為0 停止位為 1 校驗位是為了檢測你接收到的數據位是否正確的 也就是發送時將數據拆分為 8個位元組的二進制 ,一位一位的發送(高低電平)。接收時檢測接收線的電平,將接收到的高低電平組合還原,那一個位元組就接收到了。51單片機串口引腳,所以。高低電平的發送細節不需要我們去定。我們只要允許串口通信 ,然後給串口通信緩存寄存器你要傳的位元組就可以。多位元組轉送就要定幀協議了。另外還有IIC SPI CAN iis 等很多通信匯流排,分別有不同的協議(協議就是通信規則)。 2 TXD就是串口通信里的信號發送埠 跟RXD是一對的3.通訊速率是看你配置的通信波特率,但是串口通信有速率上限的,具體記不太清了,翻翻書就能知道

❾ 單片機從PC端接受字元

PC端發送數據的時候,每次發送一個字元串即可。

單片機就可以接收到這個字元串。

和 都是字元串裡面的特殊字元。發與不發看應用場合。

通過串列通信模塊的初始化,完成雙方字元幀格式的統一、波特率的一致。最後就是對SBUF和RI標志的判讀,協議的解析了。

(9)單片機怎麼接受電腦數據擴展閱讀:

字元是可使用多種不同字元方案或代碼頁來表示的抽象實體。例如,UnicodeUTF-16編碼將字元表示為 16 位整數序列,而 UnicodeUTF-8編碼則將相同的字元表示為 8 位位元組序列。微軟的公共語言運行庫使用 Unicode UTF-16(Unicode 轉換格式,16 位編碼形式)表示字元。

❿ 如何將單片機上的數據傳輸到電腦上

1.
通過max232串口。將單片機的數據通過rxd和txd與pc進行通信;
2.
其實你也可以通過下載線和串口助手(或者自己寫上位機界面),上傳數據;
3.
買一根usb轉串口線,接到電腦usb介面上,上傳數據也可以;
4.
可能還有其他方式。。。

閱讀全文

與單片機怎麼接受電腦數據相關的資料

熱點內容
手機程序加密有什麼作用 瀏覽:178
求黑馬程序員python教程 瀏覽:528
androidmvvm優缺點 瀏覽:894
unix下編譯庫文件 瀏覽:633
程序員的u盤 瀏覽:237
android根據經緯度獲取城市 瀏覽:564
python使用解釋器還是編譯器 瀏覽:358
以下關於有加密演算法及密鑰描述 瀏覽:220
linuxgethostname 瀏覽:416
程序員多數有對象 瀏覽:131
單片機延時程序計算 瀏覽:444
編譯原理語法翻譯 瀏覽:504
pr編譯出錯渲染存在偏移 瀏覽:262
如何製作自家的app 瀏覽:199
推薦一個解壓軟體rar解壓幫手 瀏覽:212
wd文檔加密器 瀏覽:748
伺服器上傳壓縮包一般是什麼格式 瀏覽:333
發送加密文件密碼幾位數 瀏覽:160
樹洞app怎麼樣 瀏覽:175
vivo編譯時間可以改么 瀏覽:150