導航:首頁 > 操作系統 > 單片機傳輸數據

單片機傳輸數據

發布時間:2023-01-23 04:15:40

1. 單片機數據傳送

2. 單片機如何通過ps2向pc傳輸數據

第一,首先要知道PS/2介面跟PC是怎樣連的。PC里的ps/2一般接鍵盤或滑鼠。
PS/2的針腳
:
6*
u
*5
4*
*3
2*
*1
1
n/c
不連
2
DATA
KeyData-
3
VCC
Power,+5VDC
電源5伏
4
GND
GND
地線
5
n/c
不連
6
CLK
Clock-
時鍾線
接線黃、紅、白、綠對應的針腳如下
鍵盤
滑鼠


3


4


6


2
接下來,你要知道數據是怎樣經過ps/2介面傳輸到pc的?
數據是變成了2進制數後經過ps/2介面傳遞到PC的,常用串列方式傳遞數據。
所以單片機要用串列方式和ps/2通訊。即單片機的TXD做移位脈沖,接PS/2的6腳;RXD是數據線,接PS/2的2腳.
還不明白給hychyc_2008發消息。
ps2是11位。
PS/2幀的第一位是起始位,為0,然後是8位數據位,發送鍵盤掃描碼的一個位元組(掃描碼為1-4個位元組),然後是奇偶校驗位,最後是停止位,為1。這些是在數據線(即1號引腳線)上發送的。無鍵按下時,數據線和始終線都保持為1。當有鍵按下時,時鍾線CLOCK送出脈沖,同時數據線送出數據。主機(此處是89c51
MCU)在始終脈沖的下降沿對數據線采樣獲得數據。鍵盤掃描碼包括通碼和斷碼,當鍵按下時發送通碼,抬起時發送斷碼。更詳細的內容可參考所附的《PS/2
技術參考》。
根據上述原理,我這樣設計了實驗:將鍵盤的脈沖線接至89c51的外部中斷輸入口(INT0或INT1),當鍵按下和抬起時有脈沖產生,此脈沖引發MCU
中斷。將鍵盤的DATA線連至89c51的輸入口(如P1.0)。在中斷處理程序中,從輸入口讀入數據,然後通過循環移位對讀進的數據位進行處理,1(起始位)、10(奇偶校驗)、11(停止位)可拋棄,如不嫌麻煩也可將奇偶校驗位加以應用。當一個數據幀收完後,將處理後剩下的2-9位(即掃描碼)通過串口發至PC機,通過PC機的串口監視軟體(如「串口調試助手」)來查看。硬體連線和源碼如下:
源碼:
ORG
0000H
AJMP
MAIN;轉入主程序
ORG
0003H
;外部中斷P3.2腳INT0入口地址
AJMP
INT
;轉入外部中斷服務子程序
;以下為主程序進行CPU中斷方式設置
MAIN:MOV
SCON,#50H;設置成串口1方式
MOV
TMOD,#20H;波特率發生器T1工作在模式2上
MOV
PCON,#80H;波特率翻倍為2400x2=4800BPS
MOV
TH1,#0F3H;預置初值(按照波特率2400BPS預置初值)
MOV
TL1,#0F3H;預置初值(按照波特率2400BPS預置初值)
SETB
EA
;打開CPU總中斷請求
SETB
IT0
;設定INT0的觸發方式為脈沖負邊沿觸發
SETB
EX0
;打開INT0中斷請求
SJMP
$
INT:
CLR
EA
;暫時關閉CPU的所有中斷請求
CJNE
R0,#0,L1
L3:
INC
R0
SJMP
L5
L1:
CJNE
R0,#9,L2
SJMP
L3
L2:
CJNE
R0,#10,L4
SETB
TR1;啟動定時器T1
MOV
SBUF,A
MOV
R0,#0
L5:
SETB
EA
;允許中斷
RETI
;退出子程序
L4:
MOV
C,P1.0
RRC
A
SJMP
L3
END
搞定後,當按下和釋放鍵時,會在PC機上顯示其掃描碼。
忘了說明一點,通電時鍵盤會自檢,此時鍵盤上三個燈全亮,自檢完成後熄滅,並向主機發送十六進制字元AA.。
以上取自某網頁。

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

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

