导航:首页 > 操作系统 > 单片机传输数据

单片机传输数据

发布时间: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等。

阅读全文

与单片机传输数据相关的资料

热点内容
程序员阿里文化完整版 浏览:98
早间新闻在哪个app上面可以看 浏览:954
工作啦app注册的信息怎么删去 浏览:378
滚动转子式制冷压缩机 浏览:873
美国编程用什么软件 浏览:571
图片加密防盗用 浏览:616
dbscan算法python源码 浏览:849
固态硬盘文件夹删不掉 浏览:717
阳泉工会app怎么培训报名 浏览:669
编程图形二级题 浏览:549
怎样知道自己的app存在哪个文件夹 浏览:853
电子手帐app怎么下载 浏览:810
app播客是怎么赚钱的 浏览:380
东南亚服务器是什么档次 浏览:132
手机app怎么操控电热水器 浏览:839
python爬虫框架推荐 浏览:518
matlab遗传算法适应度函数 浏览:130
制作linux系统镜像 浏览:155
域名解析服务器ip地址不能正常 浏览:845
程序员十万个为什么 浏览:535