单片机串口通信过程中电脑死机

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机串口通信过程中电脑死机相关的知识,希望对你有一定的参考价值。

我用面包板搭建的单片机,按照杜洋单片机视频教学一样的啊。可是每次在自动发送时电脑会死机黑屏重启。还有时候下载程序的过程中电脑自动重启。 我觉得电路,程序没有问题啊,很简单的程序和电路。COM口,连线都OK 其他实验都正常,就是串口不好 不知道这个和系统有没有关系win764位的 或者是其他什么原因???

可能的原因:
1.你的USB转串口线质量不好,或是驱动不良,或是此设备在win7 64位机上工作不正常。

2.如果你使用的是PL-2303HX系列的USB转串口线,那么在电脑打开串口后,拔掉USB线,一定会死机,再插上USB线也无济于事。只能关机重启。正确的做法是只能关闭串口后,在拔出USB线

3.如果你的面包板从USB取电的话,建议不要超过450mA电流,否则会引起电脑死机重启

如果你是STC系列的单片机,推荐使用FT232,CH340系列的USB转串口线会稳定很多。其他芯片的USB转串口线用在STC单片机上,毛病多多
参考技术A 可能的原因:
1.USB转串口线质量不好,或是驱动不良,或是此设备在win7 64位机上工作不正常。
2.如果使用的是PL-2303HX系列的USB转串口线,那么在电脑打开串口后,拔掉USB线,一定会死机,再插上USB线也无济于事。只能关机重启。正确的做法是只能关闭串口后,在拔出USB线。
3.如果面包板从USB取电的话,建议不要超过450mA电流,否则会引起电脑死机重启
4.如果是STC系列的单片机,推荐使用FT232,CH340系列的USB转串口线会稳定很多。其他芯片的USB转串口线用在STC单片机上。
参考技术B

看看设备耗不耗电,用360重装系统试试,线是否有问题,驱动否有问题

来自:求助得到的回答
参考技术B 1.你的USB转串口线质量不好,或是驱动不良,或是此设备在win7 64位机上工作不正常。

2.如果你使用的是PL-2303HX系列的USB转串口线,那么在电脑打开串口后,拔掉USB线,一定会死机,再插上USB线也无济于事。只能关机重启。正确的做法是只能关闭串口后,在拔出USB线

3.如果你的面包板从USB取电的话,建议不要超过450mA电流,否则会引起电脑死机重启
参考技术C 计算机这边用的什么软件接收串口数据?有些系统或软件会把串口数据当成键盘或鼠标数据。
另找一台电脑试试,这种情况一般是电脑这边的原因。追问

由于单片机不是51而是STC12C32S2。这个单片机下载不是很稳定,总是失败,下到最后一点时就卡主,然后电脑黑屏死机,后来我百度到把最高和最低波特率都调到一样的而且用2400时可以下载成功了,可是下载是成功了后STC_ISP就卡住了好的时候就自动退出程序不好的时候就直接电脑重启。

追答

有没有另找一台电脑试试?或者换一个ISP及开发板试试。

单片机实验串口通信实验

实验三:串口通信实验

 

内容:

(1)利用电脑串口与实验台串口进行连接;

(2)根据帧格式定义、波特率定义,编程配置串口,并编写控制程序;

(3)实现从电脑上输入控制字符,由单片机通过串口接收,并控制LED显示的功能;

(4)对所编程序进行调试及验证。

 

要求:

(1)掌握波特率的概念、学会编程设置波特率和工作方式;

(2)掌握串口通信的编程控制方法;

(3)理解解MAX232串口通信的硬件电路结构。 注意实验三,需要同学们自己编写程序,实现从电脑串口助手(利用单片机下载软件提供的串口调试助手),发送一个字符给单片机,单片机通过中断方式接收,或通过查询方式接收后,把该字符的值送到8个LED显示 你的任务:编写主程序,串口初始化(要启动定时器),编写中断接收程序,和查询接收程序,接收到数据后,还要回送电脑显示,并驱动LED,当接收到的数据是88H时,驱动一个8个LED轮流点亮,当接收到的数据是99H时,停止8LED流水亮。当接收到的数据是11H时,LED全亮。当介绍到的数据是FFH时,全灭。 编程实现,明天实验课直接去调试。一定要提前编写程序,实验课只是去验证你的程序是否正确。

技术图片
 1 #include <reg51.h>
 2 #include <intrins.h>
 3 unsigned char NewData,led,Count; 
 4 bit NewFlag ;
 5 void main( void )
 6     TMOD = 0x21 ; 
 7     TH0 = ( 65536 - 10000 ) / 256 ;
 8     TL0 = ( 65536 - 10000 ) % 256 ;
 9     Count = 0 ;
10     led = 0xFE ; 
11     TH1 = 0xFD ; 
12     TL1 = 0xFD ; 
13     TR1 = TR0 = 1 ;
14     SCON = 0x50 ;
15     ES = EA = ET0 = 1 ;
16     NewFlag = 0 ; 
17     while ( 1 )
18         if( NewFlag )
19             if( NewData == 0x88 )
20                 ET0 = 1 ;
21             
22             if( NewData == 0x99 )
23                 ET0 = 0;
24             
25             TI = 0 ;
26             SBUF = NewData ;
27             while ( TI == 0 );
28             NewFlag = 0 ;
29         
30     
31 
32 void set0 ( void ) interrupt 4 
33     if( TI ) TI = 0 ;
34     if( RI ) 
35         RI = 0 ;
36         NewData = SBUF ; 
37         NewFlag = 1 ;
38     
39 
40 void T0_INT () interrupt 1 
41     TH0 = ( 65536 - 10000 ) / 256 ; 
42     TL0 = ( 65536 - 10000 ) % 256 ;
43     Count ++  ;
44     if( Count >= 50 )
45         Count = 0 ;
46         led = _crol_(led , 1 );
47         P1 = led ; 
48         if( NewData == 0x11 ) P1 = 0 ;
49         if( NewData == 0xFF ) P1 = 0xFF ;
50     
51 
View Code

 

以上是关于单片机串口通信过程中电脑死机的主要内容,如果未能解决你的问题,请参考以下文章

51单片机做串口通信接收缓存区没反应

借助虚拟串口驱动软件模拟Proteus中51单片机与PC端串口调试助手软件相互通信

单片机与DWIN屏串口通信时,单片机能与电脑通信,屏能与电脑通信,而单片机与屏不能通信。不能通信是为什么

谁能把单片机串口通信SFR介绍下?

求用keilc编写一串口通信程序

5V单片机与3.3V单片机串口通信问题