4. 單片機數據傳送類指令

數據傳送類指令: 1 MOV A,Rn 寄存器內容送入累加器 2 MOV A,direct 直接地址單元中的數據送入累加器 3 MOV A,@Ri 間接RAM 中的數據送入累加器 4 MOV A,#tata 立即數送入累加器 5 MOV Rn,A 累加器內容送入寄存器 6 MOV Rn,direct 直接地址單元中的數據送入寄存器 7 MOV Rn,#data 立即數送入寄存器 8 MOV direct,A 累加器內容送入直接地址單元 9 MOV direct,Rn 寄存器內容送入直接地址單元 10 MOV direct,direct 直接地址單元中的數據送入另一個直接地址單元 11 MOV direct,@Ri 間接RAM 中的數據送入直接地址單元 12 MOV direct,#data 立即數送.

5. 您好請問一下,兩個單片機互相傳數據的程序怎麼寫

兩個單片機互相傳數據,其實很簡單的 就是兩個單片機的串口通信,當然需要一個串口通信的協議,如指令碼、數據長度、數據等等,就是什麼指令需要怎麼操作、操作數據是什麼。如這是兩個單片機簡單通信操作的模擬實例可以作為參考。

#include <reg52.h> // 單片機1

#define uchar unsigned char

#include <stdio.h>

unsigned char* c;

sbit k0=P3^2;

sbit k1=P3^3;

sbit led1=P3^5;

uchar k;

bit y0,y1;

bit t,s;

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 = "az";

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

}

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

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

{

y1=1;

c = "as";

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

}

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

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

}

}

void chuankou(void) interrupt 4

{

if(RI==1)

{

RI = 0;

if(t==1)

{

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

s=1; t=0;

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

P1 =~table[k];

}

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

}

}

------------------

#include <reg51.h> // 單片機2

#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; // 開總中斷

// 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=='z') {led1=0;led2=1; 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;

}

}

6. 「MCS-51單片機I/O」數據傳送的控制方式是什麼

共有兩種控制方式:

1,無條件送方式

無條件傳送也稱為同步程序傳送.只有那些一直為數據I/O傳送作好准備的外部設備,才能使用無條件傳送方式.因為在進行I/O操作時,不需要測試外部設備的狀態,可以根據需要隨時進行數據傳送操作.

無條件傳送適用於以下兩類外部設備的數據輸入輸出:

(1)具有常駐的或變化緩慢的數據信號的外部設備.例如:機械開關,指示燈,發光二極體,數碼管等.可以認為它們隨時為輸入輸出數據處於"准備好"狀態。

(2) 工作速度非常快,足以和CPU同步工作的外部設備.例如數/模轉換器DAC,由於DAC是並行工和的,速度很快,因此CPU可以隨時向其傳送數據,進行數/模轉換。

2,程序查詢方式

查詢方式又稱之為有條件傳送方式,即數據的傳送是有條件的.在I/O操作之前,要先檢測外設的狀態,以了解外設是否已為數據輸入輸出作好了准備,只有在確認外設已"准備好"的情況下,CPU才能執行數據輸入輸出操作.通常把以程序方法對外設狀態的檢測稱之為"查詢",所以就把這種有條件的傳送方式稱之為程序查詢方式 。

為了實現查詢方式的數據輸入輸出傳送,需要介面電路提供外設狀態,並以軟體方法進行狀態測試.因此這是一種軟,硬體方法結合的數據傳送方式。

程序查詢方式,電路簡單,查詢軟體也不復雜,而且通用性強,因此適用於各種外部的設備的數據輸入輸出傳送.但是查詢過程對CPU來說畢竟是一個無用的開銷,因此查詢方式只能適用於單項作業,規模比較小的計算機系統。

7. 單片機的幾種傳輸方式的總結

學習了51單片機以及STM32後總結下單片機與外設或者上位機通訊的幾種傳輸方式

串口、COM口是指的物理介面形式(硬體)。而TTL、RS-232、RS-485是指的電平標准(電信號)

