当前位置:文档之家› 单片机与上位机通信系统设计说明

单片机与上位机通信系统设计说明

JIU JIANG UNIVERSITY
《单片机原理与应用》大作业
题目单片机与上位机通信系统设计院系信息科学与技术学院
专业计算机应用设计
姓名
班级学号
指导教师
2011年12月14
信息科学与技术学院
单片机大作业任务书
作业名称基于AT89C52单片机与上位机通信系统设计
2、设计要求
(1)可以由上位机通过串口操作单片机模块。

(2)利用单片机自身功能实现通信。

完成时间2011-2012学年第一学期
目录
一、摘要 (4)
二、总体方案设计与论证 (5)
1、设计 (5)
2、框图设计 (5)
3、知识点 (5)
三、系统硬件设计 (7)
1、电路原理图···················································
四、系统软件设计 (11)
五、系统硬件PROTEUS仿真原理图 (13)
六、系统PROTEUS运行情况图 (13)
七、心得体会 (18)
八、致 (2)
摘要
本文介绍了一种基于AT89C52 单片机与上位机通信系统, 并对其工作原理及软、硬件的设计和实现方法进行了详细的阐述。

在单片机的输入输出控制中,除直接上小键盘和LCD显示等方法外,一般都通过
串口和上位机PC进行通信,后面一种方法由于能实现远程控制并且PC机拥有强大的数据处理功能以及友好的控制界面所以显得尤为有用。

此系统可以由上位机控制通过串口操作
单片机模块
本单元就是来完成由上位机通过串口控制来实现以发光二极管的发光状态模拟开关电路的
通断,用上位机的DOS命令对其进行控制
通过此次作业能够更加牢固的掌握单片机的应用技术,增强动手能力、硬件设计能力以及软件设计能力。

关键词:AT89C52; 上位机,单片机
二.总体方案论证与设计
1设计
本论文是设计一基于AT89C52单片机应用系统,可以由上位机通过串口操作控制单片机模块以发光二极管的发光状态模拟开关电路的通断,用上位机DOS命令来控制
2框图设计
基于AT89C52单片机与上位机通信系统设计由电源电路,单片机主控电路,按键控制电路数码管控制对像和上位机接口组成,系统框图如图所示
三知识点
本项目需要通过学习和查阅资料,掌握和了解如下知识:
a +5V电源原理及设计
b 单片机复位电路工作原理及设计
c 单片机晶振电路工作原理机设计
d 单片机与上位机通信的接口电路设计
e 发光二极管的特性
f AT89C52单片机引脚
g 单片机汇编语言机程序设计
四.系统硬件设计
电路原理图
基于AT89C52单片机与上位机通信系统设计原理图如图19-2所示。

电源电路为单片机以及其他模块提供标准的电源。

晶振模块为单片机提供时钟标准,使系统各部分能协调工作。

复位电路模块为单片机提供复位功能。

单片机作为主控制器,根据输入信号对系统进行相应的控制处理。

9针接口电路和上位机的接口相连实现上位机和单片机之间的通信。

发光二极管是单片机控制的控制对象实际应用中,它连接相应的光电隔离和驱动电路。

五.系统软件设计
程序流程图如图19-3所示,其中初始化主要是对串口工作方式等设置
程序清单:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a;
sbit d = P3^7;
//--------------------------------------
say_CR_LF()
{
SBUF = 13; while (TI == 0); TI = 0;
SBUF = 10; while (TI == 0); TI = 0;
}
//--------------------------------------
say_yeah()
{
SBUF = a; while (TI == 0); TI = 0;
SBUF = ','; while (TI == 0); TI = 0;
SBUF = ' '; while (TI == 0); TI = 0;
SBUF = 'y'; while (TI == 0); TI = 0;
SBUF = 'e'; while (TI == 0); TI = 0;
SBUF = 'a'; while (TI == 0); TI = 0;
SBUF = 'h'; while (TI == 0); TI = 0;
SBUF = '!'; while (TI == 0); TI = 0;
say_CR_LF();
}
//--------------------------------------
say_hello()
{
SBUF = 'H'; while (TI == 0); TI = 0;
SBUF = 'e'; while (TI == 0); TI = 0;
SBUF = 'l'; while (TI == 0); TI = 0;
SBUF = 'l'; while (TI == 0); TI = 0;
SBUF = 'o'; while (TI == 0); TI = 0;
SBUF = '!'; while (TI == 0); TI = 0;
say_CR_LF();
}
//--------------------------------------
void init()
{
SCON = 0x50; //设置串口通信方式1, 允许接收 PCON &= 0x7F;
TMOD = 0x20; //设置T1定时方式2
TH1 = 0xfd; //9600bps11.0592MHz
TL1 = 0xfd;
TR1 = 1; //启动T1
ES = 1; //开串口中断.
EA = 1; //开总中断.
say_hello();
}
//--------------------------------------
void delay(uint z)
{
uint x, y;
for(x = z; x > 0; x--) for(y = 110; y > 0; y--); }
//--------------------------------------
void main()
{
init();
TI = 1;
a = '4';
while(1) {
if(a == '1') {
d = 0; delay(400);
d = 1; delay(400);
}
else if(a == '2') {
d = 0; delay(200);
d = 1; delay(200);
}
else if(a == '3') {
d = 0; delay(100);
d = 1; delay(100);
}
else if(a == '4') {
d = 1;
} } }
//--------------------------------------
void ser() interrupt 4
{
if (TI == 1) TI = 0;
if (RI == 1) {
RI = 0;
P0 = SBUF;
a = SBUF; //中间变量.
say_yeah();
} }
六.系统硬件P R O T E U S仿真原理图
七.系统P r o t e u s仿真运行情况图显示开始测试界面
输入123
输入879
. .. .
八.致
论文的写作是枯燥艰辛而又富有挑战的。

老师的谆谆诱导、同学的出谋划策及家长的支持鼓励,是我坚持完成论文的动力源泉。

在此,我特别要感我的导师严青老师。

从论文的选题、文献的采集、框架的设计、结构的布局到最终的论文定稿,从容到格式,从标题到标点,都他费尽心血。

没有严青老师的辛勤栽培、孜孜教诲,就没有我论文的顺利完成。

感601寝室的各位同学,与他们的交流使我受益颇多。

最后要感我的家人以及我的朋友们对我的理解、支持、鼓励和帮助,正是因为有了他们,我所做的一切才更有意义;也正是因为有了他们,我才有了追求进步的勇气和信心。

我很真诚的感一直来帮助我做这个作业的老师和同学,!
.. .. .. ..。

相关主题