实验单片机与PC机串口通信.pdf
文本预览下载声明
实用标准
实验 单片机与 PC机串口通信( C51编程)实验
要求:
1、 掌握串行口的控制与状态寄存器 SCON
2、 掌握特殊功能寄存器 PCON
3、 掌握串行口的工作方式及其设置
4、 掌握串行口的波特率( bond rate )选择
任务:
1、实现 PC机发送一个字符给单片机, 单片机接收到后即在个位、
十位数码管上进行显示,同时将其回发给 PC 机。要求:单片机
收到 PC机发来的信号后用串口中断方式处理,而单片机回发给
PC机时用查询方式。
采用软件仿真的方式完成,用串口调试助手和 KEIL C,或串口
调试助手和 PROTEUS分别仿真。
需要用到以下软件: KEIL,VSPD XP5(virtual serial ports
driver xp5.1 虚拟串口软件),串口调试助手, Proteus 。
(1)虚拟串口软件、串口调试助手和 KEIL C 的联调
首先在 KEIL 里编译写好的程序。
#include reg51.h
#define uchar unsigned char
#define uint unsigned int
文案大全
实用标准
uchar code
SEG7[10]={0X3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f};// 数码管位值
uchar code ACT[4]={0XFE,0xfd,0xfb,0xf7};% 数码管位选信号
uchar code as[]=Receving data:\0;% 回送预置数据
uchar a=0x30,b;
//initiate ,串口设置为波特率 9600,
void init(void){
TMOD=0X20;
TH1=0XFD;
TL1=0XFD;
SCON=0X50;
TR1=1;
ES=1;
EA=1;
}
//DELAY ,为数据管交替显示
void delay(uint k){
uint data i,j;
for(i=0;ik;i++){
for(j=0;j121;j++)
{;}
文案大全
实用标准
}
}
//main
void main(void){
uchar i;
init();
while(1){ // 用数码管显示 PC发给单片机的数据,并回送给
PC
P1=SEG7[(a-0x30)/10];
P2=ACT[1];
delay(500);
P1=SEG7[(a-0x30)%10];
P2=ACT[0];
delay(500);
if(RI){
RI=0;
i=0;
while(as[i]!=\0){
SBUF=as[i];
while(!TI){
;
文案大全
实用标准
}
TI=0;
i++;
}
SBUF=b;
while(!TI){
;
}
TI=0;
EA=1;
}
}
}
//INTERRUPT 4, 将收到的信息进行转存
void serial_serve(void) interrupt 4
{
a=SBUF;
b=a;
EA=0;
}
文案大全
实用标准
打开 VSPD,界面如下图所示:(注明:这个软件用来进行
串口的虚拟实现。在其网站上可以下载,但使用期为 2 周)。
左边栏最上面的是电脑自带的物
显示全部