串列通信:指數據一位一位順序傳送

串列介面:簡稱串口(COM口)

並行通信:一組數據的各數據位在多線上同時被傳輸

並行介面:一種介面,各數據位同時被傳輸,傳輸速度快,效率高,一般用於MCU

串列通信分為:

    單工:數據單項傳送

    半雙工:數據能雙向傳送但不能同時

    全雙工:數據能同時雙向傳送

    通用的、及支持同步也支持非同步的接收、發送「模塊」,在晶元內部,與SPI、I2C一起構成單片機的匯流排「枝幹」,對於串口,串口通信指串口按位(bit)發送和接收位元組,盡管比按位元組(byte)的並行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。

串列通信技術標准EIA-232/485也就是以前所稱的RS-232/485。

232是PC機與通信工業中應用最廣泛的一種串列介面,RS232單端通信,傳輸距離可達15米,最高速率20Kbps。

RS485傳輸速率為10Mbps,最大傳輸距離1219米,,採用二線制時可實現真正的多點雙向通信,而采

用四線連接時只能實現點對多點通信,無論四線還是二線連接方式匯流排上可接多達 32 個設備。

串列通信傳輸速率用於說明傳輸的快慢。在串列通信中,數據是按位進

行傳送的,因此傳輸速率用每秒鍾傳送格式位的數目來表示,稱之波特率

(band rate)。每秒傳送一個格式位就是 1 波特。常用的波特率有:4800、

9600、19200、115200 波特。

串口三個腳:TX、RX、GND

IIC匯流排是一種兩線式串列匯流排,支持多主控,其中任何能夠進行發送和接收的設備都可以成為主匯流排,一個主控能夠控制信號的傳輸和時鍾頻率,當然在任何時間點上只能有一個主控。IIC匯流排是由數據線SDA和時鍾SCl構成的串列匯流排,可發送和接收數據,在CPU與被控IC之間,IC與IC之間進行雙向傳送,最高傳送速率100Kbps,各種被控制電路均並聯在這條匯流排上,每個設備模塊都有唯一的地址,IIC匯流排上的每一個設備模塊既是主控器或被控器,又是發送器或接收器,這取決於你要實現的功能是怎樣的。

CPU發出的控制信號分為地址碼和控制量兩部分

IIC匯流排傳輸過程中有三種信號:起始信號,終止信號,應答信號。

 起始信號:SCL 為高電平時,SDA 由高電平向低電平跳變,開始傳送數據;

 終止信號:SCL 為低電平時,SDA 由低電平向高電平跳變,結束傳送數據;

 應答信號:接收數據的 IC 在接收到 8bit 數據後,向發送數據的 IC 發出

特定的低電平脈沖,表示已收到數據。CPU 向受控單元發出一個信號後,

等待受控單元發出一個應答信號,CPU 接收到應答信號後,根據實際情

況作出是否繼續傳遞信號的判斷。若未收到應答信號,由判斷為受控單

元出現故障。

    SPI允許單片機和外圍設備或者單片機之間高速同步數據傳輸,SPI可以有主機和從機模式之選,通信的主從機之間通過移位寄存器同時交換數據。目前自己用的以主機模式居多。SPI需要四線:SS,MISO,MOSI,SCK。

   通信過程:在設置好SPI的工作模式:包括SCK頻率(數據傳輸速率),工作速度,主從模式,以及數據接收發送對應的時鍾極性。在主模式下,將SS拉低表示通信的開始,然後通過向SPI數據寄存器中寫入一位元組的數據後自動啟動時鍾SCK開始進行一次通信,通信完成後會產生相應的中斷標志,標志一個位元組數據的傳送完成。通信完成後將SS腳拉高,表示通信過程已經結束。

   注意SS引腳的設置:當設置為從機模式時,SS引腳應設置為輸入,拉低的時候SPI才能起作用,拉高的話是消極的SPI模式;在主機模式下,SS引腳可以設置,一般應設置為輸出,如果設置為輸入的話應保持為高,否則將不能進行正常的主機模式操作。

單片機通訊方式

