单片机与PC机串口通信实验 下载本文

西华大学实验报告

西华大学实验报告(理工类)

开课学院及实验室:机械学院 机械工程专业实验中心 实验时间 : 年 月 日至 月 日

学 生 姓 名 学生所在学院 课 程 名 称 实验项目名称 指 导 教 师 非常繁华的5舍514 学 号 机械工程学院 成 绩 年级/专业/班 课 程 代 码 项 目 代 码 项 目 学 分 106003659 微机测控实验 微机测控综合实验 韦兴平 1.实验目的

(1)学习Keil编译软件的使用、调试、程序下载的方法; (2)掌握PWM调节LED指示灯亮度的原理及编程方法; (3)掌握STC89C52单片机I/O端口的控制和使用方法; (4)掌握单片机与上位机串口通讯的原理及程序实现; (5)掌握AD转换、LCD显示的编程实现;

(6)对单片机的串口通讯、PWM控制、AD转换、LED指示灯、LED数码管,及按键、定时器/计数器进行综合应用。

2.实验设备

PC机、keil编译软件、proteus仿真软件,单片机实验板、STC_ISP_V479

3.实验内容

在上位机界面设计八个按钮(或者复选框)及指示灯,当按下按钮(或者选中复选框)时,下位机P1口对应的八个指示灯变亮,同时上位机界面上对应的指示灯也变亮;关闭时类似。

4.实验电路

图4.1 STC89C52主控芯片

1

西华大学实验报告

图4.2 LED流水灯

图4.3 USB转串口

5.实验程序

#include\

#define uchar unsigned char #define uint unsigned int uchar date;//存储串行口数据

void int_t1()//初始化程序 {

SCON=0x50;//设置串行口为工作方式1,并允许接收数据 TMOD = 0x20;//设置计数器为方式2 PCON=0X00;//SMOD=0,32分频 TH1 = 0xFD;//设置波特率为9600 TL1 = 0xFD;

ES=1;//打开接收中断 EA=1;//打开总中断

2

西华大学实验报告

TR1=1;//打开计数器T1

}

void main()

{ P1=0xff;//P1口灯全灭 int_t1();//初始化程序 while(1)

{//当接收到字符1时,对应第一个灯(0xfe=11111110)亮 if(date =='1'){P1=0xfe;} if(date =='2'){P1=0Xfd;}

if(date =='3'){P1=0Xfb;} if(date =='4'){P1=0Xf7;} if(date =='5'){P1=0Xef;}

if(date =='6'){P1=0Xdf;} if(date =='7'){P1=0Xbf;}

if(date =='8'){P1=0X7f;} } }

void mov_t1() interrupt 4 {

date=SBUF; //取出接收到的数据 RI = 0;//清除接收中断标志位 }

6.实验结果

上位机输入字符5,如图6.1所示,则下位机第5个灯亮,如图6.2所示。

图6.1 上位机界面

3