单片机实验串口通信实验

Posted osea

tags:

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

实验三:串口通信实验

 

内容:

(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

 

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

隔壁老王看了都会的文章:STM32串口实验——单片机与上位机交互信息

Arduino和C51之串口通信

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

STC学习:串口通信

16 . USART 串口通信实验

16 . USART 串口通信实验