8. 單片機與單片機之間如何進行串列通信

1、將兩個單片機的RXD與TXD相連x0dx0a2、根據需要傳輸的數據編寫傳輸協議x0dx0a3、編寫串列通信程序,將自己需要發送的數據按照協議進行發送x0dx0a4、編寫接收程序,按照協議進行接收x0dx0a5、將兩個程序分別寫入兩個單片機,運行。

9. 51單片機WR和RD是怎麼控制它來傳輸數據的

就是我把一個數據 放在P0口之後 WR和RD的時序是通過什麼寄存器來控制的,如:x0dx0avoid sj(unsigned uchar aa)x0dx0a{P0=aa;}x0dx0a這個就是我要傳輸的數據,只要調用這個函數就完了嗎,我感覺有問題啊 這個P0口的數據是怎麼送出去的(我知道是通過WR和RD的時序送出去的),問題是怎麼操作WR和RD來觸發一次時序呢?x0dx0a---------x0dx0aWR、RD,不是這樣用的。x0dx0ax0dx0a要想讓 WR 或 RD 發揮作用,必須使用《片外 RAM》。x0dx0a當你對《片外 RAM》進行讀、寫的時候,WR 和 RD 才會工作。x0dx0ax0dx0a讀寫片外 RAM 的匯編語言如下:x0dx0a讀片外 RAM:MOVX A, @DPTRx0dx0a寫片外 RAM:MOVX @DPTR, Ax0dx0ax0dx0a讀寫片外 RAM 的C 語言如下:x0dx0amem_w(0xb700, i);x0dx0ak = mem_r(0xbb00);x0dx0a事先要定義這兩個函數。x0dx0ax0dx0a單片機執行上述的讀、寫指令時:x0dx0aP0、P2 先輸出 16 位的地址,ALE 輸出正脈沖,令外接的 373 鎖存低八位地址後,x0dx0aRD 或 WR,就會輸出低電平,令《片外 RAM》輸出或接收數據。x0dx0ax0dx0a最後,數據,將從 P0 口輸入或輸出。x0dx0ax0dx0a另外,和 WR、RD,協同工作的,還有 ALE。x0dx0aP0、P2,前面已經說了,也是要用到的。x0dx0aP1,是用不上的。

10. 單片機怎樣通過串口向計算機發送數據

單片機怎樣通過串口向計算機發送數據:
單片機可以實現與計算機的發送和接收。首先,要正確配置單片機的串口,包括波特率、使用時鍾源、COM口、數據位位數、奇偶校驗位、停止位位數等,同時要保證計算機的配置和單片機的一致。然後,把要發送的數據送到發送緩存,只能一個位元組一個位元組的發送。啟動單片機發送,就可以完成發送操作。如果打開接收中斷,計算機發送數據過來的時候,就會進入到接收中斷,單片機進入接收數據狀態。
要注意的是,單片機是TTL電平,而計算機是232電平,所以在硬體電路連接上要有電平轉換晶元,常用的有MAX232等。

閱讀全文

與單片機傳輸數據相關的資料

熱點內容
安卓手機mp3壓縮工具 瀏覽:214
程序員和交易員 瀏覽:422
怎麼變字體樣式app 瀏覽:173
名字叫湯什麼的視頻app 瀏覽:207
金屬加密鍵盤聯系電話 瀏覽:335
自製解壓牛奶盒子教程 瀏覽:62
編譯高手的圖片 瀏覽:922
單片機數碼管顯示時分秒 瀏覽:780
手指解壓最簡單的方法 瀏覽:343
韓國郵箱伺服器地址 瀏覽:967
android版本介紹 瀏覽:410
pdf文件加密軟體 瀏覽:410
長沙住房app怎麼看備案 瀏覽:603
安裝加密軟體的電腦會被監控么 瀏覽:221
java微博源碼 瀏覽:569
堆排序簡單實現python 瀏覽:461
單片機引腳與鍵盤的關系 瀏覽:132
壓縮火柴盒製作 瀏覽:38
谷歌地圖android偏移 瀏覽:214
bitlocker硬碟加密空間 瀏覽:238