51单片机与PC通信要注意的地方

发布者:polkmm最新更新时间:2016-05-18 来源: eefocus关键字:51单片机  PC通信 手机看文章 扫描二维码
随时随地手机看文章
做了两天终于把232通信做通了,写下总结。

第一、波特率要设置相同。

第二、要在PC机上的设备管理器里把USB转232串口设置为COM2,并且波特率要设置的和软件里写的一样。

如下是写的测试程序,精简了通信部分。

51单片机上的通信程序

#include
#define uchar unsigned char
#define uint unsigned int
uchar code cgf1[10] = {"CHINA"};
uchar code cgf2[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

main()
{
uchar i,j;
TMOD = 0x20;
TH1 = 0x0e6;TL1 = 0x0e6;
TR1 = 1;
SCON = 0x50;
P1 = 0x3f;
lcd_reset();
while(1)
{
RI = 0;
while(!RI);
i = SBUF;
i = i&0x0f;
lcd_display(0,0,15,13);
delay(3000);
//P1 = cgf2[i];
RI = 0;
for(j = 0;j<200;j++);
TI = 0;
SBUF =cgf1[i];
while(!TI);
TI = 0;
}
}

 

PC机上通信程序(用Turboc2.0编译就行)

#include
#include
#include
#include
#include

void port(void)
{
outportb(0x2fb,0x80);
outportb(0x2f8,0x60);
outportb(0x2f9,0);
outportb(0x2fb,0x03);
}

void send(unsigned char s)
{
unsigned char x;
outportb(0x2f8,s);
begin:
x = inportb(0x2fd);
x = x&0x20;
if(x == 0)goto begin;
}

unsigned char data()
{
unsigned char a;
bgin:
a = inportb(0x2fd);
a = a&0x01;
if(a != 1)goto bgin;
else
{
a = inportb(0x2f8);
return(a);
}
}

void main(void)
{
int i;
unsigned char c,b;
b = '';
system("cls");
port();
puts("PC USE COM1 1200b/s,press A to exit");
puts("89c51 fosc = 12MHz");
puts("input(0-9)");
while(1)
{
c = getchar();
if(c == 97)
exit(0);
else
{if(c >= 0x30 && c <= 0x39)
{
send(c);
b = data();
puts("STC89c51 send ");
printf(" %c\n",b);
for(i = 0;i<2000;i++);
}
}
}
}

 

补充:如果用vc些outportb、inputb可以用_inp、_outp。可以阅览msdn

关键字:51单片机  PC通信 引用地址:51单片机与PC通信要注意的地方

上一篇:单片机RS485串口通信
下一篇:pc机与89C51单片机的串口通信编程

推荐阅读最新更新时间:2024-03-16 14:54

51单片机实现对24C02进行页写、顺序读取并显示验证
//************************************************************************************* //**程序名称:51单片机实现对24C02进行页写、顺序读取并显示验证 //**编写人:**** //**修改人:**** //**程序目的:熟悉I2C总线协议,实现51模拟I2C时序和24C02通信 //**功能描述:51单片机将8个字节数据写入24C02的一页中,然后顺序读出,每隔1秒送P0口LED显示 //**其他说明:本程序是采用某51开发板,若在其他地方验证可更改相关端口及延时程序等。 //** 程序编写前曾参考过多个教程,最终自己编程通过,并详
[单片机]
51单片机控制蜂鸣器播放5首歌曲汇编程序
;机器人代码:(外部中断用来接红外传感器的) ORG 0000H JMP INIT ORG 0003H JMP INT_0 ORG 000BH JMP INT_T ORG 0023H JMP INT_S ;------------------------------------- FLAG_F EQU 01H ;功能选择,0为播放,1为演奏 FLAG_L EQU 02H ;指示灯选择,0指示灯亮或1亮 FLAG_P EQU 03H ;是否播放标志,0停止,1播放 FLAG_CH EQU 04H ;演奏时是否换音符,1有效 FLAG_LAST EQU 05H ;播放时是
[单片机]
MCS-51单片机中断处理过程
中断响应: 1.响应条件 CPU响应中断的条件有: ①有中断源发出中断请求; ②中断总允许位EA=1,即CPU开中断; ③申请中断的中断源的中断允许位为1; 满足以上条件,CPU响应中断;如果中断受阻,CPU不会响应中断。 2.响应过程 单片机一旦响应中断,首先置位响应的优先级触发器,然后执行一个硬件子程序调用,把断点地址压入堆栈保护,然后将对应的中断入口地址装入程序计数器PC,使程序转向该中断入口地址,以执行中断服务程序。 中断处理:CPU响应中断结束后即转至中断服务程序的入口。从中断服务程序的第一条指令开始到返回指令为止,这个过程称为中断处理或称中断服务。中断处理包括两部分内容:一是保护现场,
[单片机]
实验二:排序、加法(80C51单片机汇编语言编程)
有两个长度为10H的数,分别放到30H和40H为首地址的存储器中(低字节),求其对应之和,放在50H为首地址的存储器中(处理进位位),然后按升序排列,放在70H为首地址的存储器中 汇编程序: ORG 0000H;设置初始位置 START:MOV R0,#30H MOV R1,#50H MOV R3,#10H CF:MOV A,@R0;将30H的数放在50H MOV @R1,A INC R0 INC R1 DJNZ R3,CF MOV R0,#50H MOV R1,#40H MOV R3,#10H CLR C JIA:MOV A,@R0;将两个数求和
[单片机]
串行A/D转换器ADS1110及其在AT89C51单片机中的应用
  1 引言   AT89C51单片机系统经常使用A/D转换器。虽然并行A/D转换器速度高、转换通道多,但其价格高,占用单片机接口资源比串行A/D转换器多。工业检测控制及智能化仪器仪表中经常采用串行A/D转换器。ADS1110是一种精密、可连续自校准的串行A/D转换器,带有差分输入和高达16位的分辨率,其串行接口为I2C总线。AT89C51单片机通过软件模拟I2C总线实现与ADS1110的连接。   2 ADS1110的特点与内部结构   2.1 ADS1110的特点   完整的数据采集系统和小型SOT23-6封装;片内基准电压:精度2.048 V+0.05%;片内可编程增益放大器PGA;片内振荡器;16位分辨率;可编
[单片机]
串行A/D转换器ADS1110及其在AT89C<font color='red'>51单片机</font>中的应用
c51单片机编程要点总结
c51单片机编程要点总结 1、头文件:#include (我用的是 STC 89C54RD+) 2、预定义:sbit LED = P1^0// 定义 P1 口的 0 位为 LED 注:“P1^0”这个写法,与 A51 不同(A51 是 P1.0),P1 是一组端口,端口号范围 0~7 注2:sbit 用于定义 SFR(特殊功能寄存器)的位变量,上例中 LED 作为“全局变量”进行定义 注3:以下写法是错误的: sbit code table = {P1^0, P1^1, P1^2, P1^3};// 想用 table 指定不同的引脚,但这么做会报错 sbit table = {P1^0, P1^1, P1^2, P1^3}
[单片机]
51单片机 超声波测距组件
/** * 超声波测距组件 * 文件名:ultrasonic.h */ #ifndef _ULTRASONIC_H #define _ULTRASONIC_H #define somenop(); { _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); } sbit TX = P1^0; //发射引脚 sbit RX = P1^1; //接收引脚 void tmr1_specialInit(); uint8_t ult_getDis(); #endif // _ULTRASONI
[单片机]
用PComm开发PC机与单片机的通信程序
摘要:介绍了分布式控制系统中上位PC机与下位单片机异步串行通信的通信协议;同时介绍了在VC++6.0环境下用PComm编写的PC机通信程序来实现上位机和下位机异步串行通信的方法,给出了PComm编程实例和下位机程序模块流程图。 关键词:分布式控制系统;异步;串行通信;PComm 在由一台PC机(上位机)和多台单片机(下位机)构成的分布式控制系统中,单片机主要负责实时数据采集,并将初步处理后的数据通过串行口传送给PC机以便由PC机串行口的命令对单片机进行控制,同时通过打印机或显示器向用户随时提供各种统计报表和整个控制过程的具体数据。在这样的分布式控制系统中,单片机与微机之间的多路通信是整个系统的关键,本文将介绍在提高通信的准
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved