单片机实验报告
报告人: 许海奔
班级: 通信121
学号: 201200402015
实验4 串口通信
实验目的:
1、掌握异步串行通信工作原理;
2、 熟悉工作方式选择和波特率设置。
实验要求:
1、设置单片机串口工作在方式1,采用定时器1工作在方式2作为波特率发生器,实现速度为9600的传输;
2、实现可由单片机发送自身学号至计算机,由串口助手实现上位机接收。
提交材料:
实验报告包括(原理图,源代码及注释,实验心得)
1.实验原理:
用protues仿真出。如图1
图(1)
实验效果:图2
图(2)
2.源代码及注释:
(1)串口接收数据代码
******************************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar buf;
sbit beep=P2^3;
void main(void)
{
SCON=0x50; //设定串口工作方式
PCON=0x00; //波特率不倍增
TMOD=0x20; //定时器1工作于8位自动重载模式, 用于产生波特率
EA=1;
ES = 1; //允许串口中断
TL1=0xfd;
TH1=0xfd; //波特率9600
TR1=1;
while(1);
}
/*********************************************************
串行中断服务函数
*********************************************************/
void serial() interrupt 4
{
ES = 0; //关闭串行中断
RI = 0; //清除串行接受标志位
buf = SBUF; //从串口缓冲区取得数据
switch(buf)
{
case 0x31: P1=0xfe;beep=1;break; //接受到1,第一个LED亮
case 0x32: P1=0xfd;beep=1;break; //接受到2,第二个LED亮
case 0x33: P1=0xfb;beep=1;break; //接受到3,第三个LED亮
case 0x34: P1=0xf7;beep=1;break; //接受到4,第四个LED亮
case 0x35: P1=0xef;beep=1;break; //接受到5,第五个LED亮
case 0x36: P1=0xdf;beep=1;break; //接受到5,第六个LED亮
case 0x37: P1=0xbf;beep=1;break; //接受到5,第七个LED亮
case 0x38: P1=0x7f;beep=1;break; //接受到5,第八个LED亮
default: beep=0;P1=0xff;break; //接受到其它数据,蜂鸣器响
}
ES = 1; //允许串口中断
}
(2)串口发送一串字符代码:
******************************************************************/
#include <reg52.h>
#define jingzhen 11059200UL /*使用22.1184M晶体*/
#define botelv 9600UL /*波特率定义为9600*/
unsigned char zifuchuan[]="20026541"; //待显示字符。
volatile unsigned char sending;
//sbit s2=P3^4;
void delay(unsigned char i)
{
unsigned char j,k;
for(j=i;j>0;j--)
for(k=90;k>0;k--);
}
void init(void) //串口初始化
{
EA=0; //暂时关闭中断
TMOD&=0x0F; //定时器1模式控制在高4位
TMOD|=0x20; //定时器1工作在模式2,自动重装模式
SCON=0x50; //串口工作在模式1
TH1=256-jingzhen/(botelv*12*16); //计算定时器重装值
TL1=256-jingzhen/(botelv*12*16);
PCON|=0x80; //串口波特率加倍
ES=1; //串行中断允许
TR1=1; //启动定时器1
REN=1; //允许接收
EA=1; //允许中断
}
void send(unsigned char d) //发送一个字节的数据,形参d即为待发送数据。
{
SBUF=d; //将数据写入到串口缓冲
sending=1; //设置发送标志
while(sending); //等待发送完毕
}
void sendc(unsigned char * pd)
{
while((*pd)!='\0') //发送字符串,直到遇到0才结束
{
send(*pd); //发送一个字符
pd++; //移动到下一个字符
}
}
void main()
{
init();
while(1)
{
sendc(zifuchuan);
}
}
void uart(void) interrupt 4 //串口发送中断
{
if(RI) //收到数据
{
RI=0; //清中断请求
}
else //发送完一字节数据
{
TI=0;
sending=0; //清正在发送标志
}
}
3.实验心得:
通过本次实验,更加熟练地掌握了Keil C51软件与proteus软件使用。掌握了矩阵键盘工作原理及数码管显示原理。并懂得了用矩阵键盘设计一些简单的实物,如篮球计分器等。
实验四 串口通信实验
一.实验目的:
1.掌握ARM的串行口工作原理。
2.学习并编程实现AR,的UART通信。
3.掌握S3C2410X寄存器配置方法。
二、实验设备:
PC机一台 ADT IDE集成开发环境 JXARM9-2410教学实验箱
三、实验内容:
实现查询方式串口的收发功能。接受来自串口(通过超级终端)的字符,并将接收到的字符发送到超级终端。
四、基础知识:
1.异步串行通讯
(1)异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。
(2)数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线即可进行。
接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。
(3)在微型计算机中大量使用异步串行I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。
2.异步串行通信中的字符传送格式
q 开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。
q 每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5 位或2 位的时间宽度。
q 至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。
3.DB-25 DB-9引脚定义
DB-25 DB-9引脚说明:
RS-232C接口通信的两种基本连接方式 :
五、实验步骤:
1.新建一个工程UART,将对应的文件添加到工程中去。
2. 对工程进行设置,然后编译UART。
3 .将计算机的串口线接到实验教学系统的UART0上。
4.运行超级终端,选择正确的串口号,并将串口设置为:波特率(115 200)、奇偶校验(None)、数据位数(8)和停止位数(1),无流控。打开串口,超级终端的配置如图:
5.下载程序并运行。如果程序正确,则在超级终端中输入的数据将回到超级终端中。
六实验报告要求
q 简述串行接口的工作原理以及串行接口的优缺点
q RS-232C的最基本数据传送引脚是哪几根?画出双机通讯的基本接线图
q 简述串行接口通讯程序设计的基本步骤
基于Labview的串行通信接口实验报告一实验目的通过软件Labview编写前面板和程序框图通过该面板实现计算机与外围设备的串口通…
实验十单片机串行口与PC机通讯实验报告实验目的1掌握串行口工作方式的程序设计掌握单片机通讯的编制2了解实现串行通讯的硬环境数据格式…
网络与通信实验报告网络与通信实验报告题目串口通行实验班级0309103学号030910338姓名田静指导老师付大丰日期20xx10…
基于Labwindows/CVI的串行通信接口实验报告一、实验目的通过软件Labwindows/CVI编写仪器面板,通过该面板实现…
计算机网络实验实现RS232串口通信程序及MODBUS协议的编程一实验目的1熟悉并掌握RS232串口标准及原理2实现PC机通过RS…
大学高级可编程逻辑实验报告实验课程名称串口通信实验指导老师学生姓名s100103008s100101095s10013104720…
网络与通信实验报告网络与通信实验报告题目串口通行实验班级0309103学号030910338姓名田静指导老师付大丰日期20xx10…
实验五串口通信实验1实验目的1掌握ARM的串行口工作原理2编程实现ARM的UART通讯3掌握S3C2410寄存器配置方法2实验设备…
单片机实验报告实验名称姓名学号班级实验时间串行通信实验魏冶090402105光电一班20xx1129南京理工大学紫金学院电光系一实…
网络与通信实验报告网络与通信实验报告题目串口通行实验班级学号姓名指导老师日期20xx1021网络与通信实验报告一实验要求把两台计算…